• Aucun résultat trouvé

La formalisation Coq de ces quatre systèmes d’axiomes est plutôt immédiate. Par souci de clarté, nous exposons ci-dessous une version simplifié de notre implantation de la géométrie d’incidence projective à la fois en 2D, ≥3D et 3D.

Pour améliorer la modularité, nous exploitons le mécanisme de « type classes » [CS12,SO08] et de foncteurs en Coq. Les classes de types d’abord définies dans Haskell [Jon03] sont un outil très utile pour écrire des programmes sur des structures abstraites tout en apportant un méca-nisme de surcharge des notations. Afin d’analyser les dépendances entre les différents systèmes d’axiomes et observer les équivalences entre différentes variantes d’axiomatisations, nous divi-sons nos ensembles d’axiomes en différentes classes. Nous examinons ainsi en détails l’équivalence entre chaque classe d’axiomes avec les deux formalisations de la géométrie d’incidence projective. De plus, ces classes sont construites incrémentalement en ajoutant les axiomes un à un. Cette classification nous permet de mettre en évidence le système d’axiomes minimal requis pour dé-montrer un ensemble de propriétés. Finalement, les classes de types en Coq permettent de vérifier que nous avons bien réussi à prouver une théorie à partir d’une autre grâce à l’instantiation.

Premièrement, nous créons la classe ProjectiveStructure avec les définitions des deux ob-jets : point et droite, de la relation d’incidence et de sa décidabilité2 (voir Table I.1.8). Nous regroupons ensuite les axiomes communs entre les différentes dimensions à savoir Line-Existence, Uniqueness et Three-Points dans la Table I.1.10. Enfin, nous construisons trois classes, la pre-mière capture l’intégralité du plan projectif (voir Table I.1.11), la seconde (voir Table I.1.12) décrit l’espace projectif ≥3D et la dernière (voir TableI.1.13) formalise exactement l’espace pro-jectif 3D.

22 I.1. Mécanisation de la démonstration en géométrie d’incidence projective

(* Types *)

Class ProjectiveStructure := { Point : Set;

Line : Set;

Incid : Point -> Line -> Prop;

(* décidabilité pour la relation d’incidence *)

incid_dec : forall (A : Point)(l : Line), {Incid A l} + {~Incid A l} }.

Table I.1.8 – Classe de types pour la structure projective.

Les questions de décidabilité et les relations d’égalité sont les principales différences entre la formalisation Coq et les systèmes d’axiomes montrés précédemment.

Étant donné que la logique sous-jacente à Coq est intuitionniste, nous devons explicitement déclarer quels prédicats sont décidables. Il s’agit d’indiquer au système les concepts qui satisfont la propriété du tiers-exclu3de la logique classique. De cette manière, nous élargissons le fragment décidable des théorèmes qu’il est possible de prouver. En admettant seulement la décidabilité du prédicat Incid, nous prouvons la décidabilité de l’égalité à la fois pour les points et pour les droites [MNS11]. Les trois décidabilités sont toutes reliées à travers la définition de l’axiome

(A3P2)de la géométrie d’incidence projective. Ce choix de conception ne complique en rien les preuves. Une fois que la décidabilité de l’égalité sur les points ou les droites est démontrée, nous différencions nos objets comme en logique classique : soit deux objets sont égaux, soit ils ne le sont pas.

L’autre choix de formalisation que nous avons effectué est que l’égalité sur les points dif-fère de l’égalité classique de Leibniz4. Cette égalité sur les points, notée [==], est une relation d’équivalence qui devient un paramètre de notre théorie formellement défini en amont de la classe ProjectiveStructure dans la TableI.1.9. Elle permet de rendre transparente la manière dont les points sont construits. En d’autres termes, l’égalité rend possible la substitution d’un point par un autre si ils sont constructivement équivalents mais pas nécessairement syntaxiquement égaux. En associant cette égalité à la non distinction des points lors de la formalisation du premier axiome (A1P2), il est possible de construire une partie de la géométrie d’incidence projective avec une approche constructiviste [Kah95,VP95]. Lorsque nous souhaitons rendre une partie de notre formalisation calculatoire, nous introduisons la décidabilité sur cette égalité paramétrique qui a été prouvée en utilisant celle sur l’incidence. Pour les droites, un traitement analogue reste à faire : l’égalité de Leibniz est encore employée pour représenter l’égalité entre les droites. Nous justifions la non utilisation d’une égalité paramétrique pour les droites de deux manières : premièrement, les droites ne forment pas un objet primitif de la formalisation de la géométrie d’incidence projective du ChapitreI.2; en effet dans ce cadre les droites seront représentées par des ensembles de points ; deuxièmement, nous souhaitons mesurer les principales différences entre les deux égalités dans l’automatisation des preuves. Pour rigoureusement compléter notre

librai-3. Le tiers exclu aristotélicien dit que : si ça n’est pas vrai, c’est faux ; si ça n’est pas faux, c’est vrai ; pas d’autres possibilités. En d’autres termes, deux propositions contradictoires ne peuvent pas être toutes les deux fausses. Cette propriété possède des formulations équivalentes comme par exemple la double négation, la loi de Peirce ou la loi de De Morgan.

