• Aucun résultat trouvé

Chapitre I.2 La théorie des matroïdes : une approche combinatoire crypto-

2.4 Export des modèles en langage Gallina

La fabrication automatique des fichiers en langage Gallina contenant les différents plans et espaces finis suit un patron permettant de plus facilement réexploiter tous les outils et structures mis en place pour réaliser les différentes preuves. Tous les modèles ainsi générés sont quasiment identiques pour l’ordre et la dimension. Cependant, le patron diffère largement en fonction de l’approche géométrique que nous employons.

2.4.1 Modèle en géométrie synthétique

La génération d’un modèle, décrits avec cette axiomatisation, contient deux types inductifs pour les points et les droites ainsi qu’un prédicat booléen pour la relation d’incidence (voir Table

80 II.1. Formalisation de « petits » modèles finis en géométrie projective

II.1.8). Cette description contient tous les éléments pour prouver que c’est un modèle de la géo-métrie projective respectant de plus la propriété de Desargues.

(* Type inductif pour les points *)

Inductive ind_Point : Set := A | B | C | ... | K | L | M. (* Type inductif pour les droites *)

Inductive ind_line : Set := ABCD | AEFG | AIJM | AHKL | BEHI | BGJL | BFKM | CELM | CFHJ | CGIK | DEJK | DGHM | DFIL.

(* Prédicat booléen pour la relation d’incidence *)

Définition Incid_bool (P:Point) (l:Line) : bool := match P with | A => match l with

| ABCD | AEFG | AIJM | AHKL => true | _ => false

end [...] end.

Definition Incid : Point -> Line -> Prop := fun P L => (Incid_bool P L = true).

Table II.1.8 – Application du patron au modèle fini pg(2, 3) en géométrie synthétique. Tous les modèles finis de plan pg(2, q) suivent exactement le même patron avec plus ou moins de points et de droites impliqués dans la spécification. Pour la génération des modèles de dimension 3, il n’est pas nécessaire d’énoncer la notion de plan en géométrie synthétique puisque les axiomes sont exprimés uniquement à partir de points et de droites (voir l’Annexe A).

2.4.2 Modèle exprimé à l’aide des rangs

Pour l’approche matroïdale de la géométrie, la génération d’un modèle contient uniquement des points. Cet ensemble de points est ensuite utilisé pour exprimer l’ensemble des plats com-posant le modèle fini : les plats composés d’un unique point, les plats spécifiant que toute paire de points distincts du modèle forme une droite, les plats représentant les droites et les plats définissant les plans (voir Table II.1.9). Pour formaliser les espaces finis, il est indispensable de considérer l’ajout des plats permettant de capturer l’espace tout entier.

2. Génération des modèles finis 81

(* Paramètre définissant tous les points du modèle *) Parameter A B C D E F G H I J K L M : Point.

(* Décidabilité sur les points du modèle *)

Parameter is_only_13_pts : forall P, {P=A}+{P=B}+{P=C}+[...]+{P=K}+{P=L}+{P=M}. (* Plats pour les points *)

Parameter rk_points : rk(A :: nil) = 1 /\ rk(B :: nil) = 1 /\ rk(C :: nil) = 1 /\ [...] /\ rk(M :: nil) = 1.

(* Plats pour les paires de points distincts *) Parameter rk_distinct_points :

rk(A :: B :: nil) = 2 /\ rk(A :: C :: nil) = 2 /\ rk(A :: D :: nil) = 2 /\ [...] /\ rk(L :: M :: nil) = 2.

(* Plats pour les droites *) Parameter rk_lines : rk (A :: B :: C :: D :: nil) = 2 /\ rk (A :: E :: F :: G :: nil) = 2 /\ rk (A :: I :: J :: M :: nil) = 2 /\ rk (A :: H :: K :: L :: nil) = 2 /\ rk (B :: E :: H :: I :: nil) = 2 /\ rk (B :: G :: J :: L :: nil) = 2 /\ rk (B :: F :: K :: M :: nil) = 2 /\ rk (D :: E :: J :: K :: nil) = 2 /\ rk (C :: E :: L :: M :: nil) = 2 /\ rk (C :: F :: H :: J :: nil) = 2 /\ rk (D :: G :: H :: M :: nil) = 2 /\ rk (D :: F :: I :: L :: nil) = 2 /\ rk (C :: G :: I :: K :: nil) = 2.

(* Plats pour les plans *) Parameter rk_planes : rk (A :: B :: E :: nil) = 3 /\ rk (A :: B :: F :: nil) = 3 /\ rk (A :: B :: G :: nil) = 3 /\ [...] /\ rk (K :: L :: M :: nil) = 3. end.

