• Aucun résultat trouvé

4.2 La droite d’Harthong-Reeb, vue de manière axiomatique

4.2.3 Propriété de la borne supérieure

Nous commençons par quelques définitions. Un sous-ensemble S de HRω est un ensemble d’éléments de HRω qui satisfait une certaine propriété définie dans le système formel. Un tel sous-ensemble S est borné pour la relation >ω s’il existe b ∈ HRω tel que b >ω s pour tout s ∈ S ; l’élément b s’appelle un majorant de S. Une borne supérieure pour S est un élément b ∈ HRω tel que :

— ∀s ∈ S b >ω s (b est un majorant de S) ; — ∀b0 (b >ω b0) ⇒ (∃s ∈ S s >ω b0).

Une borne supérieure est unique : si b et c sont deux bornes supérieures de S, alors on a les propriétés suivantes : ¬(b >ω c) et ¬(c >ω b) ; par conséquent, en vertu des propriétés des relations >ω,>ω et = ω, on en déduit que c>ωb et b >ω c et par conséquent que b =ωc.

Le principe constructif de la borne supérieure : Soit S un sous-ensemble non-vide de HRω, qui est borné pour la relation>ω, tel que pour tous α, β ∈ HRω avec β >ω α, ou bien β est un majorant de S ou bien il existe s ∈ S avec s >ω α ; alors S admet une borne supérieure. Démonstration. La formalisation et la preuve de cette propriété dans Coq suit la preuve ma-thématique informelle proposée par Agathe Chollet dans [CWF+09], qui s’appuie elle-même sur les idées proposées par Bridges dans [BR97]. Cette preuve est structurée en deux parties : nous construisons un candidat b pour la borne supérieure, puis nous vérifions que ce candidat b est bien la borne supérieure.

