SizeScreen([61, ]);;
x:=Indeterminate(GF(2));
x.name:="x";;
f:=x^23-1;
Factors(f);
f:=First(Factors(f),i->Degree(i)>1);
SizeScreen([72, ]);;
RequirePackage("guava");
cod:=GeneratorPolCode(f,23,GF(2));
IsPerfectCode(cod);
ext:=ExtendedCode(cod);
SizeScreen([61, ]);;
WeightDistribution(ext);
m24:=AutomorphismGroup(ext);
m24.name:="m24";;
Size(m24);
m22a:=Stabilizer(m24,[23,24],OnSets);
m22a:=Operation(m22a,[1..22]);
s:=SylowSubgroup(m22a,2);;
a:=AgGroup(s);
n:=Filtered(NormalSubgroups(a),
i->Size(i)=16 and IsElementaryAbelian(i));
n:=List(n,i->Image(a.bijection,i));;
u:=First(n,i->IsRegular(i,PermGroupOps.MovedPoints(i)));;
un:=Normalizer(m22a,u);;
mop:=Operation(m22a,RightCosets(m22a,un),OnRight);;
ophom:=OperationHomomorphism(m22a,mop);;
dp:=DirectProduct(m22a,mop);;
emb1:=Embedding(m22a,dp,1);;
emb2:=Embedding(mop,dp,2);;
diag:=List(m22a.generators,
i->Image(emb1,i)*Image(emb2,Image(ophom,i)));;
diag:=Group(diag,());;
diag.name:="M22.2-diag";;
SizeScreen([67, ]);;
RequirePackage("grape");
SizeScreen([61, ]);;
gamma:=NullGraph(diag,100);
AddEdgeOrbit(gamma,[1,100]);AddEdgeOrbit(gamma,[100,1]);
hexad:=First(Orbits(un,[1..22]),i->Length(i)=6);
hexad:=Set(hexad);
for i in hexad do AddEdgeOrbit(gamma,[i,23]);
AddEdgeOrbit(gamma,[23,i]);
od;
Adjacency(gamma,23);
stab:=Stabilizer(diag,23);;
storbrep:=List(Orbits(stab,[23..99]),i->i[1]);
reps:=List(storbrep,i->RepresentativeOperation(diag,23,i));
repi:=List(reps,i->Intersection(hexad,OnSets(hexad,i)));
pos:=First([1..3],i->Length(repi[i])=0);
AddEdgeOrbit(gamma,[23,storbrep[pos]]);
AddEdgeOrbit(gamma,[storbrep[pos],23]);
IsSimpleGraph(gamma);
Adjacency(gamma,23);
IsDistanceRegular(gamma);
aug:=AutGroupGraph(gamma);;
Size(aug);
DisplayCompositionSeries(aug);
quit;
