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 $x\in G$, there exists an element $g_x\in 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 $x\in G$, there exists an element $g_x\in 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)$. MyThe 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)]);
$\sharp$ check for class preserving
for a in Elements(A) do
ok:=true;
$\sharp$ 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;
$\sharp$ a is class preserving
if ok=true and not (a in auts) then
Add (gens,a);
auts:= Group(gens);
$\sharp$inng:=Image(hom(x));
$\sharp$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)$?