Les groupes Croisés (Cross group) des twists platoniques

Calculs, programmes, ... en GAP pour le Rubik's Cube, le Pyraminx, le Skewb, ...
Avatar de l’utilisateur
Morphocode
Crazy
Crazy
Homme
Balance
Âge: 100
Messages : 804
Inscription : Lun 25/11/2013 17:06
Localisation : Paris
Contact :

Les groupes Croisés (Cross group) des twists platoniques

Message non lupar Morphocode » Ven 8/03/2024 19:22

Le groupe Croisé du Pyraminx

Pyraminx :
Image

On ignore les orientations, les sommets et les arêtes sont identifiés par un numéro comme indique la fig ci-dessous

Numérotation des pièces :
Image

On définit les 4 rotations (rotations-croisées) comme ceci :
Image
Une rotation-croissé c'est une rotation qui déplace les sommets et les arêtes .

On pose : (formules croisées)
K = < XY' | X,Y ∈{ G ,D , H , P } >
* K engendre un groupe de permutations des sommets Cs = C, par définition C est le groupe Croisé du Pyraminx .
* K engendre aussi un groupe de permutations des arêtes Ca, par définition Ca est le groupe Croisé des arêtes .

Voici un script en GAP qui permet de trouver C et Ca

Code : Tout sélectionner


#FormuleCroise = < XY' | X,Y rotations-croisée >
#Le groupe croisé du Pyraminx (tétraèdre :S=4,F=4,A=6)

Twist := "Pyraminx";
#les rotations-croisées des sommets (Cross vertice)
vG := (9,8,10);
vD := (9,10,7) ;
vH := (8,7,10) ;
vP := (9,7,8) ;
SX := [vG, vD, vH, vP];;
SYp := [vG^-1, vD^-1, vH^-1, vP^-1];;
SXtxt :=  ['G', 'D', 'H', 'P'];; #rotation-croisée, G=G-souligné
SYptxt := ['g', 'd', 'h', 'p'];; #g=inverse de G
rot:=4;

#les rotations-croisées des arêtes (Cross edge)
uG := (1,6,3) ;
uD := (2,3,5) ;
uH := (4,5,6) ;
uP := (1,2,4) ;
AX := [uG, uD, uH, uP];;
AYp := [uG^-1, uD^-1, uH^-1, uP^-1];;

# fonction donne au hasard une formule-croisée de longueur 2n
RandomCrossFormula := function(n)
 local nombre, permutations, k , formule, m ;
 nombre := List([1..n], i -> RandomList([1..rot]));; #[1..4] ==> 4 rotations
 #Print("\n listnombre = ", nombre , "\n" );
 permutations := [];
 formule := [];

 for k in nombre do
     
      Append(permutations,[SX[k]]); # pour le calcul
      Append(formule,[SXtxt[k]]); # pour affichage
      
      m :=  RandomList([1..rot]);
      while k=m do
            m :=  RandomList([1..rot]);     
        od;
      
       Append(permutations, [SYp[m]]);
      Append(formule,[SYptxt[m]]);
         
 od;

 Product(permutations); # calculer le resultat
 
 # affichage
 formule := ReplacedString( formule, "g", "G'" );;
 formule := ReplacedString( formule, "d", "D'" );;
 formule := ReplacedString( formule, "h", "H'" );;
 formule := ReplacedString( formule, "p", "P'" );;
 
 return formule;
end;

Print("\n FormuleCross = ", RandomCrossFormula(5) , "\n" );

############
generators := Set(Arrangements([1..rot],2), t -> AX[t[2]] * AYp[t[1]]);; #[1..4] ==> 4 rotations
#Print("\n generateur = ", Length(generators) , "\n" );
Cross := Group(generators);;
#Print("\n |Cross-edge| = ", Size(Cross) , "\n" );
#IsSimpleGroup( Cross ) ;
Print("\n Cross-",Twist,"-edge = ", StructureDescription(Cross) , "\n" );

