Computing the class-preserving automorphism group of finite $p$-groups
$begingroup$
Let $G$ be a finite non-abelian $p$-group, where $p$ is a prime. An automorphism $alpha$ of $G$ is called a class-preserving if for each $xin G$, there exists an element $g_xin G$ such that $alpha(x)=g_x^{-1}xg_x$. An automorphism $alpha$ of $G$ is called a $2$nd class-preserving if for each $xin G$, there exists an element $g_xin G'=[G,G]$ such that $alpha(x)=g_x^{-1}xg_x$. Let $mathrm{Aut_c}(G)$ and $mathrm{Aut_c^2}(G)$ respectively denote the group of all class-preserving and $2$nd class-preserving automorphisms of $G$.
I have made a GAP program to find the structure of $mathrm{Aut_c}(G)$ but I failed to make a GAP program to find the structure of $mathrm{Aut_c^2}(G)$. The GAP program to find the structure of $mathrm{Aut_c}(G)$ is following:
ClassPreservingAuts:= function(G)
local A,I,cc,gens,auts,a,ok,i,hom;
A:=AutomorphismGroup(G);
I:=InnerAutomorphismsAutomorphismGroup(A);
hom:=NaturalHomomorphismByNormalSubgroup(A,I);
cc:=ConjugacyClasses(G);
gens:=;
auts:=Group([One(A)]);
# check for class preserving
for a in Elements(A) do
ok:=true;
# run through classes
i:=0;
while i<Length(cc) and ok=true do
i:=i+1;
if not (Representative(cc[i])^a in cc[i]) then
ok:=false;
fi;
od;
# a is class preserving
if ok=true and not (a in auts) then
Add (gens,a);
auts:= Group(gens);
#inng:=Image(hom(x));
#gens:=GeneratorsOfGroup(inng);
fi;
od;
return auts;
return auts/I;
return Size(auts)/Size(I);
end;
My question is the following:
Can anybody help me to make a GAP program to find the structure of $mathrm{Aut_c^2}(G)$?
group-theory finite-groups gap p-groups
$endgroup$
|
show 1 more comment
$begingroup$
Let $G$ be a finite non-abelian $p$-group, where $p$ is a prime. An automorphism $alpha$ of $G$ is called a class-preserving if for each $xin G$, there exists an element $g_xin G$ such that $alpha(x)=g_x^{-1}xg_x$. An automorphism $alpha$ of $G$ is called a $2$nd class-preserving if for each $xin G$, there exists an element $g_xin G'=[G,G]$ such that $alpha(x)=g_x^{-1}xg_x$. Let $mathrm{Aut_c}(G)$ and $mathrm{Aut_c^2}(G)$ respectively denote the group of all class-preserving and $2$nd class-preserving automorphisms of $G$.
I have made a GAP program to find the structure of $mathrm{Aut_c}(G)$ but I failed to make a GAP program to find the structure of $mathrm{Aut_c^2}(G)$. The GAP program to find the structure of $mathrm{Aut_c}(G)$ is following:
ClassPreservingAuts:= function(G)
local A,I,cc,gens,auts,a,ok,i,hom;
A:=AutomorphismGroup(G);
I:=InnerAutomorphismsAutomorphismGroup(A);
hom:=NaturalHomomorphismByNormalSubgroup(A,I);
cc:=ConjugacyClasses(G);
gens:=;
auts:=Group([One(A)]);
# check for class preserving
for a in Elements(A) do
ok:=true;
# run through classes
i:=0;
while i<Length(cc) and ok=true do
i:=i+1;
if not (Representative(cc[i])^a in cc[i]) then
ok:=false;
fi;
od;
# a is class preserving
if ok=true and not (a in auts) then
Add (gens,a);
auts:= Group(gens);
#inng:=Image(hom(x));
#gens:=GeneratorsOfGroup(inng);
fi;
od;
return auts;
return auts/I;
return Size(auts)/Size(I);
end;
My question is the following:
Can anybody help me to make a GAP program to find the structure of $mathrm{Aut_c^2}(G)$?
group-theory finite-groups gap p-groups
$endgroup$
$begingroup$
What exactly do you mean by "find the structure"? I will be useful if you will edit the question and include the GAP code that you wrote for that. Please indent all code by four spaces to display it like code and not like plain text.
$endgroup$
– Alexander Konovalov
Jan 17 at 9:35
1
$begingroup$
Thanks for updating the question. It will still be useful to show what have you tried in GAP to get $mathrm{Aut_c}(G)$.
$endgroup$
– Alexander Konovalov
Jan 18 at 10:48
$begingroup$
P.S. If you cross-post a question elsewhere, it's a good practice to put a cross-reference to the other place where the question has been asked. First of all, it is respectful to other people's time since it helps to avoid duplicated efforts. Second, you may indicate that they may reply to your question by email or answer on this site, dependently on the way they prefer.
$endgroup$
– Alexander Konovalov
Jan 18 at 20:46
$begingroup$
Where does your attempt fail? Can you be more detailed than”i cannot write a function”? What have you tried and what problem do you run into?
$endgroup$
– ahulpke
Jan 19 at 17:45
$begingroup$
Thanks, showing the code really helps. I have helped you to display it properly in the question - as I have asked you above, you need to indent it by four spaces, then it is displayed properly. Entering latex for#
is not helping, since the code is not runnable after that. Also, a good practice is to indent bodies of loops and "if" statements, to make the code more readable. Finally,return
is executed only once, so the 2nd and 3rdreturn
statements are never called.
$endgroup$
– Alexander Konovalov
Jan 25 at 10:35
|
show 1 more comment
$begingroup$
Let $G$ be a finite non-abelian $p$-group, where $p$ is a prime. An automorphism $alpha$ of $G$ is called a class-preserving if for each $xin G$, there exists an element $g_xin G$ such that $alpha(x)=g_x^{-1}xg_x$. An automorphism $alpha$ of $G$ is called a $2$nd class-preserving if for each $xin G$, there exists an element $g_xin G'=[G,G]$ such that $alpha(x)=g_x^{-1}xg_x$. Let $mathrm{Aut_c}(G)$ and $mathrm{Aut_c^2}(G)$ respectively denote the group of all class-preserving and $2$nd class-preserving automorphisms of $G$.
I have made a GAP program to find the structure of $mathrm{Aut_c}(G)$ but I failed to make a GAP program to find the structure of $mathrm{Aut_c^2}(G)$. The GAP program to find the structure of $mathrm{Aut_c}(G)$ is following:
ClassPreservingAuts:= function(G)
local A,I,cc,gens,auts,a,ok,i,hom;
A:=AutomorphismGroup(G);
I:=InnerAutomorphismsAutomorphismGroup(A);
hom:=NaturalHomomorphismByNormalSubgroup(A,I);
cc:=ConjugacyClasses(G);
gens:=;
auts:=Group([One(A)]);
# check for class preserving
for a in Elements(A) do
ok:=true;
# run through classes
i:=0;
while i<Length(cc) and ok=true do
i:=i+1;
if not (Representative(cc[i])^a in cc[i]) then
ok:=false;
fi;
od;
# a is class preserving
if ok=true and not (a in auts) then
Add (gens,a);
auts:= Group(gens);
#inng:=Image(hom(x));
#gens:=GeneratorsOfGroup(inng);
fi;
od;
return auts;
return auts/I;
return Size(auts)/Size(I);
end;
My question is the following:
Can anybody help me to make a GAP program to find the structure of $mathrm{Aut_c^2}(G)$?
group-theory finite-groups gap p-groups
$endgroup$
Let $G$ be a finite non-abelian $p$-group, where $p$ is a prime. An automorphism $alpha$ of $G$ is called a class-preserving if for each $xin G$, there exists an element $g_xin G$ such that $alpha(x)=g_x^{-1}xg_x$. An automorphism $alpha$ of $G$ is called a $2$nd class-preserving if for each $xin G$, there exists an element $g_xin G'=[G,G]$ such that $alpha(x)=g_x^{-1}xg_x$. Let $mathrm{Aut_c}(G)$ and $mathrm{Aut_c^2}(G)$ respectively denote the group of all class-preserving and $2$nd class-preserving automorphisms of $G$.
I have made a GAP program to find the structure of $mathrm{Aut_c}(G)$ but I failed to make a GAP program to find the structure of $mathrm{Aut_c^2}(G)$. The GAP program to find the structure of $mathrm{Aut_c}(G)$ is following:
ClassPreservingAuts:= function(G)
local A,I,cc,gens,auts,a,ok,i,hom;
A:=AutomorphismGroup(G);
I:=InnerAutomorphismsAutomorphismGroup(A);
hom:=NaturalHomomorphismByNormalSubgroup(A,I);
cc:=ConjugacyClasses(G);
gens:=;
auts:=Group([One(A)]);
# check for class preserving
for a in Elements(A) do
ok:=true;
# run through classes
i:=0;
while i<Length(cc) and ok=true do
i:=i+1;
if not (Representative(cc[i])^a in cc[i]) then
ok:=false;
fi;
od;
# a is class preserving
if ok=true and not (a in auts) then
Add (gens,a);
auts:= Group(gens);
#inng:=Image(hom(x));
#gens:=GeneratorsOfGroup(inng);
fi;
od;
return auts;
return auts/I;
return Size(auts)/Size(I);
end;
My question is the following:
Can anybody help me to make a GAP program to find the structure of $mathrm{Aut_c^2}(G)$?
group-theory finite-groups gap p-groups
group-theory finite-groups gap p-groups
edited Jan 25 at 10:31
Alexander Konovalov
5,25222057
5,25222057
asked Jan 17 at 6:40
RohitRohit
213
213
$begingroup$
What exactly do you mean by "find the structure"? I will be useful if you will edit the question and include the GAP code that you wrote for that. Please indent all code by four spaces to display it like code and not like plain text.
$endgroup$
– Alexander Konovalov
Jan 17 at 9:35
1
$begingroup$
Thanks for updating the question. It will still be useful to show what have you tried in GAP to get $mathrm{Aut_c}(G)$.
$endgroup$
– Alexander Konovalov
Jan 18 at 10:48
$begingroup$
P.S. If you cross-post a question elsewhere, it's a good practice to put a cross-reference to the other place where the question has been asked. First of all, it is respectful to other people's time since it helps to avoid duplicated efforts. Second, you may indicate that they may reply to your question by email or answer on this site, dependently on the way they prefer.
$endgroup$
– Alexander Konovalov
Jan 18 at 20:46
$begingroup$
Where does your attempt fail? Can you be more detailed than”i cannot write a function”? What have you tried and what problem do you run into?
$endgroup$
– ahulpke
Jan 19 at 17:45
$begingroup$
Thanks, showing the code really helps. I have helped you to display it properly in the question - as I have asked you above, you need to indent it by four spaces, then it is displayed properly. Entering latex for#
is not helping, since the code is not runnable after that. Also, a good practice is to indent bodies of loops and "if" statements, to make the code more readable. Finally,return
is executed only once, so the 2nd and 3rdreturn
statements are never called.
$endgroup$
– Alexander Konovalov
Jan 25 at 10:35
|
show 1 more comment
$begingroup$
What exactly do you mean by "find the structure"? I will be useful if you will edit the question and include the GAP code that you wrote for that. Please indent all code by four spaces to display it like code and not like plain text.
$endgroup$
– Alexander Konovalov
Jan 17 at 9:35
1
$begingroup$
Thanks for updating the question. It will still be useful to show what have you tried in GAP to get $mathrm{Aut_c}(G)$.
$endgroup$
– Alexander Konovalov
Jan 18 at 10:48
$begingroup$
P.S. If you cross-post a question elsewhere, it's a good practice to put a cross-reference to the other place where the question has been asked. First of all, it is respectful to other people's time since it helps to avoid duplicated efforts. Second, you may indicate that they may reply to your question by email or answer on this site, dependently on the way they prefer.
$endgroup$
– Alexander Konovalov
Jan 18 at 20:46
$begingroup$
Where does your attempt fail? Can you be more detailed than”i cannot write a function”? What have you tried and what problem do you run into?
$endgroup$
– ahulpke
Jan 19 at 17:45
$begingroup$
Thanks, showing the code really helps. I have helped you to display it properly in the question - as I have asked you above, you need to indent it by four spaces, then it is displayed properly. Entering latex for#
is not helping, since the code is not runnable after that. Also, a good practice is to indent bodies of loops and "if" statements, to make the code more readable. Finally,return
is executed only once, so the 2nd and 3rdreturn
statements are never called.
$endgroup$
– Alexander Konovalov
Jan 25 at 10:35
$begingroup$
What exactly do you mean by "find the structure"? I will be useful if you will edit the question and include the GAP code that you wrote for that. Please indent all code by four spaces to display it like code and not like plain text.
$endgroup$
– Alexander Konovalov
Jan 17 at 9:35
$begingroup$
What exactly do you mean by "find the structure"? I will be useful if you will edit the question and include the GAP code that you wrote for that. Please indent all code by four spaces to display it like code and not like plain text.
$endgroup$
– Alexander Konovalov
Jan 17 at 9:35
1
1
$begingroup$
Thanks for updating the question. It will still be useful to show what have you tried in GAP to get $mathrm{Aut_c}(G)$.
$endgroup$
– Alexander Konovalov
Jan 18 at 10:48
$begingroup$
Thanks for updating the question. It will still be useful to show what have you tried in GAP to get $mathrm{Aut_c}(G)$.
$endgroup$
– Alexander Konovalov
Jan 18 at 10:48
$begingroup$
P.S. If you cross-post a question elsewhere, it's a good practice to put a cross-reference to the other place where the question has been asked. First of all, it is respectful to other people's time since it helps to avoid duplicated efforts. Second, you may indicate that they may reply to your question by email or answer on this site, dependently on the way they prefer.
$endgroup$
– Alexander Konovalov
Jan 18 at 20:46
$begingroup$
P.S. If you cross-post a question elsewhere, it's a good practice to put a cross-reference to the other place where the question has been asked. First of all, it is respectful to other people's time since it helps to avoid duplicated efforts. Second, you may indicate that they may reply to your question by email or answer on this site, dependently on the way they prefer.
$endgroup$
– Alexander Konovalov
Jan 18 at 20:46
$begingroup$
Where does your attempt fail? Can you be more detailed than”i cannot write a function”? What have you tried and what problem do you run into?
$endgroup$
– ahulpke
Jan 19 at 17:45
$begingroup$
Where does your attempt fail? Can you be more detailed than”i cannot write a function”? What have you tried and what problem do you run into?
$endgroup$
– ahulpke
Jan 19 at 17:45
$begingroup$
Thanks, showing the code really helps. I have helped you to display it properly in the question - as I have asked you above, you need to indent it by four spaces, then it is displayed properly. Entering latex for
#
is not helping, since the code is not runnable after that. Also, a good practice is to indent bodies of loops and "if" statements, to make the code more readable. Finally, return
is executed only once, so the 2nd and 3rd return
statements are never called.$endgroup$
– Alexander Konovalov
Jan 25 at 10:35
$begingroup$
Thanks, showing the code really helps. I have helped you to display it properly in the question - as I have asked you above, you need to indent it by four spaces, then it is displayed properly. Entering latex for
#
is not helping, since the code is not runnable after that. Also, a good practice is to indent bodies of loops and "if" statements, to make the code more readable. Finally, return
is executed only once, so the 2nd and 3rd return
statements are never called.$endgroup$
– Alexander Konovalov
Jan 25 at 10:35
|
show 1 more comment
1 Answer
1
active
oldest
votes
$begingroup$
Your current test is
if not (Representative(cc[i])^a in cc[i]) then
that will eliminate elements as not lying in the subgroup you want. We could phrase this alternatively (this is in fact what the in
test does) as
if RepresentativeAction(G,Representative(cc[i])^a,Representative(cc[i])=fail then
that is we are testing whether there is an element in G
that will conjugate the class representative in the same way as the automorphism a
does.
This is now easily generalized. Add
Gd:=DerivedSubgroup(G);
at the start and change the test to
if RepresentativeAction(Gd,Representative(cc[i])^a,Representative(cc[i])=fail then
Finally -- it is not clear from your code whether you want to factor out the inner automorphisms -- you would factor out not all inner automorphisms, but only those induced by $G'$.
$endgroup$
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "69"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
noCode: true, onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmath.stackexchange.com%2fquestions%2f3076661%2fcomputing-the-class-preserving-automorphism-group-of-finite-p-groups%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
Your current test is
if not (Representative(cc[i])^a in cc[i]) then
that will eliminate elements as not lying in the subgroup you want. We could phrase this alternatively (this is in fact what the in
test does) as
if RepresentativeAction(G,Representative(cc[i])^a,Representative(cc[i])=fail then
that is we are testing whether there is an element in G
that will conjugate the class representative in the same way as the automorphism a
does.
This is now easily generalized. Add
Gd:=DerivedSubgroup(G);
at the start and change the test to
if RepresentativeAction(Gd,Representative(cc[i])^a,Representative(cc[i])=fail then
Finally -- it is not clear from your code whether you want to factor out the inner automorphisms -- you would factor out not all inner automorphisms, but only those induced by $G'$.
$endgroup$
add a comment |
$begingroup$
Your current test is
if not (Representative(cc[i])^a in cc[i]) then
that will eliminate elements as not lying in the subgroup you want. We could phrase this alternatively (this is in fact what the in
test does) as
if RepresentativeAction(G,Representative(cc[i])^a,Representative(cc[i])=fail then
that is we are testing whether there is an element in G
that will conjugate the class representative in the same way as the automorphism a
does.
This is now easily generalized. Add
Gd:=DerivedSubgroup(G);
at the start and change the test to
if RepresentativeAction(Gd,Representative(cc[i])^a,Representative(cc[i])=fail then
Finally -- it is not clear from your code whether you want to factor out the inner automorphisms -- you would factor out not all inner automorphisms, but only those induced by $G'$.
$endgroup$
add a comment |
$begingroup$
Your current test is
if not (Representative(cc[i])^a in cc[i]) then
that will eliminate elements as not lying in the subgroup you want. We could phrase this alternatively (this is in fact what the in
test does) as
if RepresentativeAction(G,Representative(cc[i])^a,Representative(cc[i])=fail then
that is we are testing whether there is an element in G
that will conjugate the class representative in the same way as the automorphism a
does.
This is now easily generalized. Add
Gd:=DerivedSubgroup(G);
at the start and change the test to
if RepresentativeAction(Gd,Representative(cc[i])^a,Representative(cc[i])=fail then
Finally -- it is not clear from your code whether you want to factor out the inner automorphisms -- you would factor out not all inner automorphisms, but only those induced by $G'$.
$endgroup$
Your current test is
if not (Representative(cc[i])^a in cc[i]) then
that will eliminate elements as not lying in the subgroup you want. We could phrase this alternatively (this is in fact what the in
test does) as
if RepresentativeAction(G,Representative(cc[i])^a,Representative(cc[i])=fail then
that is we are testing whether there is an element in G
that will conjugate the class representative in the same way as the automorphism a
does.
This is now easily generalized. Add
Gd:=DerivedSubgroup(G);
at the start and change the test to
if RepresentativeAction(Gd,Representative(cc[i])^a,Representative(cc[i])=fail then
Finally -- it is not clear from your code whether you want to factor out the inner automorphisms -- you would factor out not all inner automorphisms, but only those induced by $G'$.
answered Jan 29 at 16:02
ahulpkeahulpke
7,2421026
7,2421026
add a comment |
add a comment |
Thanks for contributing an answer to Mathematics Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmath.stackexchange.com%2fquestions%2f3076661%2fcomputing-the-class-preserving-automorphism-group-of-finite-p-groups%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
$begingroup$
What exactly do you mean by "find the structure"? I will be useful if you will edit the question and include the GAP code that you wrote for that. Please indent all code by four spaces to display it like code and not like plain text.
$endgroup$
– Alexander Konovalov
Jan 17 at 9:35
1
$begingroup$
Thanks for updating the question. It will still be useful to show what have you tried in GAP to get $mathrm{Aut_c}(G)$.
$endgroup$
– Alexander Konovalov
Jan 18 at 10:48
$begingroup$
P.S. If you cross-post a question elsewhere, it's a good practice to put a cross-reference to the other place where the question has been asked. First of all, it is respectful to other people's time since it helps to avoid duplicated efforts. Second, you may indicate that they may reply to your question by email or answer on this site, dependently on the way they prefer.
$endgroup$
– Alexander Konovalov
Jan 18 at 20:46
$begingroup$
Where does your attempt fail? Can you be more detailed than”i cannot write a function”? What have you tried and what problem do you run into?
$endgroup$
– ahulpke
Jan 19 at 17:45
$begingroup$
Thanks, showing the code really helps. I have helped you to display it properly in the question - as I have asked you above, you need to indent it by four spaces, then it is displayed properly. Entering latex for
#
is not helping, since the code is not runnable after that. Also, a good practice is to indent bodies of loops and "if" statements, to make the code more readable. Finally,return
is executed only once, so the 2nd and 3rdreturn
statements are never called.$endgroup$
– Alexander Konovalov
Jan 25 at 10:35