• Aucun résultat trouvé

Inductive Theorem Provers

La section précédente regroupe tous les formalismes qui, à notre connaissance, présentent une similarité syntaxique évidente avec les schémas. Mais il y a une autre possibilité : traduire les schémas en logique du premier ordre (sans point fixe), ce qui permettrait d’utiliser les démonstrateurs existants. Évidemment nous ne pourrons pas ainsi capturer toute la logique des schémas puisque la logique du premier ordre est complète et celle des schémas ne l’est pas. Mais, de toute manière, même en définissant une procédure dédiée aux schémas, nous ne pourrons jamais capturer que partiellement le raisonnement sur les schémas, du fait de l’incomplétude de leur logique. Nous définissons deux traductions différentes.

10.3.1 Une première traduction en logique du premier ordre

Une première possibilité, la plus intuitive, consiste à traduire les itérations en quantifications bornées. Pour tout schémas, nous définissons la formule|s|1t.q. si|s|1est insatisfaisable, alorssl’est (évidemment nous n’avons pas l’implication réciproque car la satisfaisabilité des schémas serait alors décidable). Nous définissons d’abord |ms|1 par induction sur la structure du motif :

|pe1,...,ek|1def =p(e1, . . . , ek) |¬φ|1def =¬|φ|1 |φ1∧φ2|1def =|φ1|1∧ |φ2|1 |φ1∨φ2|1def =|φ1|1∨ |φ2|1 |^ i|δ φ|1def =∀i(δ⇒ |φ|1) |_ i|δ φ|1def =∃i(δ∧ |φ|1)

Puis|s|1est défini comme∃n1, . . . , nk(|ms|1∧cs∧Lin)oùn1, . . . , nksont les paramètres desetLindésigne une axiomatisation de l’arithmétique linéaire (une telle axiomatisation ne pose pas de problème en théorie mais ne semble pas raisonnable en pratique). Notons bien que |s|1 n’appartient pas à l’arithmétique linéaire à cause des propositions indexées qui deviennent des prédicats (non interprétés). Il est alors facile de montrer quesest satisfaisable ssiZ(avec ses opérations habituelles) est un modèle de|s|1. Nous avons alors bien le résultat que si |s|1 est insatisfaisable alors s l’est. En revanche, il se peut quessoit insatisfaisable mais que|s|1ait un modèle (nécessairement non standard).

Note. Il est possible et justifié de considérer que transformer les itérations en quantifications fait perdre lastructure originale du problème, ce qui ôte de l’intérêt à cette traduction.

Certains auteurs ont défini des calculs combinant une procédure de preuve générique pour la logique du premier ordre [BGW94] avec des théories particulières telles que l’arithmétique linéaire [AKW09]. Il est clair que nous pouvons utiliser les procédures de preuve ainsi définies pour réfuter les formules obtenues par traduction (au lieu de considérer une axiomatisation de l’arithmétique). Cependant la formule obtenue par traduction ne rentre pas dans les classes pour lesquelles la terminaison, ou même la complétude, de ces procédures de preuve peut être assurée. Le pouvoir d’expression de ces théories semble beaucoup trop faible pour exprimer les schémas (même avec une autre traduction) : le critère de “sufficient completeness” donné dans [BGW94] et utilisé par [AKW09] est particulièrement restrictif; il empêche notamment d’utiliser des variables quantifiées existentiellement sauf s’il est possible de prouver que celles-ci sont toujours égales à un terme de la théorie. Ce n’est pas le cas ici, car la conditionn∈N, où nest un paramètre entier, est une donnée du problème, et non une conséquence des formules considérées. Cependant cette piste est à étudier plus en détail car la combinaison de théories est un sujet de recherche particulièrement actif (voir, en particulier : [KV07, BLdM09]).

10.3. INDUCTIVE THEOREM PROVERS 131

10.3.2 Les démonstrateurs inductifs

