David Madore's WebLog: Sur la rédaction des maths et la recherche de l'inambiguïté

[Index of all entries / Index de toutes les entréesLatest entries / Dernières entréesXML (RSS 1.0) • Recent comments / Commentaires récents]

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

(mercredi)

Sur la rédaction des maths et la recherche de l'inambiguïté

L'an dernier, j'ai eu l'honneur de déjeuner avec Jean-Pierre Serre, et nous avons discuté entre autres de la rédaction des mathématiques. (Comme Serre est à mon avis — et je suis loin d'être le seul à le penser — un des mathématiciens dont le style de rédaction est le plus parfait qui soit, c'était évidemment très intéressant pour moi d'entendre ce qu'il avait à dire. Je recommande d'ailleurs de regarder cet exposé où il dénonce beaucoup de mauvaises habitudes dans ce domaine.)

Il a beaucoup insisté sur l'importance d'écrire des énoncés justes : c'est-à-dire notamment, si un énoncé P(n) est vrai pour tout n≥1, de bien écrire pour tout n≥1 et de ne pas laisser le lecteur penser que P(0) puisse être vrai lorsqu'il ne l'est pas (et c'est encore pire quand l'énoncé commence à être vrai à 2 ou 3, voire au-delà). Je savais déjà qu'il accordait beaucoup d'importance à ça[#]. Mais comme je mentionnais les codes correcteurs d'erreurs, il a fait cette autre remarque que je trouve tout à fait digne d'être érigée en maxime, à savoir qu'il essayait d'écrire les mathématiques comme un code correcteur d'erreurs (je n'ai malheureusement pas noté la phrase exact qu'il a employée, mais ça fait peut-être justement partie du phénomène souligné). Ce qu'il voulait dire est qu'inévitablement, dans une rédaction mathématiques, il y aura des choses qui seront mal lues : soit que l'auteur lui-même fasse un lapsus, soit que le manuscrit soit mal retapé, soit que l'imprimeur change certains symboles, soit que le lecteur lise mal ou ait une convention différente sur certaines choses : il faut essayer d'écrire de manière à rendre le texte relativement robuste par rapport à ces erreurs (pour qu'elles soient détectables ou, encore mieux, corrigeables).