generators := Set(Arrangements([1..rot],2), t -> SX[t[2]] * SYp[t[1]]);; #[1..4] ==> 4 rotations
#Print("\n generateur = ", Length(generators) , "\n" );
Cross := Group(generators);;
#Print("\n |Cross-",Twist,"| = ", Size(Cross) , "\n" );
#IsSimpleGroup( Cross ) ;
Print("\n Cross-",Twist," = ", StructureDescription(Cross) , "\n" );





On trouve :
Image

Commentaire : C2 x C2 = Z2 x Z2 = le groupe 4-Klein assez célèbre
A5 = Premier groupe simple non abélien ==> donc célèbre aussi :oui:
Image

Avatar de l’utilisateur
Morphocode
Crazy
Crazy
Homme
Balance
Âge: 100
Messages : 804
Inscription : Lun 25/11/2013 17:06
Localisation : Paris
Contact :

Re: Les groupes Croisés (Cross group) des twists platoniques

Message non lupar Morphocode » Ven 8/03/2024 19:51

Le groupe Croisé du Rubik's Cube

Rubik's Cube :
Image

On ignore les orientations, les sommets et les arêtes sont identifiés par un numéro comme indique la fig ci-dessous

Numérotation des pièces :
Image

On définit les 6 rotations comme ceci :
Image
Une rotation-croissé c'est une rotation qui déplace les sommets et les arêtes .

On pose : (formules croisées)
K = < XY' | X,Y ∈{ H,B,A,P,G,D } >
* K engendre un groupe de permutations des sommets Cs = C, par définition C est le groupe Croisé du Pyraminx .
* K engendre aussi un groupe de permutations des arêtes Ca, par définition Ca est le groupe Croisé des arêtes .

Voici un script en GAP qui permet de trouver C et Ca

Code : Tout sélectionner


# Cross = < XY' | X,Y rotations croisées = rotations de base >
# Le groupe croisé du Rubik's Cube (Cube : F=6,S=8,A=12)
# 3  3  4
# 2  H  4
# 2  1  1
# -------
# 6  A  5|7 P  8
# -------
# 7  11 8
# 10 B  12
# 6  9  5

Twist := "Rubik";
#les rotations-croisées des sommets (Cross vertice)
vH := (1,2,3,4) ;
vB := (5,8,7,6) ;
vA := (1,5,6,2) ;
vP := (4,3,7,8) ;
vG := (2,6,7,3) ;
vD := (1,4,8,5) ;
SX := [vH, vB, vA, vP, vG, vD];
SYp := [vH^-1, vB^-1, vA^-1, vP^-1, vG^-1, vD^-1 ] ;
SXtxt :=  ['H', 'B', 'A', 'P', 'G', 'D'];
SYptxt := ['h', 'b', 'a', 'p', 'g', 'd']; #h=face opposée de H
rot:=6;

#les rotations-croisées des arêtes (Cross edge)
uH := (1,2,3,4);
uB := (9,12,11,10);
uA := (1,5,9,6);
uP := (3,7,11,8);
uG := (2,6,10,7);
uD := (5,4,8,12) ;
AX := [uH, uB, uA, uP, uG, uD];
AYp := [uH^-1, uB^-1, uA^-1, uP^-1, uG^-1, uD^-1 ] ;


# fonction donne au hasard une formule-croisée de longueur 2n
RandomCrossFormula := function(n)
 local nombre, permutations, k , formule, m ;
 nombre := List([1..n], i -> RandomList([1..rot])); #[1..6] ==> 6 rotations
 permutations := [];
 formule := [];

 for k in nombre do
     
      Append(permutations,[SX[k]]);
      Append(formule,[SXtxt[k]]);
      
      m :=  RandomList([1..rot]);
      while k=m do
            m :=  RandomList([1..rot]);     
        od;
      
       Append(permutations, [SYp[m]]);
      Append(formule,[SYptxt[m]]);
         
 od;

 Product(permutations);
 
 formule := ReplacedString( formule, "h", "H'" );;
 formule := ReplacedString( formule, "b", "B'" );;
 formule := ReplacedString( formule, "a", "A'" );;
 formule := ReplacedString( formule, "p", "P'" );;
 formule := ReplacedString( formule, "g", "G'" );;
 formule := ReplacedString( formule, "d", "D'" );;
 
 return formule;
