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
. 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.groupe de Serre
?
[#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 {aibj : i≥j} constitué des mots de la forme aibj avec i et j deux entiers naturels vérifiant i≥j (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,
, 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
signifie ≥0
et supérieur
signifie ≥
, tandis qu'en anglais, positive
signifie >0
et greater than
signifie >
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 A⊆B
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 A⊂B 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 A⊊B mais je le fais rarement parce que
je préfère écrire A⊆B
et A≠B (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 K⊴G
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 x≥y
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 x≥y
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 x≥y
⇒ f(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,
). 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.positif
signifie ≥0
et supérieur
signifie ≥
, tandis qu'en
anglais, positive
signifie >0
et greater than
signifie >
(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.)