David Madore's WebLog: Les trois magiciens du nombre 24 : le code de Golay, le réseau de Leech et le module de Moonshine

Index of all entries / Index de toutes les entréesXML (RSS 1.0) • Recent comments / Commentaires récents

↓Entry #2555 [older| permalink|newer] / ↓Entrée #2555 [précédente| permalien|suivante] ↓

(jeudi)

Les trois magiciens du nombre 24 : le code de Golay, le réseau de Leech et le module de Moonshine

S'il y a un nombre magique en mathématiques, c'est bien 24. (Je pense que Douglas Adams a juste inversé les chiffres.) Le nombre 8 vient presque à égalité, et 12, peut-être 6 et 16 ont aussi quelques propriétés magiques (qui, globalement, sont toujours liées à celles de 24), mais celui qui est vraiment farabuleux (pardonnez le néologisme), c'est 24.

Je voudrais dans cette entrée essayer de témoigner de la magie de 24 en définissant deux et en évoquant le troisième de trois objets exceptionnels qui font que 24 est si spécial. On pourrait aussi les appeler les trois générations de « magiciens » qui tirent leur pouvoir magique du nombre 24. Ces objets sont : le code de Golay binaire (première génération), le réseau de Leech (deuxième génération), et le module de Moonshine (troisième génération). Mon but est donc d'en parler un peu, en définissant proprement les deux premières générations, en essayant que ce que je dis sur la première soit accessible à un très large public, et en disant quelques mots de la troisième. Ou du moins, mon but était tout ça, parce que je me suis pas mal embourbé et je ne suis pas du tout content de ce que j'ai écrit : je donne certes une définition du code de Golay binaire et du réseau de Leech, mais je crois ne pas avoir du tout réussi à passer l'idée de pourquoi ils sont intéressants au fond. Et comme souvent, je crois que je me retrouve à présupposer de mon lecteur un niveau de connaissances mathématiques préalables qui varie de façon assez incohérente d'un endroit à l'autre (au début je m'efforce vraiment de ne rien supposer, et à la fin, il sera certainement nécessaire d'avoir au moins une intuition de ce qu'est un groupe). Néanmoins, maintenant que tout ça est écrit, je ne vais pas ne pas le publier, donc prenez-le pour ce que ça vaut.

