Pyraminx :
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 :
On définit les 4 rotations comme ceci : (rotations croisées)
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 :
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