• Aucun résultat trouvé

3.7 Preuves automatiques de théorèmes classiques en géométrie projective

3.8.3 Outils et intégration du prouveur au système Coq

Nos travaux confirment que la géométrie projective est un bon terrain d’expérimentation pour faire de la preuve automatique. L’approche combinatoire basée sur les rangs permet facilement d’automatiser les démonstrations de propriétés mais cela se fait au prix d’une lisibilité moindre. De plus, elle nécessite pour l’instant l’utilisation d’un prouveur externe, qui produit une trace de la preuve à faire valider par Coq, et qui ne peut donc pas être utilisé de manière interactive.

Allers-retours entre les 2 formalismes de description de la géométrie projective Les prochaines étapes de développement consistent à proposer des outils pour travailler indifférement et de manière la plus transparente possible dans les deux descriptions. Cela né-cessiterait, d’une part, de pouvoir traduire automatiquement un énoncé d’une description vers l’autre et, d’autre part, d’intégrer complètement notre prouveur à Coq pour en faire une tactique utilisable au sein du système. Avec ces outils à disposition, l’utilisateur énoncerait la propriété qu’il cherche à démontrer dans la description synthétique, puis le système convertirait l’énoncé sous forme de rangs et tenterait de le prouver automatiquement. En cas de succès, le théorème serait alors démontré et le travail terminé. Dans le cas contraire, l’utilisateur reprendrait la main pour décomposer la preuve en sous-cas, ou bien pour créer de nouveaux points. A chaque étape de ce travail interactif, le prouveur automatique pourrait être appelé afin de terminer la preuve. En cas d’ajout de points par l’utilisateur, il faudrait avoir conservé la saturation partielle déjà effectuée et simplement la compléter avec les nouveaux sous-ensembles mis en jeu.

Cette approche permettrait de combiner efficacement automatisation pour les parties de preuve à dominante combinatoire et raisonnement humain pour la construction des points par exemple.

Storytelling sur les preuves

Le prouveur produit des scripts de preuve Coq longs et techniques. Ces scripts n’offrent pas le niveau d’abstraction attendu par un mathématicien qui souhaiterait saisir l’essence même de la démonstration et en observer les principales étapes. La seule chose facilement observable est l’existence ou non de la preuve (c’est-à-dire l’acceptation ou non du script de preuve par Coq). Or, un bon moyen de convaincre un mathématicien sceptique que la preuve est bien correcte serait de pouvoir lui raconter la preuve en mettant en avant la structure du raisonnement et les étapes principales tout en laissant de côté les aspects les plus techniques. En expliquant, avec un haut niveau d’abstraction, la preuve à l’utilisateur, on contribue à le convaincre un peu plus que l’énoncé prouvé est bien celui qu’il recherchait et que la preuve obtenue est bien correcte.

Chapitre 4

Calcul réel exact pour la géométrie

La plupart des algorithmes géométriques sont conçus en s’appuyant sur une arithmétique réelle exacte [KMP+04]. L’utilisation d’une arithmétique à virgule flottante à la place d’une arithmétique exacte peut rendre incorrecte l’implantation effective de tels algorithmes. Calculer avec des nombres flottants permet certes de gagner en efficacité, mais au prix d’approximations dont les conséquences peuvent parfois être catastrophiques, comme lors de l’échec de la mission de l’anti-missile Patriot [BOB92]. Dans cet exemple précis, l’algorithme utilisait un incrément de temps de 0.1 s. Cette constante décimale est non-représentable de manière exacte en binaire. Cela a causé une (petite) erreur initiale de 10−7, qui s’est accumulée au fil des calculs et a conduit à l’échec de l’interception du missile venant en face.

En géométrie, comme dans d’autres domaines, la plupart des calculs numériques s’effectuent néanmoins avec des nombres à virgule flottante. Même si ces nombres flottants sont seulement des approximations des nombres réels, la norme IEEE-754 [IEE19] décrit un cadre strict dans lequel on peut prédire et analyser rigoureusement le comportement de nombreux algorithmes numériques [JR17]. En revanche, les nombres à virgule flottante ont une précision limitée et ils ne respectent pas certaines propriétés pourtant élémentaires de l’arithmétique des réels comme l’associativité de l’addition. Des bibliothèques de calcul multiprécision en virgule flottante avec arrondi correct comme MPFR [Zim10] permettent de travailler à une précision arbitraire. Ce-pendant ces bibliothèques ne permettent pas de garantir la précision des nombres durant toute l’exécution d’un programme.

La question de la représentation des réels sur ordinateur est étudiée depuis de nombreuses décennies, avec notamment l’introduction de l’arithmétique des intervalles [Moo62] dans les an-nées 1960. Plusieurs systèmes disposant de capacités de calcul réel exact co-existent actuellement, parmi lesquels on peut citer IRRAM [Mül00], AERN [DFKT14], Core 2 [YYD+10].

Dans notre contexte, celui des preuves formelles et plus spécifiquement de l’écosystème Coq, il existe plusieurs approches distinctes pour décrire, calculer et raisonner avec les nombres réels. La bibliothèque standard de Coq, développée principalement par Micaela Mayero [May01], pro-pose une description axiomatique des réels comme un corps ordonné, archimédien et complet. Cette bibliothèque utilise de plus comme axiome une version spécifique du principe d’omni-science qui exprime que l’ordre sur les réels est total. Cet axiome, par nature classique, permet notamment de décider de l’égalité à 0, ce que nous sommes incapables de faire sur les réels dans un contexte purement intuitionniste. Une autre bibliothèque, C-CoRN (Constructive Coq Repo-sitory at Nijmegen), développée initialement par Milad Niqui [GN00] propose, quant à elle, une axiomatisation des nombres réels intuitionnistes. Elle utilise comme notion de base l’apartness qui peut être vue comme une forme constructive de l’inégalité, plutôt que la relation d’égalité. Par son caractère constructif, il est possible, en réalisant les axiomes intuitionnistes, d’obtenir des algorithmes de calcul sur les réels [KO09, KS11b]. Une synthèse de la plupart des formalisations

