• Aucun résultat trouvé

Mise sous forme n -clausale

4.2 Des schémas vers les n -clauses

4.2.4 Mise sous forme n -clausale

i=a φ b i=0 (i≥a∧φ)

Puis nous procédons comme dans la sous-section 4.2.2 pour coder l’inégalitéi≥a. Cette transformation est aussi valable pour les conjonctions itérées et nous permet d’étendre le codage défini par la proposition 61 au cas où la borne inférieure est supérieure à 0.

4.2.4 Mise sous forme n-clausale

Nous avons présenté dans les sections précédentes la traduction d’un schéma en une formule du premier ordre contenant des constantes de type entier. Une fois que tous les schémas sont traduits, nous mettons les formules obtenues sous forme clausale en utilisant les algorithmes usuels (voir [64, 69]), ensuite nous remplaçons le paramètre n par une variable x en introduisant une contrainte n x. Nous obtenons ainsi un ensemble de n-clauses sat-équivalent. Nous allons maintenant appliquer cet algorithme sur un exemple.

Exemple 62 Soit la formule : p0∧(

n

i=0

pi ⇒pi+2) ∧¬pn

Nous allons transformer cette formule en un ensemble de n-clauses.

1. Nous transformons dans un premier temps les propositions indexées en pré-dicat ordinaire, la formule devient alors :

p(0)∧(

n

i=0

p(i)�V ⇒p(succ(succ(i))) �V) ∧¬p(n)�V

2. Nous transformons la conjonction itérée en introduisant un prédicatψ défini par :

ψ(succ(x))�V⇔(p(x)⇒p(succ2(x)))∨ψ(x)�V

et la formule de départ devient :

p(0)�V∧ψ(n+ 1)�V∧p(n)��V

3. Nous éliminons les propositions indexées de profondeur strictement supé-rieure à 2, ce qui correspond dans la formule à p(succ2(x)). Pour cela on introduit un prédicat p1 défini par la formule F :p1(x) �p(succ(x)) et on remplace le terme p(succ2(x))par p1(succ(x)).

4. Nous procédons à la clausification de toutes les formules introduites à sa-voir la formule F et l’ensemble des axioms précédemment introduits. Nous réalisons l’abstraction du paramètre en introduisant les contraintes : p(n)��V est remplacé par la n-clause [p(x)��V|n �x]

ψ(succ(n))est remplacé par la n-clause (succ(x))�V|n�x]

Proposition 63 Si Sc est un schéma et que S est l’ensemble de n-clauses obte-nues en traduisant le schéma Sc alors Sc et S sont sat-équivalents.

Preuve. Découle des propositions 59, 60 et 61, par induction structurelle sur la

Formules du 1

er

ordre avec des

termes de type mot

Dans ce chapitre, nous généralisons les notions introduites dans le chapitre précédent. Les n-clauses, définies dans le chapitre 3, représentent des formules hy-brides contenant des termes interprétés comme des entiers naturels. Notre objectif est de traiter un cas un peu plus général, où ces formules hybrides contiennent des termes inductifs définis à l’aide de constructeurs monadiques c’est-à-dire des mots. Nous procédons comme précédemment : nous introduisons un nouveau formalisme (à la manière desn-clauses), nous étendons le calcul de superposition à ce nouveau formalisme, puis nous proposons une nouvelle version de la détection de boucles, plus générale et englobant la version présentée dans le chapitre 3. L’extension à des termes quelconques (constructeurs d’arités 2) n’a pas été considérée dans le cadre de ce travail car la définition de la règle de détection de boucles s’avère beaucoup plus complexe ce qui limite sa portée et son intérêt pratique. La pré-sence de constructeurs binaires oblige en effet à prendre en compte un ensemble de positions lors de l’identification du cycle. Nous discutons dans le chapitre 11 de cette extension.

Nous introduisons maintenant le nouveau formalisme appelé les α-clauses et qui est une simple extension des n-clauses.

5.1 Logique des α-clauses

Nous restons dans le cadre de la logique équationnelle multi-sortée. L’ensemble de sorte S est partionné en sous-ensembles S =ST ∪SI ∪{bool} disjoints. L’en-semble SI regroupe les sortes des termes définis dans un domaine inductif et ST

Remarque 64 Dans le chapitre 3, nous avons considéré le cas particulier où SI

ne contient qu’une seule sorte nat avec deux constructeurs 0 : nat et succ :

nat→nat.

Par commodité, nous supposons que seul le premier argument des fonctions peut être de type dans SI (ceci n’est pas réellement restrictif puisque nous supposons que les formules ne contiennent qu’un seul paramètre, avec des axiomes contenant une unique variable de type inductif). D’autre part, les éléments de type SI sont des mots, donc tous les constructeurs de domaine SI sont monadiques et de co-domaine dansSI. Nous supposons donc que le profil d’un symbolef non constant est sous l’une des formes suivantes :

1. s1×. . .×sn →s s1, . . . ,sn ∈SI∪ST, et s∈ST∪bool. 2. s →s, où s,s ∈SI.

Un symbole de fonction de profile s bool est un symbole de prédicat. Une variable d’une sorte incluse dans SI est appelée SI-variable. Un SI-terme est un terme d’une sorte incluse dans SI et un terme est standard s’il est d’une sorte incluse dansST ∪{bool}.

Définition 65 (Termes hybrides) Unterme hybrideest un terme standard

conte-nant unSI-terme.

Nous avons aussi utilisé, dans le chapitre 3, un paramètrenqui représente un entier naturel, comme nous considérons maintenant des termes quelconques, nous notons à présent le paramètreα, et supposons que ce paramètre possède une sorte unique dansSI. Nous supposons comme précédemment que le paramètreαn’apparaît pas dans la signature. Nous pouvons, maintenant, définir les α-clauses :

Définition 66 (Les α-clauses) Une α-clause est un couple [C| ki=1α�ti] C

est une clause et les ti (avec 1 i k) sont des SI-termes de même sorte que

α.

Comme dans le cas des n-clauses, nous utilisons quelques abréviations. Une α -clause de la forme [C | V] est simplement notée C et une α-clause de la forme

[�|ki=1α�ti] est notée k

i=1�ti.

La sémantique desα-clauses est semblable à celle desn-clauses, une interprétation est aussi une paire (I(α),�I) où�I est une congruence sur les termes standards fermés etI(α) est unSI-terme fermé de la même sorte que α (voir section 3.1 du