Computing the class-preserving automorphism group of finite $p$-groups












2












$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)$?











share|cite|improve this question











$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 3rd return statements are never called.
    $endgroup$
    – Alexander Konovalov
    Jan 25 at 10:35


















2












$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)$?











share|cite|improve this question











$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 3rd return statements are never called.
    $endgroup$
    – Alexander Konovalov
    Jan 25 at 10:35
















2












2








2


1



$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)$?











share|cite|improve this question











$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






share|cite|improve this question















share|cite|improve this question













share|cite|improve this question




share|cite|improve this question








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 3rd return 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






  • 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 3rd return 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












1 Answer
1






active

oldest

votes


















2












$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'$.






share|cite|improve this answer









$endgroup$














    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
    });


    }
    });














    draft saved

    draft discarded


















    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









    2












    $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'$.






    share|cite|improve this answer









    $endgroup$


















      2












      $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'$.






      share|cite|improve this answer









      $endgroup$
















        2












        2








        2





        $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'$.






        share|cite|improve this answer









        $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'$.







        share|cite|improve this answer












        share|cite|improve this answer



        share|cite|improve this answer










        answered Jan 29 at 16:02









        ahulpkeahulpke

        7,2421026




        7,2421026






























            draft saved

            draft discarded




















































            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.




            draft saved


            draft discarded














            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





















































            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







            Popular posts from this blog

            Human spaceflight

            Can not write log (Is /dev/pts mounted?) - openpty in Ubuntu-on-Windows?

            File:DeusFollowingSea.jpg