Il se peut que s soit insatisfaisable mais que |s|1 ait un modèle (nécessairement non standard). Idéale-ment, nous voudrions pouvoir restreindre le raisonnement au modèle standard. ÉvidemIdéale-ment, nous savons que c’est impossible, cependant nous pouvons éviter de considérer tous les modèles possibles. Typique-ment, nous pouvons ne considérer que les interprétations dont le domaine est restreint au domaine de Herbrand, c.-à-d. à l’ensemble des termes clos. La notion de conséquence considérée alors est appelée conséquence inductive. Notons que, en général, la conséquence inductive n’est même pas semi-décidable : non seulement, comme pour la conséquence déductive, il n’y a pas complétude pour la satisfaisabilité, mais en plus, il n’y a pas complétude réfutationnelle. Les démonstrateurs permettant de raisonner par induction sont appelés desdémonstrateurs inductifs.

Ces derniers sont, pour la plupart, conçus pour prouver des conjectures de la forme :

∀x.φ oùφest une formulesans quantificateurs (10.3) De plus les seuls atomes généralement acceptés dans φ sont des égalités. Tous ces démonstrateurs sont conçus pour raisonner avec des fonctions définies par induction.

La démonstration de conjectures inductives contenant des quantifications existentielles est connu pour être un problème difficile. Notons que, contrairement à la plupart des démonstrateurs au premier ordre, ces systèmes cherchent bien àprouver la conjecture, et non pas à laréfuter. Par conséquent, pour utiliser ces techniques, nous considérons ¬|s|1 au lieu de |s|1. Ainsi la traduction est bien préfixée par des quantificateurs universels, ce qui est en accord avec 10.3. Cependant, il suffit qu’un schéma scontienne une seule conjonction itérée pour que|s|1contienne une quantification existentielle, ce qui exclut beaucoup de schémas. À notre connaissance, seul [HW09] identifie une classe décidable incluant des quantificateurs existentiels. Plus précisément il est prouvé la décidabilité du problème :

N|=ind∀x∃y1,. . ., yn(A1∧. . . ∧Ak)

oùA1, . . . ,Ak sont des atomes etNest un ensemble de clauses de Horn finiment saturable par résolution (sans avoir le droit de considérer d’autre notion de subsomption que l’égalité à un renommage près). Il est facile de voir que, hormis pour des schémas triviaux, la traduction ne peut pas rentrer dans ce cadre extrêmement restrictif : quelle que soit la façon dont la traduction est modifiée, il est quasi impossible d’obtenir simultanément un ensemble de clauses qui soit de Horn et qui ait la propriété de saturation évoquée. Même l’exemple récurrentp0∧(Vni=01pi⇒pi+1)∧ ¬pn est difficile à exprimer sans des transformations conséquentes.

10.3.3 Une deuxième traduction

Nous donnons donc une deuxième traduction |-|2, plus en adéquation avec ces considérations. L’idée informelle est que les schémas vont être traduits entermes dont le type est la sorte des booléens et dont les variables libres sont des entiers (correspondant aux paramètres du schéma). Ces termes sont composés de symboles de fonctions possiblement définis récursivement. Le schéma est alors insatisfaisable ssi le terme obtenu est égal à pour tout valeur des variables libres (⊥ est ici une constante). Ainsi, si ts

désigne le terme obtenu à partir d’un schéma s, alorss est insatisfaisable ssi ∀n1, . . . , nk(ts = ⊥) est valide, où n1, . . . , nk désignent les paramètres du schéma. Cette formule a bien la forme 10.3, ses seuls atomes sont des égalités ettsest composé de symboles de fonctions définies récursivement. Nous donnons maintenant la définition de cette traduction.

