GAP |
Main BranchesDownload Overview Data Libraries Packages Documentation Contacts FAQ GAP 3 |
|||||||||
SitemapNavigation Tree
|
Constructing Co3 in GAP 3See also the corresponding GAP 4 page. This is an extended version of the last example in the paper "Construction of Co3. An example of the use of an integrated system for Computational Group Theory", Groups St Andrews 1997 in Bath, by Alexander Hulpke and Steve Linton. The original example page provides links to a GAP 3 version and to an early GAP 4 version. The present page contains just a GAP 3 version. The associated GAP 3 input file is also available. gap> x:=Indeterminate(GF(2)); X(GF(2)) gap> x.name:="x";; gap> f:=x^23-1; Z(2)^0*(x^23 + 1) gap> Factors(f); [ Z(2)^0*(x + 1), Z(2)^0*(x^11 + x^10 + x^6 + x^5 + x^4 + x^2 + 1), Z(2)^0*(x^11 + x^9 + x^7 + x^6 + x^5 + x + 1) ] gap> f:=First(Factors(f),i->Degree(i)>1); Z(2)^0*(x^11 + x^10 + x^6 + x^5 + x^4 + x^2 + 1) gap> RequirePackage("guava"); ___________ | / \ / --+-- Version 1.3 / | | |\\ //| | | _ | | | \\ // | | \ | | |--\\ //--| Jasper Cramwinckel \ || | | \\ // | Erik Roijackers \___/ \___/ | \\// | Reinald Baart Eric Minkes gap> cod:=GeneratorPolCode(f,23,GF(2)); a cyclic [23,12,1..7]3 code defined by generator polynomial over GF(2) gap> IsPerfectCode(cod); true gap> ext:=ExtendedCode(cod); a linear [24,12,8]4 extended code gap> WeightDistribution(ext); [ 1, 0, 0, 0, 0, 0, 0, 0, 759, 0, 0, 0, 2576, 0, 0, 0, 759, 0, 0, 0, 0, 0, 0, 0, 1 ] gap> m24:=AutomorphismGroup(ext); m24.name:="m24"; Group( ( 1, 2)( 6,15,24,18)( 7,14,12,19)( 9,17,16,20)(10,21,23,22)(11,13), ( 2, 3)( 6,10)( 7,24)( 9,17)(11,13)(12,18)(14,21)(15,23), ( 3, 4)( 7,19) (10,22)(11,13)(12,14)(15,18)(17,20)(21,23), ( 4, 5)( 6,23,21,16)( 7, 9,20,10) (11,13)(12,15,17,19)(14,22,18,24), ( 5, 9,11,17)( 6,19,24,21)( 7,23) ( 8,20,13,16)(10,12)(14,15,22,18), ( 5, 8)( 7,23)( 9,16)(10,12)(11,13)(14,22) (17,20)(19,21), ( 6,10,19)( 7,14,18)( 8,11,13)( 9,17,16)(12,21,24)(15,23,22), ( 6,19)( 7, 9)(10,20)(12,16)(14,24)(15,21)(17,23)(18,22), ( 6, 7)( 9,19) (10,15)(12,24)(14,16)(17,22)(18,23)(20,21), ( 6,18)( 7,23)( 9,17)(10,12) (14,21)(15,24)(16,20)(19,22), ( 6,15)( 7,10)( 9,20)(12,23)(14,22)(16,17) (18,24)(19,21) ) "m24" gap> Size(m24); 244823040 gap> Transitivity(m24,[1..24]); 5 gap> m22a:=Stabilizer(m24,[23,24],OnSets); Subgroup( m24, [ ( 1, 2)( 5,14)( 6,18)( 7,12)( 8,19)( 9,20)(11,21)(13,22), ( 1, 3)( 4,13, 7,21)( 5,14)( 6, 9,22,11)( 8,16,15,19)(10,18,12,20), ( 4,13)( 6,19)( 7,21)( 8,11)( 9,15)(10,20)(12,18)(16,22), ( 3, 4,14,22)( 5,16,17,13)( 6, 7)( 8,15,11,10)( 9,12,20,18)(19,21), ( 3,17)( 4,16)( 5,14)( 6, 7)( 8,11)(12,18)(13,22)(19,21), ( 4,22,16)( 5,17,14)( 6, 8,10)( 7,11,15)( 9,19,12)(18,20,21), ( 4,21)( 6,16)( 7,13)( 8, 9)(10,18)(11,15)(12,20)(19,22), ( 4,11)( 6,10)( 7, 9)( 8,13)(12,22)(15,21)(16,18)(19,20), ( 4,22)( 6, 7)( 8,18)( 9,10)(11,12)(13,16)(15,20)(19,21), ( 2,14, 5, 3)( 4, 7, 9,10)( 6,22,12,11)( 8,16,20,21)(15,18)(23,24) ] ) gap> Size(m22a); 887040 gap> m22a:=Operation(m22a,[1..22]);m22a.name:="m22a";; Group( ( 1, 2)( 5,14)( 6,18)( 7,12)( 8,19)( 9,20)(11,21)(13,22), ( 1, 3) ( 4,13, 7,21)( 5,14)( 6, 9,22,11)( 8,16,15,19)(10,18,12,20), ( 4,13)( 6,19) ( 7,21)( 8,11)( 9,15)(10,20)(12,18)(16,22), ( 3, 4,14,22)( 5,16,17,13)( 6, 7) ( 8,15,11,10)( 9,12,20,18)(19,21), ( 3,17)( 4,16)( 5,14)( 6, 7)( 8,11)(12,18) (13,22)(19,21), ( 4,22,16)( 5,17,14)( 6, 8,10)( 7,11,15)( 9,19,12)(18,20,21), ( 4,21)( 6,16)( 7,13)( 8, 9)(10,18)(11,15)(12,20)(19,22), ( 4,11)( 6,10) ( 7, 9)( 8,13)(12,22)(15,21)(16,18)(19,20), ( 4,22)( 6, 7)( 8,18)( 9,10) (11,12)(13,16)(15,20)(19,21), ( 2,14, 5, 3)( 4, 7, 9,10)( 6,22,12,11) ( 8,16,20,21)(15,18) ) gap> Size(m22a); 887040 gap> s:=SylowSubgroup(m22a,2);; gap> a:=AgGroup(s); Group( g1, g2, g3, g4, g5, g6, g7, g8 ) gap> n:=Filtered(NormalSubgroups(a),i->Size(i)=16 > and IsElementaryAbelian(i)); [ Subgroup( Group( g1, g2, g3, g4, g5, g6, g7, g8 ), [ g4, g5*g6, g7, g8 ] ), Subgroup( Group( g1, g2, g3, g4, g5, g6, g7, g8 ), [ g1*g7, g2*g3*g7, g5*g6, g8 ] ), Subgroup( Group( g1, g2, g3, g4, g5, g6, g7, g8 ), [ g2*g3, g5*g6, g7, g8 ] ), Subgroup( Group( g1, g2, g3, g4, g5, g6, g7, g8 ), [ g4*g7, g5, g6, g8 ] ), Subgroup( Group( g1, g2, g3, g4, g5, g6, g7, g8 ), [ g4*g7, g5*g7, g6*g7, g8 ] ) ] gap> n:=List(n,i->Image(a.bijection,i));; gap> e:=Filtered(n,i->IsRegular(i,PermGroupOps.MovedPoints(i)));; gap> Length(e); 1 gap> e:=e[1];; gap> h:=Normalizer(m22a,e);; gap> mop:=Operation(m22a,RightCosets(m22a,h),OnRight);; gap> DegreeOperation(mop,[1..100]); 77 gap> ophom:=OperationHomomorphism(m22a,mop);; gap> dp:=DirectProduct(m22a,mop);; gap> emb1:=Embedding(m22a,dp,1);; gap> emb2:=Embedding(mop,dp,2);; gap> diag:=List(m22a.generators, > i->Image(emb1,i)*Image(emb2,Image(ophom,i)));; gap> diag:=Group(diag,());; gap> diag.name:="M22.2-99"; "M22.2-99" gap> RequirePackage("grape"); Loading GRAPE 2.31 (GRaph Algorithms using PErmutation groups), by L.H.Soicher@qmw.ac.uk. gap> gamma:=NullGraph(diag,100); rec( isGraph := true, order := 100, group := M22.2-99, schreierVector := [ -1, 1, 2, 4, 1, 7, 10, 8, 8, 4, 8, 8, 2, 10, 2, 5, 5, 8, 7, 10, 7, 4, -2, 10, 6, 6, 1, 10, 8, 2, 1, 4, 4, 10, 10, 1, 4, 2, 4, 5, 4, 4, 1, 8, 2, 7, 4, 4, 8, 4, 2, 10, 10, 2, 3, 10, 6, 9, 10, 10, 4, 4, 2, 4, 5, 5, 2, 10, 4, 6, 3, 9, 2, 5, 2, 5, 2, 5, 1, 1, 6, 4, 7, 9, 8, 4, 3, 3, 6, 3, 5, 10, 5, 2, 2, 8, 10, 2, 4, -3 ], adjacencies := [ [ ], [ ], [ ] ], representatives := [ 1, 23, 100 ], isSimple := true ) gap> AddEdgeOrbit(gamma,[1,100]);AddEdgeOrbit(gamma,[100,1]); gap> hexad:=First(Orbits(h,[1..22]),i->Length(i)=6); [ 2, 8, 17, 15, 22, 6 ] gap> for i in hexad do AddEdgeOrbit(gamma,[i,23]); > AddEdgeOrbit(gamma,[23,i]); od; gap> Adjacency(gamma,23); [ 2, 6, 8, 15, 17, 22 ] gap> stab:=Stabilizer(diag,23);; gap> orbs:=Orbits(stab,[24..99]);; gap> orbreps:=List(orbs,i->i[1]); [ 24, 39 ] gap> Intersection(hexad,Adjacency(gamma,24)); [ 15, 17 ] gap> Intersection(hexad,Adjacency(gamma,39)); [ ] gap> AddEdgeOrbit(gamma,[23,39]); AddEdgeOrbit(gamma,[39,23]); gap> IsSimpleGraph(gamma); true gap> Adjacency(gamma,23); [ 2, 6, 8, 15, 17, 22, 39, 42, 46, 49, 52, 56, 63, 68, 70, 76, 80, 81, 86, 90, 93, 94 ] gap> IsDistanceRegular(gamma); true gap> aug:=AutGroupGraph(gamma);; gap> Size(aug); 88704000 gap> DisplayCompositionSeries(aug); <G> (3 gens, size 88704000) | Z(2) <S> (2 gens, size 44352000) | HS <1> (0 gens) gap> hs:=DerivedSubgroup(aug);; gap> ct:=CharTable("U3(5)");;ct2:=CharTable("U3(5).2");; gap> cths:=CharTable("hs");; gap> ct.orders;ct2.orders;cths.orders; [ 1, 2, 3, 4, 5, 5, 5, 5, 6, 7, 7, 8, 8, 10 ] [ 1, 2, 3, 4, 5, 5, 5, 6, 7, 8, 10, 2, 4, 6, 8, 10, 12, 20, 20 ] [ 1, 2, 2, 3, 4, 4, 4, 5, 5, 5, 6, 6, 7, 8, 8, 8, 10, 10, 11, 11, 12, 15, 20, 20 ] gap> repeat e1:=Random(hs);until OrderPerm(e1)=12; gap> e2:=e1^6;; gap> ct2.classes[2]; 525 gap> cths.orders[21]; 12 gap> cths.powermap[3][cths.powermap[2][21]]; 2 gap> cths.classes[2]; 5775 gap> cnt:=0;;repeat u:=Subgroup(aug,[e1,e2^Random(hs)]);cnt:=cnt+1; > until Index(hs,u)=176;cnt; 26 gap> hsop:=Operation(hs,CanonicalRightTransversal(hs,u), > OnCanonicalCosetElements(hs,u));; gap> IsPrimitive(hsop,[1..176]); true gap> ophom:=OperationHomomorphism(hs,hsop);; gap> dp:=DirectProduct(hs,hsop);; gap> emb1:=Embedding(hs,dp,1);; gap> emb2:=Embedding(hsop,dp,2);; gap> diag:=List(hs.generators,i->Image(emb1,i)*Image(emb2,Image(ophom,i)));; gap> diag:=Group(diag,());;diag.name:="hs-276";; gap> adj:=Adjacency(gamma,1); [ 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100 ] gap> t:=Stabilizer(diag,[1,adj[1]],OnSets);; gap> cnt:=0;;repeat s:=Subgroup(diag,[Random(t),Random(t)]);cnt:=cnt+1; > until Size(s)=Size(t);cnt;t:=s;; 1 gap> aus:=t.operations.AutomorphismGroup(t);; gap> Size(aus); 241920 gap> inner:=Subgroup(aus,aus.innerAutomorphisms);; gap> Index(aus,inner); 6 gap> rt:=RightTransversal(aus,inner);; gap> automs:=Filtered(rt,i->i^2 in inner and not i in inner);; gap> Length(automs); 3 gap> List(automs,i->Order(aus,i)); [ 2, 2, 2 ] gap> ot:=Orbits(t,[1..276]);; gap> List(ot,Length); [ 2, 56, 42, 56, 120 ] gap> 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; function ( grp, aut, dom ) ... end gap> gap> lo:=First(ot,i->Length(i)=120);; gap> automs:=Filtered(automs,i->PermutationByAutomorphism(t,i,lo)<>false);; gap> Length(automs); 1 gap> autom:=automs[1];; gap> pos:=Filtered([1..Length(ot)],i->Length(ot[i])=56); [ 2, 4 ] gap> perms:=List(ot{Difference([1..5],pos)}, > i->PermutationByAutomorphism(t,autom,i));; gap> element:=Product(perms)*PermutationByAutomorphism(t, > autom,Concatenation(ot{pos}));; gap> ot[1]; [ 1, 79 ] gap> 1^element; 1 gap> element:=element*(1,79);; gap> co3:=Group(Concatenation(diag.generators,[element]),());; gap> Size(co3); 495766656000 gap> DisplayCompositionSeries(co3); <G> (3 gens, size 495766656000) | Co(3) <1> (0 gens) gap> quit; Alexander Hulpke Department of Mathematics Colorado State University Weber Building Fort Collins, CO 80523 USA email: hulpke@math.colostate.edu |
|||||||||
The GAP Group Last updated: Wed May 26 16:04:26 2004 |