des réels disponibles dans les assistants de preuve contemporains est présentée dans [BLM16]. Dans notre contexte, influencés par la géométrie, nous choisissons de reprendre un point de vue calculatoire un peu oublié pour décrire formellement les nombres réels et le continu : la droite d’Harthong-Reeb. Intuitivement, il s’agit de faire des calculs uniquement sur des entiers (en zoomant aussi fortement que nécessaire pour n’effectuer les calculs intermédiaires qu’avec des entiers, et en normalisant éventuellement à la fin du calcul pour obtenir le résultat réel recherché).

La construction de la droite d’Harthong-Reeb a pour fondation une arithmétique non-standard des entiers qui n’était malheureusement pas explicitement construite par ses inven-teurs. En partant d’une suite naïve d’entiers (1,2,3 . . . ), Reeb affirme qu’il existe un entier ω plus grand que tous les entiers naïfs. En s’appuyant sur le théorème de compacité de la théorie des modèles [HR04], l’existence de ce grand entier ω suffit pour déduire qu’il existe un modèle non-standard de l’arithmétique entière et que ce modèle peut être utilisé pour construire la droite d’Harthong-Reeb.

En géométrie discrète, ce modèle est à l’origine d’importants développements sur la droite analytique discrète [Rev91]. Nos travaux ont permis de décrire formellement ce modèle en Coq et de nous assurer que la droite d’Harthong-Reeb vérifie bien tous les axiomes de Bridges [Bri99] et est donc bien un modèle des nombres réels constructifs. Pour cela, en première approche, nous montrons qu’en fondant la description de la droite d’Harthong-Reeb sur un modèle axiomatique des entiers non-standards, on obtient une théorie qui vérifie bien tous les axiomes de Bridges, y compris la propriété de la borne supérieure. Dans un second temps, nous construisons un modèle de ces entiers non-standards basés sur les entiers de Laugwitz-Schmieden (qui sont en fait des suites à valeurs entières) et nous établissons les propriétés de ce modèle. La plupart des axiomes de Bridges sont vérifiés, mais certains axiomes mettant en jeu la relation d’ordre ou bien la propriété de la borne supérieure ne sont pas vérifiés tels quels. Nos collègues mathématiciens Agathe Chollet et Guy Wallet ont proposé une variante de ces axiomes que nous décrivons formellement en Coq. Nous étudions comment prouver que ces axiomes sont bien vérifiés par la description constructive de la droite d’Harthong-Reeb.

Nous définissons ensuite en Coq le procédé d’arithmétisation d’Euler permettant de discréti-ser des fonctions continues et d’en calculer des approximations numériques à différentes échelles. Ces définitions sont extraites automatiquement de cette description formelle en Coq vers du code certifié (un programme en OCaml), permettant ainsi de tracer les approximations à différents niveaux de précision sur une grille discrète.

Enfin, nous reprenons les travaux de Valérie Ménissier-Morain sur la représentation des nombres réels par les nombres B-approximables [MM94, MM05], qui ont des caractéristiques assez proches des Ω-entiers utilisés pour construire la droite d’Harthong-Reeb. Nous complétons la description formelle en Coq, initialement développée par Jérôme Créci [Cré02], des nombres B-approximables et de leurs propriétés en Coq. L’objectif, à terme, est de relier formellement entre elles ces deux représentations des nombres réels.

Formaliser en Coq une théorie comme celle de la droite d’Harthong-Reeb est non seulement un challenge pour le système d’aide à la preuve, mais aussi un excellent moyen de préciser toutes les étapes potentiellement ambiguës de la preuve. Ici, dans les preuves manuscrites, un entier x pouvait appartenir soit à N, soit à Z, soit à l’ensemble des suites à valeurs entières, ou bien même à R. La description formelle de la théorie nous a forcé à lever ces ambiguités et à éventuellement modifier la rédaction de la démonstration pour qu’elle soit correcte. De même, la formalisation nous a permis d’identifier correctement les parties de démonstration indépendantes de la représentation des entiers non-standards choisie et de préciser certaines étapes de raisonnement notamment dans la preuve de la propriété de la borne supérieure.

pour-suivent dans le cadre d’une collaboration avec des chercheurs de l’équipe IMAGeS de l’Univer-sité de Strasbourg (Marie-Andrée Da Col et Loïc Mazo) et de l’Univerl’Univer-sité de Poitiers (Laurent Fuchs et Gaëlle Largeteau-Skapin). Les principaux résultats sont présentés dans l’article suivant [MCF14].

4.1 Un système d’axiomes pour l’arithmétique non standard

L’idée centrale de la droite d’Harthong-Reeb est d’introduire un mécanisme de change-ment d’échelle non-trivial sur l’ensemble des entiers afin de modéliser sous une forme discrète le continu. Pour cela, nous devons d’abord construire une arithmétique non-standard. Dans cette section, nous formalisons dans Coq une telle arithmétique non-standard, sur laquelle nous construirons ensuite la droite d’Harthong-Reeb.