Définitions en Coq Un sous-ensemble est décrit par sa propriété d’appartenance : S x signifie que x appartient à l’ensemble S. Nous définissons ensuite les notions de majorant (upper_bound et de borne supérieure (least_upper_bound).

Definition subset := HRw->Prop.

Definition least_upper_bound (S:subset) (b:HRw) : Prop := (forall s:HRw, (S s -> b >=w s)) /\

(forall b’:HRw, (b >w b’) -> exists o:HRw, S o/\ o >w b’). Definition upper_bound (X:subset) (m:HRw) : Prop :=

forall x:HRw, X x -> m >w x.

Deux suites (sn, bn) Dans la version initiale de la preuve à la main, quatre suites (sn, bn, αn, βn) mutuellement récursives sont définies afin de construire un candidat b pour la borne supérieure. La formalisation en Coq nous a permis de constater qu’il suffisait de calculer récursivement les deux suites sn et bn. En effet, pour chaque rang n, les suites αn et βn ne dépendent que des valeurs de snet de bn. Il n’est donc pas utile de les inclure dans le processus de calcul récursif des suites (sn) et (bn). A chaque étape, les valeurs αn et βn peuvent être recalculées de la manière suivante : αn= 2 3 × sn+ 1 3 × bn βn= 1 3 × sn+ 2 3 × bn.

Calculer les termes suivants sn+1et bn+1des suites ne dépend que les deux termes précédents sn et bn. A partir de ces éléments, nous pouvons constuire αn et βn ainsi que la preuve de la propriété βn >ω αn. Cependant, nous devons propager à chaque étape n les trois propriétés principales de sn et bn :

— snappartient à S — bn est un majorant de S

— bnωsn=ω(23)n×ω(b0ωs0).

Nous réalisons cela en spécifiant aussi précisément que possible la fonction lors de sa définition formelle en Coq. Cela se traduit par un nombre élevé de postconditions pour la fonction def_s_b. Ces propriétés caractérisent le résultat (sn, bn) de la fonction appelée sur les paramètres n et Hn (qui est une preuve que lim n ∧ 0 6 n).

Definition def_s_b :

forall n:A, forall Hn:(lim n /\ 0 <= n), {sn:HRw & {bn:HRw & S sn /\ upper_bound S bn /\ bn +w (-w sn) =w ((power two_third n Hn)*w (b0 +w (-w s0))) } }.

La notation {x : A & Q x} correspond à la quantification existentielle (calculatoire) dans Coq. Elle exprime qu’il existe un élément x de type A tel que l’on a Q x, avec Q une fonction à valeurs dans la sorte Type. Une telle quantification peut être éliminée (contrairement à la quantification existentielle usuelle avec la sorte Prop) pour utiliser les valeurs de sn et bn dans la suite des calculs.

Initialement, nous commençons avec (s0, b0) où s0 est un élément arbitraire de S, b0 un majorant de S, α0= 23s0+13b0 et β0 = 13s0+23b0.

Cela nécessite une hypothèse en Coq qui exprime que l’on peut toujours choisir un élément arbitraire s de S. Cela se traduit par une forme d’axiome du choix, qui s’exprime de la manière suivante :

Definition non_empty (S:subset) := {x:HRw|S x}.

Grâce à la construction {x : HRω & X x}, la définition précédente nous donne un principe d’élimination permettant de prendre (quand on en a besoin) un élément x de HRω dans X.

Supposons que pour un n donné, nous disposions des termes (sn, bn). Nous pouvons construire les termes (αn, βn) ainsi qu’une preuve de la propriété αn <ω βn. Par hypothèse, deux cas distincts peuvent se produire :

— Premier cas βn est un majorant de S. Nous choisissons alors sn+1 et bn+1 tels que sn+1= sn et bn+1= βn.

— Deuxième cas il existe s tel que (S s) et αn <ω s. Nous choisissons alors sn+1 et bn+1 tels que sn+1= s et bn+1 = bn+ s − αn.

Propriétés clés. Plusieurs propriétés clés des éléments de la suite sont déjà décrits dans le type de la fonction def_s_b. Ces propriétés sont vérifiées par construction (c’est-à-dire qu’elles sont établies en même temps que les suites sont effectivement calculées). Parmi elles, nous savons que, pour chaque n, limité et positif, la propriété S(sn) ∧ upper_bound S bn est vérifiée. Nous en déduisons que pour tout k et pour tout n, la propriété suivante est vérifiée : bk >ω sn. De plus, bn et snsont reliés par la relation suivante :

bnωsn=ω (2 3)

n×ω(b0ωs0).

En plus des propriétés déjà spécifiées dans le type de def_s_b, nous avons besoin de montrer que la suite (sn) est croissante. Bien que cela soit immédiat à partir de la définition mathéma-tique, c’est assez technique à démontrer en Coq. En effet, l’application du principe d’induction spécifique nat_like_induction (qui simule le principe d’induction des enters naturels nat_ind pour les éléments standards de A) et ses règles de réduction associées est rendue plus difficile par la présence de Σ-types existentiels et de constructions let-in dans la définition def_s_b. De plus, replier les définitions expansées (notamment l’appel récursif à nat_like_induction) doit être fait à la main5.

Grâce à l’axiome ANS5, les suites (sn) et (bn) peuvent être étendues à tous les entiers, y compris les non-limités. De plus, le principe de permanence nous permet d’établir l’existence d’un nombre infiniment grand ν tel que la propriété suivante est vérifiée :

min

06k6νbk> sν > . . . > s1 > s0. Un candidat pour la borne supérieure de S : b := min

06k6νbk

L’étape suivante, qui consiste à vérifier que b est bien la borne supérieure, peut se résumer à la démonstration des deux propriétés suivantes :

— d’une part, b est un majorant de S,

5. Cela nécessite de copier-coller le but courant et d’appliquer la tactique change pour remplacer explicitement ce terme par un autre, mieux adapté à la suite de la preuve. Le système peut établir que les deux termes sont convertibles, mais il ne peut pas inventer le terme que l’on souhaiterait avoir dans le but.

— d’autre part, b est effectivement une borne supérieure, c’est-à-dire que pour tout b0 <ω b, il existe un élément s ∈ S tel que s >ωb0.

Le lecteur intéressé pourra consulter les détails de ces preuves dans les fichiers LUB*.v du développement Coq (http://dpt-info.u-strasbg.fr/~magaud/Harthong-Reeb/).

A ce stade, nous avons démontré formellement que la droite d’Harthong-Reeb, construite à partir d’un ensemble minimal d’axiomes pour l’arithmétique non-standard comme celui présenté dans la section 4.1, vérifie bien la description de Bridges d’une droite constructive réelle.