Comme par ailleurs, le nombre 8 est aussi magique (quoiqu'un peu moins que 24), je peux aussi parler de deux des trois[#] générations de magiciens qui tirent leur pouvoir magique de celui-ci : le code de Hamming de longueur 8 et le réseau E₈, parce qu'ils sont utiles pour approcher leurs analogues du nombre 24.

[#] Je crois que le troisième qui complète la série serait l'algèbre d'opérateurs de sommets dont Griess parle dans son article A vertex operator algebra related to E₈ with automorphism group O⁺(10,2), mais je ne comprends décidément pas bien tout ça.

Bref, le tableau à garder en tête (juste pour le plan : je vais expliquer ce que tout ça veut dire) est quelque chose comme :

Nombre magique1re génération2e génération3e génération
24Code de Golay binaireRéseau de LeechModule de Moonshine
8Code de Hamming de longueur 8Réseau E₈[Voir note #]

Le terme de génération évoque l'idée que les objets de la deuxième génération se définissent en termes de ceux de la première, et ceux de la troisième en termes de ceux de la deuxième, et qui plus est, il y a une certaine similarité entre la manière dont ces objets s'enfantent les uns les autres (je ne prétends pas que c'est rigoureusement la même, ni entre les colonnes, ni entre les lignes : notemment, il n'y a pas de « foncteur » dans l'affaire, juste une certaine analogie).

Je vais aussi évoquer, à chaque fois, les groupes de symétrie de ces différents objets, qui ressembleront à la numérologie suivante (là aussi, je dois expliquer ce que sont ces machins, mais à chaque fois, je donne le nom du groupe de symétrie et son ordre, c'est-à-dire le nombre de symétries) :

Nombre magique1re génération2e génération3e génération
24
M24
244 823 040
Co₀
8 315 553 613 086 720 000
Monstre (F₁)
808 017 424 794 512 875 886 459 904 961 710 757 005 754 368 000 000 000
8
C₂³⋊PSL(3,2)
1 344
W(E₈)
696 729 600
O(10,2,+) [???]
46 998 591 897 600

Plan de la suite :

Le code de Hamming de longueur 8

Commençons par le code de Hamming de longueur 8 (plus correctement, le code de Hamming étendu de longueur 8, ou code de Hamming [8;4;4] ; parfois code de Hamming étendu tout court).

Pour commencer, imaginez un cube, et imaginez toutes les façons de mettre une étiquette 0 ou 1 à chaque sommet du cube (étiquetage binaire du cube) : comme un cube a 8 sommets, et qu'il y a 2 étiquettes possibles à chaque sommet, il y a 28 := 2×2×2×2×2×2×2×2 = 256 façons de faire cet étiquetage ; on peut appeler ça des mots de 8 bits ou mots binaires de longueur 8, à ceci près que je garde à l'esprit que mes huit bits sont au sommet d'un cube. Bon, maintenant, parmi ces 256 étiquetages binaires du cube, je m'intéresse à ceux qui ont la propriété que chaque face du cube porte un nombre pair de 1 (et du coup, aussi un nombre pair de 0, ça revient évidemment au même puisqu'il y a quatre bits sur une face) : on les apppellera les mots du code de Hamming de longueur 8, et le code lui-même est l'ensemble de ces mots. C'est un exercice pas complètement inintéressant de faire l'effort de chercher « à la main » toutes les façons possibles de le faire (je répète : toutes les façons d'écrire à chaque sommet du cube un 0 ou un 1, de façon que chaque face ait un nombre pair de 1). Par exemple, on peut ne mettre que des 0 partout, ou que des 1 partout ; on peut aussi mettre des 0 sur une face et des 1 sur la face opposée ; on peut aussi mettre des 1 sur une arête, des 1 sur l'arête parallèle qui lui est diagonalement opposée, et des 0 ailleurs ; au total, on a exactement 16 possibilités (sans essayer d'identifier celles qui se déduisent les unes des autres par les symétries du cube, i.e., en comptant vraiment une fois chaque possibilité).

Bon, pour la suite de la discussion sur le code de Hamming, comme je n'ai pas envie de dessiner des cubes (on dit qu'une image vaut mille mots, mais elle coûte aussi beaucoup plus que mille mots à mettre sur une page Web), il sera utile que je fixe une fois pour toutes une énumération des sommets du cube. Disons qu'on appelle 0,1,2,3 les sommets d'une face, numérotés de manière que les sommets 1 et 2 soient diagonalement opposés sur cette face (et donc 0 et 3 aussi), par exemple en les lisant de haut en bas et de gauche à droite, et ensuite on appelle 4,5,6,7 les sommets de la face parallèle numérotés dans le même ordre c'est-à-dire que 4 est relié à 0, 5 à 1, 6 à 2 et 7 à 3. Si j'ai besoin de donner un mot du code de Hamming, je le donnerai dans l'ordre que je viens de définir (c'est-à-dire en lisant les étiquettes des sommets 0,1,2,3,4,5,6,7) : par exemple, 11110000 est le mot qui porte des 1 sur la face {0,1,2,3} et des 0 sur la face {4,5,6,7}. Dans ces conditions, la liste complète des mots du code est la suivante : 00000000, 01010101, 00110011, 01100110, 00001111, 01011010, 00111100, 01101001, 11111111, 10101010, 11001100, 10011001, 11110000, 10100101, 11000011, 10010110. (Si on veut, on peut oublier les histoires de cubes et dire que le code de Hamming est simplement cette liste de 16 mots binaires.)

Bon, maintenant, en quoi ce machin est-il intéressant ? D'abord, il s'agit d'un code correcteur d'erreurs linéaire. Commençons par expliquer ce que linéaire veut dire là-dedans : pour ça, il faut que je définisse l'opération de « somme modulo 2 » (également appelée XOR, et que je vais noter ⊕) de deux mots binaires (ou deux étiquetages binaires du cube) : cette opération consiste simplement, pour chaque bit donné (chaque sommet du cube, disons) à écrire un 0 si les deux mots considérés portent la même valeur à cet endroit, et un 1 lorsque les deux mots considérés portent des valeurs différentes ; autrement dit, on « ajoute » bit à bit les deux mots en utilisant l'opération parfois notée ⊕ ou XOR et définie par 0⊕0 = 1⊕1 = 0 tandis que 0⊕1 = 1⊕0 = 1 ; si l'on veut, c'est une addition binaire effectuée sans retenue. (À titre d'exemple, si on prend le mot a=11110000 formé en mettant des 1 sur une face du cube et des 0 ailleurs, et un deuxième mot b=11001100 formé selon le même modèle mais avec une face orthogonale, on obtient le mot ab=00111100 qui a des 0 = 1⊕1 sur l'arête où les deux faces s'intersectaient, des 0 = 0⊕0 sur l'arête parallèle diagonalement opposée, et des 1 sur les deux aux arêtes parallèles.) Dire que mon code de Hamming binaire est linéaire, c'est dire qu'il est stable par cette opération de somme modulo 2, autrement dit, si je prends deux mots a,b du code (deux étiquetages binaire du cube tels que chaque face ait un nombre pair de 1), leur somme modulo 2 (notée ab) est encore un mot du code. De façon plus sophistiquée, on peut dire qu'il s'agit d'un espace vectoriel sur le corps à deux éléments. Cet espace vectoriel est de dimension 4 : en pratique cela veut dire qu'il a 24 = 16 éléments, mais il y a des façons plus explicites de dire ça.

Une façon de dire que le code de Hamming de longueur 8 est de dimension 4 consiste à observer que, si on prend quatre sommets bien situés du cube, disons un sommet quelconque et ses trois voisins, alors quelle que soit la valeur (0 ou 1) qu'on inscrit sur chacun de ces quatre sommets, il y a une unique façon de compléter en un mot de code (et comme il y a 24=16 façons d'inscrire un bit en chacun des quatre sommets choisis, il y a 16 mots de code) : concrètement, donc, avec l'énumération que j'ai choisie, si je remplace les quatre points d'exclamation dans !!!?!??? par quatre bits quelconques, il y a une unique façon de remplacer les quatre points d'interrogation par quatre bits pour obtenir un mot du code. Une autre façon de dire que le code est de dimension 4 consiste à observer qu'on peut trouver quatre mots de code w₀,w₁,w₂,w₃ (une base du code) tels que tous les mots de code s'obtiennent de façon unique comme la somme modulo 2 d'un certain nombre de ces mots (i.e., l'ensemble des mots de code est exactement les 16 suivants : 0, w₀, w₁, w₀⊕w₁, w₂, w₀⊕w₂, w₁⊕w₂, w₀⊕w₁⊕w₂, w₃, w₀⊕w₃, w₁⊕w₃, w₀⊕w₁⊕w₃, w₂⊕w₃, w₀⊕w₂⊕w₃, w₁⊕w₂⊕w₃, w₀⊕w₁⊕w₂⊕w₃ — je viens d'énumérer les 24=16 façons de prendre ou de ne pas prendre chacun parmi w₀,w₁,w₂,w₃, étant convenu que la somme modulo 2 de zéros mots vaut 0, c'est-à-dire le mot dont tous les bits sont à zéro). Et de fait, si on prend pour w₁,w₂,w₃ les mots portant des 1 sur exactement une face du cube (et des 0 sur la face opposée) correspondant à trois faces se rencontrant, et w₀ le mot portant des 1 sur chaque sommet du cube, on peut vérifier qu'il s'agit bien d'une base au sens où je viens de le définir.

J'ai expliqué que mon code (binaire) est de longueur 8 (c'est la définition) et de dimension 4 (on peut trouver quatre mots de code tels que tous les mots s'écrivent de façon unique comme somme modulo 2 d'un sous-ensemble d'entre eux), il reste à expliquer un dernier terme, la distance minimale. La distance minimale, c'est le nombre minimal d'emplacements en lesquels diffèrent deux mots a,b du code. Et puisque mon code est linéaire et comme a,b diffèrent exactement aux endroits où le mot ab vaut 1, il revient au même de dire que la distance minimale est le nombre minimal de 1 que peut porter un mot non nul du code. En l'occurrence, cela vaut 4 : à part le mot nul, chaque mot du code comporte au moins quatre bits à 1 (en fait, exactement quatre ou huit bits à 1).

À quoi cela peut-il servir ? À communiquer sur un canal (binaire) bruité. Imaginons qu'Alice envoie à Bob huit bits d'information, mais qu'Alice et Bob sont convenus à l'avance que ces huits bits formeraient un mot du code de Hamming (les sommets du cube étant numérotés d'une manière quelconque mais fixée à l'avance, par exemple celle que j'ai choisie). Si au passage certains des bits se font corrompre (des 0 sont changés en des 1 ou vice versa), les propriétés du code vont peut-être permettre de retrouver le mot de départ, ou au moins de détecter qu'il y a eu corruption. Plus exactement, comme il est de distance minimale 4, le code de Hamming de longueur 8 permet de corriger une erreur et d'en détecter deux : si parmi les huit bits transmis il y a (au plus) un bit qui est modifié, on peut toujours retrouver le mot de départ (il y a un seul mot de code qui diffère du mot reçu en un seul bit), et s'il y en a au plus deux qui sont modifiés, alors on pourra corriger les cas de modification d'un seul bit et détecter ceux de deux bits (mais pas retrouver le mot de départ). Par exemple, si Bob reçoit un mot avec trois 1 sur une face du cube et des 0 ailleurs, il sait que la face qui contenait les trois 1 devait en fait en porter quatre ; s'il reçoit un mot avec exactement deux 1 (n'importe où), il sait qu'il y a eu deux bits de corruption (mais ne peut pas retrouver lesquels). Maintenant, comme le code est de dimension 4 (il contient 24=16 mots), en envoyant 8 bits appartenant au code, je fais passer 4 bits d'information réelle. Bref, Alice et Bob, en utilisant le code de Hamming, quitte à envoyer 8 bits (la longueur du code) à chaque fois qu'ils veulent en transmettre 4 (la dimension du code), peuvent détecter jusqu'à 2 erreurs (essentiellement, la moitié de la distance minimale) et en corriger strictement moins.

Ceci revient, si l'on veut, à jouer au petit jeu suivant : vous pensez à un nombre entier entre 0 et 15, je vais vous poser huit questions du type votre nombre est-il dans la liste suivante ?, à chaque fois vous répondrez oui ou non, et vous avez le droit de mentir jusqu'à deux fois. Mon but est soit de retrouver votre nombre si vous avez menti zéro ou une fois, soit de dire vous avez menti deux fois exactement quand c'est le cas. Pour cela, je vais utiliser le code de Hamming binaire, coder chaque nombre entre 0 et 15 sous la forme d'un mot du code de Hamming (par exemple 0↦00000000, 1↦01010101, 2↦00110011, 3↦01100110, 4↦00001111, 5↦01011010, 6↦00111100, 7↦01101001, 8↦11111111, 9↦10101010, 10↦11001100, 11↦10011001, 12↦11110000, 13↦10100101, 14↦11000011, 15↦10010110), puis pour chacun des huit bits du code, je vais demander si le nombre choisi est l'un des (huit) nombres où ce bit vaut 1 (donc avec les conventions que je viens de proposer, je vais demander le nombre est-il dans {8,9,10,11,12,13,14,15} ? puis le nombre est-il dans {1,3,5,7,8,10,12,14} ? et ainsi de suite jusqu'à le nombre est-il dans {1,2,4,7,8,11,13,14} ?) ; les réponses formeront un mot de huit bits qui va soit différer d'au plus un bit d'un unique mot de code (auquel cas j'aurai retrouvé le nombre et la réponse mensongère) soit non (auquel cas je saurai qu'il y a eu deux mensonges).

J'ai dit que le code de Hamming de longueur 8 avait les paramètres (longueur, dimension, distance minimale) [8;4;4]. Je dois aussi mentionner que c'est le seul code avec ces paramètres, et qu'il est optimal pour chaque paramètre en fixant les deux autres.

Avant de passer au code de Golay, il faut que je dise un mot des automorphismes (ou de façon moins savant, des symétries) du code de Hamming de longueur 8 : ce sont toutes les façons de permuter les huit emplacements (les huit sommets du cube) de manière que chaque mot du code reste un mot du code quand on fait la permutation. Par exemple, toutes les symétries du cube en tant que cube donnent forcément des automorphismes du code (puisque le code a été défini comme un étiquetage du cube), mais ce ne sont pas les seuls : il y a aussi, par exemple, la permutation qui fixe complètement une face et échange deux arêtes opposées de la face opposée (manifestement ce n'est pas une symétrie du cube, mais on peut facilement se persuader que cela préserve le code de Hamming, par exemple en en prenant une base, en appliquant cette permutation sur la base et en constatant qu'on obtient encode des mots du code). En fait, le groupe des automorphismes du code de Hamming de longueur 8 a 1344 éléments (et pour ceux qui savent ce que ça veut dire, c'est le produit semidirect C₂³⋊PSL(3,2) qui résulte de l'action du groupe simple PSL(3,2) à 168 éléments sur son module naturel (𝔽₂)³).

Le code de Golay binaire

L'hexacode

Pour définir le code de Golay binaire, le mieux est de définir un code intermédiaire qui s'appelle l'hexacode. L'hexacode n'est pas un code binaire mais quaternaire : il est formé de mots de longueur 6 (que je regrouperai en trois blocs de deux, séparés, disons, par des points) sur les quatre lettres {0,1,a,b}. Si on veut le définir de façon non sophistiquée, on peut dire qu'il s'agit de tous les mots de l'une des « formes » 00.00.00, ou xx.yy.zz ou 00.xx.xx ou yz.yz.yz ou 0x.0x.yz, où à chaque fois on remplace x,y,z par une permutation cyclique de 1,a,b, et on peut de plus encore permuter arbitrairement les trois blocs de deux lettres (entre eux) et éventuellement interchanger les deux lettres de deux des trois blocs. Par exemple, aa.11.bb ou b1.b1.b1 ou ba.ab.ba ou 0b.0b.1a ou 1a.b0.b0 ou encore 01.10.ba sont des mots de l'hexacode.

On peut aussi définir l'hexacode en introduisant les tables d'addition (que je vais noter ⊕) et de multiplication (que je vais noter ⊙) sur {0,1,a,b} pour qu'il forme le corps à quatre éléments 𝔽₄, à savoir :

01ab
001ab
110ba
aab01
bba10
01ab
00000
101ab
a0ab1
b0b1a

L'hexacode est alors défini de la façon suivante : si u,v,w sont des éléments quelconques de {0,1,a,b}, on appelle u′ := uvw et v′ := (b⊙u)⊕(a⊙v)⊕w et w′ := (a⊙u)⊕(b⊙v)⊕w et le mot uv.wu′.vw′ est dans l'hexacode, et tous les mots de l'hexacode s'obtiennent de la sorte. Ceci permet de retrouver un mot de l'hexacode à partir de ses trois premières lettres, et assure au passage qu'il est linéaire (si on fait le ⊕ de deux mots quelconques de l'hexacode on obtient encore un mot de l'hexacode, et pareil si on effectue l'opération ⊙ entre un mot et un élément fixe de {0,1,a,b}), et qu'il a 4³=64 éléments, si bien qu'on dira qu'il est de dimension 3. La distance minimale de l'hexacode, c'est-à-dire le nombre minimum de symboles non nuls d'un mot non nul, est 4 : c'est un code linéaire de paramètres [6;3;4]₄ (le 6 est la longueur, le 3 la dimension, le 4 la distance minimale, et le 4 en indice rappelle qu'il est quaternaire). Mais ce n'est pas tellement l'hexacode qui m'intéresse.

Le MOG et le code de Golay

Pour définir le code de Hamming de longueur 8, plus haut, j'ai identifié mes huit bits aux huit sommets d'un cube. Pour le code de Golay binaire, la longueur vaut 24, et mes 24 bits seront arrangés comme les entrées d'un tableau de 4 lignes par 6 colonnes. Les quatre lignes du tableau seront nommées 0,1,a,b (et il peut être pertinent de séparer légèrement la ligne 0 des trois autres, mais certains préfèrent séparer les lignes 0 et 1 des lignes a et b) ; les colonnes n'ont pas de nom particulier, mais sont normalement regroupées en trois blocs de deux. (Cette disposition en tableau s'appelle le Miracle Octad Generator ou MOG.) Quelque chose comme ceci :

0010110
1011010
a100110
b010101
ou
0011101
1001000
a001011
b011110
ou
0011000
1011011
a000010
b000001

(On verra que les trois mots que j'ai écrits sont bien dans le code de Golay binaire.) Quand on écrit ces mots à la main, le mieux pour y voir plus clair est d'utiliser des astérisques pour les 1 et des blancs pour les 0, et par ailleurs de ne tracer que les limites entre les trois blocs de deux colonnes (et une seule ligne horizontale, moi je préfère la faire entre la ligne 0 et la ligne 1). Bref.

Si j'ai un tel tableau 4×6, rempli arbitrairement de 0 et de 1, je vais définir son interprétation des colonnes de la façon suivante : on ne regarde que les trois cases inférieures de chaque colonne (i.e., on ignore celle du haut), si ces trois cases coïncident (elles valent toutes les trois 0 ou toutes les trois 1), l'interprétation de la colonne est 0, tandis que s'il y en a une qui diffère des deux autres, l'interprétation de la colonne est le nom de la ligne qui diffère des deux autres (1, a ou b). De façon équivalente, l'interprétation d'une colonne est la somme (⊕) dans 𝔽₄ (la table étant donnée ci-dessus) des noms des lignes qui portent un 1. À titre d'exemple, pour les trois tableaux que j'ai donnés ci-dessus, les interprétations des colonnes sont aa.11.bb pour celui de gauche, 0b.0b.1a pour celui du milieu, et 01.10.ba pour celui de droite.

Par ailleurs, la parité d'une ligne ou colonne est simplement le fait que le nombre de 1 qu'elle porte (ou, ce qui revient au même, le nombre de 0) soit pair ou impair. Par exemple, pour les trois tableaux que j'ai donnés ci-dessus, toutes les colonnes sont paires dans celui de gauche, toutes sont impaires dans celui du milieu, et toutes sont paires dans celui de droite.

Voici enfin la définition du code de Golay binaire : il s'agit des tableaux 4×6 (arrangés selon le MOG décrit ci-dessus) tels que :

  • toutes les colonnes ont la même parité, et cette parité est aussi celle de la première ligne (= la ligne 0),
  • l'interprétation des colonnes forme un mot de l'hexacode.

Cela peut sembler vraiment compliqué, mais en fait, avec un tout petit peu d'habitude, on vérifie très bien les choses d'un seul coup d'œil : la contrainte de parité ressort immédiatement si on représente les mots avec des blancs et des astérisques (plutôt que des 0 et 1), la lecture de l'interprétation des colonnes se fait très bien dès qu'on fait l'effort d'oublier la première ligne, et la vérification de l'hexacode est un petit peu plus délicate, mais on finit vite par retenir les formes (il n'y a guère que la forme 0x.0x.yz qui est un peu pénible).

Comptons un peu les mots du code de Golay binaire. Chaque symbole de {0,1,a,b} peut s'interpréter par quatre colonnes différentes, deux étant paires et deux impaires (en effet, il y a deux possibilités pour les trois cases inférieures, et deux pour celle de la ligne 0). Donc une fois donné un mot de l'hexacode, on a 26=64 façons de l'écrire par des colonnes toutes paires et autant de façons de l'écrire par des colonnes toutes impaires ; mais comme la ligne 0 doit avoir la même parité que toutes les colonnes, on perd en fait la liberté de choix d'une colonne (disons, la dernière), et il y a donc 64 façons au total d'écrire un mot du code de Golay qui interprète un mot donné de l'hexacode. Comme l'hexacode a lui-même 43=64 mots, cela fait 64×64 = 4096 = 212 mots du code de Golay binaire, c'est-à-dire qu'il est de dimension 12. Plus exactement, dans le tableau suivant :

0!?????
1!!!!!?
a!!!???
b!!!???

— si je remplace les 12 points d'exclamation par 12 bits quelconques, il y a une unique façon de remplacer les 12 points d'interrogation pour obtenir un mot du code de Golay. En effet, on complète les points d'interrogations sur la ligne 0 des trois premières colonnes en utilisant l'égalité de la parité ; puis les trois premières colonnes déterminent les trois premières lettres u,v,w d'un mot de l'hexacode et j'ai expliqué qu'on pouvait alors le compléter de façon unique en un mot uv.wu′.vw′ (cf. ci-dessus), on choisit alors les colonnes qui s'interprètent en u′ et v′ de manière à coller avec le symbole imposé dans chacune et avec la parité, et pour la dernière colonne tous les choix sont faits.

Bref, le code de Golay binaire est un code linéaire (ça c'est clair sur ma description) de longueur 24 et dimension 12. Quelle est sa distance minimale, i.e., quel est le nombre minimum de 1 que peut comporter un mot non-nul du code ? On peut vérifier que c'est 8 : le code de Golay binaire est un code de paramètres [24;12;8], et en fait, c'est le seul. Étant de distance minimale 8, il permet de corriger trois erreurs et d'en détecter quatre. (Si vous choisissez un nombre entier entre 0 et 4095, que j'ai le droit de vous poser 24 questions à réponse oui/non et que vous pouvez mentier au maximum quatre fois, je peux utiliser le code de Golay pour retrouver votre nombre si vous avez menti au plus trois fois, et détecter le fait que vous avez menti quatre fois si c'est le cas.)

(Pour la petite histoire, signalons que c'est ce code de Golay binaire qui a servi à transmettre les images des sondes spatiales Voyager 1 et 2.)

En fait, le poids de Hamming, c'est-à-dire le nombre de 1 dans un mot du code, ne peut, dans le cas du code de Golay binaire, prendre que les valeurs 0, 8, 12, 16 et 24. Les ensembles de huit cases du MOG qui définissent un mot de poids de Hamming 8 s'appellent les octades, tandis que les ensembles de douze cases qui définissent un mot de poids de Hamming 12 s'appellent les dodécades ; quant aux mots de poids de Hamming 16, ce sont les complémentaires des octades. Les octades ont ceci de remarquable que si on choisit cinq cases quelconques parmi les 24 que compte le MOG, il y a une et une seule octade contenant ces cinq cases : ceci définit ce qu'on appelle le système de Stenier (5,8,24) (il n'y a qu'un système de Steiner avec ces paramètres ; voir aussi cette vieille entrée). La connaissance des octades et celle du code reviennent au même : si on connaît les octades, les mots du code sont ceux qui s'obtiennent en faisant des opérations ⊕ entre les octades. Le nombre d'octades est égal au nombre de façons de choisir 5 éléments parmi 24 divisé (puisque chacune va définir une unique octade) par le nombre de façons d'en choisir 5 parmi 8 (pour compter le nombre de façons d'obtenir la même octade), soit (24×23×22×21×20)/(8×7×6×5×4) = 759. Il y a donc dans le code 1 mot de poids de Hamming nul (c'est le mot nul), 1 mot de poids de Hamming 24 (celui qui a des 1 partout), 759 mots de poids de Hamming 8 (les octades), autant pour 16 (les complémentaires des octades), et le reste, 2576, donne le nombre de dodécades (mots de poids de Hamming 12).

Je devrais mentionner qu'il y a une autre construction du code de Golay binaire (qui donne le même code, mais vu de façon différente) qui ressemble plus à ce que j'ai raconté pour le code de Hamming de longueur 8 : cette fois-ci, considérons un icosaèdre, et pour chaque sommet de l'icosaèdre (il y en a douze) on va inscrire deux bits, disons un bit noir et un bit rouge (ceci fait donc 24 bits au total) ; la contrainte pour être dans le code est que le bit rouge porté par chaque sommet de l'icosaèdre est le XOR (⊕) de tous les bits noirs sauf ceux qui sont sur les cinq sommets adjacents au sommet considéré. De façon amusante, cette condition est symétrique rouge/noir, c'est-à-dire que cela revient au même de demander que le bit noir porté par chaque sommet de l'icosaèdre est le XOR de tous les bits noirs sauf ceux qui sont sur les cinq sommets adjacents au sommet considéré. Manifestement, ceci définit un code de longueur 24 (puisqu'on écrit 24 bits) et de dimension 12 (puisqu'on peut définir arbitrairement les bits noirs, et les bits rouges sont alors complètement fixés) ; en fait, c'est toujours le code de Golay binaire de paramètres [24;12;8] — il n'est pas évident de mettre en correspondance les cases du MOG et les sommets de l'icosaèdre fois {noir,rouge} de manière à avoir les mêmes mots de code, mais c'est possible.

Le groupe de Mathieu M24

Un automorphisme du code de Golay binaire est une façon de permuter les 24 cases du MOG (ou, si on préfère l'autre description, les 24 données d'un sommet de l'icosaèdre et d'une couleur dans {noir,rouge}) de façon à ce que chaque mot de code ainsi permuté soit encore un mot de code. Il se trouve qu'il y a 244 823 040 façons de faire une telle permutation, et ces automorphismes constituent le groupe de Mathieu de degré 24 ou M24, dont j'ai plein de fois parlé dans ce blog (par exemple ici — mais noter qu'il s'agit là encore d'une autre disposition des 24 objets). Ce groupe opère cinq fois transitivement, c'est-à-dire qu'on peut placer 5 quelconques des 24 objets (cases du MOG par exemple) en 5 emplacements quelconques (et c'est une propriété remarquable, parce qu'il n'y a que M12 (que je n'ai pas défini), M24 et les groupes « évidents » que sont les groupe symétrique et alterné qui opèrent cinq fois transitivement sur un ensemble fini). Pour donner quelques exemples d'éléments du groupe de Mathieu M24 (opérant sur le MOG), n'importe quelle permutation des trois blocs de deux colonnes en est un, ainsi que les permutations qui échangent simultanément les deux colonnes (entre elles) de deux blocs, mais on peut aussi mentionner une permutation cyclique des trois lignes 1,a,b ; mais voici un exemple plus intéressant : en échangeant dans le tableau suivant les cases A et A′, B et B′, etc., on obtient une symétrie non évidente du code de Golay (i.e., un élément de M24) :

0ACEGE′G′
1BDFHF′H′
aC′D′....
bB′A′....

(J'ai choisi l'étiquetage de façon que les lettres sans primes forment une octade et — du coup — celles avec prime aussi, ainsi que les cases non étiquetées.) En combinant les permutations que j'ai dites (i.e., (i) les permutations quelconques des blocs, (ii) les échanges des deux colonnes de deux blocs simultanément, (iii) la permutation cyclique des trois lignes du bas et (iv) la permutation involutive que je viens de décrire), on peut obtenir tous les éléments de M24 (mais si on supprime un de (i,ii,iii,iv), on obtient quelque chose de plus petit) ; on pourrait considérer ça comme une forme de taquin (j'en ai déjà fait plein du genre, avec toutes sortes de descriptions de M24).

Le réseau E₈ et le réseau de Leech

Définitions

Venons-en maintenant aux définitions des réseaux E₈ et Leech. Je pourrais définir le réseau E₈ comme ceci (c'est la description la plus standard, et je l'ai certainement déjà donnée plusieurs fois sur ce blog) : c'est l'ensemble des octuplets de nombres (réels, et en fait rationnels) tels que (a) tous soient entiers ou bien tous soient entiers-et-demi (un entier-et-demi étant bien sûr un entier plus ½, i.e., un élément de ℤ+½), et (b) leur somme (qui est manifestement un entier d'après (a) !) soit paire. Mais pour faire une définition de E₈ qui soit aussi semblable à celle du réseau de Leech, je vais faire prendre une autre description, qui en apparence est assez différente, mais donne le même réseau à similitude près (c'est-à-dire rotation et changement d'échelle) :

Le réseau E₈, donc, sera l'ensemble des octuplets d'entiers tels que si on considère leur bit de poids faible (je vais rappeler dans un instant ce que c'est), on obtient un mot du code de Hamming de longueur 8. Le bit de poids faible d'un entier, ou bit [numéroté] 0 de cet entier, c'est juste le bit qui vaut 0 si l'entier était pair et 1 si l'entier était impair. Autrement dit, on peut dire que le réseau E₈ est l'ensemble des façons d'étiqueter les sommets du cube par des entiers de façon que chaque face du cube porte un nombre pair de nombres impairs.

Il n'est pas complètement évident que les descriptions de E₈ des deux derniers paragraphes sont équivalentes (manifestement ce ne sont pas les mêmes ensembles de huit nombres : par équivalent je veux dire que les réseaux sont semblables) ; cela peut se faire par un changement de base explicite (je ne l'écrirai pas), mais on peut au moins se convaincre du fait que, dans chaque description, les points du réseau qui sont les plus proches possibles de l'origine, où le carré de la distance à l'origine est donnée par la somme des carrés des entrées, est 240 dans chaque cas : pour la description « standard » de E₈, on a 112 points de la forme (±1,±1,0,0,0,0,0,0) (où les ±1 peuvent être placés à n'importe quel endroit) et encore 128 de la forme (±½,±½,±½,±½,±½,±½,±½,±½) (avec un nombre pair de signes moins), soit 112+128=240 au total (dans tous les cas ils sont à distance √2 de l'origine) ; sur la description basée sur le code de Hamming, on prend l'un des 15 mots du code de Hamming dont le nombre de 1 (=: poids de Hamming) vaut 4, et on y colle des signes ± de la façon qu'on veut, ce qui donne 15×16=240 éléments (à distance √4 = 2 de l'origine : il y aura donc un facteur d'échelle √2 entre mes deux descriptions de E₈).

(Pour faire le lien avec ce qui était expliqué dans cette entrée-ci, ce que j'appelle ici le réseau E₈ est le réseau des périodes, qui dans ce cas est aussi le réseau des pointes, de ce que j'appelais là le kaléidoscope E₈˜.)

Pour décrire le réseau de Leech, je vais avoir besoin de définir les bits 0, 1 et 2 d'un entier n. Le bit 0 vaut 0 ou 1 selon que l'entier n est pair ou impair, je l'ai dit ci-dessus ; et pour définir tous les bits suivants, on divise de façon répétée le nombre par 2 en arrondissant toujours à l'inférieur, et on prend le bit 0 du résultat. Pour un entier naturel, ce sont les bits de fin (= de poids faible) de l'écriture en binaire ; pour un entier strictement négatif, c'est aussi le cas, à condition d'utiliser l'écriture en « complément à deux », par exemple tous les bits de −1 valent 1. Bref, maintenant je peux passer à la définition :

Le réseau de Leech est l'ensemble des tableaux de 24 entiers (disposés selon le MOG), de manière que les conditions suivantes soient vérifiées :

  • les bits 0 de tous les entiers en question sont tous égaux (i.e., les entiers sont soit tous pairs soit tous impairs),
  • les bits 1 forment un mot du code de Golay binaire (défini plus haut),
  • la parité des bits 2 (i.e., le fait qu'il y en ait un nombre pair ou impair qui valent 1) est la même que la parité des entiers eux-mêmes (qui est la même partout en vertu du premier point).

Il n'y a aucune contrainte sur les autres bits, c'est-à-dire que le réseau de Leech contient tout vecteur (= tableau d'entiers) dont les coordonnées sont toutes multiples de 8 (ou encore, congrues modulo 8 à celles d'un vecteur qui est déjà dans le réseau de Leech). Soit dit en passant, il n'est pas complètement trivial sur la description que j'ai faite que le réseau de Leech soit bien un réseau (i.e., soit stable par addition coordonnée par coordonnée), mais c'est bien le cas (ce n'est pas bien difficile non plus ; le point-clé est que le complémentaire d'un mot du code de Golay binaire est encore un mot du code de Golay binaire).

À titre d'exemple, on peut s'interroger sur les vecteurs non nuls les plus proches de l'origine, c'est-à-dire qu'on veut que la somme des carrés des coordonnées soit aussi petite que possible (mais non nulle). On se rend vite compte qu'on peut faire un minimum de 32 comme somme des carrés des coordonnées, et qu'il y a trois façons d'y arriver. Une possibilité est de mettre deux coordonnées à ±4 (pour un choix quelconque de signes) et les autres à 0 : il y a (24×23/2)×2² = 1 104 tels vecteurs. Une autre possibilité est de prendre une des 759 octades du code de Golay (je rappelle que cela signifie un mot de poids de Hamming 8) et de mettre des ±2, avec un nombre pair de −2, aux huit cases en question, et les autres à 0 : il y a 759×27 = 97 152 tels vecteurs. Enfin, on peut mettre des ±1 partout sauf une seule case qui vaut ∓3 (je veux dire (±1)×(−3)), en choisissant les signes inférieurs selon un des 4096 mots du code de Golay binaire : cela fait 24×4096 = 98 304 possibilités. On a donc au total 1 104 + 97 152 + 98 304 = 196 560 vecteurs aussi près que possible de l'origine dans le réseau de Leech.

Ajout () : La définition que j'ai donnée de E₈ est analogue à celle que j'ai donnée du réseau de Leech, mais je me rends compte qu'on peut faire mieux : on peut prendre exactement la définition que j'ai donnée du réseau de Leech, remplacer juste tableaux de 24 entiers (disposés selon le MOG) par octuplets d'entiers (disposés selon les sommets d'un cube) et (les bits 1 forment) un mot du code de Golay binaire par un mot du code de Hamming de longueur 8 et ceci définit toujours E₈, d'une troisième manière différente.

Quelques propriétés de ces réseaux

Il y a toutes sortes de choses remarquables avec le réseau E₈ et le réseau de Leech. On pourrait mentionner par exemple que les dimensions dans lesquelles le problème de l'empilement optimal des sphères est résolu (i.e., dans lesquelles on connaît la façon d'empiler le plus de sphères possibles dans un grand volume) sont : 1, 2, 3, 8 et 24 ; et de ces dimensions, le cas de la dimension 3 est de très loin le plus difficile (même si la preuve pour les dimensions 8 et 24 est plus récente, elle est beaucoup plus simple qu'en dimension 3) : les empilements optimaux en dimensions 8 et 24 sont donnés exactement par les réseaux E₈ et de Leech. Ils donnent aussi la façon optimale de répartir des sphères de taille égale autour d'une sphère donnée (de façon qu'elles touchent cette sphère centrale mais ne se chevauchent pas) en 8 respectivement 24 dimensions : on va pouvoir en mettre 240 et 196 560 respectivement.

Pour évoquer des propriétés moins géométriques et plus arithmétiques, faisons un changement d'échelle par un facteur 1/√2 dans le cas de E₈ et 1/√8 = 1/(2√2) dans le cas de Leech par rapport à ma description (s'agissant de E₈, je parle de la description basée sur le code de Hamming : pour la description « standard » il n'y a rien à changer) ; on obtient alors des réseaux pairs, c'est-à-dire que la norme carrée (= carré de la distance à l'origine = somme des carrés des coordonnées) de chaque vecteur du réseau est un entier pair (il s'ensuit alors que le produit scalaire de deux vecteurs est un entier) ; de plus, ces réseaux (après le changement d'échelle que j'ai dit pour les rendre pairs) sont unimodulaires, c'est-à-dire que leur covolume vaut 1, i.e., leur nombre de points par unité de volume est 1 en moyenne. Il se trouve qu'un réseau pair unimodulaire ne peut exister qu'en dimension multiple de 8 : le plus petit cas possible (à part celui, trivial de la dimension 0…) est donc 8, et il y a exactement un réseau unimodulaire pair en dimension 8, c'est E₈ ; en dimension 16, il y en a exactement deux (l'un est la somme de deux copies de E₈, l'autre est une sorte d'analogue évident de la description standard de E₈ avec 16 coordonnées à la place de 8) ; en dimension 24, il y en a exactement 24, appelés les réseaux de Niemeier ; et en dimension 32, il y en a plus d'un milliard (et ensuite ça grandit très très vite). La dimension 24 semble donc être la plus grande dimension où on peut espérer classifier les réseaux unimodulaires pairs, et de fait, ça a été fait : si on appelle racine d'un réseau pair un vecteur de longueur √2 (la plus petite non nulle imaginable pour un réseau pair, donc), alors 23 des 24 réseaux unimodulaires pairs en dimension 24 ont une description basée sur leurs racines, et le dernier réseau est le réseau de Leech, qui est le seul à être sans racine : mais en modifiant légèrement la construction des 23 autres « réseaux de Niemeier », on obtient 23 constructions différentes du réseau de Leech. (À titre d'exemple, le réseau de Niemeier associé à la construction de Leech que j'ai donnée ci-dessus est le réseau de Niemeier de système de racines (A₁)24, et sa description, toujours à un facteur d'échelle 1/√8 près, est comme l'ensemble des tableaux de 24 entiers dont les bits 0 sont tous égaux et les bits 1 forment un mot du code de Golay ; la petite modification donnant la description de Leech que j'ai faite ci-dessus donne, donc, une de ces fameuses 23 constructions du réseau de Leech.) À chaque fois, la modification de la construction a pour objet d'éviter l'existence de racines (vecteurs de plus petite longueur possible, je répète).

Les phénomènes remarquables que j'ai évoqués dans les deux derniers paragraphes sont certainement intéressants, mais n'excluent pas qu'il puisse y avoir des objets encore plus remarquables en 32 dimensions ou plus. Pour expliquer vraiment pourquoi le réseau de Leech est unique, il faut que je parle un peu de ses symétries, et que j'évoque la classification des groupes simples finis (chose que je n'ai vraiment pas envie de faire en détails maintenant, donc ce sera assez bâclé, malheureusement).

Symétries de ces réseaux

Quand je parle des symétries du réseau de Leech, je veux parler des rotations en 24 dimensions (c'est-à-dire des isométries préservant l'orientation ; ou, a priori, de celles qui changent l'orientation, mais il se trouve en l'occurrence qu'il n'y en a pas[#2]), fixant l'origine, qui envoient le réseau sur lui-même ; de façon équivalente, ce sont les transformations linéaires (des matrices 24×24, si on veut), inversibles, qui préservent à la fois le réseau et la distance dessus. L'ensemble de ces symétries s'appellera le groupe de Conway Co₀ (parfois noté ·0 ou « dot-oh », mais c'est une notation vraiment déplaisante). Que peut-on donner comme exemples de symétries du réseau de Leech ? D'abord, il y a la symétrie centrale (par rapport à l'origine, c'est-à-dire celle qui transforme chaque coordonnée en son opposée), mais celle-là n'est vraiment pas intéressante, et généralement on s'intéressera non pas à Co₀ mais à Co₁ qui est défini en identifiant deux symétries lorsqu'elles diffèrent par cette symétrie centrale (Co₁ = Co₀/{±1}) : si on veut, Co₁ est l'ensemble des symétries du réseau de Leech « modulo symétrie centrale ». Ensuite, il y a une source évidente de symétries du réseau de Leech d'après la définition que j'ai faite de ce dernier : ce sont les permutations des 24 coordonnées qui préservent le code de Golay binaire, c'est-à-dire ce que j'ai appelé le groupe de Mathieu M24 : donc Co₀ contient au moins M24. Faisons un peu mieux : en même temps qu'on permute les coordonnées, on peut faire un changement de signe sur certaines d'entre eux (si on change tous les signes, c'est la symétrie centrale dont je viens de parler) : si on change les signes sur un ensemble de cases qui correspond à un mot du code de Golay binaire, ceci définit encore une symétrie du réseau de Leech ; en combinant ces changements de signes et l'action de M24, on a déjà un sous-groupe intéressant de Co₀, d'ordre 212 × 244 823 040 = 1 002 795 171 840, qu'on peut noter (C₂)12M24 (ou bien (C₂)11M24, d'ordre 501 397 585 920, dans Co₁). Ça c'est la partie « facile » à trouver, si j'ose dire.

[#2] Le réseau de Leech est chiral, c'est-à-dire que toutes ses symétries préservent l'orientation (= sont des rotations). Ce n'est pas le cas du réseau E₈, qui a 120 hyperplans de symétrie.

Mais ce qui est moins évident à remarquer, c'est qu'il y a d'autres symétries du réseau de Leech que celles qui consistent à permuter les coordonnées selon M24 en changeant le signe de certaines d'entre elles. Voici une construction, qui a permis à Conway d'analyser le(s) groupe(s) qui porte(nt) son nom : définissons une première transformation linéaire, que je vais noter η, qui a pour effet, sur un tableau 4×6 de nombres, de soustraire à chacune des coordonnées d'une colonne la moitié de la somme de toutes (il s'agit donc d'une opération qui s'effectue colonne par colonne ; sur chaque colonne, elle correspond à l'opération principale que j'avais définie dans cette entrée) ; maintenant, modifions cette transformation : j'appelle ξ la transformation linéaire qui consiste d'abord à appliquer η que je viens de définir, puis à changer les signes d'une colonne quelconque, disons la première pour fixer les idées. On peut vérifier que ξ est bien une symétrie du réseau de Leech. À titre d'exemple, ξ échange

0−3−1+1−1−1+1
1+1−1−1+1−1+1
a−1+1+1−1−1+1
b+1−1+1−1+1−1
et
0+200000
1−20−2+200
a0+20000
b−2000+2−2

L'élément ξ, avec ceux que j'ai déjà définis, engendre le groupe de Conway Co₀ (ou, si on veut ignorer la symétrie centrale, Co₁). On peut s'en servir pour montrer que Co₀ a 8 315 553 613 086 720 000 éléments (et Co₁ en a, du coup, la moitié, soit 4 157 776 806 543 360 000).

Maintenant, il faut évoquer la classification des groupes simples finis, et je n'ai pas envie de le faire en détail. Mais disons que parmi les groupes simples finis (« simples » voulant dire que ce sont, en un certain sens, les briques à partir desquelles les autres groupes finis sont tous fabriqués), il y a un certain nombre de familles infinies (typiquement 18, mais ça dépend exactement de comment on compte une famille) et 26 groupes simples finis qui n'appartiennent à aucune famille, dits sporadiques. Le groupe M24 des automorphismes du code de Golay binaire, ou groupe de Mathieu de degré 24, en est un ; et il renferme en lui-même[#3] quelques autres sporadiques (les groupes de Mathieu de degrés 11, 12, 22, 23 et 24, parfois appelés collectivement la « première génération de la famille heureuse ») : on peut donc dire que le code de Golay binaire est une mine à groupes sporadiques. Le réseau de Leech aussi en est une : son groupe d'automorphismes modulo symétrie centrale, Co₁, est un groupe simple d'ordre 4 157 776 806 543 360 000 qui renferme en lui-même le groupe M24 et donc toute la « première génération », mais aussi six autres groupes sporadiques (les groupes Co₂ et Co₃ de Conway, le groupe sporadique de Suzuki, le groupe de McLaughlin, le groupe de Higman-Sims[#4], et le groupe J₂ de Janko — ces différents groupes peuvent se décrire comme les symétries de différentes structures supplémentaires sur le réseau de Leech, et on dit qu'ils forment avec Co₁ la « deuxième génération de la famille heureuse »). Et comme la liste des sporadiques est complète et connue, il ne risque pas de se cacher un objet mathématique encore inconnu mais aussi fécond en la matière que le réseau de Leech (tout objet mathématique a un groupe de symétries, et la classification des groupes ismples finis donne une idée de ce qui peut exister en matière de symétries finies).

[#3] Pour ceux qui n'aiment pas mes imprécisions verbales, les mots renferme en lui-même signifient, ici et ailleurs dans cette entrée, admet pour sous-quotient.

[#4] Qui est le groupe des symétries de ce graphe représenté ici comme une projection d'un tout petit bout du réseau de Leech.

Qu'en est-il par ailleurs des symétries du réseau E₈ ? Il y en a 696 729 600, j'en ai parlé ici en détails (même si je n'ai pas explicitement introduit le réseau) ; si on ne garde que les rotations (pas les symétries qui changent l'orientation) et si on identifie deux symétries qui diffèrent par la symétrie centrale, il reste un groupe à 174 182 400 éléments, qui est simple mais n'est pas sporadique, c'est un élément d'une des familles infinies de groupes simples (essentiellement, il s'agit du groupe spécial orthogonal en dimension 8 sur le corps à deux éléments, mais il faut définir ça correctement).

Quelques mots sur le module de Moonshine

Bon, mais si la premième génération est formée des codes correcteurs d'erreurs décrits en début de cette entrée et de leurs groupes de symétries (dont, côté « famille heureuse de sporadiques », le groupe M24) et que la deuxième génération est formée des réseaux dont je viens de parler et de leurs groupes de symétries (dont, côté « famille heureuse de sporadiques », le groupe Co₀, enfin Co₁ peu importe, de Conway), qu'est-ce que c'est que la troisième génération ?

Il y a des… machins qu'on appelle algèbres d'opérateurs de sommets. Si on regarde la définition, elle est vraiment peu sympathique : c'est une sorte algèbre de dimension infinie, munie d'une loi de composition qui prend ses valeurs non pas dans l'algèbre elle-même mais dans les séries formelles sur cette algèbre (ou, si on préfère, munie d'une infinité de lois de composition vérifiant des compatibilités vraiment pénibles à énoncer), et munie encore d'un élément appelé vecteur conforme (ainsi que d'une sorte d'élément neutre appelé vecteur de vide). Ces objets viennent à l'origine de la physique : plus précisément de la théorie quantique des champs (et encore plus précisément de la théorie des champs conforme), mais bon, je n'y connais pas grand-chose. Et il paraît (moi ça ne me saute pas aux yeux, et je crois comprendre que Conway n'est pas super convaincu) que cette définition, bien que compliquée, est « la bonne » en un certain sens. Toujours est-il qu'il y a un de ces machins appelé le module de Moonshine (une algèbre d'opérateurs de sommets particulière, donc), et dont le groupe de symétries est le plus gros des sporadiques, celui qu'on appelle le Monstre de Fischer-Griess. Ce dernier a 808 017 424 794 512 875 886 459 904 961 710 757 005 754 368 000 000 000 éléments. Et le Monstre renferme en lui-même tous les autres sporadiques à six exceptions près (ces exceptions s'appellent les « parias » parce qu'ils ne font pas partie de la « famille heureuse » du Monstre).

Historiquement, l'existence du Monstre a d'abord été conjecturée (comme un éléphant blanc) par Fischer dans le cadre des tentatives pour classifier les groupes simples finis ; cette conjecture a été renforcée par le calcul par Conway et d'autres de la « table de caractères » de l'encore hypothétique Monstre, puis elle a été démontrée par Griess qui a construit le Monstre comme le groupe des symétries d'une algèbre de dimension 196 883 (ou 196 884 si on lui ajoute un élément unité), qu'on appelle maintenant l'algèbre de Griess, mais dont la définition est extrêmement malcommode. Le fait, remarqué par McKay, que le nombre 196 884 apparaisse complètement ailleurs en mathématiques (dans le développement en série de Fourier d'une fonction spéciale appelée l'invariant modulaire j) a conduit Conway et Norton à remarquer d'autres coïncidences du même genre (entre les dimensions de certaines « représentations linéaires » du monstre et les coefficients de l'invariant j), qu'ils ont baptisées Monstrous Moonshine. Ces coïncidences ont été expliquées par les travaux d'abord de Frenkel, Lepowsky et Meurman, qui ont construit le « machin » qu'est le module de Moonshine, qui est une algèbre graduée de dimension infinie ayant le monstre pour groupe de symétries, dont l'algèbre de Griess est la partie de plus bas degré, et dont les degrés suivants ont pour dimensions les coefficients suivants de l'invariant modulaire, puis par les travaux de Borcherds, qui a prouvé le reste des conjectures Moonshine de Conway et Norton et éclairci la notion générale d'algèbre d'opérateurs de sommets.

J'avoue que la définition d'une algèbre d'opérateurs de sommets en général, ou du module de Moonshine en particulier, me reste extrêmement opaque. Je veux dire, je comprends la définition et la construction, mais je n'ai vraiment aucune intuition de pourquoi on veut considérer précisément ces choses-là, ni de la vérité des slogans suivants :

Les algèbres d'opérateurs de sommets sont aux réseaux euclidiens (à peu près) comme les réseaux euclidiens sont aux codes correcteurs.

Et spécifiquement, le module de Moonshine est au réseau de Leech (à peu près) comme le réseau de Leech est au code de Golay binaire.

(Et en plus de ça, on peut faire une analogie avec la physique et dire qu'on a une sorte d'objet classique — le code correcteur —, une première quantification — le réseau euclidien —, et une seconde quantification — l'algèbre d'opérateurs de sommets.)

Je ne pourrai pas expliquer ça, donc. Mais dans la mesure où c'est vrai, c'est fascinant, et ça soulève la question de savoir si le module du Moonshine pourrait avoir des applications en télécommunications (que je pourrais vendre à mes chefs 😉) comme l'ont les codes correcteurs et les réseaux euclidiens !

Je peux au moins constater des similarités de surface dans la construction : j'ai expliqué ci-dessus que pour fabriquer le réseau de Leech, on commence typiquement par fabriquer un réseau de Niemeier (par exemple, l'ensemble des tableaux de 24 entiers dont les bits 0 sont tous égaux et les bits 1 forment un mot du code de Golay) et on le modifie pour « tuer les racines » (éléments de plus petite norme non nulle possible) : la construction du module de Moonshine ressemble un peu, en ce sens qu'on commence par construire une algèbre d'opérateurs de sommets « de réseau », et on la modifie ensuite pour tuer les éléments de plus petit degré possible. (Et même la manière dont on fait ça ressemble un peu : « on coupe en deux, on tord une partie, et on recolle ».) Et pour comprendre le groupe d'automorphismes, dans le cas de Co₀ (ou Co₁ peu importe), on a ceux qui viennent de la « génération précédente » (211M24 si je parle de Co₁, dont il est un sous-groupe maximal) et on trouve une involution qui avec eux suffit à engendrer l'ensemble (celle que j'ai appelée ξ ci-dessus) ; dans le cas du monstre, on a aussi les symétries qui viennent de la « génération précédente » (quelque chose comme 21+24+·Co₁ où 21+24+ désigne le groupe extraspécial d'ordre 225 et de type +) et il s'agit là aussi de trouver une involution qui avec elles engendrent le Monstre tout entier (Frenkel, Lepowsky et Meurman appellent ça une involution de trialité, et on peut y voir un certain rapport avec l'involution trouvée par Conway pour finir d'engendrer Co₀). Mais je manque vraiment de recul pour pouvoir en dire plus sur tout ça.

Je suis cependant raisonnablement convaincu que le module de Moonshine est un objet exceptionnel, « magique », tout à fait comparable au code de Golay binaire et au réseau de Leech, et qu'il est plausible qu'il complète la série. (La classification des groupes simples finis nous assure qu'il n'y aura pas de quatrième génération ; on peut cependant chercher ce qui serait la troisième génération pour la famille des magiciens du nombre 8, et comme je le disais au début, ce n'est pas clair pour moi.)

Je conclus par une remarque sur l'algorithmique du Monstre. Ce qui pose problème n'est pas tellement sa taille : le plus petit élément, E₈(2), de la famille infinie (mais exceptionnelle) de groupes simples finis de type Lie E₈, a déjà 337 804 753 143 634 806 261 388 190 614 085 595 079 991 692 242 467 651 576 160 959 909 068 800 000 éléments, ce qui est nettement plus que le Monstre, et pourtant, il est beaucoup plus facile de manipuler algorithmiquement les éléments de E₈(2) que ceux du Monstre (on peut voir ses éléments comme des matrices de taille 248×248 sur le corps à deux éléments) ; à plus forte raison, les permutations sur 60 éléments sont encore plus nombreuses que ça, et encore plus facile à manipuler sur ordinateur : donc l'ordre du groupe est loin d'être la seule chose qui compte. Comme je l'évoquais dans cette entrée passée, il y a deux façons habituelles de représenter les éléments d'un groupe fini : soit comme des permutations (i.e., plonger le groupe considéré dans un groupe symétrique), soit comme des matrices (i.e., plonger le groupe considéré dans un groupe général linéaire sur un corps) ; algorithmiquement, les groupes de permutation sont extrêmement pratiques, les groupes de matrices le sont déjà moins (mais c'est mieux que rien). Or :

  • s'agissant de M24, il se représente comme groupe de permutations sur 24 objets (les cases du MOG) ou comme groupe de matrices 23×23 (prendre les matrices de permutation de la représentation comme permutations et prendre le noyau de la forme linéaire qui vaut 1 sur chaque case) sur les rationnels ;
  • s'agissant de Co₀, il se représente comme groupe de permutations sur 196 560 objets (les vecteurs de norme minimale non nulle dans le réseau de Leech) ou comme groupe de matrices 24×24 sur les rationnels (comme les symétries du réseau de Leech) ;
  • s'agissant du Monstre, il se représente comme groupe de permutations sur 97 239 461 142 009 186 000 objets ou comme groupe de matrices de taille 196 883×196 883 sur les rationnels (je ne suis pas complètement sûr pour les rationnels ; par ailleurs, il semble que sur le corps à 2 éléments on puisse descendre à des matrices de taille seulement 196 882×196 882).

À chaque fois, j'ai donné le minimum possible : le Monstre ne se plonge pas dans un groupe symétrique sur moins de 97 239 461 142 009 186 000 objets ni dans le groupe général linéaire complexe de taille moins que 196 883. Il est évident que, algorithmiquement, ça pose un peu problème : manipuler des permutations de cette taille est hors de question, et manipuler des matrices — pas du tout creuses ! — de taille 196 883 (ou même 196 882) est limite faisable mais pas franchement pratique. Il serait bien de pouvoir utiliser directement la description du monstre comme automorphismes du module de Moonshine (c'est-à-dire trouver une « troisième génération » de façon algorithmique de voir les groupes finis), mais je suppose que plein de gens y ont pensé avant moi ; il semble que ce papier soit encore l'état de l'art en ce qui concerne les calculs algorithmiques dans le Monstre. Ce qui est sûr, en revanche, c'est qu'il y a un programme de « Moonshine au-delà du monstre » qui cherche à voir les (ou certains des ?) autres groupes finis sporadiques, et pas seulement le Monstre, comme agissant sur des algèbres d'opérateurs de sommets (bizarrement, il semble que le Monstre soit le plus facile dans ce contexte).

↑Entry #2555 [older| permalink|newer] / ↑Entrée #2555 [précédente| permalien|suivante] ↑

Recent entries / Entrées récentesIndex of all entries / Index de toutes les entrées