Table II.1.9 – Application du patron au modèle fini pg(2, 3) en utilisant les rangs.

Il est possible de concevoir les modèles de la géométrie synthétique dans un format plus proche de ceux issus de la théorie des matroïdes en décomposant le prédicat booléen d’incidence en deux ensembles. Le premier regroupant toutes les incidences d’un point à une droite, le second rassemblant tous les points non incidents à une droite. Cette décomposition se rapproche plus de la séparation en plats de l’approche matroïdale mais elle est moins efficace lors des preuves lorsqu’il s’agit de mettre en évidence une contradiction. En effet, il est nécessaire d’introduire toutes les hypothèses dans le contexte au lieu de simplement tester le retour du prédicat booléen. Une fois tous ces modèles exportés dans la syntaxe Gallina, nous étudions l’automatisation selon les deux formalisations équivalentes de la géométrie d’incidence projective. Pour cela, nous nous intéressons à la démonstration prouvant que ces géométries finies sont effectivement des mo-dèles de la géométrie d’incidence projective en vérifiant les différents axiomes et que la propriété de Desargues est respectée par les plans finis pg(n, q). Il est possible de vérifier d’autres théorèmes dans ce cadre telle que la propriété de Pappus, mais cette dernière n’apporterait rien de plus par rapport à Desargues. Rappelons qu’en dimension 3, la propriété de Desargues devient un théorème que l’on peut prouver avec les deux approches de la géométrie [Kod14,Kus90,MNS12]. Par conséquent tout espace fini de dimension 3 ou plus vérifie cette propriété.

82 II.1. Formalisation de « petits » modèles finis en géométrie projective

3 Vérification formelle des modèles et preuve de la propriété de

Desargues

Nous utilisons les modèles projectifs finis pour étudier d’une part l’automatisation de preuves de propriétés géométriques et d’autre part la gestion de la complexité dans des démonstrations dont la combinatoire est très élevée. Parallèlement à cette analyse, les deux approches de la géo-métrie d’incidence projective sont comparées principalement pour leur capacité et leur efficacité à prouver des propriétés mais aussi la facilité avec laquelle les procédés d’automatisation peuvent être mis en place et réutilisés dans les modèles de dimension et d’ordre supérieurs.

Nous démontrons, et ce n’est pas si simple de le faire en pratique, que les axiomes de la géométrie synthétique sont vérifiés pour les plans pg(2, 2), pg(2, 3), pg(2, 4), pg(2, 5), pg(2, 7) et les espaces pg(3, 2), pg(3, 3). De la même manière, nous montrons que les axiomes issus de la théorie des rangs sont respectés pour pg(2, 2), pg(2, 3). Nous détaillons à travers ces exemples quelques méthodes pour gérer la complexité lors de preuves de grande taille dans l’assistant de preuve Coq.

Gérer la complexité dans le cadre des assistants de preuve est quelque chose qui est bien étudiée lors de la formalisation des preuves mais qui n’est pas assez détaillée dans les publi-cations. En effet, la plupart des formalisations dans le domaine se concentre sur la vérification d’un résultat mathématique sans mettre en avant les performances en temps d’exécution et en mémoire. L’objectif principal est d’établir la preuve, si bien que la lisibilité, la segmentation de la preuve, les performances globales ou la facilité à formuler et prouver un résultat sont des facteurs moins considérés. De nombreux outils très efficaces sont intégrés aux assistants de preuve [BTT15,Chl13,GL02,TG15], pour faciliter le développement des preuves, améliorer les temps d’exécution et diminuer l’occupation mémoire. Néanmoins, il arrive des situations où, même si la démonstration est finement découpée et optimisée, dominer la complexité de la preuve reste un challenge et l’objectif principal est alors mis en défaut.

Ce chapitre permet d’observer certaines de ces situations limites où les facteurs tels que la quantité d’hypothèses, le choix des tactiques et le nombre de configurations à vérifier rendent le problème difficile à résoudre pour l’utilisateur. Ces trois facteurs peuvent être controlés afin de limiter le plus possible leur impact sur la complexité des preuves considérées. Nous identifions pour cela plusieurs critères à travers les différents exemples de modèles ; ces critères peuvent influencer drastiquement la complexité dans les preuves. L’optimisation simple mais pertinente de ces critères généraux permet d’obtenir efficacement des preuves dans un contexte hautement combinatoire. La mise en place de chacun de ces critères permettant d’améliorer l’automatisation des preuves est dans la plupart des cas réalisée à la main en suivant notre intuition.