Pfiou, déjà quinze jours que je n'ai rien posté ici ? Mais — outre qu'à chaque fois que je commence à écrire une entrée mon poussinet m'appelle pour faire dodo — j'ai un alibi : j'étais occupé à m'arracher les cheveux pour faire marcher des programmes de calcul pour faire un peu de géométrie algébrique effective, notamment Sage et Macaulay2.
En l'occurrence il s'agissait de vérifier des calculs dans un
article que je référais rapportais, mais le prétexte était
aussi d'apprendre à mieux me servir de ces programmes. Sage, en fait,
est une sorte de méta-programme : il ne fait pas énormément lui-même,
il a surtout pour fonction de rassembler sous une interface commune
divers autres programmes auxquels il délègue les calculs difficiles
(notamment Singular, qui
devait faire tout le boulot sérieux sur
les bases de
Gröbner que je confiais à Sage), et j'espère d'ailleurs que
Macaulay2 arrivera lui aussi prochainement sous l'ombrelle Sage, de
sorte que je n'aurai plus qu'un programme à utiliser pour ce genre de
choses (parce que c'est un peu fastidieux, entre les Sage, Macaulay2,
Singular, mais aussi
parfois GP/Pari, Gap4, Maxima, Axiom et quelques autres,
de se rappeler qui a besoin d'un ;
à la fin de la ligne,
qui utilise %
pour rappeler le résultat précédent, qui
utilise =
ou :=
ou :
pour
l'affectation, et ainsi de suite). Sage est basé
sur Python, sans doute pas mon
langage de programmation préféré, mais, du moins, un vrai langage de
programmation, ce qui est toujours plus agréable que les succédanés
que certains logiciels nous servent.
Tous les programmes que j'ai cités ci-dessus ont la vertu d'être
des logiciels libres. Malheureusement ce n'est pas du tout le cas de
celui qui fait aujourd'hui référence en matière de calculs
informatiques en algèbre et géométrie algébrique (et qui, même si Sage
fait des progrès très rapides et très spectaculaires, domine tous les
autres à peu près autant qu'un moine Shaolin m'éclaterait en combat
singulier), à
savoir Magma.
Celui-ci, non seulement il n'est pas libre, mais il est même vendu
très cher (neither Free as in Free Speech nor Free as
in Free Beer—more like Free as in
, comme
on dit). Je trouve ça d'ailleurs plus qu'un peu choquant, vu que le
coup bas ne vient pas d'une compagnie à but très lucratif (on a sinon
la résignation du moins l'habitude que les Springer, les Elsevier et
d'autres, ou dans un autre genre les Wolfram Research, se fassent de
l'argent à partir des subventions à la recherche en mathématiques)
mais d'une université, en l'occurrence celle de
Sydney[#].Free Tibet!
En l'occurrence, ce n'est pas qu'une préférence abstraite pour le logiciel libre ni un souci d'argent qui me font m'agacer de Magma, c'est aussi une troisième raison, une inquiétude scientifique pour la reproductibilité des calculs. Car si un théorème dépend du résultat d'un calcul (comme c'était le cas dans l'article que je rapportais), et si ce calcul n'est faisable qu'avec un unique logiciel dont, de plus, le code source n'est pas visible, peut-on avoir complètement confiance en l'exactitude du théorème ? Il ne suffit pas que les algorithmes annoncés être utilisés par le logiciel soient publiés et validés, encore faut-il qu'ils soient correctement implémentés et exempts de bugs, et cela on ne peut pas s'en assurer même en théorie. Je proposerais donc comme critère pour qu'un calcul puisse être considéré comme tenant lieu de démonstration inconditionnelle (lorsqu'il repose, évidemment, sur des algorithmes garantis et qui prouvent effectivement la conclusion annoncée) qu'il puisse être reproduit sur au moins deux logiciels développés de façon complètement indépendante, dont au moins un ait un code source publié. Certes je n'irai pas relire le code complet du logiciel, mais je n'ai pas non plus lu la démonstration du théorème de Hironaka, je fais confiance à des spécialistes pour ça, et je ne me prive pas de l'utiliser : il m'importe cependant de pouvoir lire au moins en théorie tout ce sur quoi mes démonstrations reposent, que ce soit d'autres démonstrations ou des logiciels ; la vérification par un second logiciel tiendrait, dans cette analogie, lieu de vérification d'une démonstration par un rapporteur — cela ne valide pas les logiciels tout entiers, mais ça valide au moins le calcul précis qu'on a fait refaire.
(Dans l'article que je rapportais, fort heureusement, j'ai pu refaire dans Sage et Macaulay2 la totalité des calculs que les auteurs prétendaient avoir effectués avec Magma : ce fut au prix de pas tout à fait du sang mais du moins beaucoup de larmes et de sueur.)
Comme exemple de calcul qu'on peut faire avec ce genre de programmes, voici un exemple dont je ne suis pas peu fier : l'équation cartésienne du bord des composantes hyperboliques de période 3 dans l'ensemble de Mandelbrot (c'est-à-dire la cardioïde du plus gros « ensemble satellite », celui qui est situé autour de −1.755 sur l'axe réel, plus les deux plus gros bulbes symétriques sur la cardioïde mère, situés autour de −0.123±0.745i). Il s'agit de la courbe d'équation suivante (où x désigne la partie réelle et y la partie imaginaire du paramètre) :
x12 + 6x10y2 + 15x8y4 + 20x6y6 + 15x4y8 + 6x2y10 + y12 + 8x11 + 40x9y2 + 80x7y4 + 80x5y6 + 40x3y8 + 8xy10 + 28x10 + 116x8y2 + 184x6y4 + 136x4y6 + 44x2y8 + 4y10 + 60x9 + 192x7y2 + 216x5y4 + 96x3y6 + 12xy8 + (6015/64)x8 + (3199/16)x6y2 + (3709/32)x4y4 + (127/16)x2y6 − (129/64)y8 + (927/8)x7 + (1117/8)x5y2 − (35/8)x3y4 − (225/8)xy6 + (232639/2048)x6 + (116925/2048)x4y2 − (5315/2048)x2y4 − (20673/2048)y6 + (186941/2048)x5 − (9283/1024)x3y2 + (56637/2048)xy4 + (3851/64)x4 − (11473/512)x2y2 + (6615/512)y4 + (64071/2048)x3 − (32193/2048)xy2 + (3552255/262144)x2 − (1528065/262144)y2 + (250047/65536)x + (15752961/16777216) = 0
Si vous croyez que c'est facile de calculer ça, même avec un ordinateur, trouvez-moi la courbe limite correspondante pour les points de période 4 — je serai très impressionné.
[#] Remarquez, si je commence à dire du mal des universités qui ont des politiques honteuses quand il s'agit de se servir de leur droit d'auteur pour éviter que quelque chose d'utile au public ou à la recherche puisse leur échapper, j'en aurais un rayon à sortir… j'ai déjà parlé du OED ?