end;

Print("\n FormuleCross = ", RandomCrossFormula(5) , "\n" );

generators := Set(Arrangements([1..rot],2), t -> AX[t[2]] * AYp[t[1]]);; #[1..6] ==> 6 rotations
#Print("\n generateur = ", Length(generators) , "\n" );
Cross := Group(generators);;
#Print("\n |Cross-edge| = ", Size(Cross) , "\n" );
#IsSimpleGroup( Cross ) ;
Print("\n Cross-",Twist,"-edge = ", StructureDescription(Cross) , "\n" );

generators := Set(Arrangements([1..rot],2), t -> SX[t[2]] * SYp[t[1]]);; #[1..6] ==> 6 rotations
#Print("\n generateur = ", Length(generators) , "\n" );
Cross := Group(generators);;
#Print("\n |Cross-",Twist,"| = ", Size(Cross) , "\n" );
#IsSimpleGroup( Cross ) ;
Print("\n Cross-",Twist," = ", StructureDescription(Cross) , "\n" );





On trouve :
Image

Commentaire : PSL(3,2) = PSL(2,7) = GL(3,2) C'est le groupe simple GS168 à 168 éléments , il y a un seul groupe simple à 168 éléments donc très célèbre
C'est D. SINGMASTER qui a découvert le groupe Croisé du Rubik's Cube

NOTE : il est très simple de construire GS168, c'est un sous groupe de A7 engendré par les deux permutations :
a = (1,2,3,4,5,6,7)
b = (1,2)(3,6)

GS168 = < a, b >
Image

Avatar de l’utilisateur
Morphocode
Crazy
Crazy
Homme
Balance
Âge: 100
Messages : 804
Inscription : Lun 25/11/2013 17:06
Localisation : Paris
Contact :

Re: Les groupes Croisés (Cross group) des twists platoniques

Message non lupar Morphocode » Sam 9/03/2024 08:37

Le groupe Croisé du FTO

FTO :
Image

On ignore les orientations, les sommets et les arêtes sont identifiés par un numéro comme indique la fig ci-dessous

Numérotation des pièces :
Image
Image

On définit les 8 rotations comme ceci : (rotations croisées)
Image
Une rotation-croissé c'est une rotation qui déplace les sommets et les arêtes .

On pose : (formules croisées)
K = < XY' | X,Y ∈{ H,B,A,P,G,D,G,D } >
* K engendre un groupe de permutations des sommets Cs = C, par définition C est le groupe Croisé du Pyraminx .
* K engendre aussi un groupe de permutations des arêtes Ca, par définition Ca est le groupe Croisé des arêtes .

Voici un script en GAP qui permet de trouver C et Ca

Code : Tout sélectionner

# Cross = < XY' | X,Y rotations croisées >
# Le groupe croisé du FTO (octaèdre : F=8,S=6,A=12)

Twist := "FTO" ;
#les rotations-croisées des sommets (Cross vertice)
vH := (1,2,3) ;
vB := (4,5,6) ;
vA := (1,4,2) ;
vP := (3,6,5) ;
vG := (2,4,6) ;
vD := (1,5,4) ;
vL := (1,3,5) ; #L=face opposée à G
vR := (2,6,3) ; #R=face opposée à D
SX := [vH, vB, vA, vP, vG, vD, vL, vR];
SYp := [vH^-1, vB^-1, vA^-1, vP^-1, vG^-1, vD^-1, vL^-1, vR^-1];
SXtxt :=  ['H', 'B', 'A', 'P', 'G', 'D', 'L', 'R']; #L=G-souligné=face opposé de G
SYptxt := ['h', 'b', 'a', 'p', 'g', 'd', 'l', 'r']; #l=inverse de L
rot := 8;

