Inférence de non-terminaison 3
ΣCest la signature du domaine de contraintes, c’est-à-dire un couple hFC,ΠCioù
FCest un ensemble de symboles de fonctions et ΠCest un ensemble de symboles de
prédicats. La classe de contraintes LCest un ensemble de ΣC-formules du premier
ordre. Le domaine of calcul DCest une ΣC-structure qui est l’interprétation désirée
des contraintes et DCest le domaine de DC. La théorie des contraintes TCest une ΣC-
théorie qui décrit la sémantique logique des contraintes. On suppose que Cest idéal
i.e. le solveur de contraintes,solvC, est une fonction calculable qui associe ou
à chaque formule de LCce qui indique si la formule est satisfiable ou pas.
On convient que le symbole de prédicat =est un élément de ΣCet qu’il est inter-
prété comme l’identité dans DC. Une contrainte primitive est soit la contrainte tou-
jours satisfiable true, soit la contrainte insatisfiable false ou alors est de la forme p(˜
t)
où p∈ΠCet ˜
test une séquence finie de termes de ΣC. On suppose que LCcontient
toutes les contraintes primitives et que cet ensemble est clos par renommage de va-
riable, quantification existentielle et conjonction.
On suppose que DCet TCcorrespondent sur LCi.e.
–DCest un modèle de TCet
– pour toute contrainte c∈ LC,DC|=∃csi et seulement si TC|=∃c.
De plus, on suppose que TCest complet pour la satisfaction par rapport à LCi.e.
pour toute contrainte c∈ LC, ou bien TC|=∃cou bien TC|=¬∃c. On suppose
également que la théorie et le solveur s’accordent dans le sens où pour tout c∈ LC,
solvC(c) = true si et seulement si TC|=∃c. Par conséquent, comme DCet TC
correspondent sur LC, on a, pour tout c∈ LC,solvC(c) = true si et seulement si
DC|=∃c.
Une valuation est une fonction qui associe à toute variable une valeur de DC. On
écrit Oσ (au lieu de σ(O)) pour dénoter le résultat de l’application d’une valuation σ
à un objet O. Si cest une contrainte, on écrit DC|=csi pour toute valuation σ,cσ
est vraie dans DCi.e. DC|=σc. Donc, DC|=cest la même chose que DC|=∀c. Les
valuations sont dénotées par σ,η,θ, ... dans la suite de ce papier.
Exemple 1 (Rlin )Le domaine de contraintes Rlin a<,≤,=,≥et >pour symboles
de prédicats, +,−,∗,/pour symboles de fonctions et les séquences de chiffres (avec
éventuellement un point décimal) pour symboles de constantes. Seules les contraintes
linéaires sont admises. Le domaine de calcul est une structure dont l’ensemble des
nombres réels est le domaine et dont les symboles de fonctions et de prédicats sont
interprétés par les fonctions et relations usuelles sur les réels. La théorie TRlin est
celle décrite dans [SHO 67]. Un solveur de contraintes pour Rlin renvoyant soit
soit est décrit dans [REF 96].
Exemple 2 (Programmation Logique) Le domaine de contraintes Term a comme
symbole de prédicat le symbole =et comme symboles de fonctions les chaînes de
caractères alphanumériques. Le domaine de calcul de Term est l’ensemble des arbres
finis (ou, de façon équivalente, des termes finis), Tree, tandis que la théorie TTerm est