• Aucun résultat trouvé

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

2.3 Mémorisation des déductions

En parallèle de l’étape de saturation, le solveur sauvegarde le cheminement des déductions afin de pouvoir reconstruire ultérieurement une preuve. La production d’une preuve contenant l’intégralité des déductions effectuées lors de la saturation n’est pas pertinente puisqu’une ma-jorité d’entre elles ne sont pas utiles pour établir le ou les résultats recherchés. De plus, nous ne connaissons pas à l’avance les déductions qui sont nécessaires pour conclure la preuve. Notons que ce cheminement n’est pas unique, il dépend de l’ordre dans lequel les règles sont appliquées sur les différentes parties et de l’ordre dans lequel les parties sont sélectionnées.

Dans ce but, un graphe orienté acyclique2, appelé graphe de déductions (GD), est construit. Chaque noeud de ce graphe représente une partie à laquelle on associe ses rangs courants RkM in et RkM ax ainsi que la règle qui a été appliquée pour construire ce noeud. Au départ, nous fabriquons un noeud pour chacune des parties avec ses rangs initialisés grâce à l’application de la règle (RS0). Lorsqu’une des règles fait évoluer l’un des rangs de l’ensemble des parties,

2. En théorie, ce graphe est un hypergraphe où les arêtes sont orientées et étiquetées par les règles de réécritures appliquées.

2. Implantation du prouveur 113

un nouveau noeud est rajouté au graphe des déductions. Il contient la partie modifiée et ses nouveaux rangs mis à jour en appliquant l’une des règles de la Table III.1.2. Pour rattacher ce noeud au graphe des déductions, nous utilisons le contexte de la règle que l’on vient d’appliquer. La partie est ainsi liée par des arcs indiquant la parenté à toutes les parties qui ont permis d’établir la modification. De cette manière, il est possible de retracer l’évolution de l’intervalle entre le rang minimum et maximum au sein d’une même partie en parcourant le noeud parent possédant la même partie.

Pour illustrer la construction de ce graphe de déductions (GD), nous présentons dans la Figure III.1.3, un exemple d’application de la règle (RS5). Pour des questions de lisibilité, le numéro de la règle appliquée sera positionné systématiquement en dessous du noeud. Ce schéma explique que, si l’intersection d’un plan et d’un point engendre un point alors l’union de ces deux derniers génèrent au maximum un plan (le rkM ax de l’union est décrémenté d’une unité). Toutes les déductions suivantes opérées par le système prendront en considération ce résultat si nécessaire. L’information contenue dans le noeud X ∪ Y représentant soit un plan, soit un espace est désormais inutile. Une même partie peut apparaître au maximum quatre fois avant de posséder son rang exact final. En effet, la convergence du rang minimum vers le rang maximum est réalisée dans le pire des cas en 3 étapes. Il est alors possible d’estimer l’espace mémoire maximum utilisé pour représenter l’intégralité du graphe de déductions.

Figure III.1.3 – Représentation d’une partie du GD avec l’application de la règle RS5. Afin d’illustrer le fonctionnement complet de la construction du graphe de déductions, nous présentons dans la Table III.1.3 et la Figure III.1.4 un exemple d’énoncé géométrique simplifié que l’on souhaite saturer. Considérons un plan ABD où l’on construit sur la droite AD un point distinct C. Dans ce cas, il est envisageable de déduire que l’espace engendré par les points ABC est un plan.

114 III.1. Pipeline du prouveur de configuration géométrique d’incidence

(* Exemple de lemme à 4 points que l’on souhaite saturer *) Lemma example : forall A B C D : Point,

rk(A, B, D) = 3 -> rk(A, C, D) = 2 -> rk(A, C) = 2 -> rk(C, D) = 2 -> rk(A, B, C) = 3.

Table III.1.3 – Exemple d’énoncé géométrique à saturer.

A

D

B C

Figure III.1.4 – Illustration de la configuration géométrique de la TableIII.1.3.

Avant de saturer cet énoncé géométrique, nous commençons par créer le graphe de déduc-tions représentant la configuration géométrique initiale (FigureIII.1.5). Étant donné que l’énoncé possède 4 points, la couche initiale du graphe de déductions comporte 24− 1 noeuds où chaque noeud représente une des parties avec son rang maximum à gauche et minimum à droite.

Figure III.1.5 – GD initialisé associé à la configuration géométrique de la TableIII.1.3. Puis, nous réalisons une première étape de saturation sur l’ensemble des parties en appli-quant chacune des règles dans l’ordre fixe suivant : RS1 RS3 RS2 RS4 RS5 RS7 RS6 RS8. Nous discutons l’intêret de choisir un ordre précis pour les règles dans la partie sur l’optimisation de l’algorithme. Nous obtenons un graphe de déductions partiel (FigureIII.1.6) représentant l’en-semble des modifications effectuées à la fin du premier passage illustré par les noeuds en orange. La numérotation en rouge juxtaposée indique l’ordre dans lequel les déductions ont été trouvées.

2. Implantation du prouveur 115

Figure III.1.6 – GD partiellement saturé associé à la configuration géométrique de la Table

III.1.3.

Finalement, l’algorithme relance un deuxième parcours pour compléter la saturation. Le graphe de déductions (GD) résultant est complété par les noeuds de coloration rouge dans la FigureIII.1.7et permet d’obtenir la conclusion recherchée à savoir que la partie ABC représente strictement un plan. Nous laissons ici volontairement l’algorithme terminer la saturation en trouvant une déduction supplémentaire résumée dans le noeud 11 sachant que le résultat a déjà été trouvé précédemment. Dans cet exemple, le rang minimum et maximum de toutes les parties après saturation sont égaux. Ce n’est pas toujours le cas, cela dépend fortement des contraintes initiales de notre configuration géométrique. En effet, déterminer le rang exact d’une partie, dépend de manière générale de la constriction du problème géométrique. Si le problème est sous-contraint, le rang exact de chaque partie n’est pas déductible. Cependant si le problème est bien-contraint ou sur-contraint, cela ne garantit pas que chaque rang exact peut être évalué. Une partie peut ainsi prendre plusieurs rangs tout en satisfaisant l’ensemble des hypothèses de l’énoncé géométrique, cette variation dans le rang d’un ensemble de point permet de considérer tous les cas dégénérés.

116 III.1. Pipeline du prouveur de configuration géométrique d’incidence

Figure III.1.7 – GD complètement saturé associé à la configuration géométrique de la Table

III.1.3.

Nous modifions l’Algorithme III.1.4de saturation en conséquence pour intégrer la construc-tion en parallèle du graphe de déducconstruc-tions (GD).

Algorithme III.1.4 : Étape de saturation et construction du GD. Entrée(s) : GD initialisé

Sortie(s) : GD mis à jour

1 tant que modification au dernier passage faire

2 pour chaque partie X de E faire

3 pour chaque partie Y de E tel que X 6= Y faire

4 pour chaque règle de réécriture faire

5 si la règle est activable faire

6 Mise à jour du rang minimum ou maximum de la partie concernée

7 en construisant un noeud dans le GD mémorisant l’application de

8 la règle et lien avec des pointeurs vers les parties parentes

9 fin si

10 fin pour chaque

11 fin pour chaque

12 fin pour chaque

13 fin tant que