Note. Comme nous passons du niveau des formules à celui des termes, nous ne pouvons pas traduire des itérations dont le domaine est une formule quelconque de l’arithmétique linéaire. Par conséquent nous nous restreignons aux schémas syntaxiquement et linéairement encadrés. De plus, la contrainte du schéma est laissée telle quelle par la traduction donc nous imposons aussi que cette contrainte ne contienne que des quantificateurs universels. Ceci n’est pas restrictif puisque nous pouvons toujours appliquer l’élimination des quantificateurs sur la contrainte.

Comme pour |-|1, nous définissons d’abord |-|2 par induction sur la structure du motif. |-|2 doit retourner à la fois la traduction du schéma d’origine et les équations définissant (récursivement) les symboles composant cette traduction. Ainsi |-|2 prend en entrée la paire d’un motif et d’un ensembleE

d’équations, initialement égal à l’ensemble vide : |pe1,...,ek|def = (p(e1, . . . , ek),∅) |¬φ|def = (˜¬φ,E′)où(φ,E′) =|φ|2 |φ1∧φ2|def = (φ1˜φ 2,E1∧ E2)où(φ′ 1,E1) =|φ1|2 et(φ′ 2,E2) =|φ2|2 |φ1∨φ2|def = (φ1∨˜φ2,E1∧ E2)où(φ1,E1) =|φ1|2 et(φ2,E2) =|φ2|2 | f ^ i=e φ|def = g(f),E ( g(e−1) =⊤ g(i+ 1) =φ˜g(i) )! où(φ′,E′) =|φ|2 | f ^ i=e φ|def = g(f),E ( g(e−1) =⊥ g(i+ 1) =φ∨˜g(i) )! où(φ′,E′) =|φ|2

Notons que les symboles¬˜ ,˜ et ˜ sont des symboles de fonctions, et non pas des connecteurs logiques. De mêmepest un symbole de fonction et pas un symbole de prédicat. Ensuite,|s|2 est défini comme :

|s|2def

=∀n1, . . . , nk(φ=⊥ ∧ E ∧Lin∧P rop∧cs)

où :

n1, . . . , nk sont les paramètres des, (φ,E) =|ms|2,

Lindésigne une axiomatisation de l’arithmétique linéaire,

etP ropdésigne une axiomatisation de¬,∨et ∧en tant que symboles de fonction. Alors un schémasest insatisfaisable ssi|s|2 est valide.

Note. Contrairement à la traduction précédente, celle-ci préserve lastructure originale du problème.

10.3.4 Survol des différents démonstrateurs inductifs

Les démonstrateurs automatiques utilisent de nombreuses techniques différentes : “induction explicite” [Bun01], “induction sans induction” (ou “preuve par consistance”) [Com01], “induction implicite”. Nous analysons brièvement chacune d’entre elles.

Induction explicite

Tout d’abord les techniques d’induction explicite [Bun01, Wir99], dont la plupart sont aujourd’hui sub-sumées par le “rippling” [BSvH+93], sont surtout utilisées dans le contexte d’assistants de preuve : elles sont principalement basées sur des heuristiques destinées àaméliorer l’automatisation mais pas à obtenir une automatisation complète. En particulier, leur but n’est pas d’identifier des classes décidables mais plutôt de faciliter la tâche de l’utilisateur. Ces travaux sont donc très différents des nôtres. Cependant, comme il a été dit pour les démonstrateurs d’ordre supérieur, il est peu probable que nous puissions identifier des classes décidables dans le contexte, p.ex., des schémas au premier ordre. Ainsi l’extension de la portée des schémas passera probablement par ce type d’outil. Notons que, en tout cas, le travail effectué dans cette thèse va permettre de mieux étudier l’application de ces heuristiques aux schémas.

