Sharedtriangulaire.sagewsOpen in CoCalc
Authors: Jean Lecureux, Samuel Lelièvre
Views : 2
### Statistiques sur les quotients finis de groupes ### donnés par une présentation triangulaire ## voir les tables à la fin de l'article # # Donald I. Cartwright; Anna Maria Mantero; Tim Steger; Anna Zappa # Groups acting simply transitively on the vertices of a building of type A~2. II. The cases q=2 and q=3. # Geom. Dedicata 47 (1993), no. 2, 167–223. # 20E42 (20G25 51E24) # http://www.ams.org/mathscinet-getitem?mr=1232966 237c7dc0-bf3a-4623-8d7a-60bc15d2e972 # http://doc.sagemath.org/html/en/reference/groups/sage/groups/finitely_presented.html # http://www.gap-system.org/Manuals/doc/ref/chap47.html # http://mail.gap-system.org/pipermail/forum/2003/000656.html
# ruse pour afficher la commande gap à copier-coller for i in xrange(7): i, j, k = i+1, (i+1)%7 + 1, (i+3)%7 + 1 print 'f.' + str(i) + ' * f.' + str(j) + ' * f.' + str(k) + ','
f.1 * f.2 * f.4, f.2 * f.3 * f.5, f.3 * f.4 * f.6, f.4 * f.5 * f.7, f.5 * f.6 * f.1, f.6 * f.7 * f.2, f.7 * f.1 * f.3,
# ruse pour afficher la commande gap à copier-coller for i in xrange(7): i = i + 1 print 'a' + str(i) + " := g." + str(i) + ';;'
a1 := g.1;; a2 := g.2;; a3 := g.3;; a4 := g.4;; a5 := g.5;; a6 := g.6;; a7 := g.7;;
# creons en GAP un groupe libre puis son quotient %gap f := FreeGroup("a1", "a2", "a3", "a4", "a5", "a6", "a7");; g := f / [ f.1 * f.2 * f.4, f.2 * f.3 * f.5, f.3 * f.4 * f.6, f.4 * f.5 * f.7, f.5 * f.6 * f.1, f.6 * f.7 * f.2, f.7 * f.1 * f.3 ] ;
%gap g;
<fp group on the generators [ a1, a2, a3, a4, a5, a6, a7 ]>
%gap GeneratorsOfGroup(g);
[ a1, a2, a3, a4, a5, a6, a7 ]
%gap a1 := g.1;; a2 := g.2;; a3 := g.3;; a4 := g.4;; a5 := g.5;; a6 := g.6;; a7 := g.7;;
%gap a3
a3
# On peut obtenir la liste des sous-groupes d'indice maxi k. # Ci-dessous pour k = 12 (ça prend quelques minutes). %gap li := LowIndexSubgroupsFpGroup( g, TrivialSubgroup( g ), 12);
[ Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>), Group(<fp, no generators known>) ]
# indices des groupes de la liste %gap for h in li do Print(Index(g,h)); Print(", "); od;
1, 2, 2, 2, 4, 8, 8, 8, 7, 2, 2, 4, 8, 8, 8, 2, 2, 3, 6, 4, 8, 6, 6, 8, 12, 8, 8, 4, 8, 8, 8, 6, 6, 4, 12, 8, 8, 8, 6, 6, 4, 8, 12, 8, 8, 12, 12, 4, 12, 8, 8, 8, 12, 8,
# lesquels sont normaux? %gap for h in li do Print(Index(g,h)); if IsNormal(g,h) then Print("n"); fi; Print(", "); od;
1n, 2n, 2n, 2n, 4n, 8, 8, 8, 7, 2n, 2n, 4n, 8, 8, 8, 2n, 2n, 3n, 6n, 4n, 8, 6n, 6n, 8, 12n, 8, 8, 4n, 8, 8, 8, 6n, 6n, 4n, 12n, 8, 8, 8, 6n, 6n, 4n, 8, 12n, 8, 8, 12n, 12n, 4n, 12n, 8, 8, 8, 12n, 8n,
# pour les sous-groupes normaux on peut construire le quotient # et décrire la structure de ce groupe quotient # # http://www.gap-system.org/Faq/faq.html#7.11 %gap for h in li do if IsNormal(g,h) then nhom := NaturalHomomorphismByNormalSubgroup(g,h); gmodh := Image(nhom); Print(StructureDescription(gmodh)); Print("\n"); fi; od;
1 C2 C2 C2 C2 x C2 C2 C2 C2 x C2 C2 C2 C3 C6 C2 x C2 C6 C6 C6 x C2 C2 x C2 C6 C6 C2 x C2 C6 x C2 C6 C6 C2 x C2 C6 x C2 C6 x C2 C6 x C2 C2 x C2 C6 x C2 C6 x C2 C2 x C2 x C2
#Maintenant avec la présentation numéro 9.1 %gap fb := FreeGroup("a1", "a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9", "a10", "a11", "a12", "a13");;
%gap fb
<free group on the generators [ a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ]>
%gap gb := fb / [ fb.13 * fb.13 * fb.13, fb.4 * fb.4 * fb.4, fb.12 * fb.12 * fb.12, fb.10 * fb.10 * fb.10, fb.4 * fb.12 * fb.10, fb.13 * fb.7 * fb.3, fb.13 * fb.8 * fb.9, fb.13 * fb.11 * fb.1, fb.1 * fb.3 * fb.2, fb.3 * fb.9 * fb.6, fb.9 * fb.1 * fb.5, fb.1 * fb.12 * fb.6, fb.3 * fb.10 * fb.5, fb.9 * fb.4 * fb.2, fb.2 * fb.8 * fb.11, fb.6 * fb.11 * fb.7, fb.5 * fb.7 * fb.8, fb.2 * fb.12 * fb.7, fb.6 * fb.10 * fb.8, fb.5 * fb.4 * fb.11 ] ;
%gap gb;
<fp group on the generators [ a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ]>
# Finding low index subgroups up to index 6 takes a long time %gap li6 := LowIndexSubgroupsFpGroup( gb, TrivialSubgroup( gb ), 6);
[ Group(<fp, no generators known>), Group(<fp, no generators known>) ]
%gap for h in li6 do Print(Index(gb,h)); Print(", "); od;
1, 3,
# Finding low index subgroups up to index 12 takes too long. # We should try on sagange. %gap li12 := LowIndexSubgroupsFpGroup( gb, TrivialSubgroup( gb ), 12);
%gap for h in li12 do Print(Index(gb,h)); Print(", "); od;
438c15cf-4aa5-4043-aadd-af6c2fb17f68 %gap PQuotient(gb,2);
<2-quotient system of 2-class 1 with 0 generators>
%gap hom:=EpimorphismPGroup(gb,2); Size(Image(hom));
[ a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ] -> [ <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ... ] 1
1
%gap hom:=EpimorphismPGroup(g,2,10);Size(Image(hom));
[ a1, a2, a3, a4, a5, a6, a7 ] -> [ a1, a2, a3, a1*a2*a4*a5*a7*a13*a15*a16*a22*a24*a25, a2*a3*a4*a6*a9*a10*a13*a21*a23*a24*a25*a26, a1*a2*a3*a4*a5*a6*a7*a8*a10*a11*a12*a13*a14*a15*a17*a19*a20*a21*a23*a25, a1*a3*a4*a8*a10*a11*a12*a14*a15*a16*a17*a19*a22*a23*a26*a27 ] 134217728
bcb4f46e-4eac-461c-9e85-f8680f86ad68 %gap hom:=EpimorphismPGroup(gb,3); Size(Image(hom));
[ a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ] -> [ a1, a1, a1, a1, a1, a1, a1, a1, a1, a1, a1, a1, a1 ] 3
%gap hom:=EpimorphismPGroup(gb,5); Size(Image(hom));
[ a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ] -> [ <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ... ] 1
%gap hom:=EpimorphismPGroup(gb,7); Size(Image(hom));
[ a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ] -> [ <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ... ] 1
%gap hom:=EpimorphismPGroup(g,3,100);Size(Image(hom));
[ a1, a2, a3, a4, a5, a6, a7 ] -> [ a1, a1, a1, a1, a1, a1, a1 ] 3
%gap hom:=EpimorphismPGroup(gb,11); Size(Image(hom));
[ a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ] -> [ <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ... ] 1
%gap hom:=EpimorphismPGroup(gb,13); Size(Image(hom));
[ a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13 ] -> [ <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ..., <identity> of ... ] 1
#Witzel's presentation %gap fw:= FreeGroup("a1", "a2", "a3");;
%gap gw := fw / [ fw.1^7, fw.2^7,fw.3^7, fw.1*fw.2*fw.3^3, fw.1^3*fw.2^3*fw.3 ] ;
<fp group on the generators [ a1, a2, a3 ]>
%gap hom:=EpimorphismPGroup(gw,2);Size(Image(hom));
[ a1, a2, a3 ] -> [ <identity> of ..., <identity> of ..., <identity> of ... ] 1
%gap hom:=EpimorphismPGroup(gw,3);Size(Image(hom));
[ a1, a2, a3 ] -> [ <identity> of ..., <identity> of ..., <identity> of ... ] 1
%gap hom:=EpimorphismPGroup(gw,5);Size(Image(hom));
[ a1, a2, a3 ] -> [ <identity> of ..., <identity> of ..., <identity> of ... ] 1
%gap hom:=EpimorphismPGroup(gw,7);Size(Image(hom));
[ a1, a2, a3 ] -> [ a1, a1^6, <identity> of ... ] 7
%gap hom:=EpimorphismPGroup(gw,11);Size(Image(hom));
[ a1, a2, a3 ] -> [ <identity> of ..., <identity> of ..., <identity> of ... ] 1
%gap hom:=EpimorphismPGroup(gw,13);Size(Image(hom));
[ a1, a2, a3 ] -> [ <identity> of ..., <identity> of ..., <identity> of ... ] 1
%gap hom:=EpimorphismPGroup(gw,17);Size(Image(hom));
[ a1, a2, a3 ] -> [ <identity> of ..., <identity> of ..., <identity> of ... ] 1
%gap ga := fw / [ fw.1^7, fw.2^7,fw.3^7, fw.1*fw.2*fw.3, fw.1^3*fw.2^5*fw.3 ] ;
<fp group on the generators [ a1, a2, a3 ]>
%gap hom:=EpimorphismPGroup(ga,2);Size(Image(hom));
[ a1, a2, a3 ] -> [ <identity> of ..., <identity> of ..., <identity> of ... ] 1
%gap hom:=EpimorphismPGroup(ga,3);Size(Image(hom));
[ a1, a2, a3 ] -> [ <identity> of ..., <identity> of ..., <identity> of ... ] 1
%gap hom:=EpimorphismPGroup(ga,5);Size(Image(hom));
[ a1, a2, a3 ] -> [ <identity> of ..., <identity> of ..., <identity> of ... ] 1
%gap hom:=EpimorphismPGroup(ga,7);Size(Image(hom));
[ a1, a2, a3 ] -> [ a1, a1^3, a1^3 ] 7
%gap hom:=EpimorphismPGroup(ga,11);Size(Image(hom));
[ a1, a2, a3 ] -> [ <identity> of ..., <identity> of ..., <identity> of ... ] 1