#les rotations-croisées des arêtes (Cross edge)
uH := (1,2,3);
uB := (4,5,6);
uA := (1,7,8);
uP := (10,5,11);
uG := (8,6,9);
uD := (7,12,4);
uL := (3,11,12); #L=face opposée à G,
uR := (2,9,10) ; #R=face opposée à D
AX := [uH, uB, uA, uP, uG, uD, uL, uR];
AYp :=  [uH^-1, uB^-1, uA^-1, uP^-1, uG^-1, uD^-1, uL^-1, uR^-1];

# fonction donne au hasard une formule-croisée de longueur 2n
RandomCrossFormula := function(n)
 local nombre, permutations, k , formule, m ;
 nombre := List([1..n], i -> Random([1..rot])); #[1..rot] ==> rot rotations
 #Print("\n nombre = ", nombre , "\n" );
 permutations := [];
 formule := [];

 for k in nombre do
     
      Append(permutations,[SX[k]]);
      Append(formule,[SXtxt[k]]);
      
      m :=  Random([1..rot]);
      while k=m do
         
            m :=  Random([1..rot]);     
        od;
      
       Append(permutations, [SYp[m]]);
      Append(formule,[SYptxt[m]]);
         
 od;

 Product(permutations);
 
 formule := ReplacedString( formule, "h", "H'" );;
 formule := ReplacedString( formule, "b", "B'" );;
 formule := ReplacedString( formule, "a", "A'" );;
 formule := ReplacedString( formule, "p", "P'" );;
 formule := ReplacedString( formule, "g", "G'" );;
 formule := ReplacedString( formule, "d", "D'" );;
 formule := ReplacedString( formule, "l", "L'" );;
 formule := ReplacedString( formule, "r", "R'" );;
 
 return formule;
end;

Print("\n FormuleCross = ", RandomCrossFormula(5) , "\n" );

############
generators := Set(Arrangements([1..rot],2), t -> AX[t[2]] * AYp[t[1]]);; #[1..rot] ==> rot rotations
#Print("\n generateur = ", Length(generators) , "\n" );
Cross := Group(generators);;
#Print("\n |Cross-edge| = ", Size(Cross) , "\n" );
#IsSimpleGroup( Cross ) ;
Print("\n Cross-",Twist,"-edge = ", StructureDescription(Cross) , "\n" );

generators := Set(Arrangements([1..rot],2), t -> SX[t[2]] * SYp[t[1]]);; #[1..rot] ==> rot rotations
#Print("\n generateur = ", Length(generators) , "\n" );
Cross := Group(generators);;
#Print("\n |Cross-",Twist,"| = ", Size(Cross) , "\n" );
#IsSimpleGroup( Cross ) ;
Print("\n Cross-",Twist," = ", StructureDescription(Cross) , "\n" );





On trouve :
Image

Commentaire : A5 = PSL(2,5)
Image

Avatar de l’utilisateur
Morphocode
Crazy
Crazy
Homme
Balance
Âge: 100
Messages : 804
Inscription : Lun 25/11/2013 17:06
Localisation : Paris
Contact :

Re: Les groupes Croisés (Cross group) des twists platoniques

Message non lupar Morphocode » Sam 9/03/2024 09:35

Le groupe Croisé du Megaminx

Megaminx :
Image


On ignore les orientations, les sommets et les arêtes sont identifiés par un numéro comme indique la fig ci-dessous

Numérotation des pièces :
Image
Image

On définit les 12 rotations comme ceci :
Image
Image
Une rotation-croissé c'est une rotation qui déplace les sommets et les arêtes .

