1##
2LoadPackage("orb");
3LoadPackage("io");
4LoadPackage("cvec");
5LoadPackage("atlasrep");
6LoadPackage("chop");
7LoadPackage("genss");
8
9##
10gens := AtlasGenerators([ "B", [ "BG1-f2r4370B0.m1", "BG1-f2r4370B0.m2" ], 1, 2 ]).generators;
11bgens := List(gens,CMat);
12slpbtoe := AtlasStraightLineProgram([ "B", "BG1-max1W1", 1 ]).program;;
13egens := ResultOfStraightLineProgram(slpbtoe,bgens);
14
15##
16x := egens[1]-egens[1]^0;;
17nsx := NullspaceMat(x);
18y := nsx * (egens[2]-egens[2]^0);;
19nsy := NullspaceMat(y);
20v := nsy[1]*nsx;
21
22##
23SetInfoLevel(InfoChop,2);
24m := Module(egens);
25r := Chop(m);
26i := Position(List(r.db,Dimension),78);;
27egens78 := GeneratorsWithMemory(RepresentingMatrices(r.db[i]));
28
29##
30o := Orb(egens78,StripMemory(egens78[1])^0,OnRight,rec(schreier := true,
31         lookingfor := function(o,x) return Order(x)=22; end));
32Enumerate(o);
33word := TraceSchreierTreeForward(o,PositionOfFound(o));
34g2a := Product(egens78{word})^11;
35o := Orb(egens78,StripMemory(egens78[1])^0,OnRight,rec(schreier := true,
36         lookingfor := function(o,x) return Order(x)=13; end));
37Enumerate(o);
38word := TraceSchreierTreeForward(o,PositionOfFound(o));
39b := Product(egens78{word});
40
41##
42pr := ProductReplacer(egens78,rec(maxdepth := 150));
43i := 0;;
44repeat
45      i := i + 1;
46      x := Next(pr);
47      a := g2a^x;
48until IsOne((a*b)^11) and IsOne(((a*b)^4*b*a*b*(a*b*b)^2)^12) and
49      IsOne((a*b^2)^21) and IsOne(Comm(a,b)^3) and
50      IsOne(Comm(a,b^2)^3) and IsOne(Comm(a,b^3)^3) and
51      IsOne(Comm(a,b^4)^2) and IsOne(Comm(a,b^5)^3) and
52      IsOne(Comm(a,b*a*b^2)^3) and IsOne(Comm(a,b^-1*a*b^-2)^2) and
53      IsOne(Comm(a,b*a*b^5)^2) and IsOne(Comm(a,b^2*a*b^5)^2);
54i;
55
56##
57S := StabilizerChain(Group(a,b),rec(TryShortOrbit := 30,
58                                    OrbitLengthLimit := 5000));
59Size(S)=Size(CharacterTable("Fi22"));
60p := Group(ActionOnOrbit(S!.orb,[a,b]));;
61DisplayCompositionSeries(p);
62
63##
64SetInfoLevel(InfoSLP,2);
65slpetofi22 := SLPOfElms([a,b]);
66Length(LinesOfStraightLineProgram(slpetofi22));
67SlotUsagePattern(slpetofi22);;
68fgens := ResultOfStraightLineProgram(slpetofi22,egens);
69a := fgens[1];;
70b := fgens[2];;
71IsOne(b^13);
72IsOne((a*b)^11);
73IsOne((a*b^2)^21);
74
75##
76slpfi22tom12 := AtlasStraightLineProgram([ "Fi22", "F22G1-max14W1", 1 ]).program;;
77slpm12tol211 := AtlasStraightLineProgram([ "M12", "M12G1-max5W1", 1 ]).program;;
78mgens := ResultOfStraightLineProgram(slpfi22tom12,fgens);
79lgens := ResultOfStraightLineProgram(slpm12tol211,mgens);
80m := Module(mgens);;
81r := Chop(m);;
82rad := RadicalSeries(m,r.db);
83
84##
85i := Position(List(rad.db,Dimension),32);;
86mgens32 := RepresentingMatrices(rad.db[i]);
87OrbitStatisticOnVectorSpace(mgens32,95040,30);
88
89##
90bgens := List(bgens,x->rad.basis*x*rad.ibasis);;
91egens := List(egens,x->rad.basis*x*rad.ibasis);;
92fgens := List(fgens,x->rad.basis*x*rad.ibasis);;
93mgens := List(mgens,x->rad.basis*x*rad.ibasis);;
94lgens := List(lgens,x->rad.basis*x*rad.ibasis);;
95j := Position(rad.isotypes[1],i);;
96l := rad.cfposs[1][j];;
97Append(l,Difference([1..4370],l));
98bgens := List(bgens,x->ORB_PermuteBasisVectors(x,l));;
99egens := List(egens,x->ORB_PermuteBasisVectors(x,l));;
100fgens := List(fgens,x->ORB_PermuteBasisVectors(x,l));;
101mgens := List(mgens,x->ORB_PermuteBasisVectors(x,l));;
102lgens := List(lgens,x->ORB_PermuteBasisVectors(x,l));;
103
104##
105lgens32 := List(lgens,x->ExtractSubMatrix(x,[1..32],[1..32]));
106m := Module(lgens32);;
107r := Chop(m);
108soc := SocleSeries(m,r.db);
109i := Position(List(soc.db,x->[Dimension(x),DegreeOfSplittingField(x)]),
110              [10,1]);;
111j := Position(soc.isotypes[1],i);;
112l := Concatenation(soc.cfposs[1]{[j,j+1]});;
113lgens32 := List(lgens32,x->soc.basis*x*soc.ibasis);
114lgens20 := List(lgens32,x->ExtractSubMatrix(x,l,l));
115OrbitStatisticOnVectorSpace(lgens20,660,30);
116
117##
118t := ORB_EmbedBaseChangeTopLeft(soc.basis,4370);
119ti := ORB_EmbedBaseChangeTopLeft(soc.ibasis,4370);
120bgens := List(bgens,x->t*x*ti);;
121egens := List(egens,x->t*x*ti);;
122fgens := List(fgens,x->t*x*ti);;
123mgens := List(mgens,x->t*x*ti);;
124lgens := List(lgens,x->t*x*ti);;
125Append(l,Difference([1..4370],l));
126bgens := List(bgens,x->ORB_PermuteBasisVectors(x,l));;
127egens := List(egens,x->ORB_PermuteBasisVectors(x,l));;
128fgens := List(fgens,x->ORB_PermuteBasisVectors(x,l));;
129mgens := List(mgens,x->ORB_PermuteBasisVectors(x,l));;
130lgens := List(lgens,x->ORB_PermuteBasisVectors(x,l));;
131
132##
133x := egens[1]-egens[1]^0;;
134nsx := NullspaceMat(x);;
135y := nsx * (egens[2]-egens[2]^0);;
136nsy := NullspaceMat(y);;
137v := nsy[1]*nsx;;
138
139##
140mgens32 := List(mgens,x->ExtractSubMatrix(x,[1..32],[1..32]));
141S := StabilizerChain(Group(mgens32),rec(TryShortOrbit := 10));
142p := Group(ActionOnOrbit(S!.orb,mgens32));
143i := SmallerDegreePermutationRepresentation(p);;
144pp := Group(List(GeneratorsOfGroup(p),x->ImageElm(i,x)));
145m12 := MathieuGroup(12);;
146i := IsomorphismGroups(pp,m12);;
147mpermgens := List(GeneratorsOfGroup(pp),x->ImageElm(i,x));
148lpermgens := ResultOfStraightLineProgram(slpm12tol211,mpermgens);
149
150##
151f := IO_File("data.gp","w");;
152IO_Pickle(f,"seed");;
153IO_Pickle(f,v);;
154IO_Pickle(f,"generators");;
155IO_Pickle(f,bgens);;
156IO_Pickle(f,egens);;
157IO_Pickle(f,fgens);;
158IO_Pickle(f,mgens);;
159IO_Pickle(f,lgens);;
160IO_Pickle(f,"permutations");;
161IO_Pickle(f,mpermgens);;
162IO_Pickle(f,lpermgens);;
163IO_Close(f);;
164