Page 1 sur 1

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

Publié : Ven 8/03/2024 19:22
par Morphocode
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 comme ceci : (rotations croisées)
Image


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

Ka = < XY' | X,Y €{ G ,D , H , P } , sur les arêtes >
* Ka engendre 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)

#le groupe Croisé 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
SYptxt := ['g', 'd', 'h', 'p'];; #inverse


#le groupe Croisé 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];;


# donne une formule-croisée de longueur 2n
RandomCrossFormula := function(n)
 local nombre, permutations, k , formule, m ;
 nombre := List([1..n], i -> RandomList([1..4]));; #[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..4]);
      while k=m do
            m :=  RandomList([1..4]);     
        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 ", RandomCrossFormula(5) , "\n" );

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

generators := Set(Arrangements([1..4],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-edge = ", 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:

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

Publié : Ven 8/03/2024 19:51
par Morphocode
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

On pose :
K = < XY' | X,Y €{ H,B,A,P,G,D } , sur les sommets >
* K engendre un groupe de permutations des sommets C, par définition C est le groupe Croisé du Rubik's Cube .

Ka= < XY' | X,Y €{ H,B,A,P,G,D } , sur les arêtes >
* Ka engendre 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 >
# (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

# le groupe Croisé du Rubik's Cube (Croisé sommet)
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

# le groupe Croisé des arêtes (Croisé arête)
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 ] ;


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

 for k in nombre do
     
      Append(permutations,[SX[k]]);
      Append(formule,[SXtxt[k]]);
      
      m :=  RandomList([1..6]);
      while k=m do
            m :=  RandomList([1..6]);     
        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 ", RandomCrossFormula(5) , "\n" );

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

generators := Set(Arrangements([1..6],2), t -> AX[t[2]] * AYp[t[1]]);; #[1..6] ==> 6 rotations
Cross := Group(generators);;
Print("\n Cross-edge = ", 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 >

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

Publié : Sam 9/03/2024 08:37
par Morphocode
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


On pose : (formules croisées)
K = < XY' | X,Y €{ H,B,A,B,G,D, G , D } , sur les sommets >
* K engendre un groupe de permutations des sommets C, par définition C est le groupe Croisé du FTO .

Ka = < XY' | X,Y €{ H,B,A,B,G,D, G , D } , sur les arêtes >
* Ka engendre 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 >
# (octaèdre : F=8,S=6,A=12)

# le groupe Croisé du FTO (Croisé sommet)
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'];
SYptxt := ['h', 'b', 'a', 'p', 'g', 'd', 'l', 'r'] ;


# le groupe Croisé des arêtes (Arête croisé)
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];

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

 for k in nombre do
     
      Append(permutations,[SX[k]]);
      Append(formule,[SXtxt[k]]);
      
      m :=  RandomList([1..8]);
      while k=m do
            m :=  RandomList([1..8]);     
        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 ", RandomCrossFormula(5) , "\n" );

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

generators := Set(Arrangements([1..8],2), t -> AX[t[2]] * AYp[t[1]]) ;; #[1..8] ==> 8 rotations
Cross := Group(generators) ;;
Print("\n Cross-edge = ", StructureDescription(Cross) , "\n" );






On trouve :
Image

Commentaire : A5 = PSL(2,5)

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

Publié : Sam 9/03/2024 09:35
par Morphocode
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

On pose :
K = < XY' | X,Y €{ H,B,A,P,G,D, H, B, A, P, G, D } , sur les sommets >
* K engendre un groupe de permutations des sommets C, par définition C est le groupe Croisé du Megaminx .

Ka= < XY' | X,Y €{ H,B,A,P,G,D, H, B, A, P, G, D } , sur les arêtes >
* Ka engendre 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  >
# (dodécaèdre : F=12,S=20,A=30)
# le groupe Croisé du Megaminx

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'] ;;
SYptxt := ['1', '2', '3', '4', '5', '6', '7', '8', '9', 'x', 'y', 'z'] ;;
# a=opposé de A


# le groupe Croisé d'arêtes du Megaminx
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 ];;

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

 for k in nombre do
     
      Append(permutations,[SX[k]]);
      Append(formule,[SXtxt[k]]);
      
      m :=  RandomList([1..12]);
      while k=m do
            m :=  RandomList([1..12]);     
        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 ", RandomCrossFormula(5) , "\n" );

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

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






On trouve :
Image

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

Publié : Sam 9/03/2024 11:15
par Morphocode
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

On pose : (rotation par rapport aux sommets)
K = < XY' | X,Y €{ H,B,A,P,G,D, H, B, A, P, G, D } , sur les sommets >
* K engendre un groupe de permutations des sommets C, par définition C est le groupe Croisé du Icosamate .

Ka= < XY' | X,Y €{ H,B,A,P,G,D, H, B, A, P, G, D } , sur les arêtes >
* Ka engendre 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>
# Cross icosamate (icosaèdre : F=20, S=12 ,A=30)

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=opposé de H
SYptxt := ['1',  '2', '3', '4', '5', '6',  '7', '8', '9', 'x', 'y', 'z'] ;; #7=inverse de h

# Cross icosamate aretes
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 ];;
 
 
# donne une formule-croisée de longueur 2n
RandomCrossFormula := function(n)
 local nombre, permutations, k , formule, m ;
 nombre := List([1..n], i -> RandomList([1..12])); #[1..12] ==> 12 rotations
 permutations := [];
 formule := [];

 for k in nombre do
     
      Append(permutations,[SX[k]]);
      Append(formule,[SXtxt[k]]);
      
      m :=  RandomList([1..12]);
      while k=m do
            m :=  RandomList([1..12]);     
        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 ", RandomCrossFormula(5) , "\n" );


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

generators := Set(Arrangements([1..12],2), t -> AX[t[2]] * AYp[t[1]]);; #[1..12] ==> 12 rotations
Cross := Group(generators);;
Print("\n Cross-edge = ", 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 >