On pose : (formules croisées)
K = < XY' | X,Y ∈{ H,B,A,P,G,D, H, B, A, P, G, D } >
* K engendre un groupe de permutations des sommets Cs = C, par définition C est le groupe Croisé du Pyraminx .
* K engendre aussi un groupe de permutations des arêtes Ca, par définition Ca est le groupe Croisé des arêtes .

Voici un script en GAP qui permet de trouver C et Ca



Code : Tout sélectionner


# Cross = < XY' | X,Y cross rotations  >
# Le groupe croisé du Meganinx (dodécaèdre : F=12,S=20,A=30)

Twist := "Megaminx" ;
#les rotations-croisées des sommets (Cross vertice)
vH := (1,2,3,4,5);
vB := (6,7,8,9,10);
vA := (1,6,10,11,2);
vP := (5,4,12,13,14);
vG := (2,11,16,15,3);
vD := (1,5,14,7,6);
vh := (19,18,20,9,8); #h=face opposée à H
vb := (4,3,15,17,12);
va := (12,17,18,19,13);
vp := (11,10,9,20,16);
vg := (14,13,19,8,7);
vd  := (15,16,20,18,17);
SX := [vH, vB, vA, vP, vG, vD, vh, vb, va, vp, vg, vd];;
SYp := [vH^-1, vB^-1, vA^-1, vP^-1, vG^-1, vD^-1, vh^-1, vb^-1, va^-1, vp^-1, vg^-1, vd^-1];;
SXtxt :=  ['H', 'B', 'A', 'P', 'G', 'D', 'h', 'b', 'a', 'p', 'g', 'd'] ;; #h=opposé de H
SYptxt := ['1', '2', '3', '4', '5', '6', '7', '8', '9', 'x', 'y', 'z'] ;; #7=inverse de h,x=inverse de p
rot:=12;

#les rotations-croisées des arêtes (Cross edge)
uH := (1,2,3,4,5);
uB := (6,7,8,9,10);
uA := (1,11,10,12,13);
uP := (4,15,16,17,14);
uG := (2,13,18,19,20);
uD := (5,14,21,6,11);
uh := (22,23,8,24,25);
ub := (3,20,26,27,15);
ua := (16,28,22,30,27);
up := (12,9,24,29,18);
ug := (21,7,23,28,17);
ud := (19,29,25,30,26);
AX := [uH, uB, uA, uP, uG, uD, uh, ub, ua, up, ug, ud ];;
AYp := [uH^-1, uB^-1, uA^-1, uP^-1, uG^-1, uD^-1, uh^-1, ub^-1, ua^-1, up^-1, ug^-1, ud^-1 ];;

# fonction donne au hasard une formule-croisée de longueur 2n
RandomCrossFormula := function(n)
 local nombre, permutations, k , formule, m ;
 nombre := List([1..n], i -> RandomList([1..rot])); #[1..12] ==> 12 rotations
 permutations := [];
 formule := [];

 for k in nombre do
     
      Append(permutations,[SX[k]]);
      Append(formule,[SXtxt[k]]);
      
      m :=  RandomList([1..rot]);
      while k=m do
            m :=  RandomList([1..rot]);     
        od;
      
       Append(permutations, [SYp[m]]);
      Append(formule,[SYptxt[m]]);
         
 od;

 Product(permutations);
 
 formule := ReplacedString( formule, "1", "H'" );;
 formule := ReplacedString( formule, "2", "B'" );;
 formule := ReplacedString( formule, "3", "A'" );;
 formule := ReplacedString( formule, "4", "P'" );;
 formule := ReplacedString( formule, "5", "G'" );;
 formule := ReplacedString( formule, "6", "D'" );;
 formule := ReplacedString( formule, "7", "h'" );;
 formule := ReplacedString( formule, "8", "b'" );;
 formule := ReplacedString( formule, "9", "a'" );;
 formule := ReplacedString( formule, "x", "p'" );;
 formule := ReplacedString( formule, "y", "g'" );;
 formule := ReplacedString( formule, "z", "d'" );;
 
 return formule;