[#] Plusieurs fois j'ai assisté à un séminaire où Serre était dans l'assistance[#2], où l'orateur commence énonce un théorème et où Serre s'exclame mais c'est complètement faux ! ce n'est pas possible, ça ! — alors là, l'orateur, visiblement paniqué, se demande si Serre vient de trouver en direct un contre-exemple au théorème principal, et au bout d'un moment de confusion on comprend que Serre protestait contre le fait que l'énoncé était trivialement faux pour n=0. Moment sans doute très désagréable pour l'orateur, mais je pense qu'après ça on apprend très vite à se demander si pour tout n veut vraiment dire tout n.

[#2] Tiens, puisque j'en suis à raconter des anecdotes à son sujet[#3], un jour j'ai assisté à un séminaire où l'orateur a commencé à parler du groupe de Serre comme si tout le monde savait évidemment de quoi il s'agissait (je sais que c'était dans un contexte de représentations galoisiennes, mais moi-même je n'avais aucune idée de ce que c'était censé être). L'éponyme a levé la main pour demander qu'est-ce que le groupe de Serre ?. La morale, là, et je pense aussi que l'orateur l'aura bien retenue, c'est que même quand on parle à une assistance de gens très distingués, il faut être très conservateur dans ce qu'on suppose que tout le monde connaît.

[#3] Allez, une troisième pour la route. Quand j'ai écrit cet article avec mon directeur de thèse, ce dernier l'a envoyé à Serre pour lui demander son avis avant publication. Entre autres remarques, il a relevé le bout de phrase par récurrence sur le naturel k et a commenté ce n'est sûrement pas vous [Colliot-Thélène] qui avez écrit ça : de fait, c'est moi qui l'avais rédigé ce passage. (L'objection est que Serre n'aime pas qu'on écrive un naturel pour un entier naturel. Je vous rassure, ses autres remarques sur l'article étaient beaucoup plus intéressantes.) Colliot-Thélène a regardé dans le petit Robert, qui recense bien quelque part naturel comme nom masculin dans le sens de entier naturel, et nous avons décidé de laisser la phrase comme ça. Mais depuis, je fais plus attention à écrire généralement un entier naturel plutôt que juste un naturel (sauf quand j'ai l'impression que le second allège vraiment la phrase).

Une façon d'attraper les erreurs consiste à dupliquer certaines informations, à redire en symboles ce qu'on vient de dire en mots ou vice versa, ou à insérer des égalités qui peuvent servir de sanity checks confirmant au lecteur que son interprétation est la bonne. Dans un énoncé de contrôle que j'ai donné récemment à Télécom ParisTruc, je vois par exemple que j'ai écrit des choses comme :

Construire un automate reconnaissant le langage M := Σ*\L complémentaire de L.

Soit P le langage {aibjij} constitué des mots de la forme aibj avec i et j deux entiers naturels vérifiant ij (autrement dit, les mots de M qui ont au moins autant de a que de b).

(Ces deux paragraphes appartiennent à des contextes différents et ce n'est pas le même M, mais ça n'a aucune importance.) Le premier sert à m'assurer que ceux qui auraient un doute sur la notation \ (différence de deux ensembles) peuvent se rattraper avec le mot complémentaire ou que ceux qui ont un doute sur ce dans quoi le complémentaire est pris peuvent se rattraper sur l'écriture Σ*\L. Le second est peut-être un peu excessivement redondant (je dis trois fois la même chose !), mais on voit l'idée. Je suis particulièrement soigneux quand j'écris des énoncés d'examen, comme ça, à atténuer les risques qu'une erreur d'interprétation bloque complètement un étudiant.

(Soit dit en passant, j'utilise aussi beaucoup la notation x:=y pour dire que x est défini comme égal à y. Que je n'hésite d'ailleurs pas à écrire comme y=:x le cas échéant. Son intérêt principal est que si on énonce un théorème comme x=y=z, le fait d'écrire x:=y=z permet au lecteur de comprendre que la première égalité est une définition, une trivialité ou une explication, tandis que c'est la seconde qui constitue l'énoncé du théorème ; voir ce passage de l'exposé de Serre évoqué plus haut. J'évite de toute façon de faire de tels énoncés, mais il arrive qu'ils se glissent au passage. Ce qui est agaçant, c'est que cette notation x:=y n'est apparemment elle-même pas définie dans le cursus scolaire français standard, et je dois donc perdre plus de temps en explications à son sujet qu'elle ne m'en fait gagner. Mais je me dis que ça servira bien à mes élèves de l'avoir rencontrée.)

Redire beaucoup de choses deux fois (en symboles et en mots) aide énormément à confirmer au lecteur le sens de certaines notations ou de certains mots, et aide aussi l'auteur à se persuader lui-même qu'il n'est pas indispensable de chercher à minimiser le nombre de signes dans son article. Globalement c'est une bonne idée.

Mais il y a un autre type de correction d'erreurs qu'on peut faire, c'est de trouver les notations et termes qui minimisent la confusion terminologique. Je m'explique.

Il y a une ambiguïté vraiment pénible en mathématiques et qui revient tout le temps et sous plein de variantes, c'est que personne ne sait au juste si positif signifie ≥0 ou bien >0 ; et, de façon correspondante, si supérieur signifie ou >. Le fait est que les deux conventions existent. Certains vous diront avec aplomb que en français, positif signifie ≥0 et supérieur signifie , tandis qu'en anglais, positive signifie >0 et greater than signifie >, et ils auront raison si on parle de la convention majoritaire, mais (A) il y a des exceptions dans les deux sens et (B) même si c'était universellement vrai, ça resterait un état de choses complètement merdique que positif et positive aient des sens différents (c'est à peu près aussi pourri que la situation du mot billion). Comment contourner cet énorme étron du paysage mathématique ?

Une solution consiste à tout dire avec les symboles qui, heureusement, sont inambigus. Ou à tout dire deux fois comme je l'ai proposé plus haut. Mais même comme ça, je ne suis pas très content.

Une option que je préfère consiste à choisir les termes les moins ambigus. Il arrive souvent qu'il y ait trois termes pour deux concepts : certains auteurs utilisent le terme A pour le concept X et le terme B pour le concept Y tandis que d'autres utilisent le terme B pour le concept X et le terme C pour le concept Y (en l'espèce : certains disent strictement positif=:A pour >0 et positif=:B pour ≥0 tandis que d'autres disent positif pour >0 et positif ou nul=:C pour ≥0) ; dans ce cas, j'essaie systématiquement d'utiliser les termes A et C, puisqu'ils ne sont jamais utilisés autrement que pour X et Y respectivement, et les identifient donc sans ambiguïté, et j'évite complètement le terme B.

Cela voudrait donc dire de dire toujours soit strictement positif (strictly positive en anglais), soit positif ou nul (positive or zero ; mais je vais revenir sur le fait que je n'aime pas tellement celui-là non plus). Et de ne jamais utiliser le terme positif tout seul. Ou du moins, de ne l'employer que quand (i) l'interprétation choisie n'a aucune importance (voire, même en changeant d'interprétation au sein même d'une phrase), et (ii) le fait que l'interprétation choisie n'a aucune importance sera complètement clair pour le lecteur (histoire qu'il n'ait pas à se gratter la tête en se demandant ce que positif veut dire, même s'il s'avère que l'une ou l'autre interprétation convenait). Par exemple, il est acceptable d'utiliser le terme positif dans un contexte comme : soit x un réel non nul ; définissons y par l'une des formules suivantes selon le signe de x : (a) si x est positif, on pose y:=(…), et (b) si x est négatif, on pose y:=(…) — dès lors que x a été explicitement qualifié de non nul, le problème de savoir ce que positif signifie ne se pose pas.

C'est ainsi que j'utilise la notation AB pour désigner le fait que A est un sous-ensemble de B, avec une barre en-dessous, parce qu'il y a des gens, même s'ils sont minoritaires peu importe, qui notent AB pour dire que A est un sous-ensemble strict de B (strict c'est-à-dire différent de B) ; et si je veux noter ce fait, je peux utiliser AB mais je le fais rarement parce que je préfère écrire AB et AB (et/ou utiliser des mots), histoire que la négation ne passe pas inaperçue. De toute façon, je trouve plus logique d'utiliser le symbole  qui fait un parallèle avec  (et je vais jusqu'à noter KG pour le fait que K est un sous-groupe distingué de G, toujours avec la barre horizontale en-dessous). Sur ce point, je dois préciser que Serre n'était pas d'accord avec moi. Toujours est-il que j'évite autant que possible le symbole  (il m'est arrivé de m'en servir lorsque les conditions (i) et (ii) du paragraphe précédent étaient réunies, par exemple pour écrire soit C⊂ℙ² une courbe projective plane, mais même comme ça je l'ai regretté parce que je me suis dit que ça pouvait amener le lecteur à se poser des questions si d'aventure les trois symboles , et  étaient utilisés dans le même texte ; donc le mieux me semble être de s'en tenir à et de jeter tous les autres).

Ajout () : Je donne un autre exemple pris en-dehors des mathématiques (et qui a l'intérêt de marcher pareil en anglais et en français). Les Nord-Américains appellent moose=:A₁ en anglais et orignal=:A₂ en français l'animal X := Alces alces, et ils appellent elk=:B₁ en anglais et (son cognat) élan=:B₂ en français l'animal Y := Cervus canadensis. Les même deux espèces sont ainsi nommées en Europe : elk= en anglais et élan= en français pour Alces alces, et wapiti=:C pour Cervus canadensis. La seule solution raisonnable de ce chaos est de ne jamais utiliser les mots elk et élan : soit on se réfère aux animaux par leur nom scientifique binomial (ce qui est sans doute le mieux, mais plus long), soit on utilise les termes inambigus que sont moose/orignal pour Alces alces, et wapiti pour Cervus canadensis. C'est ce que je fais (enfin, les très rares fois où j'ai envie de parler de ces bébêtes autrement que comme des cervidés interchangeables — et où j'arrive à me rappeler ce qui est quoi).

Mais revenons à la manière de dire x≥0 ou plus généralement xy avec des mots.

Il y a un mot abominable en anglais, c'est nonnegative : la logique étant que negative signifie <0 et que nonnegative signifie donc ≮0 [vous devriez voir le symbole barré, je ne sais pas à quel point ce caractère Unicode est courant], c'est-à-dire (que x is nonnegative signifie) ¬(x<0), autrement dit ≥0. C'est abominable à au moins deux titres. D'abord, ça ne lève pas l'ambiguïté : dès lors qu'il existe des gens qui disent negative pour ≤0, et il y en a (oui, même en anglais), le fait de dire nonnegative ne nous aide pas (bon, dans les faits, je pense que vraiment personne n'utilise ce mot pour autre chose que ≥0, mais ça reste vraiment problématique sur le principe ; il y a au moins bien des gens qui ont dû écrire x is not negative pour x>0). Ensuite, dès lors qu'on a possiblement affaire à des ordres partiels, la négation de <0 n'est pas ≥0. Ça n'a pas empêché que quelqu'un (qu'il faudrait pendre haut et court) d'avoir inventé le terme abominable de nondecreasing pour une fonction f telle que xy implique f(x)≥f(y) (dans la convention selon laquelle increasing resp. decreasing signifie strictement croissante resp. strictement décroissante, i.e., que x>y implique f(x)>f(y), resp. que x>y implique f(x)<f(y)). Donc nondecreasing n'est pas la négation d'aucun sens raisonnable de decreasing, et le Club Contexte se frotte très fort les mains. (Déjà qu'en France on a du mal à faire comprendre aux étudiants que la négation de strictement décroissant n'est pas croissant, mais alors j'ai vraiment pitié pour les enseignants qui doivent faire avec cette terminologie merdique et expliquer que la négation de decreasing n'est pas nondecreasing.)

Il est nettement préférable de dire positive or zero et, en français, positif ou nul pour ≥0, et bien sûr greater than or equal to et, en français, supérieur ou égal pour . Je vais expliquer ci-dessous pourquoi je n'en suis toujours pas complètement satisfait. Mais en tout état de cause, ça ne résout pas vraiment le problème pour le mot increasing / croissant qu'il faut désambiguïfier en strictly increasing / strictement croissant et en… en quoi, justement ?, si on ne veut pas tomber dans l'abomination qu'est nondecreasing ?

Je n'ai toujours pas trouvé de réponse vraiment satisfaisante à ce dilemme. Le mieux est sans doute d'utiliser une variante de weakly en anglais et de au sens large en français (i.e. : weakly positive / positif au sens large pour ≥0 ; weakly greater / supérieur au sens large pour  ; et weakly increasing / croissante au sens large pour xyf(x)≥f(y)). Mais ces termes, ou du moins ceux à base de weak en anglais, ne sont pas terriblement courants (ou peuvent désigner des choses encore complètement différentes) et risquent donc encore de causer de la confusion. Je ne crois pas que ce soit mieux avec des termes comme laxly, broadly, loosely, flacidly, leniently, softly ou tout ce que je peux imaginer, soient plus clairs. Il n'y a peut-être pas de bonne solution ! (Pour remplacer spécifiquement les abominations que sont nondecreasing et nonincreasing, il y a order-preserving et order-reversing qui sont, je crois, inambigus, et qui sont encore ce que je peux proposer de mieux à ce chapitre, mais c'est vraiment un pis-aller.)

J'ai mentionné le fait qu'utiliser le terme nonnegative, c'est-à-dire utiliser la négation de <0, pour donner un nom à ≥0, était mauvais parce que ça ne fonctionne pas en présence d'ordres partiels. Il faut que j'explique aussi que je n'aime pas trop non plus positive or zero : une raison est qu'en mathématiques constructives, l'énoncé x≥0 n'est généralement pas équivalent à x>0 ∨ x=0 (et ça se comprend intuitivement : le premier signifie qu'on est certain que x est plus grand que n'importe quel rationnel strictement négatif, ou si on préfère plus grand que n'importe quel −1/2k ; tandis que le second signifie que soit on est capable d'exhiber une borne inférieure rationnelle strictement positive pour x, disons un 1/2k si on préfère, soit on est certain qu'il est nul ; mais si je prends le réel x entre 0 et 1 donné par l'écriture binaire dont le n-ième chiffre vaut 0 si une certaine machine de Turing ne s'arrête pas au bout de n étapes, et 1 si elle s'est arrêtée au bout de ce nombre d'étapes, alors on a trivialement x≥0 puisque j'ai défini un nombre entre 0 et 1, mais on ne peut pas forcément affirmer x>0 ∨ x=0 faute de savoir si la machine s'arrêtera ou pas[#4]). Bref, si on veut préserver la possibilité d'écrire des maths constructives[#5], on ne peut pas utiliser le terme positive or zero ou, en français positif ou nul.

Mais bon, de toute façon, les raisons de ne pas vouloir dire positif ou zéro sont assez nombreuses : pour dire que f(x)≥0 partout, si on commence à dire que f est partout positive ou nulle, on ne sait pas trop si cela signifie f est (partout positive) ou [partout] nulle ou f est partout (positive ou nulle), et du coup, on n'a pas levé l'ambiguïté sur le mot positif. C'est pour ça que je cherche plutôt une variante autour d'un adverbe comme weakly ou (d'une locution adverbiale comme) au sens large, évitant toute disjonction.

(On m'a aussi soufflé bounded above/below by, qui est probablement inambigu pour désigner l'inégalité large. Mais ça fait quand même des phrases bizarres.)

[#4] Bon, je me suis un peu autoconfusé en écrivant cet exemple, parce que comme un mathématicien classique, je me suis dit qu'un réel donné par une écriture binaire monotone (c'est-à-dire qu'à partir du moment où il y a un 1, il n'y a que des 1) est évidemment rationnel (classiquement, il vaut 0 ou bien 1/2k), or pour un rationnel, même en mathématiques constructives, x≥0 est bien équivalent à x>0 ∨ x=0. Ça doit donc être que ce x n'est pas forcément rationnel, ce qui est sensé parce que je ne peux pas lui en exhiber un dénominateur, mais c'est vraiment trop horrible qu'une écriture binaire monotone ne donne pas forcément un rationnel.

[#5] Ironiquement, sur les réels, les maths constructives sont d'accord avec le terme nonnegative, puisque ¬(x<0) équivaut bien à x≥0. (Je ne sais pas pourquoi, j'étais persuadé du contraire, au moins sur les réels de Dedekind. Mais vérification faite, c'est pareil.) C'est sans doute quand même mieux d'imaginer x≥0 comme signifiant ∀y<0.(y<x), où éventuellement y est limité aux rationnels, si on doit définir l'inégalité large en fonction de l'inégalité stricte. Toujours est-il que le rapport entre un ordre strict et un ordre large est assez complexe à cerner comme l'illustre cette question de MathOverflow qui n'a pas vraiment reçu de réponse satisfaisante.

Le combat pour rendre les mathématiques aussi lisibles que possible, et pour écrire de façon à lever toutes les ambiguïtés, est évidemment semé d'embûches (d'autant que les deux buts peuvent être un peu contradictoires quand la levée de l'ambiguïté se fait par des formulations excessivement lourdes qui finissent par causer de la confusion). Je n'ai pas de solution miracle. Mais la moindre des choses serait au moins que tous les mathématiciens et tous les enseignants du sujet, et plus généralement tous ceux qui sont amenés à « parler mathématiques » soient au moins conscients de certains de ces problèmes (et surtout qu'on n'en reste pas à des jugements péremptoires comme en français, positif signifie ≥0 et supérieur signifie , tandis qu'en anglais, positive signifie >0 et greater than signifie >). Bien sûr, dualement, les lecteurs doivent être au courant que les ambiguïtés existent, et que tous les auteurs ne font pas forcément beaucoup d'efforts pour les leur épargner.

(La question peut se poser dans l'enseignement : utiliser une terminologie soigneusement choisie pour éviter toutes les ambiguïtés et confusions est globalement une bonne idée, mais un jour ou un autre il faut bien que les étudiants soient confrontés au fait que tout le monde n'utilise pas forcément les mêmes termes de la même façon ; cf. la note #5 de cette entrée.)

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

[Index of all entries / Index de toutes les entréesLatest entries / Dernières entréesXML (RSS 1.0) • Recent comments / Commentaires récents]