Nous avons tout de même mené des expérimentations avec ACL2 [BM79], connu pour son efficacité dans ce domaine. La théorie d’ACL2 est une théorie du premier ordre dont le seul prédicat est l’égalité et dont les termes sont un sous-ensemble strict de Common LISP (en particulier les fonctions d’ordre supérieur ne sont pas autorisées). Vues ces restrictions, nous ne pouvons pas appliquer la deuxième tra-duction telle quelle : les propositions indexées deviennent des symboles de fonctions non définis (c.-à-d. que nous devons, en fait, quantifieruniversellementsur ces symboles), il faut donc les passer en paramètre à la fonction représentant le schéma. Mais comme les fonctions d’ordre supérieur sont interdites, ceci est impossible. La solution consiste à représenter les propositions indexées par des listes (listes de listes si la proposition est d’arité 2, listes de listes de listes si elle est d’arité 3, etc.). Considérons p.ex. le schéma

10.3. INDUCTIVE THEOREM PROVERS 133 s=p0∧(Vni=01pi⇒pi+1)∧ ¬pn. On peut définir ce schéma dans ACL2 :

(defunsch (n p)

(if ((integerp n)∧(n ≥0)∧((lenp)≥(n+2))) (if (n <= 0)

(((nthn p)⇒(nth(n+1)p))∧(sch1 (n-1)p))) nil))

(defthmsch-unsat (((nth1 p)∧(sch n p)∧(¬(nth(n+1)p))) =⊥))

oùnil,len, nthdésignent respectivement la liste vide, la fonction calculant la longueur d’une liste et la fonction prenant un nombre n et une liste et retournant le nth élément de la liste; integerpn permet juste d’assurer que n est un entier. ACL2 a réussi à démontrer la conjecture sch-unsat. Toutefois, il s’agit du seul exemple que ACL2 a réussi à prouver dans un temps raisonnable parmi tous ceux prouvés par RegStab(p.ex. l’additionneur, voir chapitre 7). Pour tous les autres, ACL2 n’a pas terminé, malgré un délai bien supérieur à celui accordé à RegStab. Peut-être aurait-il pu terminer si plus de temps lui avait été accordé. Par conséquent nous ne pouvons pas dire qu’ACL2 soit capable de les prouver mais nous ne pouvons pas dire non plus qu’il en soit incapable. Peut-être un expert d’ACL2 aurait su exprimer la conjecture de façon à ce que le système la démontre. Ceci illustre bien les problèmes que posent la semi-décidabilité. A contrario, RegStabtermine tout le temps. Ainsi, bien que théoriquement possible, cette technique ne semble guère utilisable en pratique. De plus, nous pensons que ces expérimentations justifient que nous valorisions à ce point l’obtention de classes décidables.

Induction sans induction

En induction sans induction, nous nous intéressons uniquement à la validité dans le plus petit modèle de HerbrandM(seuls des ensembles de clauses de Horn sont considérés, assurant ainsi l’existence de ce plus petit modèle), ce qui équivaut à la validité inductive si nous nous restreignons aux clausespositives (voir [Com01]). Avec cette méthode, nous ajoutons à la conjectureφune axiomatisation AdeM. SiA caractérise effectivement M, alors φ est valide dansM ssiφ∪ A est satisfaisable. Des démonstrateurs classiques sont alors utilisés pour saturer l’ensemble de clauses : s’il y a terminaison et que l’ensemble obtenu est cohérent, alors la conjecture est vraie dans M. Cette technique a pour avantage la possibilité d’utiliser des démonstrateurs existants, de plus il y a terminaison si la conjecture est fausse.

Contrairement aux méthodes d’induction explicite, l’induction sans induction a pour but l’automatisation complète. En revanche, une fois encore, il est difficile d’obtenir des classes décidables. Une façon simple d’assurer cela est queφetAappartiennent à une classe décidable connue de la logique du premier ordre. Cependant, entre la traduction des schémas, la mise sous forme clausale et la restriction à une classe décidable de la logique du premier ordre, cette piste ne semble pas raisonnable en pratique, même si elle mériterait probablement de plus longues investigations. Une fois encore, il nous semble plus facile d’étudier l’éventuel intérêt de cette méthode dans le cadre des schémasmaintenant que nous avons définies et examiné des méthodes directes. En particulier, il est peut-être possible de considérer la détection de cycle comme une forme de détection de redondance permettant d’assurer une saturation finie.