end;

Print("\n FormuleCross = ", RandomCrossFormula(5) , "\n" );
#############
generators := Set(Arrangements([1..rot],2), t -> AX[t[2]] * AYp[t[1]]);; #[1..12] ==> 12 rotations
#Print("\n generateur = ", Length(generators) , "\n" );
Cross := Group(generators);;
#Print("\n |Cross-edge| = ", Size(Cross) , "\n" );
#IsSimpleGroup( Cross ) ;
Print("\n Cross-",Twist,"-edge = ", StructureDescription(Cross) , "\n" );

generators := Set(Arrangements([1..rot],2), t -> SX[t[2]] * SYp[t[1]]);; #[1..12] ==> 12 rotations
#Print("\n generateur = ", Length(generators) , "\n" );
Cross := Group(generators);;
#Print("\n |Cross-",Twist,"| = ", Size(Cross) , "\n" );
#IsSimpleGroup( Cross ) ;
Print("\n Cross-",Twist," = ", StructureDescription(Cross) , "\n" );



On trouve :
Image
Image

Avatar de l’utilisateur
Morphocode
Crazy
Crazy
Homme
Balance
Âge: 100
Messages : 804
Inscription : Lun 25/11/2013 17:06
Localisation : Paris
Contact :

Re: Les groupes Croisés (Cross group) des twists platoniques

Message non lupar Morphocode » Sam 9/03/2024 11:15

Le groupe Croisé du Master Icosamate

Master Isosamate :
Image


On ignore les orientations, les sommets et les arêtes sont identifiés par un numéro comme indique la fig ci-dessous

Numérotation des sommets :
Image

Numérotation des arêtess :
Image

On définit les 12 rotations comme ceci { H,B,A,P,G,D, H, B, A, P, G, D } H=face opposée de H:
Image
Une rotation-croissé c'est une rotation qui déplace les sommets et les arêtes .

On pose : (formules croisées)
K = < XY' | X,Y ∈{ H,B,A,P,G,D, H, B, A, P, G, D } >
* K engendre un groupe de permutations des sommets Cs = C, par définition C est le groupe Croisé du Pyraminx .
* K engendre aussi un groupe de permutations des arêtes Ca, par définition Ca est le groupe Croisé des arêtes .

Voici un script en GAP qui permet de trouver C et Ca

Code : Tout sélectionner


# Cross = < XY' | X,Y rotations  croisées>
# Le groupe croisé du Mastericosamate (icosaèdre : F=20, S=12 ,A=30)

Twist := "MasterIcosamate";
#les rotations-croisées des sommets (Cross vertice)
vH := (2,3,4,5,6);
vB := (1,3,10,9,5);
vA := (1,6,12,11,3);
vP := (1,4,9,8,6);
vG := (1,2,11,10,4);
vD := (1,5,8,12,2);
vh := (12,8,9,10,11); #h=face opposée de H
vb := (8,7,11,2,6);
va := (4,10,7,8,5);
vp := (2,12,7,10,3);
vg := (12,6,5,9,7);
vd := (9,4,3,11,7);
SX := [vH, vB, vA, vP, vG, vD, vh, vb, va, vp, vg, vd];;
SYp := [vH^-1, vB^-1, vA^-1, vP^-1, vG^-1, vD^-1, vh^-1, vb^-1, va^-1, vp^-1, vg^-1, vd^-1];;
SXtxt :=  ['H', 'B', 'A', 'P', 'G', 'D', 'h', 'b', 'a', 'p', 'g', 'd'] ;; #h=face opposée de H
SYptxt := ['1', '2', '3', '4', '5', '6', '7', '8', '9', 'x', 'y', 'z'] ;; #7=inverse de h,x=inverse de p
rot:=12;

