x:=Indeterminate(GF(2));
SetName(x,"x");
f:=x^23-1;
Factors(f);
f:=First(Factors(f),i->Degree(i)>1);
LoadPackage("guava");
cod:=GeneratorPolCode(f,23,GF(2));
IsPerfectCode(cod);
ext:=ExtendedCode(cod);
WeightDistribution(ext);
autext:=AutomorphismGroup(ext);
gens:=SmallGeneratingSet(autext);;
m24:=Group(gens);
SetName(m24,"m24");
Size(m24);
Transitivity(m24,[1..24]);
st:=Stabilizer(m24,[23,24],OnSets);
gens:=SmallGeneratingSet(st);;
st2:=Group(gens);
m22a:=Action(st2,[1..22]);
SetName(m22a,"m22a");
Size(m22a);
s:=SylowSubgroup(m22a,2);;
pciso:=IsomorphismPcGroup(s);
a:=Image(pciso);
n:=Filtered(NormalSubgroups(a),i->Size(i)=16 and IsElementaryAbelian(i));
n:=List(n,i->PreImage(pciso,i));;
e:=Filtered(n,i->IsRegular(i,MovedPoints(i)));;Length(e);
e:=e[1];;
h:=Normalizer(m22a,e);;
ophom:=ActionHomomorphism(m22a,RightCosets(m22a,h),OnRight);;
mop:=Image(ophom);
DegreeAction(mop);
dp:=DirectProduct(m22a,mop);;
emb1:=Embedding(dp,1);;
emb2:=Embedding(dp,2);;
diag:=List(GeneratorsOfGroup(m22a), i->Image(emb1,i)*Image(emb2,Image(ophom,i)));;
diag:=Group(diag,());;
SetName(diag,"M22.2-99");
LoadPackage("grape");
gamma:=NullGraph(diag,100);
AddEdgeOrbit(gamma,[1,100]); 
AddEdgeOrbit(gamma,[100,1]);
hexad:=First(Orbits(h,[1..22]),i->Length(i)=6);
for i in hexad do 
  AddEdgeOrbit(gamma,[i,23]);
  AddEdgeOrbit(gamma,[23,i]);
od;
Adjacency(gamma,23);
stab:=Stabilizer(diag,23);;
orbs:=Orbits(stab,[24..99]);;
orbreps:=List(orbs,i->i[1]);
rep1:=orbreps[1];
Adjacency(gamma,rep1);
Intersection(hexad,Adjacency(gamma,rep1));
rep2:=orbreps[2];
Adjacency(gamma,rep2);
Intersection(hexad,Adjacency(gamma,rep2));
AddEdgeOrbit(gamma,[23,rep2]); AddEdgeOrbit(gamma,[rep2,23]);
IsSimpleGraph(gamma);
Adjacency(gamma,23);
IsDistanceRegular(gamma);
aug:=AutGroupGraph(gamma);
Size(aug);
small := SmallGeneratingSet(aug);;
Length(small);
aug2 := Group(small);
DisplayCompositionSeries(aug2);
hs:=DerivedSubgroup(aug2);
LoadPackage("ctbllib");
ct:=CharacterTable("U3(5)");
ct2:=CharacterTable("U3(5).2");
cths:=CharacterTable("hs");
OrdersClassRepresentatives(ct);
OrdersClassRepresentatives(ct2);
ordhs:= OrdersClassRepresentatives(cths);
pos:= Position(ordhs,12);
SizesCentralizers(cths)[pos];
repeat e1:=Random(hs); until OrderPerm(e1)=12;
e2:=e1^6;;
SizesConjugacyClasses(ct2)[2];
PowerMap(cths,3)[PowerMap(cths,2)[21]];
SizesConjugacyClasses(cths)[2];
count:=0;;
repeat
  u:=Subgroup(hs,[e1,e2^Random(hs)]);
  count:=count+1;
until Index(hs,u)=176;
count;
ophom:=ActionHomomorphism(hs,RightTransversal(hs,u),OnRight);;
hsop:=Image(ophom);
IsPrimitive(hsop,[1..176]);
dp:=DirectProduct(hs,hsop);;
emb1:=Embedding(dp,1);;
emb2:=Embedding(dp,2);;
diag:=List(GeneratorsOfGroup(hs), i->Image(emb1,i)*Image(emb2,Image(ophom,i)));;
diag:=Group(diag,());;SetName(diag,"hs-276");
Size(diag);
adj:=Adjacency(gamma,5);
t:=Stabilizer(diag,[5,adj[5]],OnSets);;
sg := SmallGeneratingSet(t);;
t := Subgroup(diag, sg);
DisplayCompositionSeries(t);
aus:=AutomorphismGroup(t);;
Size(aus);
inner:=InnerAutomorphismsAutomorphismGroup(aus);
Index(aus,inner);
rt:=RightTransversal(aus,inner);;
automs:=Filtered(rt,i->i^2 in inner and not i in inner);;
Length(automs);
List(automs,Order);
List(automs,IsConjugatorAutomorphism);
i := Position( List(automs,IsConjugatorAutomorphism), true );
element:=ConjugatorInnerAutomorphism(automs[i]);;
if SignPerm( element ) = -1 then
  ot:=Filtered( Orbits(t,[1..276]), orb -> Length(orb)=2)[1];
  element:=element*(ot[1],ot[2]);
fi;
co3:=Group(Concatenation(GeneratorsOfGroup(diag),[element]),());
Size(co3);
DisplayCompositionSeries(co3);
quit;
