x:=Indeterminate(GF(2)); x.name:="x";; f:=x^23-1; Factors(f); f:=First(Factors(f),i->Degree(i)>1); RequirePackage("guava"); cod:=GeneratorPolCode(f,23,GF(2)); IsPerfectCode(cod); ext:=ExtendedCode(cod); WeightDistribution(ext); m24:=AutomorphismGroup(ext); m24.name:="m24"; Size(m24); Transitivity(m24,[1..24]); m22a:=Stabilizer(m24,[23,24],OnSets); Size(m22a); m22a:=Operation(m22a,[1..22]);m22a.name:="m22a";; Size(m22a); 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));; e:=Filtered(n,i->IsRegular(i,PermGroupOps.MovedPoints(i)));; Length(e); e:=e[1];; h:=Normalizer(m22a,e);; mop:=Operation(m22a,RightCosets(m22a,h),OnRight);; DegreeOperation(mop,[1..100]); 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-99"; RequirePackage("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]); Intersection(hexad,Adjacency(gamma,24)); Intersection(hexad,Adjacency(gamma,39)); AddEdgeOrbit(gamma,[23,39]); AddEdgeOrbit(gamma,[39,23]); IsSimpleGraph(gamma); Adjacency(gamma,23); IsDistanceRegular(gamma); aug:=AutGroupGraph(gamma);; Size(aug); DisplayCompositionSeries(aug); hs:=DerivedSubgroup(aug);; ct:=CharTable("U3(5)");;ct2:=CharTable("U3(5).2");; cths:=CharTable("hs");; ct.orders;ct2.orders;cths.orders; repeat e1:=Random(hs);until OrderPerm(e1)=12; e2:=e1^6;; ct2.classes[2]; cths.orders[21]; cths.powermap[3][cths.powermap[2][21]]; cths.classes[2]; cnt:=0;;repeat u:=Subgroup(aug,[e1,e2^Random(hs)]);cnt:=cnt+1; until Index(hs,u)=176;cnt; hsop:=Operation(hs,CanonicalRightTransversal(hs,u), OnCanonicalCosetElements(hs,u));; IsPrimitive(hsop,[1..176]); ophom:=OperationHomomorphism(hs,hsop);; dp:=DirectProduct(hs,hsop);; emb1:=Embedding(hs,dp,1);; emb2:=Embedding(hsop,dp,2);; diag:=List(hs.generators,i->Image(emb1,i)*Image(emb2,Image(ophom,i)));; diag:=Group(diag,());;diag.name:="hs-276";; adj:=Adjacency(gamma,1); t:=Stabilizer(diag,[1,adj[1]],OnSets);; cnt:=0;;repeat s:=Subgroup(diag,[Random(t),Random(t)]);cnt:=cnt+1; until Size(s)=Size(t);cnt;t:=s;; aus:=t.operations.AutomorphismGroup(t);; Size(aus); inner:=Subgroup(aus,aus.innerAutomorphisms);; Index(aus,inner); rt:=RightTransversal(aus,inner);; automs:=Filtered(rt,i->i^2 in inner and not i in inner);; Length(automs); List(automs,i->Order(aus,i)); ot:=Orbits(t,[1..276]);; List(ot,Length); PermutationByAutomorphism := function(grp,aut,dom) local op,oh,p,s,sim,simp,rt,rtim,extelm,l1,l2; # We compute the action on the given domain and transfer the # automorphism to this permutation action op:=Operation(grp,dom); oh:=OperationHomomorphism(grp,op); aut:=GroupHomomorphismByImages(op,op,op.generators,List(op.generators, i->Image(oh,Image(aut,PreImagesRepresentative(oh,i))))); aut.isMapping:=true; # just to save time (otherwise GAP will test that # it is indeed a homomorphism, but we know this already) # compute stabilizer and images s:=Stabilizer(op,1); sim:=Image(aut,s); # is the image a stabilizer? It is if it has an orbit of length 1 simp:=Filtered(Orbits(sim,[1..Length(dom)]),i->Length(i)=1); if Length(simp)=0 then return false; # it cannot be induced by a permutation action fi; # the permutation can be obtained by the induced action on the right # cosets. simp:=simp[1][1]; #image base point rt:=RightTransversal(op,s); rtim:=List(rt,i->Image(aut,i)); l1:=List(rt,i->1^i);l2:=List(rtim,i->simp^i); # we got the images, make a permutation from them. if Length(Orbits(grp,dom))=1 then extelm:=MappingPermListList(l1,l2); else # if we have two orbits, we have to ensure they get swapped extelm:=MappingPermListList(Concatenation(l1,l2),Concatenation(l2,l1)); fi; # test whether the computed element indeed fulfills the specifictions # (This is a safety test only) if ForAny(op.generators,i->i^extelm<>i^aut) then Error("something went wrong"); fi; # finally move the points acted on to the original domain. return extelm^MappingPermListList([1..Length(dom)],dom); end; lo:=First(ot,i->Length(i)=120);; automs:=Filtered(automs,i->PermutationByAutomorphism(t,i,lo)<>false);; Length(automs); autom:=automs[1];; pos:=Filtered([1..Length(ot)],i->Length(ot[i])=56); perms:=List(ot{Difference([1..5],pos)}, i->PermutationByAutomorphism(t,autom,i));; element:=Product(perms)*PermutationByAutomorphism(t, autom,Concatenation(ot{pos}));; ot[1]; 1^element; element:=element*(1,79);; co3:=Group(Concatenation(diag.generators,[element]),());; Size(co3); DisplayCompositionSeries(co3); quit;