#les rotations-croisées des arêtes (Cross edge)
uH := (16,20,19,18,17);
uB := (2,28,14,25,4);
uA := (2,5,22,11,29);
uP := (5,3,26,13,23);
uG := (1,30,15,27,3);
uD := (1,4,24,12,21);
uh := (11,12,13,14,15);
ub := (30,16,23,7,10);
ua := (27,9,7,24,18);
up := (28,20,21,6,9);
ug := (22,17,25,8,6);
ud := (29,10,8,26,19);
AX := [uH, uB, uA, uP, uG, uD, uh, ub, ua, up, ug, ud ];;
AYp := [uH^-1, uB^-1, uA^-1, uP^-1, uG^-1, uD^-1, uh^-1, ub^-1, ua^-1, up^-1, ug^-1, ud^-1 ];;
 
 
# fonction donne au hasard une formule-croisée de longueur 2n
RandomCrossFormula := function(n)
 local nombre, permutations, k , formule, m ;
 nombre := List([1..n], i -> RandomList([1..rot])); #[1..12] ==> 12 rotations
 permutations := [];
 formule := [];

 for k in nombre do
     
      Append(permutations,[SX[k]]);
      Append(formule,[SXtxt[k]]);
      
      m :=  RandomList([1..rot]);
      while k=m do
            m :=  RandomList([1..rot]);     
        od;
      
       Append(permutations, [SYp[m]]);
      Append(formule,[SYptxt[m]]);
         
 od;

 Product(permutations);
 
 formule := ReplacedString( formule, "1", "H'" );;
 formule := ReplacedString( formule, "2", "B'" );;
 formule := ReplacedString( formule, "3", "A'" );;
 formule := ReplacedString( formule, "4", "P'" );;
 formule := ReplacedString( formule, "5", "G'" );;
 formule := ReplacedString( formule, "6", "D'" );;
 formule := ReplacedString( formule, "7", "h'" );;
 formule := ReplacedString( formule, "8", "b'" );;
 formule := ReplacedString( formule, "9", "a'" );;
 formule := ReplacedString( formule, "x", "p'" );;
 formule := ReplacedString( formule, "y", "g'" );;
 formule := ReplacedString( formule, "z", "d'" );;
 
 return formule;
end;

Print("\n FormuleCross = ", RandomCrossFormula(5) , "\n" );

##############
generators := Set(Arrangements([1..rot],2), t -> AX[t[2]] * AYp[t[1]]);; #[1..12] ==> 12 rotations
#Print("\n generateur = ", Length(generators) , "\n" );
Cross := Group(generators);;
#Print("\n |Cross-edge| = ", Size(Cross) , "\n" );
#IsSimpleGroup( Cross ) ;
Print("\n Cross-",Twist,"-edge = ", StructureDescription(Cross) , "\n" );

generators := Set(Arrangements([1..rot],2), t -> SX[t[2]] * SYp[t[1]]);; #[1..12] ==> 12 rotations
#Print("\n generateur = ", Length(generators) , "\n" );
Cross := Group(generators);;
#Print("\n |Cross-",Twist,"| = ", Size(Cross) , "\n" );
#IsSimpleGroup( Cross ) ;
Print("\n Cross-",Twist," = ", StructureDescription(Cross) , "\n" );






On trouve :
Image

Commentaire : M12 est le groupe Mathieu 12 , très célèbre, car c'est un groupe simple sporadique, il n'y a que 26 groupes simples sporadiques !!
C'est J. CONWAY qui a découvert le groupe Croisé du Master-Icosamate.

M12 est 5-transitif ==> |M12| = 12 .11 .10 .9 .8 = 95040

Rappel : il est très simple de construire M12, c'est un sous groupe de S12 engendré par les deux permutations :
a = (1,12)(2,11)(3,10)(4,9)(5,8)(6,7)
b = (2,3,5,9,8,10,6,11,4,7,12)

M12 = < a, b >
Image