Dear Marek, the crucial fact one can use is that the 21 octads containing a given triple of points, say, (1,2,3) form the projective plane of order 4. So, if you fix (1,2,3) and any two points, say, 4,5, in the projective plane P on {4..24}, you get a subgroup with 2 orbits on {6,24}, one of them, of length 3, corresponding to the unique line of P on 4 and 5. So the points in this length 3 orbit, together with {1..5}, will form an octad. g:=MathieuGroup(24); h:=Stabilizer(g,[1,2,3,4,5],OnTuples); o:=Orbits(h,[6..24]); o3:=Filtered(o,x->Length(x)=3)[1]; octads:=Orbit(g,Union([1..5],o3),OnSets);;
give you the octads. Conversely, if you have the set of octads, you can start by taking the 21 octads containing {1,2,3}, and write down generators for its group of automorphisms (e.g. by coordinatizing the plane using homogeneous coordinates, a nice exercise in finite geometry). Then do the same for some other triple. Combining the resulting sets of generators will give you a generating set for M_{24}. Hope this helps, Dmitrii On 10 December 2010 21:24, Marek Mitros <ma...@mitros.org> wrote: > Hi All, > > For some time I struggle to obtain Golay code from the Mathieu group and > opposite - find Mathieu group which preserve given Golay code. I found > solution in one way which I present below. It is quick. Does anybody know > how to obtain Mathieu Group M24 generators for given Golay code ? > > Regards, > Marek Mitros > > > #-------------------------------------------------------------------------------------------------------- > m:=MathieuGroup(24); > stab:=Stabilizer(m, [1,2,3,4,5], OnTuples); > n0:=First([6..24], x->Size(Orbit(stab,x))=3); # find 3-element orbit > # now we have first octad > o1:=Concatenation([1..5], Orbit(stab, n0)); > rs:=GlobalRandomSource; > rand:=function(n) return Random(rs, [1..n]); end;; > gen:=GeneratorsOfGroup(m); # 3 generators of order 23,5,2 > octads:=[o1]; count:=0; > while Size(octads)<759 and count <20000 do > # generate random element > rl:=List([1..10], n->rand(3)); > g:=Product(gen{rl}); > # find image of the octad > im:=OnSets(o1, g); > if not (im in octads) then > Add(octads, im); > fi; > count:=count+1; > if count mod 1000 = 0 then Print(Size(octads), " octads found; counter=", > count,"\n"); fi; > od; > # now we have ready 759 octads. Verify result whether intersections of > octads are 0,2,4 > Set(List(octads, x->Size(Intersection(octads[1], x))))= [0,2,4,8]; > _______________________________________________ > Forum mailing list > Forum@mail.gap-system.org > http://mail.gap-system.org/mailman/listinfo/forum > -- Dmitrii Pasechnik ----- DISCLAIMER: Any text following this sentence does not constitute a part of this message, and was added automatically during transmission. CONFIDENTIALITY: This email is intended solely for the person(s) named and may be confidential and/or privileged. If you are not the intended recipient, please delete it, notify us and do not copy, use, or disclose its content. Thank you. Towards A Sustainable Earth: Print Only When Necessary _______________________________________________ Forum mailing list Forum@mail.gap-system.org http://mail.gap-system.org/mailman/listinfo/forum