Enfin les méthodes par induction implicite (typiquement : cover set [Zha88], test set [BKR92], term rewriting induction [Red90]) ont des propriétés très similaires à l’induction sans induction, du moins pour ce qui nous concerne : automatisation complète, mais absence de classe décidable.

Classes décidables

Parmi les méthodes d’induction implicite, il existe tout de même quelques résultats de décidabilité [KS00, GK01, FK06] (implémentés, semble-t-il, dans RRL, qui n’est plus disponible sur le web). Les formules de ces classes ont pour forme :

∀x1,. . .xk(f(x1,. . ., xk) =t)

oùtest un terme etf est une fonction définie récursivement, ce qui est bien conforme à la traduction|-|2 (les axiomatisations de l’arithmétique linéaire et des connecteurs logiques sont définis par ailleurs et ne posent pas de problème par rapport à la décidabilité). La restriction majeure qui autorise la décidabilité

est le fait que tous les symboles apparaissant dans la définition d’une fonction récursive doivent être des symbolesinterprétés d’une théorie décidable. Par exemple nous pouvons définir la fonction :

double(0)def= 0

double(s(x))def

=s(s(double(x)))

où0etssont interprétés dans l’arithmétique de Presburger. En revanche, la fonctionf suivante ne rentre pas dans cette classe :

f(0, n)def=⊤ f(i+ 1, n)def

= (˜¬p(i)˜∨p(i+ 1))˜∧f(i, n)

car pn’est pas un symbole interprété. Comme pour ACL2 nous résolvons le problème en représentant les propositions indexées par des listes.

Ceci ne résout le problème que pour les propositions indexées. En effet, dans notre traduction|-|2, toute itération est traduite en une fonction. Par conséquent la traduction du schéma fait appel à autant de fonctions qu’il y a d’itérations. En fait,f peut contenir des symboles non interprétés mais à condition qu’ils soient définis, ce qui est bien le cas des fonctions issues de la traduction d’itérations (mais pas de celles issues des propositions indexées; il faut donc bien conserver la traduction des propositions indexées sous forme de listes). Dans ce cas, si la définition de f utilise les symboles définis f1,. . ., fn, alors la conjecture doit avoir la forme suivante :

∀x1, . . . , xn,kn(f(x1, . . . , xk) =t

∧f1(x1,1, . . . , x1,k1) =t1∧. . . ∧fn(xn,1, . . . , xn,kn) =tn)

Autrement dit, nous sommes obligés de donner un lemme intermédiaire pour chaque fonction utilisée par f, c.-à-d., dans notre contexte, pour chaque itération. Nous sommes donc obligés de donner des lemmes intermédiaires correspondant à la valeur de chaque itération. Ceci pose non seulement un problème vis-à-vis de l’automatisation car cela signifie que nous devons trouver cette valeur, mais en plusces itérations n’ont pas nécessairement une valeur constante : une itération peut être vraie dans une certaine interpré-tation mais fausse dans une autre. Seul le schéma entier a pour valeurfalsequel que soit l’interprétation (s’il est insatisfaisable).

Dans le cas des schémas réguliers, nous pouvons dans certains cas, nous ramener à un schéma ne contenant qu’une itération. Auquel cas la traduction ne contient qu’une fonction et appartient bien à la classe décidable. En revanche, pour les schémas réguliers en général, et a fortiori pour les schémas réguliers imbriqués, la traduction n’appartient pas à la classe. Il nous semble impossible de contourner cette limitation. En revanche il pourrait être intéressant d’essayer de traduire nos résultats de décidabilité dans le contexte de ces travaux, ce qui pourrait permettre de caractériser de nouvelles classes décidables pour la validité inductive en logique du premier ordre.