4. L’égalité classique respecte les axiomes généraux de l’identité, de la symétrie et de la transitivité. Leibniz propose le principe suivant comme définition de l’égalite : deux êtres sont égaux lorsque tout ce qui est vrai de l’un est vrai de l’autre.

2. Géométrie d’incidence projective 23

rie sur la géométrie, une égalité paramétrique pour les droites similaire à celle des points doit être considérée. Ce détail technique permettant de mieux étudier la logique sous-jacente à l’assistant de preuve Coq n’empêche en rien la formalisation de la géométrie d’incidence projective ainsi que les nombreuses preuves qui lui sont associées. Nous n’y reviendrons pas dans la suite de ce manuscrit.

(* décidabilité sur les points *) Class EqDecidability ‘(U : Set) := { (* notation et décidabilité *)

Notation "s [==] t" := (s === t) (at level 70, no associativity). eq_dec_u : forall A B : U, {A [==] B} + {~ A [==] B}

}.

Table I.1.9 – Classe de types pour l’égalité sur les points.

(* nD *)

Class ProjectiveStructureLEU ‘(PS : ProjectiveStructure) := { (* A1P2-P3 Line-Existence *)

a1_exist: forall (A B : Point) , exists l : Line, Incid A l /\ Incid B l; (* A3P2-P3 Uniqueness *)

uniqueness: forall (A B : Point)(l1 l2 : Line), Incid A l1 -> Incid B l1 -> Incid A l2 -> Incid B l2 -> A [==] B \/ l1 = l2;

(* A4P2-P3 Three-Points *)

a3_1: forall l : Line, exists A : Point, exists B : Point, exists C : Point, (~ A [==] B /\ ~ A [==] C /\ ~ B [==] C /\

Incid A l /\ Incid B l /\ Incid C l) }.

Table I.1.10 – Classe de types pour la structure projective indépendante de la dimension.

(* 2D *)

Class ProjectiveStructurePlane ‘(PSLEU : ProjectiveStructureLEU) := { (* A2P2 Point-Existence *)

a2_exist : forall (l1 l2 : Line), exists A : Point, Incid A l1 /\ Incid A l2; (* A5P2 Lower-Dimension *)

a3_2 : exists l1 : Line, exists l2 : Line, l1 <> l2; }.

24 I.1. Mécanisation de la démonstration en géométrie d’incidence projective

(* >= 3D *)

Class ProjectiveSpaceOrHigher ‘(PSLEU : ProjectiveStructureLEU) := { (* A2P3 Pasch *)

a2: forall A B C D : Point, forall lAB lCD lAC lBD : Line, ~ A [==] B /\ ~ A [==] C /\ ~ A [==] D /\

~ B [==] C /\ ~ B [==] D /\ ~ C [==] D -> Incid A lAB /\ Incid B lAB ->

Incid C lCD /\ Incid D lCD -> Incid A lAC /\ Incid C lAC -> Incid B lBD /\ Incid D lBD ->

(exists I : Point, (Incid I lAB /\ Incid I lCD)) -> exists J : Point, (Incid J lAC /\ Incid J lBD); (* A5P3 Lower-Dimension *)

a3_2: exists l1 : Line, exists l2 : Line, forall p : Point, ~(Incid p l1 /\ Incid p l2)

}.

Table I.1.12 – Classe de types pour l’espace projectif au moins en dimension 3.

(* 3D *)

Class ProjectiveSpace ‘(PSH : ProjectiveSpaceOrHigher) := {

Intersect_In (l1 l2 : Line) (P : Point) := Incid P l1 /\ (Incid P l2); (* A6P3 Upper-Dimension *)

a3_3 : forall l1 l2 l3 : Line, ~ l1 = l2 /\ ~ l1 = l3 /\ ~ l2 = l3 ->

exists l4 : Line, exists J1 : Point, exists J2 : Point, exists J3 : Point, (Intersect_In l1 l4 J1) /\ (Intersect_In l2 l4 J2) /\ (Intersect_In l3 l4 J3) }.

3. Méthodologie et automatisation de la démonstration en géométrie d’incidence 25

3 Méthodologie et automatisation de la démonstration en

géo-métrie d’incidence

Dans cette section, nous décrivons la méthodologie que nous avons suivie pour effectuer des preuves en géométrie d’incidence ainsi que l’automatisation qu’il est possible d’apporter dans ces démonstrations. Afin de mécaniser le déroulement des preuves dans un contexte géométrique, nous devons identifier les étapes clés de démonstration apparaissant de façon récurrente et évaluer leur difficulté. Ces étapes générales sont ensuite automatisées grâce aux différents outils proposés par les assistants de preuves. Dans la suite, cette segmentation des démonstrations en petits morceaux de preuves représentatifs avec les stratégies de mécanisation qui les accompagnent est appelé « élément de preuves ». Nous divisons la classification de ces élements de preuves en 5 catégories distinctes que nous ne hiérarchisons pas :

• Tests de décidabilité • Clôture des hypothèses • Résolution ou contradiction • Création d’objets

• Identification et application d’un motif