université d’orléans - univ-orleans.fr diagnosis, partial correctness, ... etap e l' nale....

153
Université d’Orléans

Upload: doannhu

Post on 29-May-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

Université d’OrléansApproche, en termes de squelettes de preuve, de las�emantique et du diagnostic d�eclaratif d'erreur desprogrammes logiques avec contraintesTh�esepr�esent�ee pour l'obtention du titre deDocteur de l'Universit�e d'Orl�eanssp�ecialit�e InformatiqueparAlexandre Tessiersoutenue le 6 janvier 1997

Composition du jury pr�esid�e par Fran�cois FagesRapporteurs : Fran�cois Fages Charg�e de recherche - CNRS, ENS ParisJean-Fran�cois Pique Professeur - Universit�e de MarseilleExaminateurs : Pierre Deransart Directeur de recherche - INRIA RocquencourtG�erard Ferrand Professeur - Universit�e d'Orl�eansFran�cois Le Berre Professeur - Universit�e d'Orl�eansJan Ma luszy�nski Professeur - Link�oping UniversityTh�ese r�ealis�ee au Laboratoire d'Informatique Fondamentale d'Orl�eans sous la direction de G�erard Ferrand.

R�esum�eCette th�ese propose une reformulation compl�ete de la s�emantique des programmes logiques aveccontraintes dans la lign�ee de la vision grammaticale de la programmation logique [P. Deransart etJ. Maluszynski 1993]. La s�emantique g�en�eralise les s�emantiques classiques [J. Ja�ar et J-L. Lassez1987] bas�ees sur une interpr�etation ou une th�eorie pour la s�emantique du langage des contraintes.De plus, elle tient compte de l'incompl�etude des solveurs de contraintes. Les r�esultats connus sontretrouv�es. Cette reformulation est particuli�erement bien adapt�ee pour �etudier le diagnostic d�e-claratif d'erreur [E. Y. Shapiro 1982] des programmes logiques avec contraintes. Diverses notionsd'erreurs sont d�e�nies et des algorithmes de diagnostics sont propos�es. Ils sont compar�es aveccertaines techniques �elabor�ees pour la programmation logique pure.Mots Cl�esProgrammation logique avec contraintes, s�emantique op�erationnelle, s�emantique d�eclarative, sque-lettes, arbre SLD, d�e�nitions inductives, arbres de preuve, diagnostic d�eclaratif d'erreur, correctionpartielle, d�ebogage, validation.AbstractThis thesis proposes a full reformulation of the Constraint Logic Program semantics following theGrammatical View of Logic Programming [P. Deransart et J. Maluszynski 1993]. Our semanticsgenralizes classical semantics [J. Ja�ar et J-L. Lassez 1987] based on an interpretation or a theoryfor the contraint language semantics. Moreover, it takes into account incompleteness of the contraintsolvers. Known results are revisited. This reformulation is particularly adapted to study DeclarativeError Diagnosis [E. Y. Shapiro 1982] of Constraint Logic Programs. Several notions of errors arede�ned and diagnosis algorithms are proposed. They are compared with some technics developpedfor pure Logic Programming.Key WordsConstraint logic programming, operational semantics, declarative semantics, skeleton, SLD tree,inductive de�nitions, proof trees, declarative error diagnosis, partial correctness, debugging, vali-dation.1

2 R�ESUM�E

RemerciementsJe remercie Fran�cois Fages, Charg�e de Recherche �a l'ENS de Paris, et Jean-fran�cois Pique, Profes-seur �a l'Universit�e de la M�editerran�ee, qui ont accept�e de rapporter cette th�ese.Je remercie Jan Ma luszy�nski, Professeur �a L'Universit�e de Link�oping, d'avoir accept�e de par-ticiper au jury. Ses travaux ant�erieurs sont �a l'origine de nouveaux r�esultats pr�esent�es dans cetteth�ese.Je suis tr�es sensible �a l'int�eret que Pierre Deransart, Directeur de Recherche �a l'INRIA, a port�e�a ce travail. Cette th�ese est au centre du projet ESPRIT DiSCiPL dont il est l'instigateur. Sestravaux avec G�erard Ferrand et Jan Ma luszy�nski ont largement contribu�e �a mes recherches. En�n,je le remercie pour avoir accept�e de faire partie du jury.J'exprime ma plus profonde gratitude �a G�erard Ferrand, Professeur �a l'Universit�e d'Orl�eans, quia dirig�e cette th�ese. Je tiens �a le remercier pour sa grande rigueur scienti�que et ses conseils �eclair�esqui m'ont fourni une aide d�ecisive. Je lui suis particuli�erement reconnaissant pour sa disponibilit�emalgr�e les lourdes taches administratives de directeur du Laboratoire d'Informatique Fondamentaled'Orl�eans qu'il assure. Nos discussions ont �et�e d�eterminantes pour ce travail.Je tiens �a remercier tout particuli�erement Fran�cois Le Berre, Professeur �a l'Universit�e d'Orl�eans,qui a tr�es largement contribu�e au travail de reformulation de la s�emantique des programmes logiquesavec contraintes.Je remercie Michel Berg�ere pour la relecture du manuscrit dans l'�etape �nale.Merci �a tous les coll�egues du Laboratoire d'Informatique Fondamental d'Orl�eans pour l'am-biance sympathique dans laquelle j'ai travaill�e durant ces ann�ees. Merci �a Fr�ed�eric Benhamou,pour m'avoir fait pro�t�e de son exp�erience grace aux nombreux �echanges lors des pauses caf�e etdurant les nuits pass�ees �a travailler au laboratoire.

3

4 REMERCIEMENTS

Table des mati�eres1 Pr�eliminaires 171.1 Arbres : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 171.2 D�e�nitions inductives : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 201.2.1 Arbres de preuve : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 231.3 Programmes logiques avec contraintes : : : : : : : : : : : : : : : : : : : : : : : : : : 242 S�emantique op�erationnelle 312.1 Pr�esentation classique : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 322.2 Squelettes : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 342.3 Crit�ere de rejet : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 382.4 R�eponses (r�eponses positives) : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 402.5 R�esolution : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 422.5.1 d�erivation SLD (calcul positif) : : : : : : : : : : : : : : : : : : : : : : : : : : 432.5.2 Arbre de recherche SLD (calcul n�egatif) : : : : : : : : : : : : : : : : : : : : : 472.6 _-r�eponses (r�eponses n�egatives) : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 542.7 Ensembles succ�es : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 553 S�emantique d�eclarative 573.1 Compl�et�e du programme : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 573.2 Selon une pr�e-interpr�etation D : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 583.2.1 Lien avec la s�emantique op�erationnelle : : : : : : : : : : : : : : : : : : : : : : 633.3 Selon une th�eorie T : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 723.3.1 Lien avec la s�emantique op�erationnelle : : : : : : : : : : : : : : : : : : : : : : 743.4 Selon un crit�ere de rejet RC : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 763.4.1 Lien avec la s�emantique op�erationnelle : : : : : : : : : : : : : : : : : : : : : : 763.5 Selon une relation de couverture ` : : : : : : : : : : : : : : : : : : : : : : : : : : : : 783.5.1 Lien avec la s�emantique op�erationnelle : : : : : : : : : : : : : : : : : : : : : : 844 Diagnostic d�eclaratif d'erreur 874.1 Symptomes et erreurs pour un syst�eme de r�egles : : : : : : : : : : : : : : : : : : : : 894.1.1 Symptomes, erreurs et diagnostic : : : : : : : : : : : : : : : : : : : : : : : : : 894.1.2 Co-symptomes, co-erreurs et diagnostic : : : : : : : : : : : : : : : : : : : : : 894.2 Survol du d�ebogage d�eclaratif en programmation logique : : : : : : : : : : : : : : : : 904.2.1 Symptome et erreur pour les programmes logiques : : : : : : : : : : : : : : : 904.2.2 Diagnostic d�eclaratif pour les programmes logiques : : : : : : : : : : : : : : : 914.2.3 Extensions : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 934.3 Symptomes et erreurs pour une relation bien fond�ee : : : : : : : : : : : : : : : : : : 945

6 TABLE DES MATI�ERES4.3.1 Diagnostic d'erreur pour une relation bien fond�ee : : : : : : : : : : : : : : : : 954.3.2 Liens avec les d�e�nitions inductives : : : : : : : : : : : : : : : : : : : : : : : : 954.4 Correction partielle positive : r�eponses fausses : : : : : : : : : : : : : : : : : : : : : : 974.4.1 Diagnostics d'incorrection positive : : : : : : : : : : : : : : : : : : : : : : : : 1004.4.2 Selon une relation de couverture : : : : : : : : : : : : : : : : : : : : : : : : : 1034.5 Correction partielle n�egative : r�eponses manquantes : : : : : : : : : : : : : : : : : : : 1054.5.1 Compl�ements de s�emantique op�erationnelle : : : : : : : : : : : : : : : : : : : 1064.5.2 Diagnostic d'incorrection n�egative : : : : : : : : : : : : : : : : : : : : : : : : 1144.5.3 Selon une relation de couverture : : : : : : : : : : : : : : : : : : : : : : : : : 1154.5.4 Algorithmes : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 1194.6 Insu�sance : r�eponses manquantes : : : : : : : : : : : : : : : : : : : : : : : : : : : : 1245 Conclusion 129A Rappels 133A.1 Relations : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 133A.2 Mots sur un alphabet : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 134A.3 Treillis : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 134

Table des �gures1.1 Repr�esentation graphique d'un arbre (orient�e) : : : : : : : : : : : : : : : : : : : : : : 181.2 Repr�esentation d'un arbre orient�e �etiquet�e : : : : : : : : : : : : : : : : : : : : : : : : 191.3 graft(T;N; T 00) : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 201.4 It�erations d'un op�erateur monotone T sur (2E ;�). : : : : : : : : : : : : : : : : : : : 232.1 sq(u) : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 352.2 Exemple de squelette pour le programme FIB : : : : : : : : : : : : : : : : : : : : : : 362.3 graft(S;N; S00) : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 362.4 Repr�esentation d'un squelette avec son renommage : : : : : : : : : : : : : : : : : : : 372.5 Une r�eponse pour le programme FIB : : : : : : : : : : : : : : : : : : : : : : : : : : : 412.6 Une d�erivation SLD succ�es pour le but go2(x; y) : : : : : : : : : : : : : : : : : : : 442.7 But g�en�eral associ�e �a un squelette incomplet : : : : : : : : : : : : : : : : : : : : : : : 452.8 R�egle de calcul standard : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 462.9 Un arbre SLD pour le but go1(x; y) : : : : : : : : : : : : : : : : : : : : : : : : : : 492.10 R�eponses de l'ensemble success(go1(x; y)) : : : : : : : : : : : : : : : : : : : : : : : : 502.11 �Etat in�ni : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 523.1 N -arbre de preuve pour �(N ;FIB) : : : : : : : : : : : : : : : : : : : : : : : : : : : : 653.2 1N -arbre de preuve : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 653.3 R�eponses enracin�ees en chaque �ls d'une r�eponse : : : : : : : : : : : : : : : : : : : : 774.1 Relation < sur les r�eponses : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 984.2 Symptome positif pour le programme FIB0 : : : : : : : : : : : : : : : : : : : : : : : 1014.3 Prolongement d'un b-�etat. : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 1084.4 Compositionalit�e des prolongements d'un b-�etat : : : : : : : : : : : : : : : : : : : : : 1104.5 Relation <T sur les n�uds de l'arbre SLD T : : : : : : : : : : : : : : : : : : : : : : 113

7

8 TABLE DES FIGURES

Table des d�e�nitions1.1.1 Arbre : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 171.1.2 Domaine d'arbre standard : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 181.1.3 Arbre orient�e �etiquet�e : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 191.2.1 Ensemble clos par un op�erateur monotone : : : : : : : : : : : : : : : : : : : : 201.2.2 Ensemble d�e�ni inductivement par un op�erateur monotone : : : : : : : : : : 201.2.3 Op�erateur monotone compact : : : : : : : : : : : : : : : : : : : : : : : : : : : 211.2.5 Ensemble support�e par un op�erateur monotone : : : : : : : : : : : : : : : : : 221.2.6 Ensemble d�e�ni co-inductivement par un op�erateur monotone : : : : : : : : : 221.3.1 Renommage de variables : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 241.3.2 Clause : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 271.3.3 Programme, Nom de clause : : : : : : : : : : : : : : : : : : : : : : : : : : : : 281.3.4 D�e�nition d'un pr�edicat de programme : : : : : : : : : : : : : : : : : : : : : : 281.3.5 But : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 291.3.6 Atome contraint, Atome couvert, Couverture locale d'atomes : : : : : : : : : 292.2.1 Squelettes : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 342.2.2 Squelette complet, Squelette incomplet : : : : : : : : : : : : : : : : : : : : : : 352.2.3 Fonction de renommage pour un squelette : : : : : : : : : : : : : : : : : : : : 362.2.4 Fonction de renommage pour un squelette et un but : : : : : : : : : : : : : : 372.3.1 �Etat (�etat de calcul selon un crit�ere de rejet) : : : : : : : : : : : : : : : : : : 392.4.1 Squelette r�eponse, Store r�eponse : : : : : : : : : : : : : : : : : : : : : : : : : 402.5.1 Relation de transition entre �etats de calcul : : : : : : : : : : : : : : : : : : : 432.5.2 �Etat initial, �Etat �nal, �Etat succ�es, �Etat �echec : : : : : : : : : : : : : : : : : 432.5.4 R�egle de calcul : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 452.5.6 Relation de transition selon une r�egle de calcul pour un pr�edicat de programme 472.5.11 Arbre SLD d'�echec �ni : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 512.6.1 _-r�eponse, _-store r�eponse : : : : : : : : : : : : : : : : : : : : : : : : : : : : 542.7.1 Ensembles succ�es : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 553.2.1 Pr�e-interpr�etation : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 583.2.2 D-clause : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 593.2.3 Valuation : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 593.2.4 Interpr�etation dans ID : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 603.2.5 D-interpr�etation : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 603.2.6 D-mod�ele d'un programme : : : : : : : : : : : : : : : : : : : : : : : : : : : : 603.2.7 Syst�eme de D-r�egles associ�e �a une clause : : : : : : : : : : : : : : : : : : : : : 613.2.8 Syst�eme de D-r�egles associ�e �a un programme : : : : : : : : : : : : : : : : : : 619

10 TABLE DES D�EFINITIONS3.2.19 Crit�ere de rejet correct/complet pour une pr�e-interpr�etation : : : : : : : : : : 633.2.24 Couverture dans une pr�e-interpr�etation : : : : : : : : : : : : : : : : : : : : : 663.2.30 Ensemble d'�echec �ni : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 693.2.31 Langage des contraintes compact pour les solutions : : : : : : : : : : : : : : : 693.2.32 D-arbre de preuve partiel �a la profondeur n : : : : : : : : : : : : : : : : : : : 703.3.5 Crit�ere de rejet correct pour une th�eorie : : : : : : : : : : : : : : : : : : : : : 743.3.11 Couverture dans une th�eorie : : : : : : : : : : : : : : : : : : : : : : : : : : : 753.3.15 Ind�ependance des contraintes n�egatives : : : : : : : : : : : : : : : : : : : : : 753.4.1 RC-clause : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 763.4.2 Syst�eme de RC-r�egles associ�e �a une clause : : : : : : : : : : : : : : : : : : : : 763.4.3 Syst�eme de RC-r�egles associ�e au programme : : : : : : : : : : : : : : : : : : 763.5.1 Relation de couverture : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 793.5.2 Relation de couverture correcte/compl�ete pour D/T : : : : : : : : : : : : : : 813.5.3 Syst�eme de r�egle associ�e au programme : : : : : : : : : : : : : : : : : : : : : 813.5.4 Op�erateurs de cons�equence imm�ediate : : : : : : : : : : : : : : : : : : : : : : 823.5.12 Relation de couverture compacte : : : : : : : : : : : : : : : : : : : : : : : : : 854.3.1 Symptome pour une relation bien fond�ee : : : : : : : : : : : : : : : : : : : : : 954.3.2 Symptome minimal pour une relation bien fond�ee : : : : : : : : : : : : : : : : 954.4.2 Symptome d'incorrection partielle positive : : : : : : : : : : : : : : : : : : : : 994.4.3 Incorrection partielle positive : : : : : : : : : : : : : : : : : : : : : : : : : : : 994.4.7 Symptome positif : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 1034.4.8 Incorrection positive : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 1044.5.1 Store r�eponse pour C 2A : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 1064.5.4 Prolongement d'un b-�etat : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 1074.5.14 Symptome d'incorrection partielle n�egatif : : : : : : : : : : : : : : : : : : : : 1154.5.17 Couvert, Compl�etement couvert : : : : : : : : : : : : : : : : : : : : : : : : : 1164.5.18 Incorrection partielle n�egative : : : : : : : : : : : : : : : : : : : : : : : : : : : 1174.6.1 Symptome d'insu�sance : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 1244.6.3 Symptome d'insu�sance calcul�e : : : : : : : : : : : : : : : : : : : : : : : : : 124

Table des exemples1.1.2 Domaine d'arbre standard : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 181.1.3 Arbre orient�e �etiquet�e : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 191.2.1 Arbre de preuve : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 241.3.1 Solveur incomplet de CLP(R) : : : : : : : : : : : : : : : : : : : : : : : : : : : 261.3.2 Fibonacci : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 282.2.1 Fibonacci : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 352.2.2 Fibonacci : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 372.2.3 Contraintes non lin�eaires en CLP(R) : : : : : : : : : : : : : : : : : : : : : : : 382.3.1 Fibonacci : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 402.4.1 Fibonacci : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 402.5.1 Fibonacci : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 442.5.2 Fibonacci : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 472.5.3 Fibonacci : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 482.5.4 Fibonacci : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 502.5.5 �Etat in�ni : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 522.5.6 SENDMORY en CLP(FD) : : : : : : : : : : : : : : : : : : : : : : : : : : : : 532.6.1 Fibonacci : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 552.7.1 Fibonacci : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 563.1.1 Fibonacci : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 583.2.1 Fibonacci : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 593.2.2 Fibonacci : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 593.2.3 Fibonacci : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 603.2.4 Fibonacci : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 613.2.5 Fibonacci : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 643.2.6 Couverture des r�eponses en CLP(R) : : : : : : : : : : : : : : : : : : : : : : : 663.2.7 Couverture in�nie en CLP(N ) : : : : : : : : : : : : : : : : : : : : : : : : : : 673.2.8 D-cons�equences n�egatives du compl�et�e : : : : : : : : : : : : : : : : : : : : : : 683.2.9 Fibonacci : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 693.2.10 Langage non compact pour les solutions : : : : : : : : : : : : : : : : : : : : : 704.4.1 Fibonacci : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 1014.5.1 D�etection de pannes dans un additionneur binaire en Prolog III : : : : : : : : 120

11

12 TABLE DES EXEMPLES

IntroductionOn n'�ecrit pas un programme seulement pour qu'il produise des r�esultats. On souhaite de plus queces r�esultats soient justes. Il arrive qu'un calcul fournisse un r�esultat non attendu. Il s'agit parcons�equent d'un calcul qui termine et le r�esultat non attendu est symptome d'une erreur dans leprogramme. L'absence de symptome est la correction partielle du programme. Cette correction n'estque partielle car elle assure que les r�esultats fournis par les calculs �nis sont justes. Le probl�emede non terminaison n'est pas abord�e ici.Pour juger si un r�esultat est juste, on doit disposer d'une s�emantique attendue pour le pro-gramme. Le concept d'oracle formalise cette notion de jugement : l'oracle permet d'interpr�eter unr�esultat, meme complexe, pour indiquer s'il est attendu relativement �a la s�emantique attendue.On peut distinguer deux activit�es duales :1. la preuve de correction partielle ;2. le diagnostic d'erreur.La notion commune �a ces deux activit�es est l'erreur. Une erreur est une partie de programmecause de l'apparition d'un symptome �a la �n d'un calcul.La preuve de correction partielle cherche �a montrer l'absence d'erreur alors que le diagnosticest la recherche d'une erreur quand un symptome est observ�e.Le th�eor�eme fondamental n�ecessaire pour le diagnostic d'erreur est : s'il existe un symptome alorsil existe une erreur. Sa contrapos�e (pas d'erreur ) pas de symptome) est le c�ur des m�ethodes depreuve de correction partielle. Bien entendu, ce r�esultat n'est obtenu que si les notions de symptomeet d'erreur ont �et�e correctement d�e�nies.En g�en�eral la r�eciproque du th�eor�eme est fausse (i.e. il existe une erreur 6) il existe un symp-tome). En e�et, une erreur peut ne pas se manifester par un symptome : elle n'intervient dansaucun calcul �ni. Malgr�e tout, l'absence d'erreur est plus int�eressante que l'absence de symptome :prenons un programme erron�e sans symptome, une extension du programme peut faire surgir dessymptomes dus �a des erreurs du programme d'origine. D'o�u l'int�eret des m�ethodes de preuve decorrection partielle quand elles peuvent etre mises en �uvre.Un algorithme de diagnostic cherche �a localiser une erreur associ�ee �a une notion de symptomeminimal (intuitivement le r�esultat non attendu d'un calcul minimal).�A cette �n, l'algorithme interroge l'oracle sur des r�esultats de calculs pour d�eterminer s'ils sontsymptomes ou non (i.e. s'ils sont attendus). L'oracle a donc la comp�etence d'indiquer si pour toutcalcul �ni le r�esultat est attendu.Ceci pose le probl�eme de pr�esentation : le r�esultat doit etre pr�esent�e de mani�ere �a ce que l'oracle(par exemple le programmeur) puisse juger s'il est attendu. Mais ce probl�eme d�epasse le cadre dudiagnostic. En e�et, les syst�emes doivent eux memes pr�esenter les r�esultats de mani�ere exploitable,c'est-�a-dire compr�ehensible. 13

14 INTRODUCTIONDans le cadre du diagnostic d'erreur, nous consid�erons donc en permanence deux s�emantiquespour un programme : sa s�emantique de fait (ce qui est calcul�e) et sa s�emantique attendue (ce quidevrait etre calcul�e).Notons que cette distinction est directement li�e �a l'activit�e de programmation. Comme nousl'avons pr�ecis�e, concevoir un programme ne se r�esume pas �a �ecrire un programme qui s'ex�ecute,on souhaite �ecrire un programme juste. Par cons�equent avant meme l'�ecriture d'un programme sas�emantique attendue doit etre connue du programmeur. Bien programmer suppose savoir distinguerla s�emantique de fait de la s�emantique attendue.Pour les langages d�eclaratifs, l'accent est mis sur l'existence d'une s�emantique d�eclarative, c'est-�a-dire une s�emantique ind�ependante du mod�ele d'ex�ecution.Il est naturel que la s�emantique attendue soit de meme nature.C'est le concept de diagnostic d�eclaratif d'erreur, d�eclaratif signi�ant que l'oracle juge un r�esul-tat ind�ependamment du comportement op�erationnel du syst�eme qui ex�ecute le programme. Pourun langage d�eclaratif il est essentiel de consid�erer une notion d'erreur d�eclarative.Le cadre de cette th�ese est celui de la Programmation Logique avec Contraintes (PLC). Un desavantages des langages de PLC est leur s�emantique d�eclarative dont l'utilisation est aussi con�rm�epar des applications industrielles r�ecentes.Il serait incoh�erent pour ces langages de n'utiliser que des outils de mise au point de basniveau : il est important de se doter d'outils qui ne font appel qu'�a une connaissance d�eclarative despropri�et�es attendues du programme. De plus, le comportement op�erationnel des syst�emes de PLCest relativement complexe.Les langages de PLC sont vus comme des langages du paradigme de programmation relationnelle(comme il existe la programmation imp�erative ou la programmation fonctionnelle).Un syst�eme de PLC est param�etr�e par une structure qui fournit la s�emantique des contraintes(i.e. des relations pr�e-d�e�nis). Par exemple une interpr�etation du langage des contraintes.Un programme est la d�e�nition de nouvelles relations qui �etendent les relations pr�e-d�e�nies.Sa s�emantique attendue pourra par exemple etre d�e�nie comme une interpr�etation du langage duprogramme. Cette interpr�etation prolonge l'interpr�etation du langage des contraintes.En fait, le programme cherche �a axiomatiser l'interpr�etation attendue, c'est-�a-dire qu'on veutque l'interpr�etation attendue soit un mod�ele du programme (en r�ealit�e un mod�ele du compl�et�e duprogramme).La particularit�e du paradigme de programmation relationnelle est l'ind�eterminisme.On peut consid�erer deux niveaux de r�esultats calcul�es pour un but a :1. Le calcul d'une r�eponse, le sens donn�e �a une (contrainte) r�eponse C est a C (le calcul dela r�eponse est �ni).Une r�eponse est un symptome si a C est faux dans l'interpr�etation attendue (c'est �a direqu'il existe une valuation v qui satisfait C dans l'interpr�etation du langage des contraintesmais ne satisfait pas a dans l'interpr�etation attendue) ;2. Le calcul de l'ensemble des r�eponses (le calcul de cet ensemble est �ni), le sens donn�e �al'ensemble �ni de r�eponse fC1; : : : ; Cng est a$ C1 _ � � � _Cn.L'implication a C1 _ � � � _ Cn est vraie si pour tout i = 1 : : : ; n l'implication a Ci estvraie. C'est un cas particulier du point pr�ec�edent (quand le calcul de l'ensemble est �ni). Ons'int�eresse donc seulement �a l'implication a ! C1 _ � � � _ Cn pour ce type de calcul (le casn = 0 correspond �a ce qu'on appelle couramment l'�echec �ni).

INTRODUCTION 15L'ensemble des r�eponses est un symptome si a! C1 _ � � � _Cn est faux dans l'interpr�etationattendue (c'est �a dire s'il existe une valuation v qui satisfait a dans l'interpr�etation attenduemais qui ne satisfait aucun des Ci dans l'interpr�etation du langage des contraintes).Ces deux niveaux de r�eponses correspondent �a deux s�emantiques de fait du programme : lepremier niveau d�etermine la s�emantique positive et le second niveau la s�emantique n�egative duprogramme.On distingue deux niveaux de r�eponse : les r�eponses positives (appel�ees simplement r�eponses)et les r�eponses n�egatives (appel�ees _-r�eponses).Nous avons motiv�e le travail dans le cadre d'une interpr�etation attendue, mais de mani�ere plusg�en�erale, on diagnostique des erreurs �a partir de propri�et�es attendues qui ne constituent pas n�eces-sairement une sp�eci�cation compl�ete du programme et qui ne sont pas n�ecessairement exprim�eespar une interpr�etation (partielle) attendue.Un programme logique avec contraintes peut etre vu comme un programme logique avec desrelations pr�e-d�e�nies et pr�e-interpr�et�ees dans un domaine particulier (di��erent du domaine deHerbrand), mais c'est un id�eal que les syst�emes n'atteignent pas toujours, les solveurs de contraintessont souvent incomplets.D'o�u la n�ecessit�e d'une reformulation des deux niveaux de calcul dans un cadre qui s�eparel'aspect programmation de l'aspect satisfaction de contraintes et qui formule une s�emantique d�e-clarative des programmes.Ce cadre est adapt�e �a l'�etude du diagnostic d�eclaratif d'erreur. Il est bas�e sur la notion fon-damentale et centrale de squelette. Le squelette regroupe dans une structure arborescente toutel'information d�eclarative (utile pour le diagnostic) issue d'un calcul. C'est �a partir des squelettesque sont parfaitement d�e�nis les deux niveaux de r�eponses associ�es aux deux niveaux de calculs :le squelette repr�esente un �etat de calcul.Le chapitre 1 rappelle les d�e�nitions utiles dans cette th�ese. Il est constitu�e de trois sections : lesrappels sur les arbres, sur les d�e�nitions inductives et sur les langages de programmation logiqueavec contraintes.Le chapitre 2 d�emarre la reformulation de la s�emantique des programmes. Il pr�esente la s�e-mantique op�erationnelle. On y trouve les d�e�nitions de squelettes, �etat de calcul, d�erivation SLD,arbre SLD, r�eponse et _-r�eponse. La notion habituelle de test de satis�abilit�e d'une contrainte estabstraite par un crit�ere de rejet, ainsi on rend compte de l'incompl�etude �eventuelle du solveur decontraintes.Le chapitre 3 pr�esente les types de s�emantiques d�eclaratives habituellement �etudi�es : la s�eman-tique d�eclarative selon une interpr�etation du langage des contraintes et la s�emantique d�eclarativeselon une th�eorie dans le langage des contraintes. Les r�esultats connus sont retrouv�es dans notrecadre. Cette partie explique clairement la terminologie \s�emantique positive" et \s�emantique n�ega-tive". Pour continuer �a donner une s�emantique de nature d�eclarative quand le solveur de contraintesest incomplet, on �etend le crit�ere de rejet �a une relation de couverture. La notion de couvertured'une contrainte par un ensemble (�eventuellement in�ni) de contraintes (r�eponses) abstrait la notionde couverture dans une interpr�etation ou une th�eorie.Le chapitre 4 termine cette th�ese par l'�etude du diagnostic d�eclaratif d'erreur. Il met compl�e-tement �a pro�t la reformulation des deux chapitres pr�ec�edents. On pr�esente un premier sch�emag�en�eral pour le diagnostic bas�e sur les d�e�nitions inductives. Dans ce cadre, on rappelle rapide-ment les travaux pr�ec�edents sur le diagnostic d�eclaratif d'erreur. La section 4.3 fournit un nouveausch�ema bas�e sur une relation bien fond�ee, pour l'�etude des algorithmes de diagnostic d'incorrection,fond�e sur la constatation que ces algorithmes ne cherchent que des �el�ements minimaux parmi les

16 INTRODUCTIONsymptomes. Dans ce cadre nous �etudions le diagnostic d'incorrection positive et le diagnostic d'in-correction n�egative. Le premier correspond au probl�eme de r�eponse fausse et consid�ere le niveau decalcul \positif" (calcul d'une r�eponse). Le second correspond au probl�eme de r�eponse manquanteet consid�ere le niveau de calcul \n�egatif" (calcul de l'ensemble des r�eponses). Le nouveau sch�emamontre tout son int�eret pour l'�etude des symptomes li�es au second niveau de calcul : il permetde comprendre des algorithmes qui �etaient connus dans le cadre plus simple de la programmationlogique, mais qui n'�etaient pas expliqu�es formellement. En fait ces algorithmes sont des algorithmesde recherche d'incorrection (non des optimisations d'algorithmes de recherche d'insu�sance, uneautre notion de diagnostic pour les r�eponses manquantes) sur une structure complexe qui devientsimple grace au second sch�ema et �a notre d�e�nition des arbres SLD. De plus on donne une famillebeaucoup plus large d'algorithmes (que celle connue pour la programmation logique) qui permetdes optimisations auparavant impossibles. En�n, on esquisse une autre m�ethode, plus classique,pour le probl�eme des r�eponses manquantes : le diagnostic d'insu�sance.

\Above all, the book conveys the excitement of using Prolog | the thrill of declara-tive programming. As the authors put it \declarative programming clears the mind".Declarative programming enables one to concentrate on the essentials of a problem,without getting bogged down in too much operational detail. Programming should bean intellectually rewarding activity. Prolog helps to make it so. Prolog is indeed, as theauthors contend, a tool for thinking."Foreword by David H. D. Warren, The Art of Prolog [90], page xi.C'est encore plus vrai en programmation logique avec contraintes !

Chapitre 1Pr�eliminairesNous pr�esentons dans ce chapitre les pr�eliminaires utiles �a cette th�ese.Nous commen�cons par d�e�nir les arbres dans la section 1.1. La notion d'arbre est au c�urde notre travail. Notre d�e�nition est �equivalente �a celle que l'on trouve habituellement dans lalitt�erature.Dans la section 1.2 nous rappelons les principes g�en�eraux des d�e�nitions inductives. Les d�e�ni-tions inductives seront largement utilis�ees dans les chapitres 3 et 4.En�n, dans la section 1.3 nous pr�esentons la syntaxe que nous utiliserons pour les programmeslogiques avec contraintes et nous introduisons quelques notations et la terminologie correspondante.1.1 ArbresD�e�nition 1.1.1 ArbreUn arbre est une paire (E;R), o�u E est l'ensemble des n�uds, appel�e domaine de l'arbre, et R estune relation binaire sur E, appel�ee relation de parent�e, tels qu'il existe un unique �el�ement r 2 E,appel�e la racine de l'arbre et not�ee root((E;R)), E;R; r v�eri�ent :� pour tout e 2 E : (r; e) 2 R� (R� est la cloture r�e exive transitive de R, cf. annexeA) ;� (r; r) 62 R ;� pour tout e 2 E n frg, il existe un unique e0 2 E, appel�e le p�ere de e, tel que (e0; e) 2 R ;Soit (E;R) un arbre. Si (e; e1) 2 R alors e1 est appel�e un �ls de e. De plus, si (e; e2) 2 R,e1 6= e2, alors e1 est appel�e un fr�ere de e2. Une feuille e est un n�ud qui n'a aucun �ls (pour toute0 2 E :(e; e0) 62 R). Un descendant de e est un n�ud e0 tel que (e; e0) 2 R+. Une branche de l'arbreest une suite de n�uds telle que :� le premier n�ud de la suite est la racine ;� tout n�ud de la suite, except�e le premier, est un �ls du n�ud qui le pr�ec�ede dans la suite ;� la suite est in�nie ou son dernier n�ud est une feuille.L'arbre (E;R) est bien fond�e s'il ne contient pas de branches in�nies (en termes plus formels, siR�1 est bien fond�ee). De plus, si E est �ni, sa profondeur est la longueur de sa plus longue branchemoins 1. 17

18 CHAPITRE 1. PR�ELIMINAIRES��� HHH�� @@ " 20 100 01Figure 1.1 : Repr�esentation graphique d'un arbre (orient�e)Un arbre orient�e est un arbre (E;R) muni d'une famille d'ordres (stricts) f<ege2E , i.e. un triplet(E;R; f<ege2E), tel que, pour tout n�ud e : <e est un ordre total (strict) sur l'ensemble des �ls dee.Exemple 1.1.1 ArbreSoit E = f"; 0; 00; 1; 2; 01g, R = f("; 0); ("; 1); (0; 00); (0; 01); ("; 2)g et <"= f(0; 1); (0; 2); (1; 2)g,<0= f(00; 01)g et <00=<1=<01=<2= ;.(E;R) est un arbre (bien fond�e et meme �ni), " est sa racine, 0 est un �ls de ", 00 est un fr�ere de01, 01 est une feuille, 00 est un descendant de ", et " 0 01 est une branche. Sa profondeur est 2.(E;R; f<ege2E) est un arbre orient�e.L'arbre (E;R) (ou l'arbre (E;R; f<ege2E)) sera repr�esent�e comme sur la �gure 1.1.Parfois nous repr�esenterons les arbres par des triangles comme dans la �gure 1.3.Un arbre �etiquet�e est un quadruplet (E;R; F; L), o�u (E;R) est un arbre, F est son ensembled'�etiquettes et L est sa fonction d'�etiquetage de E dans F . On dit que (E;R; F; L) est �etiquet�e parF et qu'il est enracin�e par f si f est l'�etiquette de sa racine.Dans l'utilisation des arbres orient�es �etiquet�es, on s'int�eresse souvent plus �a la relation deparent�e, aux ordres entre les �ls et �a la fonction d'�etiquetage qu'�a la nature meme des n�uds. Pources arbres, sont d�e�nis des domaines d'arbre appel�es domaine d'arbre standards.D�e�nition 1.1.2 Domaine d'arbre standardUn domaine d'arbre standard est un ensemble E de suites �nies d'entiers, not�ees comme des motssur IN (voir sectionA.2), i.e. E est un langage1 sur IN, tel que, pour tout N 2 IN�, pour tout(m;n) 2 IN2 :� " 2 E ;� si N � n 2 E alors N 2 E ;� si N � n 2 E et m < n alors N �m 2 E.Exemple 1.1.2 Domaine d'arbre standardLe domaine de l'arbre de l'exemple 1.1.1 est un domaine d'arbre standard (voir �gure 1.1).L'arbre orient�e sur le domaine d'arbre standard E est l'arbre (E;R; f<NgN2E) d�e�ni par :� " est sa racine ;1Ne pas confondre la notation IN� qui d�esigne l'ensemble des suites �nies d'entiers avec la meme notation utilis�ee,parfois, pour d�esigner l'ensemble des entiers strictement positifs.

1.1. ARBRES 19��� HHH�� @@ a fb dc eFigure 1.2 : Repr�esentation d'un arbre orient�e �etiquet�e� pour tout n�uds N et N 0 de E : (N;N 0) 2 R si et seulement si il existe n 2 IN tel queN 0 = N � n ;� l'ensemble d'ordre f<NgN2E est d�e�ni par : pour tout N 2 E, soit N �m et N �n deux �ls deN , N �m <N N � n si m < n.Remarque. Si N est un n�ud d'un arbre sur un domaine d'arbre standard alors les �lsde N sont les n�uds de la forme N � n avec n 2 IN. Si N � n1 est un n�ud de l'arbre(n1 2 IN) alors les fr�eres de N � n1 sont les n�uds de la forme N � n2 avec n2 2 IN,n2 6= n1. 3La profondeur d'un arbre sur un domaine d'arbre standard �ni E correspond �a la longueur dumot le plus long de E.Un arbre orient�e sur un domaine d'arbre standard E est, par d�e�nition, enti�erement caract�eris�epar E. Dans la suite, on omet R et f<NgN2E et on le note E.Naturellement, on peut d�e�nir des arbres qui sont �a la fois orient�es et �etiquet�es, mais ici nousn'avons besoin que de la d�e�nition suivante :D�e�nition 1.1.3 Arbre orient�e �etiquet�eUn arbre orient�e �etiquet�e est un triplet (E;L; F ), o�u E est un domaine d'arbre standard, F est unensemble d'�etiquettes et L est une fonction d'�etiquetage de E dans F .Exemple 1.1.3 Arbre orient�e �etiquet�eReprenons l'arbre orient�e (E;R; f<ege2E) de l'exemple 1.1.1. Soit F = fa; b; c; d; e; fg et L : E ! Fd�e�nie par : L(") = a, L(0) = b, L(1) = d, L(2) = f , L(00) = c et L(01) = e.(E;F;L) est un arbre orient�e �etiquet�e. Un arbre orient�e �etiquet�e est repr�esent�e comme un arbreexcept�e, qu'on indique l'�etiquette �a la place du n�ud (voir �gure 1.2).A�n d'all�eger le texte, on utilise les notations suivantes : si T est un arbre orient�e �etiquet�e, onnote� domT son domaine d'arbre standard ;� labT sa fonction d'�etiquetage.Soit T = (domT ; labT ; F ) et T 00 = (domT 00 ; labT 00 ; F ) deux arbres orient�es �etiquet�es par F . Lagre�e de T 00 sur le n�ud N 2 domT dans T est l'arbre orient�e �etiquet�e T 0 = (domT 0 ; labT 0 ; F ), not�egraft(T;N; T 00), d�e�ni de la mani�ere suivante : (voir �gure 1.3)� domT 0 = fN 0 2 domT j N n'est pas un pr�e�xe de N 0g [ fN �N 00 j N 00 2 domT 00g ;� pour tout N 0 2 domT 0 , si N 0 = N �N 00 alors labT 0(N 0) = labT 00(N 00) sinon labT 0(N 0) = labT (N 0)(en particulier, l'�etiquette de N est celle de la racine de T 00).On dit que T 00 est l'arbre enracin�e en N dans graft(T;N; T 00).

20 CHAPITRE 1. PR�ELIMINAIRES������� TTTTTTT��@@ ����)������� DDDDDDD������� ��@@ TTTTTTT������� DDDDDDD

����)-TTT�����T NT 00

TT 00 Ngraft(T;N; T 00)Figure 1.3 : graft(T;N; T 00)1.2 D�e�nitions inductivesNous pr�esentons dans cette section le cadre des d�e�nitions inductives [1]. Ce cadre sera largementutilis�e dans le chapitre 3 pour d�e�nir des s�emantiques d�eclaratives et dans le chapitre 4 pour d�e�nirun sch�ema g�en�eral de diagnostic d�eclaratif d'erreur.Soit E un ensemble. Une r�egle sur l'ensemble E est une paire not�ee x X, o�u X � E estl'ensemble des pr�emisses et x 2 E est la conclusion. Une r�egle est �nitaire quand l'ensemble de sespr�emisses est �ni.Soit � un ensemble de r�egles sur E. L'op�erateur associ�e �a � est l'op�erateur T� : 2E ! 2E telque T�(I) = fx 2 E j 9X � I; x X 2 �g. T� est monotone2 (pour l'inclusion sur 2E).Preuve. T� est monotone :Soient I � J deux sous-ensembles de E ; si x 2 T�(I) alors il existe X � I tel quex X 2 �, d'o�u x 2 T�(J).R�eciproquement, on peut montrer que tout op�erateur monotone sur 2E est l'op�erateur associ�ed'un syst�eme de r�egles sur E.D�e�nition 1.2.1 Ensemble clos par un op�erateur monotoneOn dit que I � E est clos3 par T� si T�(I) � I.De tels ensembles existent toujours, e.g. l'ensemble des conclusions des r�egles de �.D�e�nition 1.2.2 Ensemble d�e�ni inductivement par un op�erateur monotoneL'ensemble d�e�ni inductivement par � (ou par T�) est ind(�) = TfI 2 2E j T�(I) � Ig.L'intersection d'une famille d'ensembles clos par T� est close par T�. En fait, ind(�) est le pluspetit ensemble clos par T�. Donc, si I est clos par T� alors ind(�) � I. C'est le principe g�en�eralde preuve par induction : pour montrer que ind(�) � I, il su�t de montrer que I est clos par T�.2Nous employons ici le terme op�erateur monotone pour d�esigner un op�erateur croissant. Cette terminologie issuede l'anglais est de plus en plus utilis�ee ; �a l'origine, un op�erateur monotone d�esigne un op�erateur soit croissant soitd�ecroissant.3Un ensemble clos par T� est aussi appel�e un pr�e-point �xe de T�.

1.2. D�EFINITIONS INDUCTIVES 21Preuve. L'intersection d'une famille d'ensembles clos par T� est close par T� :soit fIjgj2J une famille d'ensembles clos par T�, soit x 2 T�(Tj2J Ij), il existe x X 2 � tel que X � Tj2J Ij , donc x 2 Ij , pour tout j 2 J , par cons�equent x 2 Tj2J Ij.ind(�) est aussi le plus petit I tel que T�(I) = I, i.e. le plus petit point �xe de T�, not�epppf (T�).Preuve. ind(�) est le plus petit point �xe de T� :ind(�) est plus petit que tous les points �xes de T� puisque les points �xes de T� sontclos par T�. T�(ind(�)) est clos par T� (ind(�) est clos par T� et T� est monotone)donc ind(�) � T�(ind(�)). ind(�) est un point �xe de T�. Nous avons utilis�e le principede preuve par induction.On retrouve, un cas particulier du th�eor�eme de Knaster-Tarski [57] mais la d�emonstration estici triviale car (2E ;�) est un treillis complet.D�e�nition 1.2.3 Op�erateur monotone compactUn op�erateur T� : 2E ! 2E est compact si, pour tout I � E, pour tout x 2 T�(I), il existe unepartie �nie If � I telle que x 2 T�(If ).Lemme 1.2.4 Si les r�egles de � sont �nitaires alors l'op�erateur T� est compact.Preuve. L'ensemble des pr�emisses d'une r�egle est �ni.\A note on terminology. Monotone, compact operators are generally called continuousoperators in the literature, because in the right topology they are continuous functions.In mathematical logic, the Compactness Theorem says: Any statement that is a logicalconsequence of a set of statements S is a logical consequence of some �nite subset S0 ofS. The compactness of the operators [: : : ] can be seen as a special case of this result oflogic. Since the role of �niteness is central to our work here, while topological notionsare peripheral, we have choosen to refer to compact, rather than continuous operators."Melvin Fitting, [45], page 62.Il n'est rien �a ajouter �a cette citation de Fitting qui explique pourquoi nous ne parlerons pasde treillis, partie dirig�ee, continuit�e, etc.Le plus petit point �xe de T� peut s'obtenir �a partir des it�erations ascendantes (des puissancesordinales4) de T� :� T� " 0 = ; ;� T� " � + 1 = T�(T� " �) pour tout ordinal successeur � + 1 ;� T� " � = S�<� T� " � pour tout ordinal limite �.D'apr�es le th�eor�eme de Knaster-Tarski [57], il existe un ordinal �, appel�e ordinal de fermeture deT�, tel que pppf (T�) = T� " �. De plus, si T� est compact alors pppf (T�) = T� " ! (! est lepremier ordinal limite).4Nous ne red�e�nissons pas les ordinaux, qui ne sont qu'une notion interm�ediaire peu utilis�ee dans ce travail.

22 CHAPITRE 1. PR�ELIMINAIRESPreuve. Si T� est compact alors pppf (T�) = T� " ! :� T� " ! est clos par T� : Soit x 2 T�(T� " !). Comme T� est compact, il existe unensemble �ni If � T� " ! tel que x 2 T�(If ). Comme T� " n0 � T� " n0 + 1, pourtout n0 2 IN, alors il existe n 2 IN tel que If � T� " n. Comme T� est monotone,x 2 T� " n+ 1 � T� " !. Donc T� " ! est clos par T�.� T� " ! est le plus petit ensemble clos par T� : Soit I clos par T�. T� " 0 = ; � I,si T� " n � I alors T� " n + 1 � T�(I) � I. Donc T� " ! � I.Donc T� " ! = ind(�) = pppf (T�).Du point de vue dual,D�e�nition 1.2.5 Ensemble support�e par un op�erateur monotoneOn dit que I � E est support�e5 par T� si T�(I) � I.D�e�nition 1.2.6 Ensemble d�e�ni co-inductivement par un op�erateur monotoneL'ensemble d�e�ni co-inductivement par � (ou par T�) est coind (�) = SfI 2 2E j T�(I) � Ig.L'union d'une famille d'ensembles support�es par T� est support�ee par T�. coind(�) est le plusgrand ensemble support�e par T�. Donc, si I est support�e par T� alors coind(�) � I.Preuve. L'union d'une famille d'ensembles support�es par T� est support�ee par T� :soit fIjgj2J une famille d'ensembles support�es par T�, soit x 2 Sj2J Ij , il existe j0 2 Jtel que x 2 Ij0 et il existe x X 2 � tels que X � Ij0 , donc X � Sj2J Ij, soitx 2 T�(Sj2J Ij).coind (�) est aussi le plus grand point �xe de T�, not�e pgpf (T�).Preuve. coind(�) est le plus grand point �xe de T� :coind (�) est plus grand que tous les points �xes de T� puisque les points �xes de T�sont support�es par T�. T�(coind (�)) est support�e par T� (coind (�) est support�e parT� et T� est monotone) donc coind(�) � T�(coind (�)). coind(�) est un point �xe deT�.Le plus grand point �xe de T� s'obtient �a partir des it�erations descendantes de T� :� T� # 0 = E ;� T� # � + 1 = T�(T� # �) pour tout ordinal successeur � + 1 ;� T� # � = T�<� T� # � pour tout ordinal limite �.D'apr�es le th�eor�eme de Knaster-Tarski [57], il existe un ordinal � tel que pgpf (T�) = T� # �.Notons que T� compact n'implique pas pgpf (T�) = T� # ! (�gure 1.4).5Un ensemble support�e par T est aussi appel�e un post-point �xe de T .

1.2. D�EFINITIONS INDUCTIVES 23; = T " 0 � T " 1 � � � � � T " � = pppf (T ) � pgpf (T ) = T # � � � � � � T # 1 � T # 0 = ESi T est compact alors � = ! su�t.Figure 1.4 : It�erations d'un op�erateur monotone T sur (2E ;�).1.2.1 Arbres de preuveOn suppose que toutes les r�egles de � sont �nitaires (donc T� est compact).Un arbre de preuve pour � est un arbre �ni sur un domaine d'arbre standard, �etiquet�e par E,tel que si x est l'�etiquette d'un n�ud et X est l'ensemble des �etiquettes de ses �ls alors x X 2 �.L'ensemble des �etiquettes des racines d'arbres de preuve est exactement ind(�), i.e. x 2 ind(�) siet seulement si x enracine un arbre de preuve.Preuve. ind(�) = fx 2 E j x enracine un arbre de preuveg :une simple preuve par induction sur IN montre le r�esultat plus fort : pour tout entierstrictement positif n, x 2 T� " n si et seulement si x enracine un arbre de preuve deprofondeur inf�erieure ou �egale �a n� 1. Comme ind(�) = T� " !, l'�egalit�e est �evidente.Un1-arbre de preuve se d�e�nit comme un arbre de preuve except�e qu'il peut etre �eventuellementin�ni. L'ensemble des �etiquettes des racines d'1-arbres de preuve est exactement coind(�), i.e.x 2 coind (�) si et seulement si x enracine un 1-arbre de preuve.Preuve. coind(�) = fx 2 E j x enracine un 1-arbre de preuveg :� Soit x 2 pgpf (T�). Alors x 2 T�(pgpf (T�)), donc il existe x X 2 � telle queX 2 pgpf (T�). Par it�eration sur les �el�ements de X, on d�e�nit un 1-arbre depreuve enracin�e par x.� Supposons qu'il existe x enracinant un 1-arbre de preuve. Soit X l'ensemble des�etiquettes des n�uds de l'1-arbre de preuve, on constate que X � T�(X) doncX � pgpf (T�). Or x 2 X donc x 2 pgpf (T�).Nous consid�erons parfois des r�egles d'une nature di��erente : leurs pr�emisses sont des suites �niesd'�el�ements de E (not�ees comme des mots sur E). Les notions d'op�erateur associ�e, d'ensemble closou support�e, sont d�e�nies �a partir du syst�eme de r�egles o�u les suites �nies sont remplac�ees parl'ensemble de leurs �el�ements. Les r�esultats pr�ec�edents restent valides. Seules les d�e�nitions d'arbresde preuve et d'1-arbres de preuve sont modi��ees. Un arbre de preuve, pour un tel syst�eme der�egles, est un arbre �ni orient�e �etiquet�e par E tel que :� si x est l'�etiquette d'un n�ud N ;� si N a n �ls ;� si xi est l'�etiquette de N � (i� 1), i = 1; : : : ; n ;alors x x1 � � � xn est une r�egle du syst�eme.

24 CHAPITRE 1. PR�ELIMINAIRESExemple 1.2.1 Arbre de preuveSoit E = fa; b; c; d; e; f; g; h; ig et� = 8>>><>>>: a bdf; c h; h i;a g; d "; h g;b ce; e "; i hc "; f "; i abh 9>>>=>>>;L'arbre de la �gure 1.2 est un arbre de preuve.ind(�) = fa; b; c; d; e; fg et coind (�) = fa; b; c; d; e; f; h; ig.La di��erence avec les arbres pr�ec�edents r�eside essentiellement dans le fait que l'ordre sur lespr�emisses permet d'orienter les �ls d'un n�ud, donc d'orienter les arbres de preuve.De plus, cette d�e�nition prend en compte la multiplicit�e d'un �el�ement en partie droite d'uner�egle. Ainsi deux pr�emisses identiques d'une r�egle peuvent avoir deux preuves di��erentes enracin�eesen deux n�uds fr�eres d'un arbre de preuve. Notons que nous aurions pu d�e�nir les r�egles commedes paires constitu�ees d'un �el�ement de E et d'un multi-ensemble d'�el�ements de E.On d�e�nit aussi, de mani�ere similaire, les 1-arbres de preuve (orient�es) pour de tels syst�emesde r�egles. On montre que les racines des arbres de preuve et des 1-arbres de preuve correspondentrespectivement au plus petit ensemble clos et au plus grand ensemble support�e (les preuves sontidentiques aux pr�ec�edentes).1.3 Programmes logiques avec contraintes : langage, notations,terminologieConsid�erons une fois pour toute quatre ensembles disjoints qui d�eterminent le langage des pro-grammes :� un ensemble in�ni d�enombrable de variables V ;� un ensemble d�enombrable de symboles de fonction � ;� un ensemble d�enombrable de symboles de pr�edicat de contrainte �c ;� un ensemble d�enombrable de symboles de pr�edicat de programme �p.On suppose que chaque symbole est muni de son arit�e.On note var(E) l'ensemble des variables ayant une occurrence libre dans E, o�u E est une formuledu langage du premier ordre construit sur (V;�;�c [�p).D�e�nition 1.3.1 Renommage de variablesUn renommage de variables est une injection � de V dans V (i.e. pour toute paire de variablesdistinctes x; y de V : �(x) 6= �(y)).Un renommage de variables � s'�etend en une fonction, not�ee �egalement � et appel�ee renommage,des expressions du langage dans les expressions du langage de la fa�con usuelle. On utilise la notationhabituelle su�x�ee pour les renommages, c'est-�a-dire, si E est une expression alors l'application de� �a E est not�ee E�.

1.3. PROGRAMMES LOGIQUES AVEC CONTRAINTES 25Un atome est une formule atomique particuli�ere de la forme p(x1; : : : ; xn) construite sur (V; ;;�p),o�u x1; : : : ; xn sont n variables distinctes de V , n est l'arit�e de p 2 �p. Soit ATOM l'ensemble desatomes. Les notations introduites dans la section A.2 sont utilis�ees pour noter les suites �niesd'atomes6 (en particulier, la suite vide est not�ee ").Soient � un renommage et a1a2 � � � an une suite �nie d'atomes, (a1a2 � � � an)� est la suite �nied'atomes a1�a2� � � � an�. L'ensemble des variables libres d'une suite �nie d'atomes a1 � � � an estvar(a1 � � � an) = Si=1;:::;n var(ai).L'ensemble des contraintes basiques7 CONST est un sous-ensemble du langage du premier ordreconstruit sur (V;�;�c). On suppose qu'il contient les contraintes atomiques (formules atomiquesdu langage) et qu'il est clos par renommage des variables.Remarque. Dans un soucis de g�en�eralit�e, nous avons d�e�ni CONST comme un sur-ensemble des contraintes atomiques pouvant inclure �eventuellement des formules plusg�en�erales, contenant par exemple des quanti�cations universelles, des disjonctions, desn�egations, etc. 3Consid�erons le plus petit ensemble de formules qui contient CONST et qui est ferm�e par conjonc-tion. C'est l'ensemble des conjonctions de contraintes basiques. Deux conjonctions de contraintesbasiques sont �equivalentes si elles sont construites �a partir du meme ensemble de contraintes ba-siques. Un store pur est une classe d'�equivalence de conjonction de contraintes basiques selon cetterelation d'�equivalence. En pratique, un store pur est not�e par n'importe quel �el�ement de la classeou par l'ensemble de ses contraintes basiques8.Consid�erons maintenant l'ensemble des quanti�cations existentielles de conjonctions de contraintesbasiques. Deux formules de cet ensemble 9x1 � � � 9xnF et 9y1 � � � 9ymG, o�u F et G sont des conjonc-tions de contraintes basiques, sont �equivalentes si :� elles ont le meme ensemble de variables libres ;� il existe un renommage �, tel que x� = x pour toute x 62 fy1; : : : ; ymg et tel que F et G�appartiennent au meme store pur.On utilise les notations suivantes pour d�esigner les classes d'�equivalences de quanti�cation existen-tielle de conjonction de contraintes basiques (en plus des �el�ements de la classe eux-memes), o�u Fest une conjonction de contraintes basiques et ~x est un ensemble �ni de variables :� 9~xF , o�u ~x = fx1; : : : ; xng, d�esigne la classe 9x1 � � � 9xnF ;� ~9F d�esigne la classe 9var(F )F ;� 9�~xF est la classe 9var(F )n~xF ;� 9�aF , o�u a est un atome, est la classe 9�var(a)F .On �etend la relation d'�equivalence sur les quanti�cations existentielles de conjonction de contraintesbasiques au plus petit ensemble contenant CONST ferm�e par conjonction et quanti�cation existen-tielle en utilisant les transformations habituelles permettant de r�e�ecrire ces formules sous la forme de6Une suite �nie d'atomes est not�ee comme un mot sur l'alphabet ATOM.7La terminologie contrainte basique a �et�e emprunt�ee �a Fages [39].8On confond souvent conjonction de contraintes basiques et ensemble �ni de contraintes basiques.

26 CHAPITRE 1. PR�ELIMINAIRESquanti�cations existentielles de conjonction de contraintes basiques. Un store est une classe d'�equi-valence selon cette derni�ere relation. Nous notons STORE l'ensemble des stores. Remarquons qu'unstore pur est un store.Si � est un renommage et C est un store pur dont F est un repr�esentant alors C� est le storepur dont un repr�esentant est F�, i.e. on applique � �a chacune des contraintes basiques de F ; C� estun store pur car CONST est ferm�e par renommage des variables. Soit C un store pur, l'ensembledes variables libres de C, not�e var(C), est la r�eunion des variables libres des contraintes basiquesqui constituent C.Si 9�~xC est un store (C est une conjonction de contraintes basiques) alors (9�~xC)� = 9�~x�C�.L'ensemble des variables libres de 9�~xC est var (9�~xC) = ~x \ var (C).Les stores (purs) se comportent comme les formules qu'ils repr�esentent pour : la conjonction, laquanti�cation existentielle, le renommage, l'ensemble des variables libres. Dans la suite, on confondcompl�etement le store avec un de ses �el�ements, sachant qu'il est d�e�ni �a une �equivalence pr�es : celled�ecrite ci-dessus.Remarque. Les algorithmes de test de satisfaction d'ensemble de contraintes basiques9ne peuvent manipuler que des ensembles (ou conjonctions) de contraintes basiques. Lesd�e�nitions qui pr�ec�edent ne servent qu'�a exprimer le fait que nous souhaitons consi-d�erer certaines formules comme �equivalentes, sans toutefois consid�erer n�ecessairement�equivalentes deux contraintes basiques logiquement �equivalentes. En e�et, les syst�emesde PLC utilisent souvent, pour des raisons d'e�cacit�e, des algorithmes de test de sa-tisfaction de contraintes incomplets. Or, il se trouve que ces algorithmes n'ont pas lememe comportement pour des conjonctions de contraintes basiques qui sont pourtantlogiquement �equivalentes comme le montrent l'exemple 1.3.1 et l'exemple 2.2.3. 3Exemple 1.3.1 Solveur incomplet de CLP(R)Le solveur de contraintes de CLP(R) fournit trois types de r�eponses : yes le store est satis�able,no le store est insatis�able, maybe il ne peut statuer sur la satis�abilit�e du store.Il r�epond yes pour x� x = 1 ^ x = 1 et maybe pour x� x = 1, n�eanmoins :j= 9x(x� x = 1 ^ x = 1)! 9x(x� x = 1)o�u j= F signi�e que F est cons�equence logique de la th�eorie vide, i.e. F est une tautologie.Il r�epond no pour x = 1 ^ x = 0 et maybe pour x� x = 1 ^ x� x = 0, n�eanmoins :j= :9x(x = 1 ^ x = 0)! :9x(x� x = 1 ^ x� x = 0)Remarque. Les trois ensembles de formules que nous avons consid�er�e,� l'ensemble des conjonctions de contraintes basiques,� l'ensemble des quanti�cations existentielles de conjonctions de contrainte basiques,� le plus petit ensemble contenant CONST ferm�e par conjonction et quanti�cationexistentielle,correspondent �a trois notions essentielles (voir chapitre 2) :� la fermeture par conjonction est indispensable pour d�ecrire le m�ecanisme de r�esolu-tion qui consiste �a accumuler des contraintes basiques sous forme d'une conjonction(un store pur) a�n de construire une r�eponse �a un but ;9On les appelle plus simplement solveur de contraintes.

1.3. PROGRAMMES LOGIQUES AVEC CONTRAINTES 27� les quanti�cations existentielles de conjonctions de contraintes basiques sont, quant�a elles, essentielles pour projeter la conjonction de contraintes basiques, accumul�eesau cours de la r�esolution, sur les variables libres du but a�n d'abstraire les nomsarbitraires des autres variables �eventuellement apparues lors de la r�esolution (onobtient un store) ;� en�n, la fermeture par conjonction et quanti�cation existentielle est n�ecessaire pourmontrer la \compositionalit�e ET" [7, 39, 48] de la s�emantique, c'est-�a-dire que lesr�eponses obtenues pour une suite �nie d'atomes ne d�ependent que des r�eponsesobtenues pour chacun des atomes. 3D�e�nition 1.3.2 ClauseUne clause est un triplet, not�e a C 2A, o�u a est un atome, C est un store pur et A est une suite�nie d'atomes.On note :� head (a C 2A) = a, appel�e la tete de la clause ;� body(a C 2A) = C 2A, appel�e le corps de la clause ;� store(a C 2A) = C, appel�e le store (pur) de la clause ;� arity(a C 2A) = n, o�u n est la longueur de la suite �nie d'atomes A, appel�ee l'arit�e de laclause.Un fait est une clause d'arit�e nulle. On �etend �a nouveau les renommages et la fonction var auxcorps de clauses et aux clauses de fa�con �evidente. On appelle variable existentielle10 de la clausea C 2A tout �el�ement de var(C 2A) n var(a).Nous nous limitons �a des stores purs dans les corps de clauses car cela correspond mieux �ala r�ealit�e des syst�emes. Il ne s'agit pas d'une restriction puisque les contraintes basiques sontquelconques.Remarque. Les atomes sont d�e�nis comme des relations sur des variables distinctes.Cependant, nous ne perdons rien sur l'expressivit�e du langage :p(t1; : : : ; tn) C 2 p1(t1;1; : : : ; t1;n1) � � � pm(tn;1; : : : ; tm;nm)s'�ecrit de mani�ere �equivalentep(x1; : : : ; xn) C ^ x1 = t1 ^ � � � ^ xn = tn^x1;1 = t1;1 ^ � � � ^ x1;n1 = t1;n1^� � �xm;1 = tm;1 ^ � � � ^ xm;nm = tm;nm 2p1(x1;1; : : : ; x1;n1) � � � pm(xm;1; : : : ; xm;nm)o�u = d�esigne l'op�eration r�ealis�ee pour identi�er les arguments d'appel d'une proc�edureavec les arguments de la tete d'une clause de la d�e�nition de la proc�edure. Ce pr�edicatest obligatoirement d�e�ni dans tous les syst�emes. Il fait toujours partie de l'ensemble10On dit aussi variable locale.

28 CHAPITRE 1. PR�ELIMINAIRES�c. La seconde syntaxe est certes plus lourde, mais elle correspond mieux �a la r�ealit�e destransformations faites par le syst�eme pour implanter e�cacement l'appel de proc�edure.Ainsi nous isolons parfaitement l'aspect r�esolution de l'aspect test de satisfaction. Cetterestriction, appel�ee parfois standardisation des clauses, est tout �a fait habituelle [55, 65,38, 18, 81], elle simpli�e grandement la description de la s�emantique op�erationnelle.On peut remarquer, dans le meme esprit, que l'ensemble des symboles de fonction n'estpas n�ecessaire. En e�et, comme nous avons suppos�e que les arguments des atomes sontdes variables distinctes (clauses en forme standard), nous pouvons standardiser aussiles contraintes basiques. Par exemple, une contrainte basique peut etre vue comme unerelation entre ses variables libres en ajoutant autant de pr�edicats de contraintes quen�ecessaire �a �c. Mais cela nous �eloignerait de la r�ealit�e des syst�emes. Une autre fa�conde proc�eder est de d�e�nir pour chaque symbole de fonction un pr�edicat de contrainteavec un argument de plus ; c'est le choix fait par PROLOG IV [81, 23, 10]. Dans les deuxcas, les symboles de fonctions ne sont qu'une facilit�e syntaxique de la syntaxe externepour �ecrire les contraintes. Ces transformations permettent �egalement de trouver desmod�eles pour certains solveurs de contraintes incomplets [22]. 3D�e�nition 1.3.3 Programme, Nom de clauseUn programme P est une famille de clauses. L'ensemble des indices de la famille P est not�e cn(P ).Un nom de clause est un �el�ement de cn(P ) (i.e. un indice de clause).La notion de nom de clause permet de di��erencier deux occurrences d'une meme clause dans unprogramme. Nous verrons lors de la d�e�nition de la s�emantique op�erationnelle la simplicit�e apport�eepar cette notion indispensable. Dans la suite, la clause du programme P dont le nom est u serad�esign�ee par clauseP (u), ou plus simplement par clause(u) quand P est �x�e.D�e�nition 1.3.4 D�e�nition d'un pr�edicat de programmeLa d�e�nition du pr�edicat de programme p dans le programme P est la sous-famille des clauses de Pdont la tete a pour symbole de pr�edicat p ; cette famille est indic�ee par un sous-ensemble cn(P; p)de cn(P ).On suppose que pour tout symbole de pr�edicat p 2 �p, cn(P; p) est �ni.Remarque. Dans notre cadre, un programme peut etre in�ni. Mais contrairement �abeaucoup d'auteurs, nous imposons que la d�e�nition d'un pr�edicat de programme soit�nie. En e�et, si tel n'est pas le cas alors de nombreuses notions ne sont plus d�e�niesou deviennent mal d�e�nies (par exemple : compl�et�e du programme, arbre SLD de degr�ein�ni, etc.). 3Exemple 1.3.2 FibonacciSoit FIB le programme :0 : fib(x; y) x = 0 ^ y = 02 "1 : fib(x; y) x = 1 ^ y = 12 "2 : fib(x; y) 1 < x ^ x = x1 + 1 ^ x1 = x2 + 1 ^ y = y1 + y22 fib(x1; y1)fib(x2; y2)3 : go1(x; y) x = y2 fib(x; y)4 : go2(x; y) x = 1 + 12 fib(x; y)FIB est un programme sur le langage d�e�ni par :

1.3. PROGRAMMES LOGIQUES AVEC CONTRAINTES 29� fx; x1; x2; y; y1; y2g � V ;� f0; 1;+g � � ;� f<;=g � �c ;� ffib; go1; go2g � �p.L'arit�e des symboles de �, �c et �p est donn�ee par le programme.L'ensemble des contraintes basiques CONST contient : fx = a j x 2 V; a 2 term(V;�)g [ f1 < x jx 2 V g, o�u term(V;�) est l'ensemble des termes construits sur (V;�).L'ensemble d'indices (noms de clause) pour FIB est cn(FIB) = f0; 1; 2; 3; 4g.La d�e�nition de fib dans FIB est l'ensemble des clauses dont les noms sont 0; 1; 2.D�e�nition 1.3.5 ButUn but est un atome a, mais pour des raisons (pr�e)historiques, nous avons tenu �a l'�ecrire a.Nous consid�erons des buts atomiques plutot que des buts g�en�eraux parce qu'un but g�en�eral C 2A d�e�nit une nouvelle relation p sur ses variables libres et il est toujours possible de consid�ererun but atomique p(x1; : : : ; xn), o�u fx1; : : : ; xng = var(C 2A), en ajoutant un nouveau pr�edicatp �a �p dont la d�e�nition dans le programme contient l'unique clause p(x1; : : : ; xn) C 2A. Deplus,1. les r�eponses �a un but g�en�eral ne sont construites qu'en regroupant les r�eponses �a des butsatomiques (compositionalit�e ET de la s�emantique) ;2. la s�emantique op�erationnelle est enti�erement caract�eris�ee par les r�eponses aux buts atomiques[12, 39, 47] ;3. le programmeur d�e�nit souvent une clause du type go(x1; : : : ; xn) goal, pour faciliterl'utilisation de son programme et ainsi ne poser que des questions atomiques11. Meme si celan'est pas le cas, d'un point de vue th�eorique, on peut toujours consid�erer qu'un but est uneclause du programme dont on omet de pr�eciser la tete parce qu'elle ne d�epend que du but.Son symbole de pr�edicat n'appara�t nul part ailleurs dans le programme. Le programmeur nepr�ecise qu'une partie du programme, l'autre partie est l'ensemble des clauses d�e�nies par lesbuts que l'on peut construire �a partir des pr�edicats d�e�nis par le programmeur (autant depr�edicats de programme que n�ecessaire sont ajout�es �a �p).En proc�edant ainsi nous simpli�ons avantageusement les diverses d�e�nitions. De plus, nous retrou-vons l'ensemble des r�esultats connus (y compris le lemme 3.2.33).Pour �nir nous d�e�nissons trois objets particuli�erement utiles �a la description de la s�emantiqued�eclarative des programmes.D�e�nition 1.3.6 Atome contraint, Atome couvert, Couverture locale d'atomesUn atome contraint est une paire, not�ee a C, o�u a est un atome et C est un store.Un atome couvert est une paire, not�ee a! R, o�u a est un atome et R est un ensemble de stores12.Une couverture locale d'atomes est un triplet, not�e C 2A! R, o�u C est un store, A est une suite�nie d'atomes et R est un ensemble de stores.11Peut-etre parce que les interfaces des syst�emes sont g�en�eralement peu conviviales.12Nous confondons un ensemble �ni de stores avec la disjonction des stores de l'ensemble, comme nous avonsconfondu un ensemble �ni de contraintes basiques avec la conjonction des contraintes basiques de l'ensemble.

30 CHAPITRE 1. PR�ELIMINAIRES

Chapitre 2S�emantique op�erationnelleCe chapitre d�ecrit la s�emantique op�erationnelle d'un programme logique avec contraintes. C'est-�a-dire, �etant donn�e un programme P , comment construire les r�eponses �a un but a.Il n'est pas question de d�e�nir une nouvelle s�emantique op�erationnelle. Nous ne faisons quereformuler la s�emantique habituelle dans un cadre favorable �a l'�etude du diagnostic d�eclaratif d'er-reur. Nous mettons en avant la notion de squelette qui est intrins�eque au programme (ind�ependantedu calcul) et qui rassemble toute l'information d�eclarative sur un calcul. Les squelettes relientsimplement la s�emantique op�erationnelle (d�erivation SLD) et la s�emantique d�eclarative (arbres depreuve). L'e�ort fourni dans cette reformulation, s'av�ere rapidement payant pour� avoir des d�e�nitions simples, par exemple les r�eponses �a un but ou l'arbre SLD pour un butselon une r�egle de calcul ;� avoir des preuves simples, par exemple la correction/compl�etude de la r�esolution SLD oul'ind�ependance de la r�egle de calcul ;� faire le lien avec les s�emantiques d�eclaratives de type point �xes ou logiques, voir le chapitre 3 ;� apporter de nouveaux r�esultats, par exemple une caract�erisation des branches non �echecs desarbres SLD �equitables ;� diagnostiquer des erreurs dans un programme, voir le chapitre 4.Pour un langage de programmation, quand une notion de calcul est �x�ee, la s�emantique op�era-tionnelle des programmes peut etre d�ecrite par l'ensemble des calculs �nis (ou une abstraction deces calculs).Il ressort de notre reformulation, dont la motivation essentielle est l�etude de la correction par-tielle des programmes (principalement le diagnostic d�eclaratif d'erreur), que deux niveaux de calculpeuvent etre consid�er�es pour les langages du paradigme de programmation relationnelle.1. Les calculs positifs calculent les r�eponses positives et d�eterminent la s�emantique positive desprogrammes. Ce sont les d�erivations SLD. Ils correspondent au type de calcul le plus souventconsid�er�e dans la litt�erature. Une r�eponse positive est l'�etat �nal d'une d�erivation SLD �nisucc�es.2. Les calculs n�egatifs calculent les r�eponses n�egatives et d�eterminent la s�emantique n�egativedes programmes. Ce sont les arbres SLD. Contrairement �a l'habitude, la s�emantique n�egativen'est pas d�etermin�ee seulement par les �echecs �nis. Une r�eponse n�egative est l'ensemble desfeuilles succ�es d'un arbre SLD �ni. 31

32 CHAPITRE 2. S�EMANTIQUE OP�ERATIONNELLEDans la suite, les r�eponses positives sont appel�ees r�eponses et les r�eponses n�egatives sont appel�ees_-r�eponses.Nous supposons, pour l'ensemble de ce chapitre, qu'un programme P sur le langage (V;�;�c [�p) est �x�e.Nous commen�cons par pr�esenter la s�emantique op�erationnelle la plus r�epandue [55] dans lasection 2.1 comme une introduction �a notre reformulation dans les sections qui suivent.2.1 Pr�esentation classiqueLa s�emantique op�erationnelle des programmes logiques avec contraintes la plus fr�equemment pro-pos�ee est la r�esolution descendante. Il existe n�eanmoins des approches ascendantes[55], mais ellesne d�ecrivent pas le comportement de la majorit�e des syst�emes de PLC.Nous pr�esentons succinctement dans cette section le r�esolution descendante de l'article de syn-th�ese classique de Ja�ar et Maher [55] en l'adaptant �a notre cadre. Elle est param�etr�ee par unerelation consistent et une fonction infer permettant de d�ecrire le fonctionnement de la majorit�e dessolveurs de contraintes. En e�et, les solveurs de contraintes sont souvent incomplets1. La fonctioninfer permet, �a partir du store courant, de distinguer les contraintes actives des contraintes passives(ou retard�ees). La relation consistent teste la consistance de l'ensemble de contraintes actives. Ainsi,on d�ecrit plus pr�ecis�ement le comportement op�erationnel (ce qui est r�eellement calcul�e) grace �a lafonction abstraite infer et �a la relation abstraite consistent que si l'on s'int�eresse �a l'interpr�etationou la th�eorie sous-jacente des contraintes comme dans [54, 65, 47, 97, 39].La r�esolution descendante est d�ecrite par un syst�eme de transition sur des �etats hA;C; Si, o�uA est un but g�en�eral (le but courant), i.e. de meme nature qu'un corps de clause, C (le store actifcourant) et S (le store passif courant) sont des stores purs. Le syst�eme de transition est param�etr�epar une relation consistent et une fonction infer . Il existe un autre �etat not�e fail . Une r�egle decalcul s�electionne pour chaque �etat un �el�ement de A.Remarque.\A computation rule is a convenient �ction that abstracts some of the beha-viour of a CLP system. To be realistic, a computation rule should also dependon factors other than the state (for example, the history of the computation).We ignore these possibilities for simplicity."Joxan Ja�ar and Michael J. Maher, [55], page 18.La d�e�nition de r�egle de calcul que nous donnerons par la suite n'ignore pas ces possibi-lit�es. Pourtant elle est tr�es simple et d�e�nie �egalement comme une fonction sur les �etatsde calculs. Notre notion d'�etat de calcul contient exactement tout ce qui est n�ecessairepour d�ecrire ais�ement la r�esolution. 3Le but initial est repr�esent�e par l'�etat hG; ;; ;i.Soit D l'interpr�etation sous-jacente des contraintes (voir section 3.2 pour plus de d�etails). j=D F ,o�u F est une formule construite sur (V;�;�c), signi�e : pour toute valuation v dans D, v(F ) estvraie dans D.1Voir l'exemple 1.3.1 qui montre qu'il n'est pas possible de rendre compte, simplement, de cet incompl�etude dansun cadre logique.

2.1. PR�ESENTATION CLASSIQUE 33La relation consistent est telle que j=D ~9C implique C 2 consistent . La fonction infer est telleque si infer(C;S) = (C 0; S0) alors j=D (C ^ S)$ (C 0 ^ S0).Les transitions du syst�eme de transition sont les suivantes :� h C 02A1 � a �A2; C; Si !r h C 0 ^C 002A1 � A00 �A2; C; S ^ a = a00isi a est l'atome s�electionn�e par la r�egle de calcul, a00 C 002A00 est une clause renomm�eeavec de nouvelles variables de la d�e�nition du symbole de pr�edicat de a dans le programme.� h C 02A1 � a � A2; C; Si !r failsi a est l'atome s�electionn�e par la r�egle de calcul, et la d�e�nition du symbole de pr�edicat dea dans le programme est vide.� h C 0 ^ c2A;C; Si !c h C 02A;C; S ^ cisi c est la contrainte basique s�electionn�ee par la r�egle de calcul.� hG;C; Si !i hG;C 0; S0isi infer(C;S) = (C 0; S0).� hG;C; Si !s hG;C; Sisi C 2 consistent .� hG;C; Si !s failsi C 62 consistent .Une d�erivation succ�es �a partir de l'�etat hG; ;; ;i est une d�erivation �nie ayant comme �etat �nalh ;2 "; C; Si. Dans ce cas, (C;S) est un store r�eponse pour le but G.Une suite �nie de transitions s0 !x0 s1; : : : ; sn�1 !xn�1 sn est not�e en r�esum�e s0 !(x0���xn�1) sn.On �ecrit aussi s!xjy s0 si, soit s!x s0, soit s!y s0.Un syst�eme de PLC est dit quick-checking si sa s�emantique op�erationnelle peut se d�ecrire enterme de !ris et !cis.Un syst�eme de PLC est dit progressif si, pour tout �etat ayant un but contenant une suite nonvide d'atomes, toute d�erivation �a partir de cet �etat, soit aboutit �a l'�etat fail , soit contient uned�erivation !r ou une d�erivation !c.Un syst�eme de PLC est id�eal si il est quick-checking, progressif, infer est d�e�nie par infer(C;S) =(C ^ S; ;) et C 2 consistent si et seulement si j=D ~9C.[55] annonce :\all major implemented CLP systems are quick-checking and progressive, but most arenot ideal".En fait, tous les syst�emes de PLC ont la propri�et�e suivante, appel�ee incr�ementalit�e de infer etconsistent dans [7] :� infer(;; ;) = (;; ;);

34 CHAPITRE 2. S�EMANTIQUE OP�ERATIONNELLE� ; 2 consistent ;� infer(;; S) = (C1; S1) et infer(C1; S1 ^ c) = (C2; S2) et C1 2 consistent et C2 2 consistentest �equivalent �ainfer(;; S ^ c) = (C 02; S02) et C 02 2 consistent ,o�u (C 02; S02) est obtenue �a partir de (C2; S2) en renommant �eventuellement les variables ex-cept�ees celles de S ^ c.Lemme 2.1.1 Si infer et consistent sont incr�ementales, et le syst�eme est quick-checking alors las�emantique op�erationnelle est ET-compositionnelle.Preuve. Voir [7].Ce r�esultat est essentiel et cette propri�et�e d'incr�ementalit�e est toujours recherch�ee lors de lad�e�nition d'un solveur de contraintes. Comme nous l'avons pr�ecis�e, les syst�emes existants les plusconnus v�eri�ent ces propri�et�es (incr�ementalit�e du solveur et syst�eme quick-checking).Un syst�eme de PLC ne fait donc qu'accumuler des contraintes basiques lors de la r�esolution entestant si le store actif courant appartient �a consistent .En fait, la forme de la contrainte r�eponse ne d�epend que des contraintes basiques accumul�eeset le syst�eme dispose d'un crit�ere de rejet pour le store courant S qui stoppe la r�esolution quandinfer(;; S) = (C 0; S0) et C 0 62 consistent . Ce crit�ere ne d�epend que de S. D'autre part le storer�eponse infer(;; S) = (C 0; S0) ne d�epend aussi que de S (au nom des variables, non pr�esentesdans le but, pr�es). D'un point de vue th�eorique, pour les objectifs de ce travail, il n'est doncpas utile de mod�eliser l'information calcul�ee par le solveur de contraintes (approximations, storeactif, contraintes basiques retard�ees, etc.) parce que cette information ne d�epend que de S et estdisponible �a tout instant grace �a infer .Nous nous limitons, ici, �a la description de cette s�emantique op�erationnelle, nous en aborderonsune autre : la s�emantique g�en�eralis�ee [48], dans la section 3.5.Nous pr�esentons maintenant notre reformulation en commen�cant par l'outil de base : le squelette.2.2 SquelettesD�e�nition 2.2.1 SquelettesUn squelette S est un arbre orient�e �etiquet�e2 par cn(P ) [�p, tel que pour tout n�ud N 2 domS :� si labS(N) 2 �p alors N est une feuille ;� si labS(N) 2 cn(P ) et clause(labS(N)) = a C 2 p1(x11; : : : ; x1m1) � � � pn(xn1 ; : : : ; xnmn) alorsN a n �ls N1; : : : ; Nn (Ni est N � (i� 1)), et chaque �ls Ni est �etiquet�e par{ soit pi,{ soit le nom d'une clause de la d�e�nition de pi (un �el�ement de cn(P; pi)).Remarque. Les squelettes �nis pourraient etre d�e�nis comme des termes sur un alphabetsort�e. 32Rappelons que si S est un arbre orient�e �etiquet�e alors son domaine d'arbre est not�e domS et sa fonction d'�eti-quetage est not�ee labS .

2.2. SQUELETTES 35����� QQQQQ��� up1 p2 pn� � �� � �u est le nom de la clause a C 2 a1a2 � � � anet pi est le symbole de pr�edicat de aiFigure 2.1 : sq(u)Soit S un squelette et N un n�ud de domS . Le symbole de pr�edicat associ�e au n�ud N est� labS(N) si labS(N) 2 �p,� p si labS(N) 2 cn(P; p) ;On dit que S est un squelette pour p(x1; : : : ; xn) (ou plus simplement pour p) quand lesymbole de pr�edicat associ�e �a sa racine est p.On note sq(u), o�u u 2 cn(P ), le squelette dont la racine est �etiquet�ee par u et a ses �ls �etiquet�espar des �el�ements de �p (son domaine d'arbre est f"; 0; 1; : : : ; n � 1g si n est l'arit�e de clause(u)),voir �gure 2.1. Pour tout symbole de pr�edicat p 2 �p, on note sq(p) le squelette enracin�e par p(son domaine d'arbre est f"g).Soit S un squelette, on note� undef (S) l'ensemble des n�uds de S �etiquet�es par des �el�ements de �p, c'est l'ensemble desn�uds ind�e�nis de S ;� def (S) l'ensemble des autres n�uds (ils sont �etiquet�es par des �el�ements de cn(P )), c'estl'ensemble des n�uds d�e�nis de S.D�e�nition 2.2.2 Squelette complet, Squelette incompletUn squelette complet est un squelette S tel que undef (S) = ;.Si undef (S) 6= ; alors S est un squelette incomplet.Exemple 2.2.1 FibonacciLa �gure 2.2 pr�esente un squelette pour le programme FIB de l'exemple 1.3.2.Son domaine est f"; 0; 00; 01g. Il n'est pas complet car il a une feuille ind�e�nie : la feuille 01 �etiquet�eepar fib.La gre�e du squelette S00 sur le n�ud N 2 domS de S est un squelette S0 = graft(S;N; S00),seulement si le symbole de pr�edicat associ�e �a N par S est le symbole de pr�edicat associ�e �a la racinede S00 (voir �gure 2.3).S00 est le squelette enracin�e en N dans graft(S;N; S00).Nous avons pr�esent�e l'outil central de notre �etude : le squelette. Nous souhaitons maintenantassocier un store (pur) �a un squelette. Par exemple, cela va nous permettre de distinguer lessquelettes \solubles" de ceux qui ne le sont pas.Comme toujours, nous sommes confront�es au probl�eme de renommage des clauses du pro-gramme.

36 CHAPITRE 2. S�EMANTIQUE OP�ERATIONNELLE�� @@421 fibFigure 2.2 : Exemple de squelette pour le programme FIB������� TTTTTTT��@@ ����)������� DDDDDDD

������� ��@@ TTTTTTT������� DDDDDDD����)-TTT�����

S NS00

SS00 Ngraft(S;N; S00)Si le symbole de pr�edicat associ�e �a N dans S est le symbole de pr�edicat associ�e �a la racine de S00.Figure 2.3 : graft(S;N; S00)D�e�nition 2.2.3 Fonction de renommage pour un squeletteSoit S un squelette. Une fonction de renommage pour le squelette S est une fonction renoS (dedef (S) vers l'ensemble des clauses renomm�ees de P ) telle que :1. pour tout n�ud N 2 def (S), il existe un renommage �, tel que renoS(N) = (a C 2A)�,o�u a C 2A = clause(labS(N)) ;2. pour tout n�ud N 2 def (S), soit renoS(N) = a C 2 a1 � � � an, pour tout i = 0; : : : ; n � 1,si (N � i) 2 def (S) alors head (renoS(N � i)) = ai+1 ;3. pour tout n�uds distincts N1 et N2 de def(S), si renoS(N1) = a1 C12A1 et renoS(N2) =a2 C22A2 alors (var(C12A1) n var(a1)) \ (var(C22A2) n var(a2)) = ;, i.e. les clausesrenomm�ees ont leurs variables existentielles qui sont di��erentes.�Etant donn�e un squelette S de profondeur strictement positive, et une fonction de renommagerenoS pour S, pour tout n�ud N de S, on appelle l'atome associ�e �a N :� head (renoS(N)), si N 2 def (S) ;� ai, si N 2 undef (S) est le i�eme �ls de N 0, i.e. N = N 0 � (i � 1), et renoS(N 0) = a C 2 a1 � � � ai � � � an.On associe �a tout squelette S et toute fonction de renommage renoS pour S l'ensemble destores : const(S; renoS) = SN2def(S) store(renoS(N)). Notons que si S est �ni alors la conjonctiondes �el�ements de const(S; renoS) est un store pur. Dans ce cas, on utilise la vision ensembliste d'un

2.2. SQUELETTES 37������ XXXXXXgo2(x; y) x = 1 + 12 fib(x; y)fib(x; y) 1 < x ^ x = x1 + 1 ^ x1 = x2 + 1 ^ y = y1 + y22 fib(x1; y1)fib(x2; y2)fib(x1; y1) x1 = 1 ^ y1 = 12 " fibFigure 2.4 : Repr�esentation d'un squelette avec son renommagestore pur : on peut confondre const(S; renoS) avec la conjonction de ses �el�ements. Si la racine de Sest ind�e�nie alors const(S; renoS) = ;.D�e�nition 2.2.4 Fonction de renommage pour un squelette et un butSoit S un squelette pour a, renoS est une fonction de renommage pour S et a si la racine deS est ind�e�nie ou si head (renoS(root (S))) = a.Remarque. Une fonction de renommage pour S et a est en particulier une fonctionde renommage pour S. 3Si S est un squelette �ni pour a, et renoS une fonction de renommage pour S et a, on noteAC(S; a) le store 9�a(VC2const(S;renoS) C), ou plus simplement en utilisant la vision ensembliste desstores purs AC(S; a) = 9�aconst(S; renoS). AC(S; a) est le store associ�e �a S et a. Parfois on ditqu'il est le store associ�e �a S, il est alors d�e�ni �a un renommage pr�es.On peut remarquer que AC(S; a) ne d�epend que de S et a, en particulier il ne d�epend pas derenoS .Exemple 2.2.2 FibonacciConsid�erons le squelette S de l'exemple 2.2.1. La �gure 2.4 pr�esente la fonction de renommagerenoS pour S (l'�etiquette d'un n�ud N de def (S) est remplac�ee par renoS(N) dans le dessin).On a const(S; renoS) = fx = 1 + 1; 1 < x; x = x1 + 1; x1 = x2 + 1; y = y1 + y2; x1 = 1; y1 = 1g etAC(S; go2(x; y)) = 9x19y19x29y2(x = 1 + 1^ 1 < x^ x = x1 + 1^x1 = x2 + 1^ y = y1 + y2 ^ x1 =1 ^ y1 = 1).Parmi les squelettes il en existe qui ont un store associ�e insatis�able dans l'interpr�etation descontraintes. Comme nous le verrons par la suite (par exemple dans le chapitre 3) ces squelettespr�esentent moins d'int�eret.Par exemple, nous serons amen�e �a consid�erer le store associ�e �a un squelette �ni complet pour a comme un store r�eponse pour le but a (au sens de la section 2.1). Supposons que le sensdonn�e aux stores r�eponses C pour le but a est P j=D C ! a, o�u P est vu comme un ensemble deformules (clauses de Horn d�e�nies) (voir chapitre 3 pour plus de pr�ecisions, notamment la d�e�nitionde P j=D F ). Dans ce cas, il est �evident que si j=D :C alors P j=D C ! a ind�ependamment duprogramme P . On reviendra sur cette remarque �a la suite du lemme 3.4.10.D'un point de vue th�eorique, ces stores r�eponses pr�esentent peu d'int�eret. D'un point de vueop�erationnel, nous devons �eviter toute exploration inutile, qui pourrait, de plus, conduire �a uncalcul in�ni. Les syst�emes de PLC essaient d'�eliminer ces \stores r�eponses triviaux" grace �a ce quenous appellerons un crit�ere de rejet.

38 CHAPITRE 2. S�EMANTIQUE OP�ERATIONNELLEExemple 2.2.3 Contraintes non lin�eaires en CLP(R)Le syst�eme essaie d'�eliminer, le plus vite possible, les r�eponses triviales qui ne pr�esentent aucunint�eret pour l'utilisateur. Par exemple, en CLP(R), consid�erons le programme :p(x; y) x > y2 "q(x; y) v = x� x ^ w = y � y2 p(v; w)r(x) x = y2 p(x; y)r(x) x = y2 q(x; y)Il existe deux squelettes complets pour le but r(x) dont les stores associ�ees, une fois simpli��es,sont : x > x et x � x > x � x. Selon le domaine de contraintes sous-jacent IR, les deux sontinsatis�ables. Le premier est bien �elimin�e par le syst�eme, tandis que le second est a�ch�e avec lecommentaire maybe. Le solveur de CLP(R) ne peut supprimer que des squelettes dont le storeassoci�e est lin�eaire.2.3 Crit�ere de rejetLa raison pour laquelle un store est rejet�e est, du point de vue de l'utilisateur, bas�ee sur uneinterpr�etation D des contraintes dont le domaine est ID. Mais certains stores insatis�ables dansl'interpr�etation sous-jacente des contraintes ne sont pas rejet�es, parce que le solveur est incomplet(e.g. le solveur de CLP(R) quand le store n'est pas lin�eaire, voir l'exemple 2.2.3).D'un point de vue th�eorique (plus proche du point de vue solveur de contraintes que la visionutilisateur), un store est rejet�e quand sa cloture existentielle n'est pas cons�equence logique de lath�eorie des contraintes dont un mod�ele est l'interpr�etation des contraintes sous-jacente.Mais, d'un point de vue op�erationnel ceci n'est pas toujours possible (probl�eme d'ind�ecidabilit�e,e.g. (IN;+; �)) et meme quand c'est possible, ce n'est parfois pas souhaitable parce que le cout dela fonction infer et de la relation consistent seraient inacceptable (e.g. (IR;+; �)). De nombreuxsyst�emes de PLC utilisent des solveurs de contraintes incomplets : CLP(R) [49], CLP(BNR) [77],PROLOG IV [81], CHIP [36], CLP(FD) [35], PROLOG III [80], etc., sur les domaines discrets(parties �nies de IN) ou les domaines continus (IR). Ils sont capables de tester l'insatis�abilit�e decertains stores seulement.Remarque. C'�etait d�ej�a le cas pour les syst�emes de programmation logique qui utili-saient l'algorithme d'uni�cation incomplet (sans test d'occurrence). C'est d'ailleurs larecherche d'un mod�ele pour cet algorithme qui donna l'id�ee �a Colmerauer d'implanterle premier syst�eme de PLC : PROLOG II [20], dont le domaine de contraintes est l'en-semble des arbres in�nis (�el�ementairement �equivalent aux arbres rationnels, le solveurdevenait alors complet !). 3Il est int�eressant de noter que la premi�ere tache du solveur de contraintes n'est pas de r�esoudredes stores, mais plutot d'essayer de prouver leur insatis�abilit�e. Par exemple, Benhamou dans [9]pr�esente un cadre g�en�eral pour l'�etude des solveurs de contraintes. Une contrainte atomique n-aireest vue comme un op�erateur (dit de narrowing) monotone, contractant (indempotant et correct)de IDn ! IDn, o�u ID est le domaine d'approximation des contraintes. Ces op�erateurs r�eduisentles ensembles de solutions possibles d'un store dans le but de trouver ; quand il est insatis�able.Au cours d'un calcul les ensembles d'approximations calcul�es �a chaque �etape n'ont d'autre int�eret(que de trouver ;) puisqu'ils sont toujours plus grands que l'ensemble des solutions du store lui-meme. De plus, en �n de calcul, il permettent de contribuer au \probl�eme de pr�esentation" qui

2.3. CRIT�ERE DE REJET 39consiste �a trouver des moyens de pr�esenter �a l'utilisateur des informations longues et complexes(on utilisera par exemple le principe d'�enum�eration suivant certaines heuristiques pour trouver lesapproximations les plus �nes).Le crit�ere de rejet est une relation unaire sur l'ensemble des stores, i.e. un sous-ensemble deSTORE. Il exprime le fait que certains stores r�eponses ne sont pas fournis �a l'utilisateur parce qu'ona pu d�eterminer qu'ils sont insatis�ables dans l'interpr�etation sous-jacente des contraintes.Les propri�et�es naturelles suppos�ees pour un crit�ere de rejet RC sont : pour tout store C rejet�e,i.e. C 2 RC,1. pour tout renommage �, C� 2 RC ;2. pour tout store C 0, C ^ C 0 2 RC ;3. ; 62 RC.Le crit�ere de rejet n'est, en g�en�eral, pas quelconque ; il est le plus souvent d�e�ni �a partir d'unerelation d�ej�a existante et doit satisfaire les trois propri�et�es. Voici des exemples de crit�ere de rejetd�e�nis par :1. un domaine D, le crit�ere de rejet est not�e RCD, un store C est rejet�e si v(C) = false, pourtoute valuation v dans D, c'est-�a-dire RCD est d�e�ni �a partir de la relation j=D :C ;2. une th�eorie3 T , le crit�ere de rejet est not�e RCT , un store C est rejet�e si C 2 RCD, pour toutmod�ele D de T , c'est-�a-dire T j= :C ;3. une relation consistent et une fonction infer , un store C est rejet�e si infer(;; C) = (C1; C2)et C1 62 consistent ;4. un solveur de contraintes (�eventuellement incomplet) A, le crit�ere de rejet est not�e RCA,C 2 RCA si A r�epond no pour C.On constate que les deux premiers exemples satisfont toujours les trois propri�et�es. Une conditionsu�sante pour que le troisi�eme exemple satisfasse ces propri�et�es est que la relation consistent et lafonction infer soient incr�ementales [7, 96]. C'est ce qui est recherch�e en g�en�eral. On peut constaterque tous les syst�emes de PLC (en particulier, tous ceux cit�es) ont un solveur de contraintes quid�e�nit bien un crit�ere de rejet4. La s�emantique op�erationnelle est donc param�etr�ee par ce crit�ereet l'on montrera qu'elle g�en�eralise les s�emantiques classiques.D'un crit�ere de rejet RC, on d�eduit une relation sur l'ensemble des squelettes, not�ee �egalementRC de la mani�ere suivante : S 2 RC si il existe un sous-ensemble �ni C de const(S; renoS), o�urenoS est une fonction de renommage pour S, tel que C 2 RC. Cette propri�et�e ne d�epend pas derenoS : RC (sur les stores) est ferm�ee par renommage et si renoS et renoS 0 sont deux fonctions derenommage pour S alors il existe un renommage � tel que const(S; renoS)� = const(S; renoS 0).Notons qu'un squelette dont la racine est ind�e�nie n'est pas rejet�e. Notons aussi qu'un squelette�ni S est rejet�e si et seulement si const(S; renoS) est rejet�e, o�u renoS est une fonction de renommagepour S.D�e�nition 2.3.1 �Etat (�etat de calcul selon un crit�ere de rejet)On appelle �etat de calcul selon RC, ou plus simplement �etat, un squelette non rejet�e par RC.3Nous ne supposons pas que la th�eorie est compl�ete pour la satisfaction des stores.4Cette notion d'incr�ementalit�e est indispensable pour donner une s�emantique claire au solveur de contraintes.

40 CHAPITRE 2. S�EMANTIQUE OP�ERATIONNELLERemarque. Toutes les notions d�e�nies pour les squelettes se transposent aux �etats. Parexemple, on parle d'�etat complet, de fonction de renommage pour un �etat, etc. 3Exemple 2.3.1 FibonacciSi le crit�ere de rejet est celui d�e�ni par (IN;+) avec l'interpr�etation usuelle des symboles de � et�c alors le squelette de la �gure 2.4 est un �etat : le store associ�e n'est pas rejet�e.Une solution dans IN est par exemple : x = 2; x1 = 1; x2 = 0; y = 86; y1 = 1; y2 = 85.Lemme 2.3.2 Si graft(S;N; S0), o�u N 2 undef (S), est un �etat alors S et S0 sont des �etats.Preuve. Il su�t d'appliquer les d�e�nitions : Soit renoS00 une fonction de renommagepour S00 = graft(S;N; S0). La restriction de renoS00 �a def (S), not�ee renoS est une fonc-tion de renommage pour S. Tout n�ud N de def (S) est �etiquet�e par le meme nomde clause dans S et dans graft(S;N; S0). Donc const(S; renoS) � const(S00; renoS00) etPf (const(S; renoS)) � Pf (const(S00; renoS00)), o�u Pf (E) est l'ensemble des parties �niesde E. S'il n'existe aucune partie �nie de const(S00; renoS00) rejet�ee alors il n'existe au-cune partie �nie de const(S; renoS) rejet�ee. D'o�u, si graft(S;N; S0), o�u N 2 undef (S),est un �etat alors S est un �etat.De meme pour monter que S0 est un �etat.2.4 R�eponses (r�eponses positives)A�n d'all�eger les d�e�nitions, on suppose, jusqu'�a la �n de ce chapitre, qu'un crit�ere de rejet RC est�x�e.D�e�nition 2.4.1 Squelette r�eponse, Store r�eponseUn squelette r�eponse pour le but a est un �etat �ni complet S pour a.Dans ce cas, AC(S; a) est un store r�eponse pour le but a.�Etant donn�e l'importance donn�ee aux squelettes, nous dirons r�eponse �a la place de squeletter�eponse pour all�eger le texte.On dit que S est une r�eponse si S est un �etat �ni complet (i.e. il existe un atome a tel que Sest une r�eponse pour le but a).Lemme 2.4.2 Soit S une r�eponse. Pour tout n�ud N de domS, le squelette enracin�e en N dansS est une r�eponse.Preuve. Soit S une r�eponse. Soit S0 le squelette enracin�e en un n�ud N 2 domS dansS. Il est �evident que S0 est �ni et complet. Si renoS est une fonction de renommage pourS alors renoS0 , d�e�ni par : pour tout n�ud N 0 de domS0 , renoS0(N 0) = renoS(N � N 0),est une fonction de renommage pour S0. Comme const(S0; renoS0) � const(S; renoS),S0 n'est pas rejet�e. C'est donc une r�eponse.Exemple 2.4.1 FibonacciLe squelette de la �gure 2.5 est un �etat. Comme il n'a pas de feuilles ind�e�nies, c'est une r�eponse.Donc 9x19y19x29y2(x = 1 + 1 ^ 1 < x ^ x = x1 + 1 ^ x1 = x2 + 1 ^ y = y1 + y2 ^ x1 = 1 ^ y1 =1 ^ x2 = 0 ^ y2 = 0) est un store r�eponse au but go2(x; y).Conform�ement �a l'interpr�etation des contraintes, il peut etre simpli��e en x = 1 + 1 ^ y = 1.La r�eponse enracin�ee en 01 fournit le store r�eponse x = 0 ^ y = 0 pour le but fib(x; y).

2.4. R�EPONSES (R�EPONSES POSITIVES) 41�� @@1 42 0Cette r�eponse avec une fonction de renommage peut etre repr�esent�ee par :������ XXXXXXgo2(x; y) x = 1 + 12 fib(x; y)fib(x; y) 1 < x ^ x = x1 + 1 ^ x1 = x2 + 1 ^ y = y1 + y22 fib(x1; y1)fib(x2; y2)fib(x2; y2) x2 = 0 ^ y2 = 02 "fib(x1; y1) x1 = 1 ^ y1 = 12 "Figure 2.5 : Une r�eponse pour le programme FIBOn comprend mieux maintenant le role primordial jou�e par les r�eponses aux buts \atomiques".Une r�eponse �a un but g�en�eral peut se d�e�nir comme une paire compos�ee du store du but g�en�eralet d'une foret de r�eponses aux atomes pr�esents dans le but g�en�eral. La notion de paire (store, foretde squelettes) rejet�ee se d�e�nit facilement en d�e�nissant la notion de fonction de renommage pourune telle paire, puis la notion de syst�eme de contraintes associ�e �a cette paire.Les r�eponses aux buts atomiques caract�erisent compl�etement la s�emantique op�erationnelle duprogramme.Nous retrouvons maintenant deux r�esultats exprimant la compositionalit�e ET des stores r�e-ponses dans notre cadre g�en�eral.Lemme 2.4.3 Soit a un atome. Pour tout store r�eponse C au but a, il existe u 2 cn(P ) tel queclause(u)� = a C 02 a1 � � � an, o�u � est un renommage, et il existe n stores C 01; : : : ; C 0n tels que1. pour tout i = 1; : : : ; n, Ci est un store r�eponse au but ai ;2. C = 9�a(C 0 ^Vi2f1;:::;ngCi).Preuve. Si C est un store r�eponse au but a alors il existe une r�eponse S telle queC = AC(S; a).� si S est de profondeur 0 alors le r�esultat est imm�ediat.� sinon, soit u la racine de S et � un renommage tel que clause(u)� = a C 02 a1 � � � an.Soit Si, i = 1; : : : ; n, la r�eponse enracin�ee en i�1 dans S. Montrons que AC(S; a) =9�a(C 0 ^Vi2f1;:::;ng AC(Si; ai)).Pour tout i = 1; : : : ; n, soit renoSi une fonction de renommage pour Si telle quepour tout j 2 f1; : : : ; ng n fig :{ head (renoSi(root (Si))) = ai{ (var (const(Si; renoSi)) n var(ai)) \ (var (a) n var(ai)) = ;{ var (const(Si; renoSi)) \ var (const(Sj ; renoSj )) � var (ai) \ var(aj)La fonction renoS d�e�nie par, pour tout N 2 domS nfroot (S)g, i.e. N = (i�1) �Nio�u i 2 f1; : : : ; ng, renoS(N) = renoSi(Ni) et renoS(root (S)) = a C 02 a1 � � � an,est une fonction de renommage pour S et a : chaque renoSi est une fonction derenommage pour Si et d'apr�es les conditions sur chaque renoSi

42 CHAPITRE 2. S�EMANTIQUE OP�ERATIONNELLE{ pour tout n�ud N 2 def (S), il existe un renommage � tel que renoS(N) =clause(labS(N))� ;{ pour tout n�ud N 2 def (S), si renoS(N) = a00 C 002 a001 � � � a00n00 alors pourtout j 2 f1; : : : ; n00g, head (renoS(N � (j � 1))) = a00j ;{ pour tous n�uds distincts N1 et N2 de domS , si renoS(N1) = a01 C 012A01et renoS(N2) = a02 C 022A02 alors (var(C 012A01) n var (a01))\ (var (C 022A02) nvar (a02)) = ;.Si fFkgk2K est une famille �nie de stores et ~y est un ensemble de variables telsque Tk2K var(Fk) = ~x, ~x � ~y et (~y n ~x) \ Sk2K var(Fk) = ; alors 9�~y Vk2K Fk =Vk2K 9�~yFk, d'apr�es les relations d'�equivalences entre stores de la section 1.3.Consid�erons l'ensemble fC 0; const(S1; renoS1); : : : ; const(Sn; renoSn)g et l'ensemblede variables ~y = var(a) [Si2f1;:::;ng var (ai). Ils ont la propri�et�e �enonc�ee ci-dessus.Or 9�a(C 0^Vi2f1;:::;ng const(Si; renoSi)) = 9�a9�~y(C 0^Vi2f1;:::;ng const(Si; renoSi)),puisque var(a) � ~y.Donc 9�a(C 0^Vi2f1;:::;ng const(Si; renoSi)) = 9�a(9�~yC 0^Vi2f1;:::;ng 9�~yconst(Si; renoSi)).Puisque var(C 0) \Ti2f1;:::;ng var(const (Si; renoSi)) � ~y alors9�a(C 0 ^Vi2f1;:::;ng const(Si; renoSi)) = 9�a(C 0 ^Vi2f1;:::;ng AC(Si; ai)).Or C 0 ^Vi2f1;:::;ng const(Si; renoSi) = const(S; renoS).Donc AC(S; a) = 9�a(C 0 ^Vi=1;:::;n AC(Si; ai)).Lemme 2.4.4 Soit u 2 cn(P ) tel que clause(u) = a C 2 a1 � � � an et n stores C1; : : : ; Cn telsque, pour tout i = 1; : : : ; n, Ci est un store r�eponse au but ai.Si (C ^Vi2f1;:::;ngCi) 62 RC alors 9�a(C ^Vi2f1;:::;ngCi) est un store r�eponse au but a.Preuve. Similaire �a la pr�ec�edente.Le lemme 2.4.2 peut etre appel�e lemme de compositionalit�e des r�eponses. Sa preuve est com-pl�etement triviale alors que les deux preuves pr�ec�edentes sont plus techniques. C'est pourquoi il estbien plus simple de d�e�nir les r�eponses comme des squelettes plutot que comme des stores (�etantbien entendu que ce qui compte pour l'utilisateur est bien le store associ�e au squelette). L'int�eretdu \tout squelette" est clair. Comme nous le voyons d�ej�a, l'e�ort de reformulation permet d'�eviterles probl�emes de variables, renommages, etc. qui sont th�eoriquement inutiles puisque toute l'infor-mation est contenue dans le squelette. Cependant, nous pouvons retrouver l'ensemble des r�esultatsclassiques dans notre cadre, meme quand ceux-ci sont techniques parce qu'il font r�ef�erence auxstores (r�eponses) plutot qu'aux squelettes (r�eponses).2.5 R�esolutionNous d�ecrivons maintenant un proc�ed�e qui fournit toutes les r�eponses �a un but a.Il est possible de g�en�erer tous les squelettes pour a, mais pour des raisons d'e�cacit�e, nousne souhaitons construire que des squelettes susceptibles de ne pas etre rejet�es, c'est-�a-dire des �etatsde calcul.La construction descendante5 des r�eponses �a un but p(x1; : : : ; xn) consiste �a construire des�etats obtenus progressivement en gre�ant des squelettes aux feuilles ind�e�nies, jusqu'�a obtenir des5ou r�esolution \top-down"

2.5. R�ESOLUTION 43�etats complets. On se limitera bien entendu �a la construction d'�etats dont le symbole de pr�edicatassoci�e �a la racine est p.Supposons que nous ayons d�ej�a construit un �etat S pour p. Deux cas se pr�esentent :1. S est complet, alors S est une r�eponse ;2. S est incomplet, alors S a au moins une feuille ind�e�nie. On progresse vers une r�eponse engre�ant sur cette feuille ind�e�nie un autre squelette pour obtenir un nouvel �etat.Le plus petit squelette que l'on peut gre�er �a une feuille ind�e�nie N d'un �etat S pour progresservers une r�eponse est un sq(u), o�u u 2 cn(P; labS(N)), tel que graft(S;N; sq(u)) est un �etat. Et leplus petit squelette qui permet de d�emarrer cette construction est sq(p).D�e�nition 2.5.1 Relation de transition entre �etats de calculSoit ,! la relation binaire sur l'ensemble des �etats, appel�ee relation de transition entre �etats decalcul, d�e�nie par : S ,! S0 si il existe une feuille N 2 undef (S) et un nom de clause u 2cn(P; labS(N)) tel que S0 = graft(S;N; sq(u)).,! d�e�nit un syst�eme de transition entre �etats de calcul. On dit que S0 = graft(S;N; sq(u))d�erive de S (par la feuille N) si S ,! S0.2.5.1 d�erivation SLD (calcul positif)La r�esolution SLD6 est une r�esolution descendante qui, �etant donn�e un symbole de pr�edicat p,construit une suite d'�etats de la mani�ere suivante :1. le premier �etat est sq(p) ;2. �a partir d'un �etat S,� si S est complet alors S est appel�e une r�eponse calcul�ee ;� sinon, l'�etat suivant est un �etat S0 qui d�erive de S, i.e. S ,! S0.D�e�nition 2.5.2 �Etat initial, �Etat �nal, �Etat succ�es, �Etat �echecSoit S un �etat.� S est un �etat initial s'il existe p 2 �p tel que S = sq(p).� S est un �etat �nal s'il n'existe aucun �etat qui en d�erive, i.e. pour tout �etat S0 : S 6,! S0. AlorsS est un �etat succ�es si S est complet, sinon c'est un �etat �echec.On appelle d�erivation SLD pour le but p(x1; : : : ; xn) (ou plus simplement pour p) toute suite(�nie ou in�nie) d'�etats S1 � � �Si � � � telle que S1 = sq(p) pour un p 2 �p, chaque �etat Si (sauf lepremier) d�erive du pr�ec�edent (i.e. Si�1 ,! Si) et la suite est in�nie ou le dernier �etat est un �etat�nal.Une d�erivation SLD succ�es (respectivement �echec) est une d�erivation SLD �nie dont l'�etat �nalest un �etat succ�es (respectivement �echec).L'�etat �nal d'une d�erivation SLD succ�es est une r�eponse calcul�ee.6La r�esolution SLD fut d�ecrite par Kowalski dans [56] pour les programmes logiques purs. Le terme r�esolutionSLD, du �a Apt et Van Emden [3] signi�e r�esolution Lin�eaire avec fonction de S�election pour clauses D�e�nies.

44 CHAPITRE 2. S�EMANTIQUE OP�ERATIONNELLE�� @@ �� @@ �� @@go2 4fib 42fib fib 1 42 1 42 0fibFigure 2.6 : Une d�erivation SLD succ�es pour le but go2(x; y)Exemple 2.5.1 FibonacciLa d�erivation SLD de la �gure 2.6 est une d�erivation SLD succ�es. Elle calcule la r�eponse de la�gure 2.5.Si l'on remplace l'�etiquette de la feuille 00 (i.e. la feuille la plus �a gauche) par 0 dans l'avant dernier�etat de la d�erivation, alors cet �etat devient une feuille �echec.Lemme 2.5.3 La r�esolution SLD a les deux propri�et�es suivantes :1. toute r�eponse calcul�ee est une r�eponse ;2. elle calcule toutes les r�eponses.Preuve.1. La premi�ere propri�et�e est triviale : la r�esolution SLD ne construit que des �etats�nis, donc s'ils sont complets, ils sont des r�eponses.2. Pour prouver la seconde, consid�erons une r�eponse S pour p. Le parcours en largeurde S fournit une suite de n�udN0; : : : ; Nn. On d�e�nit la suite d'�etats S0; S1; : : : ; Sn,telle que :� S0 = sq(p), o�u p est le symbole de pr�edicat associ�e �a la racine de S ;� pour tout i = 1; : : : ; n, def (Si) = fN0; N1; : : : ; Nig, et, pour tout Nj 2 def (Si),labSi(Nj) = labS(Nj).Il est facile de v�eri�er que S0; S1; : : : ; Sm est une d�erivation SLD et Sm = S. Parcons�equent, S est une r�eponse calcul�ee.On peut distinguer deux niveaux d'ind�eterminisme dans la r�esolution SLD :� le choix de la feuille ind�e�nie sur laquelle est gre��e le squelette ;� le choix du squelette qui sera gre��e (en fait, le choix du nom de clause qui enracine le squelettegre��e).Le premier niveau d'ind�eterminisme correspond �a la mani�ere de construire une r�eponse alors quele second correspond au choix de la r�eponse qui sera construite.Pour se rapprocher d'une r�esolution e�ective, nous allons r�eduire l'ind�eterminisme. Pour celaon �xe le choix de la feuille ind�e�nie ; il ne restera plus qu'�a explorer toutes les solutions possiblesengendr�ees par les noms de clauses possibles enracinant le squelette gre��e sur la feuille choisie.

2.5. R�ESOLUTION 45 �� LLLL .................. ..................TTTXXXXz66666const(S; renoS)undef (S)Au squelette S, ci-dessus, et �a la fonction de renommage renoS pour S,on peut associer le but g�en�eral : const(S; renoS)2 a1 � � � ano�u chaque ai est l'atome associ�e �a un n�ud ind�e�ni de S par renoS .Figure 2.7 : But g�en�eral associ�e �a un squelette incompletD�e�nition 2.5.4 R�egle de calculOn appelle r�egle de calcul une fonction r qui, pour tout �etat incomplet S, fournit une feuille deundef (S).Remarque. Une r�egle de calcul est parfois d�e�nie comme une fonction qui �a tout but(g�en�eral) associe un atome du but. Cette d�e�nition est nettement moins g�en�erale que lanotre, puisque le contexte ayant conduit au but courant n'est pas pris en compte. Pourdeux squelettes di��erents repr�esentant un meme but (voir �gure 2.7), la r�egle de calculpeut choisir deux atomes di��erents. 3�Etant donn�e une r�egle de calcul r, on d�e�nit la relation ,!r incluse dans ,! comme suit :S ,!r S0 si S0 d�erive de S par la feuille r(S), i.e. il existe un nom de clause u 2 cn(P; labS(r(S)))(labS(r(s)) 2 �p puisque r(S) 2 undef (S)) tel que S0 = graft(S; r(S); sq(u)). Une d�erivation SLDselon la r�egle de calcul r se d�e�nit comme une d�erivation SLD en rempla�cant partout ,! par ,!r :La r�esolution SLD selon la r�egle de calcul r est une r�esolution SLD qui, �etant donn�e un but p(x1; : : : ; xn), construit une suite d'�etats de la mani�ere suivante :1. le premier �etat est sq(p) ;2. �a partir d'un �etat S,� si S est complet alors S est appel�e une r�eponse calcul�ee selon r ;� sinon, l'�etat suivant est un �etat S0 tel que S ,!r S0.Lemme 2.5.5 Les r�eponses calcul�ees sont ind�ependantes de la r�egle de calcul.Preuve. Soit S une r�eponse et r une r�egle de calcul. Consid�erons la d�erivation SLDselon r d�e�nie par :� le premier �etat est S0 = sq(p), o�u p est le symbole de pr�edicat associ�e �a la racinede S ;

46 CHAPITRE 2. S�EMANTIQUE OP�ERATIONNELLE������� ����� JJJ .................... ....................����@@6����@@������� AAAAAAA @@@I

JJJJ@@@R

...r(S)

CompletComplet Feuille ind�e�nie la plus �a gaucheelle est aussi la plus profonde

Feuille ind�e�nie la plus �a gaucheelle est aussi la plus profonde... r(S)Figure 2.8 : R�egle de calcul standard� si Si est un �etat de la d�erivation SLD alors l'�etat suivant estSi+1 = graft(Si; r(Si); sq(labS(r(Si)))).Cette d�erivation SLD est �nie et son �etat �nal est S (chaque Si est un �etat d'apr�es lelemme 2.3.2).Une d�erivation SLD S1S2 � � �Si � � � selon r est �equitable si elle est �nie ou si, pour tout �etat Side la d�erivation, pour toute feuille N 2 undef (Si), il existe un �etat Sj de la d�erivation (i � j) o�uN = r(Sj) est la feuille choisie. Une d�erivation SLD est donc �equitable si elle est �nie ou toutefeuille ind�e�nie d'un de ses �etats, est d�e�nie dans un autre �etat.Une r�egle de calcul r est �equitable si toute d�erivation SLD selon r est �equitable.Une d�erivation SLD S1S2 � � � Si � � � selon r est sans co-routinage si, pour tout �etat incomplet Side la d�erivation, r(Si) est une feuille ind�e�nie de l'ensemble des feuilles ind�e�nies les plus profondes.Une d�erivation SLD est donc sans co-routinage si, pour tout �etat S de la d�erivation, si S0 est un�etat de la d�erivation tel que r(S0) 2 undef (S) n fr(S)g alors alors l'�etat enracin�e en r(S) dans S0est complet. On en d�eduit que, pour tout �etat Si (i 6= 1) de la d�erivation, si r(Si�1) a un �ls dansSi alors r(Si) est un �ls de r(Si�1).Une r�egle de calcul r est sans co-routinage si toute d�erivation SLD selon r est sans co-routinage.La r�egle de calcul standard est la r�egle r qui pour tout �etat S choisit la feuille ind�e�nie \la plus�a gauche" de S : r(S) = N si pour tout N 0 2 undef (S) n fNg, il existe un pr�e�xe M � n de N et unpr�e�xe M � n0 de N 0 tel que n < n0.La r�egle de calcul standard est sans co-routinage (Voir Fig. 2.8).

2.5. R�ESOLUTION 47Exemple 2.5.2 FibonacciLa d�erivation succ�es de la �gure 2.6 est sans co-routinage. Elle est aussi �equitable, puisqu'elle est�nie.On peut remarquer qu'elle utilise la r�egle de calcul standard.Il est �evident que si le crit�ere de rejet est d�e�ni �a partir d'une fonction infer et d'une relationconsistent toutes deux incr�ementales et si le syst�eme pr�esent�e en section 2.1 est quick-checking alors(C,C') est un store r�eponse au but a selon la s�emantique de la section 2.1 si etseulement si il existe une r�eponse S au but a et infer(;;AC(S; a)) = (C;C 0).Rappelons que tous les syst�emes cit�es sont quick-checking et que le comportement du solveurde contraintes de chacun d'entre eux peut etre mod�elis�e par une fonction infer et une relationconsistent toutes deux incr�ementales.La comparaison de notre s�emantique avec d'autres s�emantiques bas�ees sur une interpr�etationou une th�eorie des contraintes sera faite dans le chapitre 3.2.5.2 Arbre de recherche SLD (calcul n�egatif)D�e�nition 2.5.6 Relation de transition selon une r�egle de calcul pour un pr�edicat de programmeSoit r une r�egle de calcul et p un pr�edicat de programme. Soit ,!pr la relation incluse dans ,!rd�e�nie par S,!prS0 si et seulement si S ,!r S0, o�u S et S0 sont des squelettes pour p 2 �p.Lemme 2.5.7 Soit r une r�egle de calcul. Soit dompr l'ensemble d'�etats dompr = fS j sq(p),!pr�Sg.Alors (dompr ; ,!pr) est un arbre. Il est appel�e l'arbre SLD pour p (ou pour le but p(x1; : : : ; xn))selon la r�egle de calcul r.Preuve. Montrons que la relation ,!pr a les propri�et�es d'une relation de parent�e surdompr :� sq(p) est la racine de l'arbre, d'apr�es la d�e�nition de dompr ;� (sq(p); sq(p)) 62 ,!pr , d'apr�es la d�e�nition de ,!r ;� pour tout S 2 dompr, di��erent de sq(p), il existe exactement un S0 2 dompr , tel queS0,!prS :{ S0 existe, d'apr�es la d�e�nition de dompr ;{ il est unique : consid�erons deux d�erivation SLD selon r pour p ayant un �etatS 6= sq(p) en commun ; elle ont au moins un autre �etat en commun S00 (parexemple sq(p)), la feuille choisie en S00 est unique et dans les deux d�erivationsles squelettes gre��es sont identiques, sinon le n�ud r(S00) aurait des �etiquettesdi��erentes dans les �etats qui d�erivent de S00 dans chacune des deux d�eriva-tions et il serait impossible d'aboutir plus loin au meme �etat S ; en it�erant leprocessus, on constate que les �etats qui pr�ec�edent S dans chacune des deuxd�erivations sont identiques.Remarque. Notre d�e�nition des arbres SLD r�ev�ele la nature meme de ces arbres. Ellemontre qu'ils ne peuvent se d�e�nir qu'�etant donn�e une r�egle de calcul.Les d�e�nitions classiques ne mettent pas en avant ce que sont ces arbres, elles ne pr�eci-sent que la nature de leurs �etiquettes.

48 CHAPITRE 2. S�EMANTIQUE OP�ERATIONNELLENotons que les arbres SLD, dans notre reformulation, n'ont pas besoin d'etre d�e�niscomme des arbres �etiquet�es. Cependant, a�n de retrouver une d�e�nition plus classique,nous pourrions �etiquet�e un arbre SLD par des buts g�en�eraux : �a tout n�ud on peut as-socier un but g�en�eral (voir �gure 2.7). Mais �a nouveau on serait confront�e aux di�cult�esli�ees au renommage des variables. 3Exemple 2.5.3 FibonacciLa �gure 2.9 pr�esente un arbre SLD pour le but go1(x; y).On peut remarquer qu'il y a deux r�eponses, et si l'on poursuit le dessin (selon une r�egle �equitable)alors on trouve une autre r�eponse (le store r�eponse simpli��e est x = 1+1+1+1+1^y = 1+1+1+1+1,on trouve des feuilles �echecs et une branche in�nie au centre). (voir aussi �gure 2.10)En r�esum�e, les caract�eristiques essentielles d'un arbre SLD T pour le but p(x1; : : : ; xn) selonla r�egle de calcul r sont :� ses n�uds sont des �etats pour p ;� sa racine est sq(p) ;� un n�ud complet n'a pas de �ls, c'est un n�ud succ�es ;� pour tout n�ud S incomplet de T , soit N = r(S), les �ls de N correspondent exactementaux �etats qui d�erivent de S par la feuille N . Si S n'a pas de �ls alors S est un n�ud �echec.Remarque. Notre d�e�nition de la r�egle de calcul permet de d�ecrire plus d'arbres SLDque la d�e�nition de r�egle de calcul s'appliquant �a des buts (un but peut avoir plusieursoccurrences dans l'arbre SLD alors que les squelettes, qui en sont les n�uds, n'en ontqu'une seule). 3Une branche de l'arbre SLD (dompr ; ,!pr) est exactement une d�erivation SLD (selon r) pour p.Preuve. Voir les d�e�nitions de d�erivation SLD (section 2.5.1) et de branche d'un arbre(section 1.1).Une branche succ�es (respectivement �echec) est une branche �nie qui se termine par une feuillesucc�es (respectivement �echec). L'arbre SLD contient exactement trois types de branches :1. les branches succ�es qui sont les d�erivations SLD succ�es selon r ;2. les branches �echecs qui sont les d�erivations SLD �echecs selon r ;3. les branches in�nies qui sont les d�erivations SLD in�nies selon r.Un arbre SLD (dompr ; ,!pr) est �equitable (respectivement sans co-routinage, standard) si sesbranches sont �equitables (respectivement sans co-routinage, standard), i.e. la restriction de r �al'ensemble dompr est �equitable (respectivement sans co-routinage, standard). En particulier, toutarbre SLD �ni est �equitable.

2.5. R�ESOLUTION 49

fib3

�� @@23fib 131 30������� PPPPPPP�� @@

�������� PPPPPPP�� @@�� @@,,, lll�� @@

�� @@�� @@,,,, ll ll

2fib fib

go13

23fib 023fib32 1

2fib fib2fib fibFigure 2.9 : Un arbre SLD pour le but go1(x; y)

50 CHAPITRE 2. S�EMANTIQUE OP�ERATIONNELLE������ XXXXXX����� PPPPP��� HHH�� @@ �� @@ ��� HHH�� @@

2322 121 0 21 0 2 121 031 30S1 S2 S3

Figure 2.10 : R�eponses de l'ensemble success(go1(x; y))Lemme 2.5.8 L'ensemble des feuilles succ�es d'un arbre SLD pour p selon la r�egle de calcul r estl'ensemble des r�eponses pour p.Preuve. Trivial, d'apr�es les d�e�nitions.Lemme 2.5.9 Soit S un squelette et r une r�egle de calcul.Les propositions suivantes sont �equivalentes :1. S est une r�eponse pour le but a.2. S est une r�eponse calcul�ee pour le but a.3. S est une r�eponse calcul�ee pour le but a selon la r�egle de calcul r.4. S est une feuille succ�es de l'arbre SLD pour a selon la r�egle de calcul r.Preuve. L'�equivalence entre 1, 2 et 3 a d�ej�a �et�e montr�ee dans la section 2.5.1.4 est �equivalent �a 3 car les branches de l'arbre SLD pour le but a selon la r�egle decalcul r sont les d�erivations SLD pour le but a selon la r�egle de calcul r (voir lapreuve du lemme 2.5.7).Corollaire 2.5.10 Les feuilles succ�es d'un arbre SLD sont ind�ependantes de la r�egle de calcul.On note success(a) l'ensemble des r�eponses pour le but a.Exemple 2.5.4 FibonacciL'ensemble success(go1(x; y)) = fS1; S2; S3g est constitu�e des trois r�eponses de la �gure 2.10.Les trois stores r�eponses pour le but go1(x; y) sont respectivement (une fois simpli��es) : x =1 ^ y = 1, x = 1 + 1 + 1 + 1 + 1 ^ y = 1 + 1 + 1 + 1 + 1 et x = 0 ^ y = 0.On peut remarquer que l'ensemble success(fib(x; y)) est in�ni.

2.5. R�ESOLUTION 51Remarque. Il est possible d'orienter un arbre SLD en �xant un ordre sur les noms declauses, i.e. un ordre total sur les cn(P; p). Les �ls d'un n�ud S sont alors naturellementordonn�es par l'ordre sur les noms des clauses qui enracinent les squelettes gre��es en r(S).3D�e�nition 2.5.11 Arbre SLD d'�echec �niUn arbre SLD est d'�echec �ni s'il est �ni et s'il n'a aucune feuille succ�es.Remarque. La notion la plus int�eressante ici est celle d'arbre SLD �ni. La bonne visiond'arbre SLD d'�echec �ni n'est que comme un cas particulier d'arbre SLD �ni. Il n'y a �apeine plus �a dire si le nombre de feuilles succ�es est nul que s'il est 1 ou 7 (meme dans lecadre d'une s�emantique logique). C'est pourquoi la s�emantique d�eclarative sera d�e�nipar tous les arbres SLD �nis. 3Nous avons vu qu'�etant donn�e un but a, il existe une bijection entre les branches succ�es dedeux arbres SLD pour a (une branche succ�es de l'un correspond �a une branche succ�es de l'autresi elles ont le meme �etat �nal).Il existe un autre type de branches qui sont en bijections. Il s'agit de branches in�nies. Cettebijection s'exprime facilement quand les arbres SLD sont �equitables.Lemme 2.5.12 Soit r une r�egle de calcul �equitable. Les branches in�nies de (dompr ; ,!pr) sont enbijection avec les �etats complets in�nis pour p.Preuve. Soit (dompr ; ,!pr) un arbre SLD �equitable.� Consid�erons une branche in�nie de (dompr ; ,!pr), c'est-�a-dire une d�erivation SLDin�nie �equitable U = (S1S2 � � � Si � � �) pour p.Remarquons, d'une part, que si N 2 def (Si) \ def (Sj) alors labSi(N) = labSj (N)et, d'autre part, que la d�erivation �etant �equitable, toute feuille ind�e�nie d'un deses �etats devient d�e�nie dans un autre.Soit S l'arbre sur le domaine d'arbre standard domS = SSi2U def (Si) dont lafonction d'�etiquetage labS est, pour tout N 2 domS , labS(N) = labSi(N), o�uN 2 def (Si).Pour tout n�ud N de S, soit a C 2 a1 � � � an la clause de nom labS(N), N a bienn �ls et le symbole de pr�edicat associ�e �a chacun est bien le symbole de pr�edicat del'atome ai correspondant. S est donc un squelette pour p et de plus il est complet(labS fait correspondre �a tout n�ud de domS un nom de clause). Il est aussi in�nicar U est in�nie et chaque �etape de d�erivation d�e�ni un n�ud qui �etait ind�e�ni.Soit renoS une fonction de renommage pour S, comme nous l'avons vu dans lapreuve du lemme 2.3.2, renoS est une fonction de renommage pour chacun desSi 2 U . Pour toute partie �nie C de const(S; renoS), il existe un Si 2 U tel queC � const(Si; renoS), donc S est un �etat.S est un �etat complet in�ni pour p.� Consid�erons un �etat S in�ni et complet pour p, et montrons qu'il est possiblede construire un SLD-d�erivation U , selon r, pour p, in�nie et qui \calcule" S,c'est-�a-dire une branche in�nie de (dompr ; ,!pr).{ Le premier squelette est S1 = sq(p).

52 CHAPITRE 2. S�EMANTIQUE OP�ERATIONNELLEp(x) x = 02 "S0 S1p(x) x + 1 = x12 p(x1)p(x1) x1 + 1 = x22 p(x2)p(x2) x2 + 1 = x32 p(x3)p(xi) xi + 1 = xi+12 p(xi+1)

Figure 2.11 : �Etat in�ni{ Supposons qu'on ait d�ej�a construit la suite d'�etat S1 � � �Si, pr�e�xe de la brancheU . Si+1 = graft(Si; r(Si); sq(labS(r(Si)))) est un �etat incomplet �ls de Si dans(dompr ; ,!pr). C'est l'�etat qui suit Si dans U .On d�e�nit ainsi une branche in�nie U de (dompr ; ,!pr) et comme elle est �equitableelle calcule bien l'�etat complet S.Remarque. La preuve pr�ec�edente montre qu'�a tout �etat complet in�ni pour p correspondune branche in�nie de (dompr ; ,!pr), pour toute r�egle de calcul r (meme non �equitable).En fait, pour toute r�egle de calcul r, pour tout symbole de pr�edicat p� �a tout �etat �ni complet pour p correspond une branche succ�es de (dompr ; ,!pr) ;� �a tout �etat in�ni complet pour p correspond une branche in�nie de (dompr ; ,!pr) ;� les autres branches de (dompr ; ,!pr), sont soit des branches �echecs, soit des branchesin�nies qui ne calculent pas un �etat complet (des branches non �equitables). 3Exemple 2.5.5 �Etat in�niSoit P le programme en CLP(N ) : 0 : p(x) x = 02 "1 : p(x) x + 1 = y2 p(y)Tout arbre SLD pour le but p(x) contient une branche succ�es qui correspond �a la r�eponse S0 etune branche in�nie qui calcule l'�etat in�ni S1 (voir la �gure 2.11).Corollaire 2.5.13 Soit r1 et r2 deux r�egles de calcul �equitables. Les branches non �echecs (i.e.branches succ�es et branches in�nies) de (dompr1 ; ,!pr1) et (dompr2 ; ,!pr2) sont en bijection.

2.5. R�ESOLUTION 53Preuve. Elles sont en bijections avec les �etats complets pour p.Corollaire 2.5.14 S'il existe un arbre SLD �ni pour le but a alors tout arbre SLD �equitablepour le but a est �ni.Corollaire 2.5.15 S'il existe un arbre SLD d'�echec �ni pour le but a alors tout arbre SLD�equitable pour le but a est d'�echec �ni.Preuve. Soit a un but ayant un arbre SLD d'�echec �ni.Le corollaire 2.5.14 assure que tout arbre SLD �equitable pour a est �ni : le cas o�ul'arbre SLD est d'�echec �ni est un cas particulier.Le lemme 2.5.8 assure que tout arbre SLD pour a n'a pas de feuille succ�es.Certains auteurs consid�erent que la r�egle de calcul s�electionne �a chaque �etape soit un atomesoit une contrainte basique du but courant (c'est le cas pour la s�emantique classique pr�esent�ee dansla section 2.1). Nous ne s�electionnons que des atomes dans le but courant. Le store de la clausechoisie pour l'atome s�electionn�e est ajout�e au store courant d�es que cette clause est choisie. De cepoint de vue, notre description de la s�emantique op�erationnelle n'est pas compl�etement �d�ele aucomportement des syst�emes existants (except�e des langages comme Prolog III [80] qui se comportentexactement comme nous l'avons d�ecrit). Mais on sait qu'au cours de la r�esolution si l'on commencepar s�electionner toutes les contraintes basiques du but courant avant de s�electionner un atomealors on obtient toutes les r�eponses (les solveurs de contraintes ne bouclent pas). Cependant, pouretre plus e�cace, il est parfois utile de s�electionner un atome, qui va ajouter au store courant descontraintes fortes sur les variables, avant une contrainte basique, qui pourrait demander un travailcouteux au solveur de contraintes (voir l'exemple 2.5.6).Malgr�e tout, ce qui est perdu en �d�elit�e est sans importance pour ce que l'on veut mod�eliser. Ilest �evident que l'on peut modi�er les d�e�nitions pour rendre compte de cette caract�eristique de laplupart des syst�emes, mais cela compliquerait le formalisme de fa�con tout �a fait inutile ici.Exemple 2.5.6 SENDMORY en CLP(FD)Consid�erons le fameux puzzle de crypto-arithm�etique : \SEND + MORE = MONEY". L'exerciceconsiste �a assigner un chi�re di��erent �a chaque lettre, pour que l'addition suivante soit v�eri��ee :S E N D+ M O R EM O N E YOn impose de plus que M et S soient tous deux di��erents de 0.Le programme send.pl �ecrit en clp(FD) [35, 19] qui r�esout l'exercice est :send(L) :- L = [S,E,N,D,M,O,R,Y],domaine(L),S#\=0,M#\=0, 1000*S + 100*E + 10*N + D+ 1000*M + 100*O + 10*R + E#= 10000*M + 1000*O + 100*N + 10*E + Y,solution(L).

54 CHAPITRE 2. S�EMANTIQUE OP�ERATIONNELLEdomaine(L) :- alldifferent(L), domain(L,0,9).solution(L) :- labeling(L).Voici les solutions fournies par clp(FD)clp_fd INRIA Rocquencourt - ChLoE ProjectVersion 2.21 Daniel Diaz - 1994| ?- [send].(0 ms) yes| ?- send(L).L = [9,5,6,7,1,0,8,2] ? ;(10 ms) no| ?-On peut changer l'ordre des �el�ements dans le corps de la premi�ere clause et constater l'impact surles performances.Le meme exercice est possible avec l'exemple de [21] qui consiste �a assigner les dix chi�res 0, 1, 2,3, 4, 5, 6, 7, 8, 9 aux dix lettres D, G, R, O, E, N, B, A, L, T pour que l'addition suivante soitv�eri��ee : D O N A L D+ G E R A L D= R O B E R T2.6 _-r�eponses (r�eponses n�egatives)D�e�nition 2.6.1 _-r�eponse, _-store r�eponseLa _-r�eponse pour le but a est success(a) s'il existe une r�egle de calcul r telle que l'arbre SLDpour le but a selon la r�egle de calcul r est �ni. (La _-r�eponse pour le but a si elle existe ned�epend pas de r).Dans ce cas, le _-store r�eponse pour le but a est le multi-ensemble fAC(S; a) j S 2 success(a)g.D'un point de vue op�erationnel, seuls les calculs �nis pr�esentent un int�eret. C'est la raison pourlaquelle nous avons d�e�ni les _-stores r�eponses sous la condition d'existence d'un arbre SLD �ni.Dans la d�e�nition de store r�eponse nous n'avions aucune hypoth�ese sur l'existence d'un arbre SLD�ni. Malgr�e tout nous consid�erions tout de meme des calculs �nis, mais il s'agissait d'un autreniveau de calcul : les SLD-d�erivations.Nous avons donc d�e�ni deux niveaux de r�eponses :� les �etats �nis complets (r�eponses positives) ;� l'ensemble des feuilles succ�es des arbres SLD �nis (r�eponses n�egatives).

2.7. ENSEMBLES SUCC�ES 55Ces deux niveaux de r�eponses correspondent �a deux niveaux de calculs :� les d�erivations SLD (calculs positifs) ;� les arbres SLD (calculs n�egatifs).En g�en�eral, ce sont toujours les premiers qui sont consid�er�es. On peut tout de meme noter que pourla s�emantique op�erationnelle de Prolog IV [81] et celle de Escher [63], la d�e�nition de r�eponse estidentique �a notre d�e�nition de _-store r�eponse.Exemple 2.6.1 FibonacciIl n'existe pas de _-r�eponse au but go1(x; y) : l'ensemble success(go1(x; y)) est �ni (voir exemple2.5.4), mais il n'existe pas d'arbre SLD �ni pour ce but (voir l'exemple 2.5.3).La _-r�eponse pour le but go2(x; y) ne contient que la r�eponse de la �gure 2.5.En�n, il n'existe pas de _-r�eponse pour le but fib(x; y) puisque l'ensemble success(fib(x; y)) estin�ni.2.7 Ensembles succ�esNous d�e�nissons maintenant deux ensembles succ�es qui caract�erisent les deux niveaux de s�emantiqueop�erationnelle pr�esent�es. L'ensemble succ�es positif SS(P ), appel�e simplement l'ensemble succ�es,qui regroupe les stores r�eponses aux buts. L'ensemble succ�es n�egatif SS_(P ), appel�e simplementl'ensemble _-succ�es, qui regroupe les _-stores r�eponses aux buts. Il est important de noter qu'aucunde ces deux ensembles ne se d�eduit de l'autre. Il est seulement possible de d�eduire un sous-ensemblede SS(P ) �a partir de SS_(P ).D�e�nition 2.7.1 Ensembles succ�es� SS(P; a) = fAC(S; a) j S 2 success(a)g� SS(P ) = Sa2ATOMfa C j C 2 SS(P; a)g� SS_(P ) = fa! SS(P; a) j a 2 ATOM; il existe une _-r�eponse au but agRemarque. a! R 2 SS_(P ) si et seulement si R est l'ensemble des stores du _-storesr�eponse pour a.On remarque aussi que R est un ensemble �ni de stores qui peut etre vu comme ladisjonction de ses �el�ements.SS_(P ) est un ensemble d'atomes couverts ; SS(P ) est un ensemble d'atomes contraints.3Soit P 0 le programme qui contient une clause pour chaque r�eponse du programme P . Si S est uner�eponse du programme P alors la clause qui correspond �a S dans P 0 est head (renoS(root (S))) const(S; renoS)2 ", o�u renoS est une fonction de renommage pour S. Le nom de cette clause de P 0peut etre par exemple S.On constate que SS(P ) = SS(P 0). De plus, la multiplicit�e d'un store r�eponse �a un but a dansP et P 0 est identique. En revanche, les _-stores r�eponses ne sont pas les memes (c'est la di��erenceentre l'existence d'un arbre SLD �ni et l'existence d'un nombre �ni de r�eponses). P 0 rend compte dela s�emantique positive de P , mais pas de sa s�emantique n�egative. On pourrait d�e�nir un programmeP 00 �a partir des _-r�eponses du programme P . Alors P 00 rendrait compte de la s�emantique n�egativede P mais pas de sa s�emantique positive.

56 CHAPITRE 2. S�EMANTIQUE OP�ERATIONNELLERemarque. En fait P 0 n'est pas exactement un programme : il peut contenir une in�nit�ede clauses pour la d�e�nition d'un symbole de pr�edicat. Par exemple, son compl�et�e(section 3.1) n'est pas d�e�ni (P 00 serait quant �a lui un programme). 3Si l'on autorise les stores dans les corps de clauses (�a la place des stores purs) alors SS(fa C 2 " j a C 2 SS(P )g) = SS(P ).Exemple 2.7.1 FibonacciL'ensemble SS(FIB) contient, pour tout (x; y) 2 V 2 :go1(x; y) x = 0 ^ y = 0go1(x; y) x = 1 ^ y = 1go1(x; y) x = 1 + 1 + 1 + 1 + 1 ^ y = 1 + 1 + 1 + 1 + 1go2(x; y) x = 1 + 1 ^ y = 1fib(x; y) x = 0 ^ y = 0fib(x; y) x = 1 ^ y = 1fib(x; y) x = 1 + 1 ^ y = 1fib(x; y) x = 1 + 1 + 1 ^ y = 1 + 1fib(x; y) x = 1 + 1 + 1 + 1 ^ y = 1 + 1 + 1fib(x; y) x = 1 + 1 + 1 + 1 + 1 ^ y = 1 + 1 + 1 + 1 + 1: : :L'ensemble SS_(FIB) = fgo2(x; y)! fx = 1 + 1 ^ y = 1g j (x; y) 2 V 2g.

Chapitre 3S�emantique d�eclarativeDu point de vue de l'utilisateur, un programme ne se r�esume pas seulement �a son aspect syntaxique :les contraintes ont une signi�cation sous-entendue. Si le chapitre 2 d�ecrit bien la s�emantique d'unprogramme par rapport �a ce qui est calcul�e par le syst�eme (c'est la s�emantique op�erationnelle), cechapitre pr�esente la s�emantique du programme telle qu'elle est vue par l'utilisateur (c'est la s�eman-tique d�eclarative). Nous d�eveloppons di��erentes s�emantiques d�eclaratives bas�ees sur di��erents sensdonn�es aux contraintes. Nous envisageons le cas o�u le crit�ere de rejet est correct par rapport �a unepr�e-interpr�etation (interpr�etation du langage des contraintes) ou une th�eorie pour les contraintes.Nous terminons en g�en�eralisant les notions de couverture des deux cas pr�ec�edents, par une rela-tion abstraite appel�ee relation de couverture. La relation de couverture qui abstrait les notions decons�equences est le pendant du crit�ere de rejet qui abstrait les notions de satis�abilit�e.Dans ce chapitre, une clause est vue comme une formule du langage du premier ordre construitsur (V;�;�p [�c) : pour la clause a C 2 a1 � � � an, on consid�ere la formule a C ^ a1 ^ � � � ^ an.Pour ne pas alourdir les notations, on confond la formule et la clause.On suppose qu'un programme P est �x�e.3.1 Compl�et�e du programmeNous nous int�eressons dans cette section �a des ensembles de formules qui jouent un role particuli�e-rement important pour la s�emantique d�eclarative des programmes ; notamment quand le crit�ere derejet est correct pour une pr�e-interpr�etation D ou une th�eorie T .Pour tout pr�edicat de programme p 2 �p, on d�e�nitIF(P; p) = a _u2cn(P;p)9�~xu(Cu ^ au1 ^ � � � ^ aunu)o�u pour chaque u 2 cn(P; p) : a Cu2 au1 � � � aunu est un renommage de la clause de nom u et~xu = var (Cu2 au1 � � � aunu) n var (a).Si la d�e�nition de p est vide alors la disjonction est index�ee par ; et se r�esume donc �a l'�el�ementneutre de _ qui est false .Remarque. La formule IF(P; p) est d�e�nie �a un renommage pr�es ; pour lever cetteambigu��t�e on peut imposer des restrictions quant �a la forme des clauses d'un programme :toutes les tetes des clauses d'une meme d�e�nition sont identiques, dans ce cas IF(P; p)se d�e�nit directement �a partir des clauses du programme sans renommage. 357

58 CHAPITRE 3. S�EMANTIQUE D�ECLARATIVEPour tout pr�edicat p 2 �p, on d�e�nit FI(P; p) la formule obtenue en inversant le sens del'implication dans IF(P; p) et on d�e�nit IFF(P; p) = IF(P; p) ^ FI(P; p). IFF(P; p) est obtenu aussien rempla�cant l'implication de IF(P ) par une �equivalence.On d�e�nit, en�n, les trois ensembles de formules :� IF(P ) = fIF(P; p) j p 2 �pg ;� FI(P ) = fFI(P; p) j p 2 �pg ;� IFF(P ) = fIFF(P; p) j p 2 �pg.IFF(P ) est appel�e le compl�et�e du programme P , il est souvent not�e P �. Le compl�et�e du pro-gramme a �et�e d�ecrit �a l'origine dans [17] pour les programmes logiques purs, dans ce cadre, onl'appelle parfois compl�etion de Clark du programme. Notons que nous n'ajoutons pas �a IFF(P ) lesaxiomes de l'�egalit�e de Clark CET (Clark Equality Theory). En e�et, nous n'utilisons pas de pr�e-dicat = suppl�ementaire pour d�e�nir le compl�et�e. Le role jou�e par CET en programmation logiqueest remplac�e ici par une th�eorie des contraintes.Exemple 3.1.1 FibonacciLe compl�et�e du programme FIB est :fib(x; y)$ (x = 0 ^ y = 0) _ (x = 1 ^ y = 1)_9x19y19x29y2(1 < x ^ x = x1 + 1 ^ x1 = x2 + 1 ^ y = y1 + y2^fib(x1; y1) ^ fib(x2; y2))go1(x; y)$ x = y ^ fib(x; y)go2(x; y)$ x = 1 + 1 ^ fib(x; y)Remarque. IF(P ), FI(P ) et IFF(P ) ne sont pas des programmes, ce sont des ensemblesde formules construites sur (V;�;�c [�p). 3Les mod�eles de IF(P ) sont mis en relation avec les ensembles clos de l'op�erateur associ�e auprogramme, les mod�eles de FI(P ) sont mis en relation avec ses ensembles support�es et les mod�elesde IFF(P ) sont mis en relation avec ses points �xes.Nous envisageons plusieurs d�e�nitions d'op�erateur et de s�emantique d�eclarative associ�es auprogramme.3.2 Selon une pr�e-interpr�etation DOn s'int�eresse �a la s�emantique d�eclarative des programmes quand la signi�cation des contraintesest bas�ee sur un domaine (par exemple : les termes, les sous-ensembles �nis de IN, les r�eels, lesensembles, les arbres in�nis, les lambda-termes, les bool�eens, etc.). La s�emantique des contraintesest d�etermin�ee par une pr�e-interpr�etation D, c'est-�a-dire une interpr�etation du langage construitsur (V;�;�c). La satis�abilit�e d'un store est d�etermin�ee par D.On �etudie les mod�eles de IF(P ), FI(P ) et IFF(P ) qui \prolongent" D.Dans la section 3.2.1 on examine le lien entre les \D-cons�equences" du programme et ce qui estcalcul�e par le syst�eme quand le crit�ere de rejet est correct pour D.D�e�nition 3.2.1 Pr�e-interpr�etationUne pr�e-interpr�etation D est constitu�ee :

3.2. SELON UNE PR�E-INTERPR�ETATION D 59� d'un ensemble non vide ID, l'ensemble des �el�ements du domaine ;� pour tout symbole de fonction f d'arit�e n de �, d'une application fD de IDn dans ID ; enparticulier, �a chaque constante f est associ�e un �el�ement fD de ID ;� pour tout symbole de pr�edicat de contrainte p d'arit�e n de �c, d'une relation pD sur IDn ; enparticulier, si n = 0 alors D associe �a p une valeur de v�erit�e de l'ensemble ftrue; falseg.On remarque que D ne pr�ecise pas l'interpr�etation des symboles de pr�edicat de programme,c'est pourquoi on l'appelle pr�e-interpr�etation ou interpr�etation des contraintes. Le domaine IDd'une pr�e-interpr�etation D est appel�e domaine de contraintes.Cependant, pour l'interpr�etation des pr�edicats de programme, on consid�ere des \pseudo-atomes"appel�es D-atomes (ou atomes valu�es) qui sont des n+ 1-uplets de la forme hp; d1; : : : ; dni, o�u p estun symbole de pr�edicat de programme de �p d'arit�e n et les di sont des �el�ements du domaine ID.Pour des raisons �evidentes, un D-atome est not�e p(d1; : : : ; dn).On appelle D-base l'ensemble de tous les D-atomes, c'est-�a-dire, l'ensemble Sn2IN �p;n � IDn,o�u �p;n est le sous-ensemble de �p des symboles de pr�edicat d'arit�e n.Exemple 3.2.1 FibonacciUne pr�e-interpr�etation pour le programme FIB est N , dont le domaine est IN, o�u 0N et 1N sont lesentiers 0 et 1, +N est l'addition usuelle, <N et =N sont respectivement la relation d'ordre usuelleet l'�egalit�e dans IN.fib(3; 7) est un N -atome et la N -base est l'ensemble ffib(n1; n2) j (n1; n2) 2 IN2g [ fgo1(n1; n2) j(n1; n2) 2 IN2g [ fgo2(n1; n2) j (n1; n2) 2 IN2g.D�e�nition 3.2.2 D-clauseUne D-clause est un triplet aD z2AD, o�u aD est un D-atome, z 2 ftrue ; falseg est une valeurde v�erit�e et AD est une suite �nie de D-atomes.Exemple 3.2.2 FibonacciPar exemple, fib(2; 1) true 2 fib(1; 1)fib(0; 0), fib(2; 10) false 2 fib(1; 2)go1(2; 2)go2(4; 1) etfib(2; 10) true 2 fib(1; 1)fib(0; 0) sont des N -clauses.D�e�nition 3.2.3 ValuationUne valuation v est une application de V dans ID qui s'�etend naturellement en une application vD :� des termes vers ID :{ vD(t) = v(t) si t est une variable,{ vD(t) = fD(vD(t1); : : : ; vD(tn)) si t est le terme f(t1; : : : ; tn) ;� des contraintes atomiques vers ftrue; falseg : vD(p(t1; : : : ; tn)) = pD(vD(t1); : : : ; vD(tn)), o�up d'arit�e n est un �el�ement de �c et les ti sont des termes ; qui s'�etend elle-meme en uneapplication des stores vers ftrue ; falseg ;� des atomes vers la D-base : vD(p(t1; : : : ; tn)) = p(vD(t1); : : : ; vD(tn)), o�u p 2 �p est d'arit�e net les ti sont des termes ;� des clauses vers les D-clauses : vD(a C 2 a1 � � � an) = vD(a) vD(C)2 vD(a1) � � � vD(an).

60 CHAPITRE 3. S�EMANTIQUE D�ECLARATIVEUn store C est satis�able s'il existe une valuation v telle que vD(C) = true. Dans ce cas, on ditque v est une solution de C.D�e�nition 3.2.4 Interpr�etation dans IDUne interpr�etation I dans ID qui prolonge D associe �a tout symbole de pr�edicat de programme p de�p, d'arit�e n, une relation pI sur IDn.D�e�nition 3.2.5 D-interpr�etationUne D-interpr�etation I est une partie de la D-base.On peut identi�er toute D-interpr�etation I �a une interpr�etation dans ID qui prolonge D carelle d�e�nit pour tout p 2 �p, d'arit�e n, la relation pI d'arit�e n : f(d1; : : : ; dn) j p(d1; : : : ; dn) 2 Ig.Inversement, de toute interpr�etation I dans ID, on d�eduit la D-interpr�etation fp(d1; : : : ; dn) j p 2�p; (d1; : : : ; dn) 2 pIg.�Etant donn�e une D-interpr�etation I, toute valuation v s'�etend en une application vI :� des termes vers ID : vI(t) = vD(t) ;� des stores vers ftrue; falseg : vI(C) = vD(C) ;� des atomes vers ftrue; falseg : vI(a) = true si et seulement si vD(a) 2 I ;� des clauses vers ftrue ; falseg : vI(a C 2 a1 � � � an) = true si et seulement si l'implicationvI(C) ^ vI(a1) ^ � � � ^ vI(an)! vI(a) est vraie.Une D-interpr�etation I est mod�ele de la clause a C 2A si pour toute valuation v dans ID :vI(a C 2A) = true.Pour toute expression E du langage, E est satis�able dans l'interpr�etation I, s'il existe unevaluation v telle que vI(E) = true. Dans ce cas, on dit que v est solution de E (dans l'interpr�etationI).D�e�nition 3.2.6 D-mod�ele d'un programmeUn D-mod�ele du programme P est une D-interpr�etation I mod�ele de chacune des clauses de P .Exemple 3.2.3 FibonacciLa N -interpr�etationI1 = fgo1(0; 0); go1(1; 1); go1(5; 5); go2(2; 1)g [ffib(0; 0); f ib(1; 1); f ib(2; 1); f ib(3; 2); f ib(4; 3); f ib(5; 5); : : :g(i.e. l'ensemble des fib(n1; n2) tel que n2 est l'image de n1 par la fonction de Fibonacci) est unN -mod�ele du programme.I2 = fgo1(n1; n2) j fib(n1; n2) 2 I1g [ I1 est aussi un N -mod�ele du programme.Toute N -interpr�etation qui ne contient pas I1 n'est pas N -mod�ele du programme.Remarque. Pour tout programme P , pour toute pr�e-interpr�etation D, la D-base enti�ereest un D-mod�ele de P . 3On remarque qu'une pr�e-interpr�etation D partitionne en deux l'ensemble des D-clauses : cellespour lesquelles le store a pris la valeur true et celles pour lesquelles il a pris la valeur false. SoitvD(a C 2A) une D-clause et I une D-interpr�etation

3.2. SELON UNE PR�E-INTERPR�ETATION D 61� si vD(C) = false alors vI(a C 2A) = true ;� si vD(C) = true alors vI(a C 2A) = true si et seulement si fvD(ai) j ai 2 Ag � I impliquevD(a) 2 I.On remarque que si vD(C) = false, pour toute valuation v, alors toute D-interpr�etation I est unD-mod�ele de a C 2A.On appelle D-r�egle une paire, not�ee a A, o�u a est un D-atome et A est une suite �nie deD-atomes. Les D-r�egles sont des r�egles sur la D-base au sens de la section 1.2.1.�A tout programme on va associer un ensemble de D-r�egles. Cet ensemble d�etermine la s�eman-tique d�eclarative point �xe selon D du programme. Nous �etudions le lien entre cette s�emantique etla s�emantique logique selon D donn�ee par les D-mod�eles de IF(P ) (ou FI(P ) ou IFF(P )).D�e�nition 3.2.7 Syst�eme de D-r�egles associ�e �a une clauseLe syst�eme de D-r�egles associ�e �a une clause a C 2 a1 � � � an est �(D; a C 2 a1 � � � an) =fvD(a) vD(a1) � � � vD(an) j vD(C) = trueg.Remarque. Une D-interpr�etation I est mod�ele de la clause R si et seulement si I estclose par T�(D;R). 3D�e�nition 3.2.8 Syst�eme de D-r�egles associ�e �a un programmeLe syst�eme de D-r�egles associ�e �a un programme P est �(D; P ) = SR2P �(D; R).Son op�erateur associ�e T�(D;P ) sera not�e TDP .Lemme 3.2.9 Une D-interpr�etation I est mod�ele de P si et seulement si I est close par TDP .Preuve. Cons�equence de la remarque pr�ec�edente et de TDP (I) = SR2P T�(D;R)(I).Lemme 3.2.10 Le programme P a un plus petit D-mod�ele qui est pppf (TDP ).Preuve. Les D-mod�eles de P sont les ensembles clos par TDP .On a utilis�e ici directement les r�esultats de la section 1.2 sur les d�e�nitions inductives.Exemple 3.2.4 FibonacciLe syst�eme de N -r�egles associ�e au programme FIB estffib(0; 0) "; fib(1; 1) "g [ffib(n1; n2) fib(n3; n4)fib(n5; n6) j (n1; n2; n3; n4; n5; n6) 2 IN6;n1 > 1; n1 = n3 + 1; n1 = n5 + 2; n2 = n4 + n6g [fgo1(n; n) fib(n; n) j n 2 INg [fgo2(2; n) fib(2; n) j n 2 INgPar exemple, il contient la N -r�egle fib(2; 10) fib(1; 4)fib(0; 6).Le plus petit N -mod�ele de �(N ;FIB) est l'interpr�etation I1 de l'exemple 3.2.3.Lemme 3.2.11 La D-interpr�etation I est mod�ele de IF(P ) si et seulement si I est mod�ele de P .

62 CHAPITRE 3. S�EMANTIQUE D�ECLARATIVEPreuve. Ici, P est vu comme un ensemble de formules. Les formules de P peuvent seregrouper par paquets de clauses (l'ensemble des clauses de la d�e�nitions d'un pr�edi-cat de programme p). Chaque paquet peut s'identi�er �a une conjonction de la formeVu2cn(P;p)(a Cu2Au) (en renommant correctement les clauses du paquet). Chaqueconjonction Vu2cn(P;p)(a Cu2Au) est logiquement �equivalente �a a Wu2cn(P;p)(Cu2Au)qui est logiquement �equivalente �a a Wu2cn(P;p) 9�var(a)(Cu2Au), i.e. �a IF(P; p).Corollaire 3.2.12 Les propositions suivantes sont �equivalentes :1. I est D-mod�ele de P ;2. I est D-mod�ele de IF(P ) ;3. I est close par TDP .Une formule F est une D-cons�equence du programme P , not�e P j=D F , si F est vraie dans tousles D-mod�eles de P . C'est-�a-dire, pour tout D-mod�ele I, pour toute valuation v, vI(F ) = true.On note, plus g�en�eralement, E j=D F si F est vraie dans tout D-mod�ele de E.Corollaire 3.2.13 Le plus petit D-mod�ele de IF(P ) est pppf (TDP ) qui est aussi le plus petit I telque TDP (I) � I.Pour tout atome a, P j=D a si et seulement si, pour toute valuation v, vD(a) 2 pppf (TDP ).Le plus grand D-mod�ele de IF(P ) est la D-base. En revanche, le plus grand D-mod�ele de FI(P )(nous montrons qu'il est toujours d�e�ni) est tr�es int�eressant. �Etudions maintenant les D-mod�elesde FI(P ).Lemme 3.2.14 I est un D-mod�ele de FI(P ) si et seulement si I est support�e par TDP .Preuve. On reprend les notations de la section 3.1 pour FI(P ).� Soit I un D-mod�ele de FI(P ). Montrons que pour tout D-atome p(d1; : : : ; dn) : sip(d1; : : : ; dn) 2 I alors p(d1; : : : ; dn) 2 TDP (I).I est D-mod�ele de FI(P; p) = p(x1; : : : ; xn) ! Wu2cn(P;p)(9�~xu(Cu ^ au1 ^ � � � ^aunu), donc, pour toute valuation v tel que vD(p(x1; : : : ; xn)) = p(d1; : : : ; dn) 2I, il existe u 2 cn(P; p) tel que vI(9�~xu(Cu ^ au1 ^ � � � ^ aunu)) = true, donc ilexiste une valuation v0 tel que v0(xi) = v(xi) et v0I(Cu ^ au1 ^ � � � ^ aunu) = true.Par cons�equent : d'une part, tous les v0D(aui ) sont dans I, d'autre part, la D-r�eglev0D(p(x1; : : : ; xn)) v0D(au1) � � � v0D(aunu) appartient �a �(D; P ) (v0D(Cu) = true). Onen d�eduit que v0D(p(x1; : : : ; xn)) = p(d1; : : : ; dn) est dans TDP (I).� Soit I support�e par TDP . Montrons que I est D-mod�ele de FI(P ), i.e., pour toutp 2 �p, I est D-mod�ele de FI(P; p) = p(x1; : : : ; xn) ! Wu2cn(P;p)(9�~xu(Cu ^ au1 ^� � � ^ aunu).Pour toute valuation v :{ soit vD(p(x1; : : : ; xn)) 62 I. Alors FI(P; p) est trivialement satisfaite par v ;{ soit vD(p(x1; : : : ; xn)) 2 I. Alors vD(p(x1; : : : ; xn)) 2 TDP (I), donc, il existe uneD-r�egle issue de clause(u), u 2 cn((; P ); p) : v0D(p(x1; : : : ; xn)) v0D(au1 ) � � � v0D(aunu) 2�(D; P ) telle que v0D(p(x1; : : : ; xn)) = vD(p(x1; : : : ; xn)) et fv0D(au1); : : : ; v0D(aunu)g �I. On peut de plus choisir v0 telle que v0D(Cu) = true. Donc FI(P; p) est satis-faite par v0.

3.2. SELON UNE PR�E-INTERPR�ETATION D 63Par cons�equent si I est support�e par TDP alors I est D-mod�ele de chaque FI(P; p)donc de FI(P ).Corollaire 3.2.15 FI(P ) a un plus grand D-mod�ele qui est pgpf (TDP ), c'est aussi le plus grand Itel que TDP (I) � I.Remarque. Le plus petit D-mod�ele de FI(P ) est ;. 3Nous avons caract�eris�e les D-mod�eles de IF(P ) et FI(P ) en termes d'ensemble clos ou support�epar TDP . Comme, pour tout p 2 �P , IFF(P; p) = IF(P; p) ^ FI(P; p), on peut caract�eriser les D-mod�eles de IFF(P ) par l'intersection de l'ensemble des D-mod�eles de IF(P ) avec l'ensemble desD-mod�eles de FI(P ).Lemme 3.2.16 I est un D-mod�ele de IFF(P ) si et seulement si I est un point �xe de TDP .Preuve. IFF(P ) est �equivalent �a IF(P ) [ FI(P ). Donc I est un D-mod�ele de IFF(P )s'il est �a la fois D-mod�ele de IF(P ) et de FI(P ), i.e. si I est clos par TDP et support�e parTDP , i.e. si TDP (I) = I, en d'autres termes si I est un point �xe de TDP .Le raisonnement inverse montre que si I est un point �xe de TDP alors I est un D-mod�elede IFF(P ).Corollaire 3.2.17 Pour toute pr�e-interpr�etation D :1. tout D-mod�ele de IFF(P ) (le compl�et�e de P ) est :(a) un D-mod�ele de P ,(b) un D-mod�ele de IF(P ),(c) un D-mod�ele de FI(P ) ;2. le plus petit D-mod�ele de IFF(P ) est le plus petit D-mod�ele de IF(P ) (ou de P ) ;3. le plus grand D-mod�ele de IFF(P ) est le plus grand D-mod�ele de FI(P ).Lemme 3.2.18 Pour tout atome a, P j=D ~9a si et seulement si IFF(P ) j=D ~9a.Preuve. P et IFF(P ) ont le meme plus petit D-mod�ele.3.2.1 Lien avec la s�emantique op�erationnelleVoyons le lien entre la s�emantique d�eclarative selon D d'un programme P et la s�emantique op�era-tionnelle de P .D�e�nition 3.2.19 Crit�ere de rejet correct/complet pour une pr�e-interpr�etationUn crit�ere de rejet RC est correct pour la pr�e-interpr�etation D si, pour tout store C : C 2 RCimplique que C est insatis�able dans D.Il est complet si l'implication inverse est vraie.Remarque. Le crit�ere de rejet RCD est correct pour D. Il est meme complet.Le crit�ere de rejet ; est correct pour toute pr�e-interpr�etation D. 3

64 CHAPITRE 3. S�EMANTIQUE D�ECLARATIVEOn suppose, jusqu'�a la �n de cette section, que le crit�ere de rejet RC est correct pour la pr�e-interpr�etation D.Remarque. Le cas RC = RCD n'est qu'un cas particulier, c'est celui qui correspond auxd�e�nitions plus classiques de [54, 65, 47, 55, 39] sur lesquelles nous reviendrons. 3Un D-arbre de preuve est un arbre de preuve (orient�e et �etiquet�e par la D-base) pour �(D; P ).Un1D-arbre de preuve est un1-arbre de preuve pour �(D; P ). Si A est un (1)D-arbre de preuve,on note domA son domaine d'arbre et labA sa fonction d'�etiquetage.Tout (1)D-arbre de preuve utilise, pour \prouver" sa racine, des D-r�egles de �(D; P ). CesD-r�egles sont issues des clauses du programme P .Nous allons maintenant d�e�nir une correspondance entre les D-arbres de preuve et les squelettesr�eponses. Cette correspondance explique la terminologie squelette. Les r�eponses sont les squelettesdes preuves dans le syst�eme �(D; P ).On peut voir un D-arbre de preuve comme une \r�eponse valu�ee".En e�et, soit S une r�eponse, renoS une fonction de renommage pour S et v une valuation tellesque vD(const(S; renoS)) = true. On note pt(S; renoS ; v) l'arbre orient�e sur le domaine d'arbredomS , �etiquet�e par la D-base, d�e�ni par :� pt(S; renoS ; v) et S ne di��erent que par leur fonction d'�etiquetage ;� pour tout n�ud NS de domS : si renoS(NS) = a C 2 a1 � � � an alors labpt(S;renoS ;v)(NS) =vD(a).Lemme 3.2.20 Si S est une r�eponse et renoS une fonction de renommage pour S alors, pour toutevaluation v telle que vD(const(S; renoS)) = true, pt(S; renoS ; v) est un D-arbre de preuve.Preuve. Par induction sur les r�eponses.Inversement, on peut voir une r�eponse comme le \squelette d'un D-arbre de preuve".En e�et, soit A un D-arbre de preuve. On note sk(A) l'arbre orient�e sur le domaine d'arbredomA, �etiquet�e par des noms de clauses, d�e�ni par :� A et sk(A) ne di��erent que par leur fonction d'�etiquetage ;� pour tout n�ud NA de domA : si u est le nom de la clause d'o�u est issue la D-r�egle qui relielabA(NA) aux �etiquettes de ses �ls alors labsk(A)(NA) = u.Lemme 3.2.21 Si A est un D-arbre de preuve alors sk(A) est une r�eponse.De plus, pour toute fonction de renommage renosk(A), il existe une valuation v telle quevD(const(S; renosk(A))) = true (i.e. sk(A) est une r�eponse selon RCD).Preuve. Par induction sur les arbres de preuves.Exemple 3.2.5 FibonacciLa �gure 3.1 pr�esente un N -arbre de preuve qui correspond �a la r�eponse S2 de la �gure 2.10.La �gure 3.2 pr�esente une 1N -arbre de preuve qui correspond au squelette S1 de la �gure 2.11.

3.2. SELON UNE PR�E-INTERPR�ETATION D 65PPPPPPPPP��������������� HHHHHH ����� QQQQQ����� QQQQQ�� @@ �� @@ �� @@

go1(5; 5)fib(5; 5)fib(4; 3) fib(3; 2)fib(2; 1)fib(3; 2) fib(2; 1) fib(1; 1)fib(2; 1) fib(1; 1)fib(1; 1)fib(0; 0) fib(0; 0)fib(1; 1)fib(0; 0)fib(1; 1)Figure 3.1 : N -arbre de preuve pour �(N ;FIB)p(10)p(11)p(12)p(n)

Figure 3.2 : 1N -arbre de preuveLa correspondance entre les r�eponses et les D-arbres de preuve permet de montrer le lien entrepppf (TDP ) et SS(P ).Soit X un ensemble d'atomes contraints. On note [X]D = fvD(a) j il existe a C 2 X; vD(C) =trueg.Lemme 3.2.22 pppf (TDP ) = [SS(P )]D.Preuve.� Soit p(d1; : : : ; dn) 2 pppf (TDP ). Donc p(d1; : : : ; dn) est racine d'un D-arbre de preuveA, sk(A) est une r�eponse et il existe v solution de AC(sk (A); p(x1; : : : ; xn)) telleque vD(p(x1; : : : ; xn)) = p(d1; : : : ; dn). Donc p(d1; : : : ; dn) 2 [SS(P )]D.� Soit p(d1; : : : ; dn) 2 [SS(P )]D. Donc il existe p(x1; : : : ; xn) C 2 SS(P ) et il existe vtels que vD(C) = true et vD(p(x1; : : : ; xn)) = p(d1; : : : ; dn). C est un store r�eponse

66 CHAPITRE 3. S�EMANTIQUE D�ECLARATIVEpour p(x1; : : : ; xn) donc il existe une r�eponse S pour p et une fonction de renom-mage renoS pour S et p(x1; : : : ; xn) telles que 9fx1;:::;xngconst(S; renoS) = C.D'apr�es le lemme 3.2.20, pt(S; renoS ; v) est un D-arbre de preuve, donc l'�etiquettede sa racine p(d1; : : : ; dn) 2 pppf (TDP ).Lemme 3.2.23 Si C est un store r�eponse pour le but a alors P j=D C ! a.Preuve. Par induction sur les r�eponses.Remarque. La r�eciproque du lemme 3.2.23 est en g�en�eral fausse (voir l'exemple 3.2.6).3Exemple 3.2.6 Couverture des r�eponses en CLP(R)Soit le programme P , en CLP(R) : p(x) x < 02 "p(x) x = 02 "p(x) x > 02 "La pr�e-interpr�etation R a pour domaine IR et interpr�ete de fa�con usuelle les symboles de pr�edicatsde contrainte <, = et >. Supposons que le langage contienne la contrainte atomique > interpr�et�eepar la valeur de v�erit�e true. Le but p(x) admet trois r�eponses auxquelles correspondent les troisstores r�eponses : x < 0, x = 0 et x > 0.P j=R > ! p(x) car, pour toute valuation v, vD(p(x)) 2 pppf (TDP ) (l'ensemble de D-r�egles est :fp(d) " j d 2 IRg). Pourtant > n'est pas une contrainte r�eponse pour le but p(x).Cependant : j=R > ! x < 0 _ x = 0 _ x > 0.Il existe n�eanmoins une r�eciproque plus faible du lemme 3.2.23. Pour �enoncer cette r�eciproquenous introduisons la notion de couverture.D�e�nition 3.2.24 Couverture dans une pr�e-interpr�etationSoit C un store et fCigi2I une famille �eventuellement in�nie de stores. On note j=D C ! fCigi2I ,qui se lit C est couvert par fCigi2I dans D, la relation : pour toute valuation v solution de C ilexiste i 2 I tel que v soit solution de Ci.Remarquons que si I est �ni alors j=D C ! fCigi2I se ram�ene �a j=D C ! Wi2I Ci.Lemme 3.2.25 Pour tout atome a et tout store C, si P j=D C ! a alors j=D C ! SS(P; a).Preuve. Si P j=D C ! a alors pour toute valuation v solution de C, vD(a) 2 pppf (TDP )donc il existe un D-arbre de preuve A de racine vD(a), donc sk(A) est une r�eponse pour a et v est solution de AC(S; a).Remarque. La r�eciproque du lemme 3.2.25 est cette fois trivialement vraie en utilisantle lemme 3.2.23. 3Remarque. Il n'existe pas toujours de couverture �nie si l'ensemble des r�eponses pourle but est in�ni, contrairement au lemme 3.3.14 o�u D est remplac�ee par une th�eorie T .3

3.2. SELON UNE PR�E-INTERPR�ETATION D 67Exemple 3.2.7 Couverture in�nie en CLP(N )Soit le programme P , en CLP(N ) : p(x) x = 02 "p(x) x = y + 12 p(y)Le domaine est IN avec l'interpr�etation habituelle pour les symboles de fonction et les pr�edicats decontraintes.Le but p(x) admet l'in�nit�e de contraintes r�eponses :C0 : x = 0C1 : 9x1(x = x1 + 1 ^ x1 = 0)� � � � � �Ci : 9x1 � � � 9xi(x = x1 + 1 ^ � � � ^ xi�1 = xi + 1 ^ xi = 0)� � � � � �Une valuation v est solution de Ci si et seulement si v(x) = i.Il est facile de voir que P j=N > ! p(x), o�u > est interpr�et�e par true, puisque pppf (TNP ) = fp(i) ji 2 INg. N�eanmoins, > n'est pas couverte dans N par une partie �nie de fCigi2IN : pour toute partie�nie il existe une valuation v solution d'aucun store de la partie �nie.Jusqu'ici nous nous sommes int�eress�es aux D-cons�equences positives (c'est-�a-dire aux \atomescontraints calcul�es") de IF(P ) et de IFF(P ). Int�eressons-nous aux D-cons�equences n�egatives (c'est-�a-dire aux \atomes couverts calcul�es"). Nous pouvons d�ej�a remarquer que IF(P ) n'a pas de D-cons�equences n�egatives car la D-base est toujours un D-mod�ele de IF(P ). Du point de vue dualFI(P ) permet d'�etudier les D-cons�equences n�egatives. Remarquons que FI(P ) n'a pas de D-cons�e-quences positives : ; est toujours un D-mod�ele de FI(P ).On utilise la terminologie \D-cons�equences n�egatives" car la contrapos�ee d'un atome couvertfait intervenir une n�egation. Mais, on pr�ef�ere les exprimer sous la forme d'atomes couverts a�n derester dans le langage des contraintes (on pr�ef�ere consid�erer un ensemble de stores plutot qu'uneconjonction de n�egation de stores).On exprime le lien entre FI(P ) et la s�emantique op�erationnelle au sens de ce qui est calcul�e.Lemme 3.2.26 S'il existe un arbre SLD �ni pour a alors FI(P ) j=D a! SS(P; a).Preuve. Soit a un but pour lequel il existe un arbre SLD �ni.Supposons que non(FI(P ) j=D a ! SS(P; a)). Donc il existe un D-mod�ele I de FI(P )et une valuation v tels que vI(a) = true et, pour tout C 2 SS(P; a), vI(C) = false.Comme vD(a) 2 I alors vD(a) 2 pgpf (TDP ) qui est le plus grand D-mod�ele de FI(P ).Donc il existe un 1D-arbre de preuve enracin�e par vD(a). Il lui correspond, commedans le lemme 3.2.21, un �etat complet S tel que pour toute fonction de renommagerenoS pour S, il existe une valuation v0, v0D(a) = vD(a), v0 est solution de toute partie�nie de const(S; renoS). Si l'�etat complet S est in�ni alors dans tout arbre SLD il luicorrespond une branche in�nie (lemme 2.5.12 et contrapos�ee du lemme 2.5.14). D'o�u lacontradiction par hypoth�ese, il existe un arbre SLD �ni pour a. Donc S est �ni, vest solution de AC(S; a) et AC(S; a) 2 SS(P; a).Notons que la r�eciproque du lemme 3.2.26 est en g�en�eral fausse (voir l'exemple 3.2.8).

68 CHAPITRE 3. S�EMANTIQUE D�ECLARATIVERemarque. Dans la preuve pr�ec�edente, nous avons fait correspondre �a tout1D-arbre depreuve un �etat complet comme dans le lemme 3.2.21. La correspondance est �evidente etne n�ecessite pas de preuve. Mais, la correspondance inverse, comme dans le lemme 3.2.20est plus subtile. En e�et, �a tout �etat complet et �a toute valuation solution de sonensemble de contraintes associ�e on peut faire correspondre un 1D-arbre de preuveparce que la d�e�nition fait intervenir une valuation. En revanche, il se peut qu'aucunevaluation ne soit solution de l'ensemble de contrainte associ�e �a un �etat in�ni. 3Corollaire 3.2.27 S'il existe un arbre SLD �ni pour a alors FI(P ) j=D a! WC2SS(P;a)C.Preuve. S'il existe un arbre SLD �ni pour a alors SS(P; a) est �ni.Corollaire 3.2.28 S`il existe un arbre SLD d'�echec �ni pour a alors FI(P ) j=D :a.Preuve. C'est le cas particulier SS(P; a) = ;.En programmation logique, le corollaire pr�ec�edent exprime la correction de la n�egation parl'�echec.Dans le cadre de la programmation logique, le lemme 3.2.26, qui s'exprime facilement, est bienplus int�eressant.La r�eciproque du lemme 3.2.26 est en g�en�eral fausse, comme le montre le contre exemple suivantde la r�eciproque du corollaire 3.2.1 :Exemple 3.2.8 D-cons�equences n�egatives du compl�et�eConsid�erons le programme de l'exemple 3.2.7 auquel on a retir�e la premi�ere clause. Soit P leprogramme en CLP(N ) : p(x) x = y + 12 p(y)Son compl�et�e est : IFF(P ) = p(x)$ 9y(x = y + 1 ^ p(y)). Il est tel que IFF(P ) j=N :p(x).Preuve. Supposons que 9x p(x) soit une N -cons�equence de IFF(P ), donc il existe unN -mod�ele I de IFF(P ) et une valuation v tels que vN (p(x)) 2 I. Or, I est une N -mod�ele de la clause p(x) x = y + 12 p(y), donc vI(9y(x = y + 1 ^ p(y))) = true ;donc pN (vN (y)) 2 I. En it�erant le processus, on construit une suite in�nie d�ecroissanted'entiers de IN, ce qui est bien entendu impossible. Donc, :p(x) est une N -cons�equencede IFF(P ).Pourtant le but p(x) n'admet pas d'arbre SLD �ni. L'arbre SLD pour ce but est ind�ependantde la r�egle de calcul, puisque l'unique clause de P est d'arit�e 1, et cet arbre a une seule branchequi est in�nie.On exprime en�n le corollaire qui �etablit le lien entre la s�emantique d�eclarative du programmeet sa s�emantique op�erationnelle pour la partie positive et la partie n�egative dans un meme �enonc�e.Corollaire 3.2.29 S'il existe un arbre SLD �ni pour le but a alors IFF(P ) j=D a$ SS(P; a).Preuve. Soit a un but pour lequel il existe un arbre SLD �ni.Le lemme 3.2.26 assure que FI(P ) j=D a ! SS(P; a). Le lemme 3.2.23 assure queIF(P ) j=D a C, pour tout C 2 SS(P; a). SS(P; a) est �ni donc IF(P ) j=D a SS(P; a). Du corollaire 3.2.17 on d�eduit IFF(P ) j=D a$ SS(P; a).

3.2. SELON UNE PR�E-INTERPR�ETATION D 69Nous donnons maintenant une d�e�nition compl�ementaire en relation avec la s�emantique op�era-tionnelle. C'est la d�e�nition de l'ensemble d'�echec �ni. Cette d�e�nition n'a pas �et�e plac�ee dans lechapitre 2 car elle n'est utile que pour le lemme 3.2.33.Comme on ne s'int�eresse qu'aux buts atomiques, on ne peut d�e�nir l'ensemble d'�echecs �niscomme l'ensemble des atomes pour lesquels il existe un arbre SLD d'�echec �ni. Cette notion estbien trop pauvre. Nous le d�e�nissons comme un ensemble d'atomes contraints.D�e�nition 3.2.30 Ensemble d'�echec �niFF(P ) = fa C j il existe n 2 IN, tout �etat S pour a ayant ses feuilles ind�e�nies �a la profondeurn est tel que C ^AC(S; a) 2 RCgComme nous l'avons d�ej�a pr�ecis�e, l'ensemble d'�echec �ni ne joue pas un role tr�es important. Iln'est utile que pour l'�enonc�e du lemme 3.2.33.Remarque. On peut remarquer que si a C 2 FF(P ) alors, si on ajoute la clausep C 2 a au programme P (o�u p est un pr�edicat de programme qui n'appara�t pasdans l'ensemble �p d'origine), il existe un arbre SLD d'�echec �ni pour le but p.On remarque aussi que pour tout atome a et tout store C il existe un arbre SLDd'�echec �ni pour le but p dans le programme P augment�e de la clause p C 2 a siet seulement si a C 2 FF(P ).En�n, nous aurions pu noter un �el�ement a C de FF(P ) sous la forme :(a2C), maisnous tenons �a conserver un ensemble de meme nature que ceux manipul�es par TPD . 3Exemple 3.2.9 FibonacciL'ensemble FF(FIB) contient par exemple fib(x; y) x = 1 + 1 + 1 ^ y = 1 + 1 + 1. Mais il necontient pas go1(x; y) x > 1 + 1 + 1 + 1 + 1.Int�eressons nous maintenant au lien entre le plus grand point �xe de l'op�erateur TDP et l'ensembledes �echecs �nis.Soit C un store et fCigi2I une famille de stores. On �ecrit j=D C $ fCigi2I pour exprimer que :� pour toute valuation v solution de C, il existe i 2 I tel que v soit solution de Ci ;� pour tout i 2 I, pour toute valuation v solution de Ci, v est solution de C.C'est-�a-dire :� j=D C ! fCigi2I ;� pour tout i 2 I, j=D Ci ! fCg.Remarque. Si I est �ni alors j=D C $ fCigi2I est �equivalent �a j=D C $ Wi2I Ci. 3D�e�nition 3.2.31 Langage des contraintes compact pour les solutionsLe langage des contraintes CONST est compact pour les solutions selon la pr�e-interpr�etation D sipour tout store C il existe un ensemble de stores fCigi2I tel que j=D :C $ fCigi2I .La notion de compacit�e des solutions a �et�e d�e�nie dans [54]. Conform�ement �a [64, 55] nousn'utilisons que la partie SC2.Nous avons traduit le terme anglais \solution compact" par compacit�e des solutions. Cependant,la notion de compacit�e intervenant dans cette d�e�nition n'est pas tr�es claire.On peut remarquer qu'il n'y a pas de langage de contraintes raisonnable et utilis�e qui ne soitpas compact pour les solutions dans la pr�e-interpr�etation sous-jacente.

70 CHAPITRE 3. S�EMANTIQUE D�ECLARATIVED�e�nition 3.2.32 D-arbre de preuve partiel �a la profondeur nUn D-arbre de preuve partiel �a la profondeur n 2 IN est un arbre de profondeur n d�e�ni comme unD-arbre de preuve except�e que ses feuilles de profondeur n ne sont pas n�ecessairement �etiquet�eespar des conclusions de r�egles de �(D; P ) dont l'ensemble des pr�emisses est ;.Comme pour le lemme 3.2.20 et le lemme 3.2.21 il existe une correspondance �evidente entreles D-arbres de preuve partiels �a la profondeur n et les �etats de profondeur n qui ont toutes leursfeuilles ind�e�nies �a la profondeur n.Lemme 3.2.33 Soient D une pr�e-interpr�etation.Si le langage des contraintes est compact pour les solutions selon la pr�e-interpr�etation D alors[FF(P )]D = TPD # !Preuve. Seule la partie � utilise la compacit�e des solutions.� Soit a C 2 FF(P ). Donc pour store r�eponse C 0 au but a, C^C 0 2 RC. Soit v unesolution de C. Supposons que vD(a) 2 TPD # !. Donc pour tout n 2 IN, il existe unD-arbre de preuve An partiel �a la profondeur n enracin�e par vD(a). Au D-arbre depreuve partiel An, on peut faire correspondre (en adaptant la d�e�nition qui pr�ec�edele lemme 3.2.21) un �etat Sn dont les feuilles ind�e�nies sont �a la profondeur n. Deplus, il existe une solution v0 de AC(Sn; a) telle que v0D(a) = vD(a). Comme v0 neconcerne que les variables de a, on peut prendre v. Comme a C 2 FF(P ) alorsil existe n0 2 IN tel que tout �etat S0 qui a ses feuilles ind�e�nies �a une profondeurn0 est soit une r�eponse, soit tel que C ^ AC(S0; a) 2 RC. Comme RC est correctpour D, cela contredit l'hypoth�ese.� Soit p(d1; : : : ; dn) 2 TPD # !. Il existe n0 2 IN tel que p(d1; : : : ; dn) 62 TPD # n0.Donc p(d1; : : : ; dn) n'enracine aucun D-arbre de preuve partiel �a la profondeur n0.Soit fSigi2f1;:::;mg l'ensemble des �etats pour p ayant leurs feuilles ind�e�nies �a laprofondeur n0. Pour tout i = 1; : : : ;m, si v est solution de AC(Si; p(x1; : : : ; xn))alors vD(p(x1; : : : ; xn)) 6= p(d1; : : : ; dn), sinon on d�eduirait de Si (en adaptant lad�e�nition qui pr�ec�ede le lemme 3.2.20) un D-arbre de preuve partiel �a la profondeurn0 enracin�e par p(d1; : : : ; dn).� Si m = 0 alors, d'apr�es les d�e�nitions, p(d1; : : : ; dn) 2 [FF(P )]D.� Sinon, pour tout i = 1; : : : ;m, il existe une famille de stores fCi;jgj2Ji telleque j=D :AC(Si; p(x1; : : : ; xn)) $ fCi;jgj2Ji . Soit v une valuation telle quevD(p(x1; : : : ; xn)) = p(d1; : : : ; dn). Donc il existe j 2 Ji tel que vD(Ci;j) = true.Pour chaque i = 1; : : : ;m, on choisit un tel store Ci;j, not�ee C 0i. AC(Si; p(x1; : : : ; xn))^C 0i n'a pas de solution puisque j=D C 0i ! :AC(Si; p(x1; : : : ; xn)). Soit f�igi2f1;:::;mgune famille de renommage tel que pour tout j 6= j0, var (C 0j�j)\ var (C 0j0�j0) �fx1; : : : ; xng, et pour tout k = 1; : : : ; n, xk�j = xk�j0 = xk. Donc C =Vi=1;:::;mC 0i�i a une solution v0 telle que v0D(p(x1; : : : ; xn)) = p(d1; : : : ; dn).Donc, on constate que p(x1; : : : ; xn) C 2 FF(P ).Alors p(d1; : : : ; dn) 2 [FF(P )]D.Exemple 3.2.10 Langage non compact pour les solutionsConsid�erons un langage de contraintes qui contient uniquement les contraintes basiques de l'en-semble : fx = a j x 2 V g [ fx = b j x 2 V g.Soit D une pr�e-interpr�etation telle que

3.2. SELON UNE PR�E-INTERPR�ETATION D 71� ID = f�; �; g ;� aD = � et bD = �� =D est la relation binaire sur ID : f(�; �); (�; �); ( ; )g.Le langage des contraintes n'est pas compact pour les solutions selon D : il n'existe pas de famillefCigi2I telle que j=D :(x = a)$ fCigi2I .Soit P le programme : p(x) x = aLe crit�ere de rejet est RCD.D'une part, on a FF(P ) = fp(x) x = b j x 2 V g, c'est-�a-dire [FF(P )]D = fp(�)g.D'autre part, on a TPD # 1 = TPD # ! = fp(�)g, c'est-�a-dire TPD # ! = fp(�); p( )g.On constate alors que [FF(P )]D 6= TPD # !.On montre ici, sur un exemple tr�es simple (le programme est simple, l'interpr�etation des contraintesest simple), la raison pour laquelle le lemme 3.2.33 est faux si le langage des contraintes n'est pascompact pour les solutions dans D. En fait, il ne s'agit que d'un probl�eme relatif �a l'expressivit�e dulangage des contraintes (si on ajoute les contraintes basiques x = c, pour tout x 2 V , au langagealors il devient compact pour les solutions). Dans la r�ealit�e, on peut remarquer que tous les langagessemblent compacts pour les solutions dans leur domaine sous-jacent.Les r�esultats qui pr�ec�edent ont �et�e montr�e sans supposer que le crit�ere de rejet soit completpour D. Seule sa correction �etait utile.On suppose maintenant que le crit�ere de rejet RC est correct et complet pour D, i.e. RC = RCD.Cela nous permet de comparer notre travail avec les travaux classiques de la litt�erature.Corollaire 3.2.34 Les propositions suivantes sont �equivalentes :1. il existe une r�eponse pour le but a (selon RCD) ;2. P j=D ~9a ;3. il existe une valuation v telle que vD(a) 2 pppf (TDP ).On retrouve donc les ensembles succ�es de la litt�erature.�A titre de comparaison, on remarque que si le crit�ere de rejet est RCD (i.e. le crit�ere de rejetcorrect et complet pour D) alors :� SS(P ) = pppf (SDP ), o�u SDP est l'op�erateur d�e�ni sur les ensembles d'atomes contraints dans[65], repris dans [55].� SS(P ) = SS3(P;D), o�u SS3(P;D) est l'ensemble succ�es d�e�ni dans [47].� [SS(P )]D = pppf (TDP ), o�u TDP est l'op�erateur sur les ensembles de D-atomes de [65, 55].� [SS(P )]D = SS1(P;D), o�u SS1(P;D) est l'ensemble de D-atomes succ�es de [47].� [SS(P )]D = [SS2(P;D)]D, o�u SS2(P;D) est l'ensemble succ�es d�e�ni dans [47].On peut remarquer que dans [47] le th�eor�eme 5.9 annonce �a tort que P j=D C ! p(x1; : : : ; xn)si et seulement si p(x1; : : : ; xn) C 2 SS2(P;D) alors que le programme P de l'exemple 3.2.7 esttel que P j=N true ! p(x) et p(x) true 62 SS2(P;N ).

72 CHAPITRE 3. S�EMANTIQUE D�ECLARATIVE3.3 Selon une th�eorie TSoit L un langage du premier ordre. Une formule F est cons�equence logique d'un sous-ensemble �de formules closes (i.e. sans variables libres) du langage L, not�e � j= F , si F est vraie dans touteinterpr�etation de L qui est mod�ele de �. Une th�eorie sur le langage du premier ordre L est un sous-ensemble des formules closes du langage L ferm�e par cons�equence logique. La th�eorie engendr�ee parl'ensemble de formule closes � est fF j � j= F; F formule closeg. Une th�eorie T est compl�ete si pourtoute formule close F , soit F 2 T , soit :F 2 T . Un ensemble de formules � est satis�able dansla th�eorie T s'il existe un mod�ele D de T et une valuation v dans D tel que, pour toute formuleF 2 �, vD(F ) = true.Le langage du premier ordre auquel on s'int�eresse est celui construit sur (V;�;�c). Dans notrecadre, on s'int�eresse �a une notion plus faible de th�eorie compl�ete : une th�eorie T est compl�ete pourla satisfaction des stores, si pour tout store C, soit T j= ~9C, soit T j= :C. Ce type de th�eorie joueun role important dans la mesure o�u la satis�abilit�e d'un store dans la th�eorie et sa satis�abilit�edans un mod�ele de la th�eorie (une pr�e-interpr�etation) sont deux notions �equivalentes.Lemme 3.3.1 Si T est une th�eorie compl�ete pour la satisfaction des stores et D est un mod�ele deT alors RCT = RCD.Preuve. �Evidente.Lemme 3.3.2 P;T j= ~9a si et seulement si IFF(P );T j= ~9a.P;T j= C ! a si et seulement si IFF(P );T j= C ! a.Preuve.1. P;T j= ~9a si et seulement si IFF(P );T j= ~9a.� P;T j= ~9a) IFF(P );T j= ~9a : car tout mod�ele de IFF(P ) et T est un mod�elede P et T .� P;T j= ~9a ( IFF(P );T j= ~9a : si IFF(P );T j= ~9a alors IFF(P ) j=D ~9a, doncP j=D ~9a, pour tout mod�ele D de T . Donc P;T j= ~9a.2. P;T j= C ! a si et seulement si IFF(P );T j= C ! a.� P;T j= C ! a ) IFF(P );T j= C ! a : car tout mod�ele de IFF(P ) est unmod�ele de P .� P;T j= C ! a ( IFF(P );T j= C ! a : si IFF(P );T j= C ! a alors, pourtout mod�ele D de T , pour toute valuation v dans D, pour tout D-mod�ele Ide IFF(P ), vD(a) 2 I. Donc vD(a) est dans le plus petit D mod�ele de IFF(P )qui est aussi le plus petit D-mod�ele de P . Donc P;T j= C ! a.On peut envisager di��erentes th�eories, d�e�nies �a partir� d'une pr�e-interpr�etation D ;� d'un crit�ere de rejet RC ;� d'un solveur de contraintes A.Soit d'abord D une pr�e-interpr�etation. La th�eorie associ�ee �a D est th(D) engendr�ee par f~9c jc 2 CONST; j=D ~9cg [ f~8:c j c 2 CONST; j=D :cg.

3.3. SELON UNE TH�EORIE T 73Lemme 3.3.3 Soit D une pr�e-interpr�etation.th(D) est compl�ete pour la satisfaction des contraintes basiques.Preuve. D'apr�es la d�e�nition de th(D).Remarque. On constate que j=D et th(D) se comportent de la meme mani�ere sur lesstores, mais leur e�et peut etre di��erent sur les autres formules construite sur (V;�;�c)ainsi que sur les formules du langage du programme. 3Remarque. (importante)De plus, si l'on consid�ere la th�eorie T constitu�ee de l'ensemble des formules vraies dansD alors T est une th�eorie compl�ete. Ses mod�eles sont �el�ementairement �equivalents.Cependant, les propri�et�es de la s�emantique selon que l'on se place du point de vue deD ou de T sont di��erentes. Les cons�equences logiques de T et les D-cons�equences sontles memes tant que l'on parle de formules. Mais quand on consid�ere les pseudo-formulesin�nies (du type C ! fCigi2I) alors les cons�equences de T et les D-cons�equences nesont plus les memes.C'est parce que le th�eor�eme de compacit�e de la logique du premier ordre (voir corol-laire 3.3.13) n'a pas de pendant pour une interpr�etation �x�ee. 3Soit maintenant RC un crit�ere de rejet. La th�eorie associ�ee �a RC est th(RC) engendr�ee parf~9C j C 62 RCg [ f~8:C j C 2 RCg.Lemme 3.3.4 Soit D une pr�e-interpr�etation.Si RC est correct et complet pour D alors th(RC) est compl�ete pour la satisfaction des stores.Preuve. Si RC est correct et complet pour D (RC = RCD) alors pour tout store C :� si j=D ~9C alors C 62 RC donc ~9C 2 th(RC) donc th(RC) j= ~9C ;� si j=D :~9C alors C 2 RC donc ~8:C 2 th(RC) donc th(RC) j= :C.Remarque. th(RCD) n'est pas obligatoirement compl�ete ni meme consistante (�a causedes formules qui ne sont pas des stores). 3Soit en�n A un solveur de contraintes. Si le solveur de contraintes A ne r�epond que oui ou nonalors cela revient �a consid�erer la th�eorie associ�ee �a un crit�ere de rejet.En revanche, si A a trois types de r�eponse (par exemple CLP(R)) qui sont yes, no et maybealors la th�eorie associ�ee �a A est th(A) engendr�ee par : f~9C j A r�epond yes pour Cg [ f~8:C j Ar�epond no pour Cg.Si A r�epond yes pour C seulement si C admet une solution dans la pr�e-interpr�etation D et noseulement s'il n'en admet pas, alors il existe un mod�ele D0 de th(A), i.e th(A) est consistante.Nous ne donnons pas de syst�eme de r�egles associ�e �a un programme P et une th�eorie T . Onpourrait le d�e�nir comme un syst�eme de r�egles sur l'ensemble des atomes contraints comme dans lasection 3.4. Alors, il su�rait de suivre tout le travail de la section 3.2 pour retrouver de nombreuxr�esultats exprimant les liens entre les ensembles clos, support�es, points �xes de ce syst�eme et lescons�equences logiques de IF(P ), FI(P ), IFF(P ). Nous nous int�eressons tout de suite aux liens entrela s�emantique d�eclarative selon une th�eorie et la s�emantique op�erationnelle (ce qui est calcul�e).

74 CHAPITRE 3. S�EMANTIQUE D�ECLARATIVE3.3.1 Lien avec la s�emantique op�erationnelleNombre des r�esultats de la section 3.2 s'adaptent en rempla�cant D par T , il su�t alors de v�eri�erque, selon le cas, le r�esultat est vrai pour tout mod�ele D de T , ou il existe un mod�ele D de T pourlequel le r�esultat est vrai.D�e�nition 3.3.5 Crit�ere de rejet correct pour une th�eorieUn crit�ere de rejet RC est correct pour la th�eorie T si, pour tout store C : C 2 RC impliqueT j= :C.Il est complet si l'implication inverse est vraie.Remarque. Le crit�ere de rejet RCT est correct et complet pour T .Le crit�ere de rejet ; est correct pour toute th�eorie T . 3Lemme 3.3.6 Si RC est correct pour T alors RC est correct pour tout mod�ele D de T .Preuve. �Evidente.On suppose, jusqu'�a la �n de cette section, qu'un crit�ere de rejet RC correct pour la th�eorie Test �x�e.Remarque. Le cas RC = RCT n'est qu'un cas particulier qui correspond, si de plus Test compl�ete pour la satisfaction des stores, aux d�e�nitions de [54]. 3On commence par quelques r�esultats d'existence d'une r�eponse et de correction des r�eponses.Lemme 3.3.7 Si RC = RCT et s'il existe une r�eponse au but a alors non(P;T j= :a).Preuve. S'il existe une r�eponse S au but a alors non(T j= :AC(S; a)). Donc il existeun mod�ele D de T et une valuation v tels que vD(AC(S; a)) = true. Donc P j=D ~9a,donc non(P;T j= :a).Lemme 3.3.8 Si P;T j= ~9a alors il existe une r�eponse au but a.Preuve. Si P;T j= ~9a alors P j=D ~9a pour tout mod�ele D de T . Soit D un mod�ele de T .Puisque P j=D ~9a alors il existe un squelette �ni complet S pour a tel que AC(S; a)a une solution dans D. Donc non(T j= :AC(S; a)). Comme RC est correct pour T alorsS est une r�eponse pour le but a.Lemme 3.3.9 Supposons que T soit compl�ete pour la satisfaction. Il existe une r�eponse S au but a si et seulement si P;T j= ~9a.Preuve. Triviale.Lemme 3.3.10 Si C est un store r�eponse pour le but a alors P;T j= C ! a.Preuve. Cas particulier du lemme 3.4.9.Int�eressons nous maintenant au probl�eme de la compl�etude des r�eponses calcul�ees.

3.3. SELON UNE TH�EORIE T 75D�e�nition 3.3.11 Couverture dans une th�eorieSoit fCigi2I une famille de stores. On note T j= C ! fCigi2I qui se lit C est couverte par fCigi2Idans T et qui signi�e : j=D C ! fCigi2I , pour tout mod�ele D de T .Lemme 3.3.12 Si P;T j= C ! a alors T j= C ! SS(P; a).Preuve. Si P;T j= C ! a alors pour tout mod�ele D de T , P j=D C ! a. Doncj=D C ! fAC(S; a)gS2success(a) pour tout mod�ele D de T . Donc T j= C ! SS(P; a).Corollaire 3.3.13 du th�eor�eme de compacit�e de la logique du premier ordre.T j= C ! fCigi2I si et seulement si il existe une partie �nie I0 � I telle que T j= C ! Wi02I0 Ci0 .Preuve.) Pour tout mod�ele D de T , l'ensemble de formules T [ fCg [ f:Cigi2I n'a pas desolution dans D. D'apr�es le th�eor�eme de compacit�e de la logique, il existe unepartie �nie de T [ fCg [ f:Cigi2I insatis�able. L'intersection de cette partie �nieavec fCigi2I est une partie �nie de fCigi2I . Donc il existe une partie �nie I0 � Itelle que T j= C ! Wi02I0 Ci0 .( �Evident.Lemme 3.3.14 Si P;T j= C ! a alors T j= C ! fAC(S; a)gS2successf (a), o�u successf (a) est unepartie �nie de success(a).Preuve. Cons�equence du lemme 3.3.12 et du corollaire 3.3.13.C'est principalement pour ce lemme et le suivant qu'on note une di��erence avec les r�esultats dela section 3.2.1.D�e�nition 3.3.15 Ind�ependance des contraintes n�egativesLe langage des contraintes a la propri�et�e d'ind�ependance des contraintes n�egatives (INC) si T j=C ! Wi2f1;:::;ngCi implique qu'il existe j 2 f1; : : : ; ng tel que T j= C ! Cj.La propri�et�e INC a �et�e �enonc�e par Maher [65] de mani�ere �equivalente par T j= :~9(C ^Vi2f1;:::;ng :Ci) implique qu'il existe j 2 f1; : : : ; ng tel que T j= :~9(C ^ :Cj).Cette propri�et�e est v�eri��ee dans le cas de la programmation logique, o�u les substitutions sontvues comme des contraintes. C'est la raison pour laquelle le r�esultat suivant est bien connu pourles programmes logiques.Lemme 3.3.16 Supposons que le langage des contraintes v�eri�e la propri�et�e d'ind�ependance descontraintes n�egatives.Si P;T j= C ! a alors il existe une r�eponse S telle que T j= C ! AC(S; a).Preuve. Cons�equence imm�ediate du lemme 3.3.14 et de la propri�et�e d'ind�ependancedes contraintes n�egatives.Lemme 3.3.17 Si a a un arbre SLD d'�echec �ni alors IFF(P );T j= :a.Preuve. Similaire �a la preuve du lemme 3.2.26.

76 CHAPITRE 3. S�EMANTIQUE D�ECLARATIVE3.4 Selon un crit�ere de rejet RCCette section ne d�e�nit pas une s�emantique d�eclarative pour les programmes. Elle aurait sa place�a la �n du chapitre 2.Cependant, nous l'avons plac�ee ici comme une introduction �a la section 3.5 qui g�en�eralise lessections 3.2 et 3.3 par l'interm�ediaire d'une relation abstraite de couverture.D�e�nition 3.4.1 RC-clauseUne RC-clause est une paire b B, o�u b est un atome contraint et B est une suite �nie d'atomescontraints.D�e�nition 3.4.2 Syst�eme de RC-r�egles associ�e �a une clauseLe syst�eme de RC-r�egles associ�e �a la clause a C 2 a1 � � � an, not�e �(RC; a C 2 a1 � � � an), estl'ensemble des (a� C0) (a1� C1) � � � (an� Cn) o�u � est un renommage, C1; : : : ; Cn sontn stores, C0 = 9�a�(C� ^ C1 ^ � � � ^ Cn) et C0 62 RC.D�e�nition 3.4.3 Syst�eme de RC-r�egles associ�e au programmeLe syst�eme de RC-r�egle associ�e �a P est�(RC; P ) = [R2P �(RC; R)Son op�erateur associ�e T�(RC;P ) est not�e TRCP .Lemme 3.4.4 TRCP a un plus petit point �xe et pppf (TRCP ) = TRCP " !.Preuve. Voir section 1.2.3.4.1 Lien avec la s�emantique op�erationnelleUn (1)RC-arbre de preuve est un (1-)arbre de preuve pour le syst�eme de r�egle �(RC; P ). Les�etiquettes de ces arbres sont des atomes contraints.On peut voir un RC-arbre de preuve comme une \r�eponse renomm�ee".En e�et, soit S une r�eponse et renoS une fonction de renommage pour S. Soit pt(S; renoS)l'arbre orient�e sur le domaine d'arbre standard domS , �etiquet�e par des atomes contraints, d�e�nipar :� pt(S; renoS) et S ne di��erent que par leur fonction d'�etiquetage ;� pour tout n�ud N de domS : si head (renoS(N)) = a, et SN est le squelette enracin�e en Ndans S, alors labpt(S;renoS)(N) = a AC(SN ; a).Lemme 3.4.5 Si S est une r�eponse et renoS est une fonction de renommage pour S alors l'arbrept(S; renoS) est un RC-arbre de preuve.Preuve. Soit S une r�eponse et renoS une fonction de renommage pour S. On proc�edepar induction sur la profondeur de S.

3.4. SELON UN CRIT�ERE DE REJET RC 77��� @@@uS1 Sn� � �� � �La r�eponse S, ci-dessus, est enracin�ee par u, nom de la clause a C 2 a1 � � � an.Chaque Si, i = 1; : : : ; n, est la r�eponse enracin�ee en i� 1 dans S.Figure 3.3 : R�eponses enracin�ees en chaque �ls d'une r�eponse� Si S est une r�eponse de profondeur 0. S est enracin�ee par le nom de fait u (i.e.S = sq(u)). Soit clause(u) = a C 2 " et � tel que renoS(root (S)) = a� C�2 ".On a AC(S; a�) = 9�a�C�.L'arbre A est de profondeur 0 et sa racine est �etiquet�ee par a� 9�a�C�. La r�egle(a� 9�a�C�) " appartient �a �(RC; a C 2 ").Donc A est un RC-arbre de preuve.� Supposons que toute r�eponse de profondeur inf�erieur �a n v�eri�e la propri�et�e.Si S est une r�eponse de profondeur n+1. S est enracin�e par u. Soit clause(u) = a C 2 a1 � � � an. Soit � un renommage tel que renoS(root (S)) = (a C 2 a1 � � � an)�.Soit Si la r�eponse enracin�ee en i dans S (voir �gure 3.3) et renoSi la fonction derenommage pour Si d�eduite de renoS (voir lemme 2.4.2).Pour tout i = 1; : : : ; n, pt(Si; renoSi) est un RC-arbre de preuve dont la racine est�etiquet�ee par : ai� AC(Si; ai�)Les pt(Si; renoSi) sont les arbres enracin�es en chaque �ls de la racine de A.La racine de A est �etiquet�ee par : a� AC(S; a�).AC(S; a�) = 9�a�(C�^AC(S1; a1�)^� � �^AC(Sn; an�)) (voir preuve du lemme 2.4.3.D'o�u la r�egle (a� 9�a�(C� ^ AC(S1; a1�) ^ � � � ^ AC(Sn; an�))) (a1� AC(S1; a1�)) � � � (an� AC(Sn; an�)) appartient �a �(RC; a C 2 a1 � � � an) etpt(S; renoS) est un RC-arbre de preuve.Inversement, on peut voir une r�eponse comme le \squelette d'un RC-arbre de preuve".En e�et, soit A un RC-arbre de preuve. Soit sk(A) l'arbre sur le domaine d'arbre standarddomA, �etiquet�e par des noms de clauses, d�e�ni par :� A et sk(A) ne di��erent que par leur fonction d'�etiquetage ;� pour tout n�ud N de domA : si u est la clause d'o�u est issue la RC-r�egle qui relie labA(N)aux �etiquettes des �ls de N alors labsk(A)(N) = u.Lemme 3.4.6 Si A est un RC-arbre de preuve alors sk(A) est une r�eponse.Preuve. La preuve se fait par induction sur les RC-arbres de preuve comme pour lapreuve du lemme 3.4.4 en montrant qu'�a partir de fonctions de renommage pour lesr�eponses enracin�ees aux �ls de la racine de sk(A) on d�eduit une fonction de renommagepour sk(A) comme dans la preuve du lemme 2.4.3 et que la contrainte associ�ee �a sk(A)est non rejet�ee.

78 CHAPITRE 3. S�EMANTIQUE D�ECLARATIVELemme 3.4.7 pppf (TRCP ) = SS(P ).Preuve. pppf (TRCP ) est l'ensemble des �etiquettes de racines de RC-arbres de preuve.D'apr�es les deux lemmes pr�ec�edents et la d�e�nition de SS(P ), il est �evident que les deuxensembles sont �egaux.On retrouve �a nouveau les ensembles succ�es de la litt�erature :Lemme 3.4.8 Si le crit�ere de rejet est RCT (i.e. le crit�ere de rejet correct et complet pour lath�eorie T ) alors SS(P ) = SS(P;T ), o�u SS(P;T ) est l'ensemble succ�es d�e�ni dans [54].Nous nous int�eressons maintenant au crit�ere de rejet vide (RC = ;, c'est-�a-dire que tout squeletteest un �etat), a�n de montrer les r�esultats g�en�eraux de correction et compl�etude.Remarque. Dans la suite, le terme r�eponse peut etre remplac�e simplement par squelette�ni complet. 3Lemme 3.4.9 Si S est une r�eponse pour le but a alors P j= AC(S; a)! a.Preuve. Soit S une r�eponse pour le but a (selon le crit�ere de rejet ;).Le crit�ere de rejet ; est correct pour toute pr�e-interpr�etation D. Donc si S est uner�eponse pour le but a alors P j=D AC(S; a)! a (lemme 3.2.23) et cela pour tout D.Or P j= AC(S; a)! a signi�e pour toute pr�e-interpr�etation D : P j=D AC(S; a)! a.Lemme 3.4.10 Si P j= C ! a alors j= C ! WS2successf (a) AC(S; a), o�u successf (a) est une partie�nie de success(a).Preuve. Ce lemme est un cas particulier du lemme 3.3.14 dans le cas o�u T = ;. Ene�et l'ensemble des r�eponses selon le crit�ere de rejet RC; est inclus dans l'ensemble desr�eponses selon le crit�ere de rejet ;.On peut constater que les r�eponses selon le crit�ere de rejet ; d�e�nissent en quelque sorte lesr�eponses g�en�erales d'un programme. C'est-�a-dire que si S est un squelette �ni complet pour aalors P j= AC(S; a) ! a. On en d�eduit que si renoS est une fonction de renommage pour S ethead (renoS(root (S))) = a alors P j= const(S; renoS)! a. Cette propri�et�e reste vraie meme si noussupprimons la troisi�eme condition, sur les variables existentielles, dans la d�e�nition de fonction derenommage. Mais, comme tout syst�eme de PLC, nous voulons d�e�nir les stores r�eponses les \plusg�en�eraux" pour des raisons d'e�cacit�e �evidentes. Cette condition sur les variables existentielles desclauses renomm�ees n'est qu'une optimisation op�erationnelle.3.5 Selon une relation de couverture `On constate que la s�emantique d�eclarative d�ecrite selon un pr�e-interpr�etation D ou une th�eorie Tfait intervenir une notion de couverture : C est un \store r�eponse au sens d�eclaratif" pour le but a si C est couverte par une partie des stores r�eponses pour le but a.En revanche, dans la section pr�ec�edente, si RC est quelconque il manque ce r�esultat de com-pl�etude des r�eponses. Nous ne retrouvons pas de propri�et�e similaire. Cela vient simplement du faitque nous ne disposons pas d'une notion de couverture dans ce cadre g�en�eral.

3.5. SELON UNE RELATION DE COUVERTURE ` 79L'objet de cette section est de d�e�nir une s�emantique d�eclarative, bas�ee sur une relation decouverture qui �etend, �a un crit�ere de rejet quelconque, les notions de couverture dans les cas par-ticuliers o�u le crit�ere de rejet est correct par rapport �a une pr�e-interpr�etation ou une th�eorie descontraintes.Nous introduisons une relation abstraite, appel�ee relation de couverture entre un store et unensemble de stores.D�e�nition 3.5.1 Relation de couvertureUne relation de couverture ` est une relation sur STORE � 2STORE v�eri�ant les propri�et�es sui-vantes :pour toute variable x, pour tout renommage �, pour tout store C, pour tout ensemble de stores Rtel que C ` R, pour tout ensemble de stores R0 tel que R � R0, pour toute famille �nie de storesfCigi2I , pour toute famille �nie d'ensemble de stores fRigi2I telle que, pour tout i 2 I, Ci ` Ri,pour toute famille d'ensemble de stores fRC0gC02R telle que, pour tout C 0 2 R, C 0 ` RC0 ,RENA C� ` fC 0� j C 0 2 RgTRUE C ` f;gREFL C ` fCgTRAN C ` SC02RRC0EXISg 9xC ` R, si x 62 SC02R var (C 0)EXISd C ` f9xC 0 j C 0 2 RgCONJ Vi2I Ci ` fVi2I C 0i j C 0i 2 Ri; i 2 IgMONO C ` R0Des propri�et�es de la r�egle de couverture ` et des �equivalences entre stores, on d�eduit d'autrespropri�et�es de ` : pour toute variable x, pour tout store C et C 0, pour tout ensemble de stores R1et R2 tels que C ` R1 et C ` R2,EXIS 9xC ` f9xC 01 j C 01 2 R1g (EXISd et EXISg)CONJg C ^ C 0 ` R1 (TRUE et CONJ)CONJd C ` fC 01 ^ C 02 j C 01 2 R1; C 02 2 R2g(CONJ et C ^ C = C section 1.3)Remarque. Notons qu'il est important de pouvoir consid�erer des ensembles in�nis destores en partie droite de la relation de couverture, si l'on veut que celle ci �etende la

80 CHAPITRE 3. S�EMANTIQUE D�ECLARATIVEcouverture dans une pr�e-interpr�etation qui, comme nous l'avons vu dans l'exemple 3.2.7,ne peut se ramener en g�en�eral �a une couverture par un ensemble �ni de stores.Remarquons que f;g (dans la r�egle TRUE) est identi��e logiquement �a true. En e�et,le store vide est identi��e logiquement �a true (�el�ement neutre de la conjonction), doncl'ensemble de stores qui contient le store vide est identi��e �a true. Il ne doit pas etreconfondu avec l'ensemble vide de stores qui est identi��e �a false (�el�ement neutre de ladisjonction). 3(CONST;`) d�e�nit un syst�eme de contraintes en un sens similaire �a [84, 48, 18].En e�et, la s�emantique des langages de programmation Concurrente avec Contraintes (CC) [85]est d�ecrite via un syst�eme de contraintes [84, 86]. Le syst�eme de contraintes est sp�eci��e comme unsyst�eme d'information partielle, dans le style des syst�emes d'information de Scott [87], enrichi desnotions de variables, de quanti�cation existentielle et de substitutions. Par d�e�nition, ces syst�emesdoivent v�eri�er des propri�et�es [84, 18]. Saraswat dans [85] montre l'int�eret d'un cadre bas�e sur larelation d'inf�erence sous-jacente plutot que sur une pr�e-interpr�etation ou une th�eorie des contraintes.Dans [84], la relation de cons�equence est une relation sur Pf (STORE) � STORE (o�u Pf (E)est l'ensemble des parties �nies de E). L'ensemble de stores en partie gauche est vu comme laconjonction de ses �el�ements. Comme il suppose STORE ferm�e par conjonction (STORE est le pluspetit ensemble qui contient CONST, ferm�e par conjonction et quanti�cation existentielle), c'estdonc une relation sur STORE� STORE. Il indique qu'il serait possible d'�etendre cette relation �ades ensembles �nis de stores en partie droite. Mais contrairement �a l'habitude en calcul des s�equents,il l'�etendrait de la mani�ere suivante : C ` R si et seulement si C ` fC 0g pour tout C 0 2 R. En fait, ilconsid�ere l'ensemble de stores R comme la conjonction de ses �el�ements (il souhaite n'avoir que dess�equents intuitionistes). C'est �evidement di��erent de notre mani�ere d'envisager l'extension puisquenotre objectif est d'abstraire la notion de couverture dans une pr�e-interpr�etation ou une th�eoriedes contraintes. Notons que nous pourrions �egalement consid�erer des ensembles �nis de stores enpartie gauche qui seraient vu �egalement comme la conjonction de leurs �el�ements. En revanche, ilserait absurde de consid�erer des ensembles in�nis en partie gauche.Remarque. Il existe dans notre cadre une asym�etrie entre les conjonctions (de contraintesbasiques) et les disjonctions (de stores). On consid�ere des ensembles de stores �even-tuellement in�nis alors qu'on a toujours consid�er�e des parties �nies de conjonction decontraintes basiques.Cela vient d'une di��erence fondamentale entre la conjonction et la disjonction : pourv�eri�er qu'une disjonction in�nie de stores est calcul�ee, il su�t de v�eri�er que chacundes stores est calcul�ee, alors qu'une conjonction in�nie ne peut s'exprimer comme unesomme d'information �nie calcul�ee (on retrouve une argumentation similaire �a celle de[89] section Observable properties). 3On retrouve la relation de cons�equence des CC, �a partir de la relation de couverture, quandl'ensemble en partie droite est un singleton. On constate que l'on retrouve les propri�et�es v�eri��eespar les relations de cons�equence dans ce cas particulier.Notons qu'�a la di��erence des CC, il n'est pas question ici d'implanter un algorithme qui calculedes �el�ements de la relation de couverture. Cette relation sert �a d�ecrire la s�emantique d�eclarative,non la s�emantique op�erationnelle d�ecrite, quant �a elle, par le crit�ere de rejet dont l'implantationest le solveur de contraintes du syst�eme.La d�e�nition des syst�emes de contraintes de [48] utilise les alg�ebres cylindriques [50]. La structured'interpr�etation des contraintes est un semi-anneau cylindrique clos param�etr�e par un syst�eme

3.5. SELON UNE RELATION DE COUVERTURE ` 81de termes contenant un op�erateur binaire de substitution s~x pour tout ensemble de variables ~x.Intuitivement, la quanti�cation existentielle est mod�elis�ee par les op�erateurs de cylindri�cation et les�el�ements diagonaux mod�elisent l'uni�cation. Il est int�eressant de noter que [48] d�e�nit la s�emantiquepar un ensemble de meme nature que SS_(P ). Dans la version de 1992, les auteurs retrouvent dansleur cadre la relation de cons�equence des CC et sugg�erent, sans le faire, de l'�etendre �a des ensemblesen partie droite.En g�en�eral, la relation de couverture ne sera pas quelconque. Elle ne sert qu'�a d�ecrire unes�emantique d�eclarative en exprimant la notion de couverture d'un store par un ensemble de stores.Elle sera le plus souvent :� d�eduite d'une pr�e-interpr�etation D, elle est not�ee `D et d�e�nie par : C `D R si pour toutevaluation dans D qui satisfait C il existe un store de R satisfait par cette valuation (i.e.j=D C ! R) ;� d�eduite d'une th�eorie T , elle est not�ee `T et d�e�nie par : C `T R si pour tout mod�ele D deT : C `D R (i.e. T j= C ! R) ;� associ�ee �a un crit�ere de rejet RC, c'est une relation v�eri�ant les propri�et�es et telle que C estcouverte par ; si et seulement si C 2 RC.On remarque que la relation de couverture g�en�eralise le crit�ere de rejet. Le crit�ere de rejet peutetre vu comme le cas particulier C ` ;.Il est �evident que `D et `T v�eri�ent les propri�et�es de la d�e�nition 3.5.1.Comme pour un crit�ere de rejet, on peut d�e�nir la notion de relation de couverture correcte oucompl�ete :D�e�nition 3.5.2 Relation de couverture correcte/compl�ete pour D/TUne relation de couverture ` est correcte pour la pr�e-interpr�etation D si, pour tout store C et toutensemble de stores R, C ` R implique j=D C ! R.Elle est compl�ete pour D si l'implication inverse est vraie.Une relation de couverture ` est correcte pour la th�eorie T si, pour tout store C et tout ensemblede stores R, C ` R implique T j= C ! R.Elle est compl�ete pour T si l'implication inverse est vraie.On v�eri�e facilement que `D est correcte et compl�ete pour la pr�e-interpr�etation D et que `Test correcte et compl�ete pour la th�eorie T .Nous d�e�nissons maintenant le syst�eme de r�egles sur l'ensemble des atomes contraints associ�e �aun programme et une relation de couverture, qui d�ecrit la s�emantique d�eclarative du programme.D�e�nition 3.5.3 Syst�eme de r�egle associ�e au programmeLe syst�eme de r�egle associ�e au programme P , not�e �(`; P ) se compose de deux types de r�egles :les r�egles de programme pour toute clause renomm�ee a C 2 a1 � � � an, et tous stores C1; : : : ; Cn,on a la r�egle de programme :(a 9�a(C ^C1 ^ � � � ^ Cn)) (a1 C1) � � � (an Cn)les r�egles de couverture pour tout atome a, tout store C et toute famille de stores (Ci)i2I , telsque C ` fCigi2I , on a la r�egle de couverture :(a C) (a Ci)i2I

82 CHAPITRE 3. S�EMANTIQUE D�ECLARATIVERemarquons les deux natures de �eches impos�ees par les d�e�nitions (atomes contraints et r�egles).Remarque. L'ensemble \d'axiomes" du syst�eme �(`; P ) est compos�e de deux typesd'axiomes :les axiomes de programme quand la clause est un fait (i.e. n = 0), on d�eduitl'axiome : (a 9�aC) "les axiomes de couverture quand I = ;, on d�eduit l'axiome :(a C) " 3L'ensemble d�e�ni inductivement par �(`; P ) repr�esente la s�emantique d�eclarative du programme.On le note SS`(P ). Un �el�ement de SS`(P ) est appel�e une r�eponse d�eclarative.On d�e�nit maintenant quatre op�erateurs monotones dont les points �xes seront reli�es �a las�emantique op�erationnelle ou d�eclarative du programme (pour trois d'entre eux).D�e�nition 3.5.4 Op�erateurs de cons�equence imm�ediateSoit TP , T`, T [;P et T �;P les quatre op�erateurs des ensembles d'atomes contraints dans les ensemblesd'atomes contraints d�e�nis par :� TP (I) = fa C j il existe une r�egle de programme(a C) (a1 C1) : : : (an Cn)fai Cigi2f1;:::;ng � Ig� T`(I) = fa C j il existe une r�egle de couverture(a C) (a C 0)C02Rfa C 0gC02R � Ig� T [;P (I) = TP (I) [ T`(I)� T �;P (I) = T`(TP (I))Lemme 3.5.5 pppf (TP ) = TP " !Preuve. TP est compact car les r�egles de programmes sont �nitaires.Un �el�ement de pppf (TP ) est appel�e une r�eponse op�erationnelle. Nous verrons dans la sec-tion 3.5.1 le lien entre pppf (TP ) et SS(P ).Lemme 3.5.6 pppf (T [;P ) = SS`(P )Preuve. Voir section 1.2.L'op�erateur TP est l'op�erateur associ�e aux r�egles de programme, l'op�erateur T [;P est l'op�erateurassoci�e aux deux types de r�egles. Le plus petit point �xe de TP correspond aux racines d'arbresde preuve n'utilisant que les r�egles de programme, le plus petit point �xe de T [;P correspond auxracines d'arbres de preuve. Le plus petit point �xe de T �;P correspond aux arbres de preuves quiutilisent aux profondeurs paires des r�egles de programme et aux profondeurs impaires des r�egles decouverture. Le plus petit point �xe de T` est sans int�eret ici.Nous �enon�cons maintenant le lemme exprimant la compl�etude des r�eponses calcul�ees.

3.5. SELON UNE RELATION DE COUVERTURE ` 83Lemme 3.5.7 SS`(P ) = fa C j il existe R;C ` R; pour tout C 0 2 R; a C 0 2 pppf (TP )gPreuve. On prouve le lemme par induction sur les r�egles de �(`; P ) en distinguant lesdeux cas correspondant aux deux types de r�egles.1. Soit (a 9�a(C ^ C1 ^ � � � ^ Cn)) (a1 C1) � � � (an Cn) une r�egle deprogramme.Supposons que pour tout i = 1; : : : ; n, a Ci 2 SS`(P ) et il existe un ensemblede stores Ri tel que Ci ` Ri et ai C 0i 2 pppf (TP ), pour tout C 0i 2 Ri.Montrons qu'il existe R tel que 9�a(C ^C1 ^ � � � ^Cn) ` R et a C 0 2 pppf (TP ),pour tout C 0 2 R.La r�egle de programme est issue de la clause renomm�ee a C 2 a1 � � � an.La propri�et�e REFL de la relation de couverture assure queC ` fCgLa propri�et�e CONJ de la relation de couverture assure queC ^ C1 ^ � � � ^ Cn ` fC ^ C 01 ^ � � � ^ C 0n j C 0i 2 Ri; i = 1; : : : ; ngLa propri�et�e EXIS de la relation de couverture assure que9�a(C ^ C1 ^ � � � ^Cn) ` f9�a(C ^ C 01 ^ � � � ^C 0n) j C 0i 2 Ri; i = 1; : : : ; ngDonc, il su�t de prendre R = f9�a(C ^ C 01 ^ � � � ^ C 0n) j C 0i 2 Ri; i = 1; : : : ; ng.2. Soit (a C) (a C 0)C02R0 une r�egle de couverture.Supposons que, pour tout C 0 2 R0, a C 0 2 SS`(P ) et il existe un ensemble destore RC0 tel que C 0 ` RC0 et a C 00 2 pppf (TP ), pour tout C 00 2 RC0 .Montrons qu'il existe un ensemble de stores R tel que C ` R et a C 00 2 pppf (TP ),pour tout C 00 2 R.La r�egle de couverture est issue de C ` R0.La propri�et�e TRAN de la relation de couverture assure queC ` [C02R0RC0Donc, il su�t de prendre R = SC02R0 RC0 .Corollaire 3.5.8 pppf (T [;P ) = T`(pppf (TP )) et pppf (T [;P ) = T [;P " ! + 1.C'est-�a-dire, pour tout arbre de preuve enracin�e par a C, il existe un arbre de preuve enracin�eaussi par a C qui utilise une unique r�egle de couverture, et cette r�egle de couverture est utilis�ee�a la racine de l'arbre de preuve.On retrouve les r�esultats bien connus de compl�etude des r�eponses op�erationnelles dans le caso�u la relation de couverture est `D ou `T .Remarque. Notons qu'un �el�ement de pppf (T [T ;P ) est une r�eponse selon [97].On remarque que dans le r�esultat de [97], appel�e strong completeness, il n'est pas utiled'imposer T j= ~9C (voir le lemme 3.3.14). 3

84 CHAPITRE 3. S�EMANTIQUE D�ECLARATIVEInt�eressons nous maintenant �a l'op�erateur T �;P . Il est facile de v�eri�er que cet op�erateur estmonotone. Par cons�equent il a un plus petit point �xe.On ne d�e�nira pas le syst�eme de r�egle associ�e �a cet op�erateur, il peut se d�eduire facilement �apartir des compositions des r�egles de programme et des r�egles de couverture de �(`; P ).Lemme 3.5.9 pppf (T �;P ) = pppf (T [;P ) = T`(pppf (TP ))Preuve. La seconde �egalit�e est d�ej�a prouv�ee. Pour la premi�ere :� pppf (T �;P ) � T`(pppf (TP )) car la propri�et�e REFL des r�egles de couverture assureque pour tout store C, C ` fCg.� pppf (T �;P ) � pppf (T [;P ) car pour tout ordinal �, il existe un ordinal � tel queT �;P " � � T [;P " � : pour tout � 2 IN, il su�t de prendre � = 2�, doncT �;P " ! � T [;P " !, de la meme mani�ere on a T �;P " ! + 1 � T [;P " ! + 2, orpppf (T �;P ) � T`(pppf (TP )) d'apr�es le point pr�ec�edent et T`(pppf (TP )) = T [;P "! + 1 = pppf (T [;P ), donc pppf (T �;P ) � pppf (T [;P ).Nous avons montr�e que le plus petit point �xe de T �;P est �egal �a SS`(P ). Cela signi�e quetout �el�ement de SS`(P ) enracine un arbre de preuve alternant r�egles de programme et r�egles decouverture.En r�esum�e, les quatre ensembles1. pppf (T �;P )2. pppf (T [;P )3. T`(pppf (TP ))4. SS`(P )sont �egaux ce qui exprime1. le lien entre les r�eponses op�erationnelles et les r�eponses d�eclaratives (3.=4.) ;2. une forme de compositionalit�e des r�eponses d�eclaratives (1.=4.).Il est important de noter que seule les propri�et�es de ` sont utiles pour montrer ce r�esultat. Rap-pelons que les arbres de preuve pour �(`; P ) ne sont pas des arbres �nis : les r�egles de couverturesne sont pas n�ecessairement �nitaires (cas de `D). Ce sont seulement des arbres bien-fond�es.Notons que cette question de compositionalit�e ne semble pas abord�ee dans la litt�erature. Nousverrons dans le chapitre 4 toute l'importance de cette question.3.5.1 Lien avec la s�emantique op�erationnelleOn suppose que le crit�ere de rejet RC est la relation unaire ` ;, i.e. C 2 RC si et seulement siC ` ;.Remarque. Les arbres de preuve qui n'utilisent que des r�egles de programmes de �(`; P )sont exactement les RC-arbres de preuve si RC = ; (l'ensemble des r�egles de programmesest �(RC; P ), o�u RC = ;). On en d�eduit le lemme qui suit. 3

3.5. SELON UNE RELATION DE COUVERTURE ` 85Lemme 3.5.10 SS(P ) = fa C j a C 2 pppf (TP ); C 62 RCg.a C 2 pppf (TP ) si et seulement si il existe un squelette �ni complet S pour a et une fonctionde renommage renoS pour S et a tels que AC(S) = C.C est un store r�eponse au but a si et seulement si a C 2 pppf (TP ) et C 62 RC.Preuve. D'apr�es la remarque.Lemme 3.5.11 SS`(P ) = T`(SS(P ))Preuve.� SS(P ) � pppf (TP ) et T` est monotone.� Soit a C 2 SS`(P ). D'apr�es le lemme 3.5.7, il existe un ensemble de stores R telque C ` R et fa C 0gC02R � pppf (TP ).Pour tout C 0 2 R, soit RC0 l'ensemble de stores d�e�ni par : RC0 = ; si C 0 ` ;et RC0 = fC 0g sinon. Il est clair que, pour tout C 0 2 R : C 0 ` RC0 . Donc d'apr�esTRAN, on a C ` SC02RRC0 . D'apr�es le lemme 3.5.10, pour tout C 00 2 SC02RRC0 :a C 00 2 SS(P ).Donc SS`(P ) � T`(SS(P ))Ce lemme exprime la compl�etude des r�eponses calcul�ees par rapport �a une relation abstraitede couverture. L'ensemble des r�esultats de compl�etude des sections pr�ec�edentes (selon une pr�e-interpr�etation, selon une th�eorie) sont des cas particuliers de celui-ci. On retrouve la couverture�nie (par exemple selon une th�eorie) quand la relation de couverture est compacte :D�e�nition 3.5.12 Relation de couverture compacteUne relation de couverture ` est compacte si pour tout store C, pour tout ensemble de store R :C ` R implique C ` Rf , o�u Rf est une partie �nie de R.La relation `T est compacte parce que la logique du premier ordre est compacte. Notons lasimilitude avec la notion de compacit�e en topologie [89].La correction des r�eponses calcul�ees est exprim�ee par le lemme suivant :Lemme 3.5.13 SS(P ) � SS`(P )Preuve. SS(P ) � pppf (TP ) � SS`(P )

86 CHAPITRE 3. S�EMANTIQUE D�ECLARATIVE

Chapitre 4Diagnostic d�eclaratif d'erreur\Of the two aspects of debugging (locating the error and correcting it), the �rst repre-sents perhaps 95% of the problem."Glenford J. Myers, The Art of Software Testing [67], page 130.Parmi les �etapes de d�eveloppement d'un programme, il en existe une in�evitable : c'est la lo-calisation des erreurs. Pour des langages de haut niveau, comme les langages de programmationlogiques, les techniques traditionnelles de traces deviennent rapidement di�ciles �a utiliser �a causede la complexit�e du comportement op�erationnel des syst�emes (par exemple le backtracking). Deplus, il serait incoh�erent de n'utiliser que des outils de mise au point de bas niveau alors que pources langages l'accent est mis sur la s�emantique d�eclarative (i.e. une s�emantique ind�ependante dumod�ele d'ex�ecution).\It is evident that a computer can neither construct nor debug a program without beingtold, in one way or another, what problem the program is supposed to solve, and someconstraints on how to solve it."Ehud Y. Shapiro, Algorithmic Program Debugging, [88], page 1.Mais ici, seules des propri�et�es d�eclaratives attendues sont requises.Nous nous int�eressons dans ce chapitre �a la correction partielle des programmes logiques aveccontraintes.Un symptome est le r�esultat inattendu d'un calcul. Si le r�esultat d'un calcul est un symptome,c'est que le calcul a un r�esultat, c'est donc un calcul �ni. Notre objectif est de d�eterminer les raisonsde ce r�esultat inattendu en ne faisant r�ef�erence qu'�a des propri�et�es d�eclaratives attendues pour leprogramme (par exemple, une interpr�etation attendue).On souhaite, par ailleurs, que ces raisons soient mod�elis�ees par une partie du code du programmela plus petite possible, plus, �eventuellement, des informations expliquant pourquoi cette partie decode est jug�ee erron�ee. Ce couple, partie de code et explication, sera appel�e erreur. Le r�esultat d�esir�eest : s'il existe un symptome alors il existe une erreur (la contrapos�ee, �a relier aux probl�emes devalidation, est : s'il n'existe pas d'erreur alors il n'existe pas de symptome). De plus, nous aimerionsavoir une m�ethode e�ective qui, �etant donn�e un symptome localise une erreur. C'est le diagnosticd�eclaratif d'erreur.Quand il n'existe pas de symptome, on dit que le programme est partiellement correct. Quandil n'existe pas d'erreur, on dit qu'il est correct. 87

88 CHAPITRE 4. DIAGNOSTIC D�ECLARATIF D'ERREURRemarque. Notons qu'un programme peut etre partiellement correct sans etre correct :il existe une erreur dans le programme, mais tout calcul �ni produit un r�esultat attendu.3Il existe une autre grande cat�egorie de symptomes qui correspondent �a la non-terminaisoninattendue d'un calcul. Dans ce cas, le symptome n'est pas le r�esultat du calcul mais le calcullui-meme. Ce type de symptome n'est pas trait�e ici ; mais il existe des travaux dans ce sens, commepar exemple [83] qui �etend les travaux de [5] et [25] bas�e sur la s�emantique de [24].Comme nous avons distingu�e dans le chapitre 2 deux niveaux de calcul, nous distinguons deuxtypes de symptome :� les symptomes d'incorrection partielle positifs, appel�e plus simplement symptomes positifs ; lanotion de calcul qui leur est li�ee est la d�erivation SLD �ni ;� les symptomes d'incorrection partielle n�egatifs, appel�e plus simplement symptomes n�egatifs ;la notion de calcul qui leur est li�ee est l'arbre SLD.Soit P un programme et RC un crit�ere de rejet.Supposons que a! SS(P; a) 2 SS_(P ) et que SS(P; a) ne soit pas un _-store r�eponse attenduepour a. Deux cas peuvent se pr�esenter :1. au moins un store de SS(P; a) ne devrait pas faire partie de SS(P; a) ;2. il manque au moins un store dans SS(P; a).Dans le premier cas, le store r�eponse non attendu vient d'une SLD-d�erivation. Seule cette SLD-d�erivation est concern�ee pour la recherche de l'erreur. C'est donc une notion de symptome li�e �a cetype de calcul �ni et il n'est pas n�ecessaire d'imposer des restrictions quant �a la �nitude de l'arbreSLD. La notion de symptome positif correspond �a ce type de symptome.Dans le second cas, c'est la notion de symptome n�egatif qui correspond. Supposons qu'un arbreSLD �ni fournit un _-store r�eponse qui ne convient pas. C'est qu'il manque au moins une branchesucc�es �a l'arbre SLD.Les symptomes positifs correspondent �a la terminologie plus classique de symptome d'incor-rection [58], alors que les symptomes n�egatifs correspondent �a la notion classique de symptomed'incompl�etude [92].Le changement de terminologie est du �a la nouveaut�e de notre approche. En plus de fournir unformalisme dans le but de diagnostiquer des erreurs dans les programmes logiques avec contraintes,nous traitons le probl�eme de r�eponses manquantes comme un probl�eme d'incorrection en consid�erantune autre notion de r�eponse. Cette notion de r�eponse est similaire �a celle donn�e dans [63] pour las�emantique du langage ESHER et par [81] pour la s�emantique du langage Prolog IV.Dans la section 4.1, nous pr�esentons le sch�ema g�en�eral du diagnostic d�eclaratif d'erreur d�egag�edans [41, 43]. Dans la section 4.2 nous pr�esentons, vu dans le cadre de la section 4.1, l'�etat del'art du diagnostic d�eclaratif d'erreur (essentiellement pour les programmes logiques purs). Dansla section 4.3, nous pr�esentons un nouveau sch�ema g�en�eral pour le diagnostic d�eclaratif. L'int�eretde ce nouveau sch�ema est d'�etudier le probl�eme des r�eponses manquantes comme un probl�emed'incorrection. De plus, on explique en�n compl�etement des algorithmes connus dans le cadre de laprogrammation logique qui �etaient mal compris parce qu'ils �etaient reli�es au diagnostic d�eclaratifd'insu�sance. Dans la section 4.4 on �etudie le cas des symptomes positifs, dans la section 4.5celui des symptomes n�egatifs. Dans la section 4.6 on voit le probl�eme des r�eponses manquantes demani�ere plus classique.

4.1. SYMPTOMES ET ERREURS POUR UN SYST�EME DE R�EGLES 894.1 Symptomes et erreurs pour un syst�eme de r�egles : Premiersch�ema g�en�eralDans la section 1.2 nous avons introduit les d�e�nitions inductives. Nous rappelons ici les d�e�nitionsde symptomes et d'erreurs et leurs liens dans ce cadre [43, 41]. Dans la section 4.2 nous verronsune premi�ere application de ce premier sch�ema g�en�eral de diagnostic d'erreur.Soit E un ensemble et � un ensemble de r�egles sur E.4.1.1 Symptomes, erreurs et diagnostic�Etant donn�e un ensemble I � E, supposons que nous souhaitons ind(�) � I, mais que nousconstatons qu'il existe un x 2 ind(�) n I. Dans ce cas, x est appel�e un symptome de � par rapport�a I.S'il existe un symptome alors ind(�) 6� I, donc I n'est pas clos par T�, i.e T�(I) 6� I ; parcons�equent, il existe une r�egle x X 2 � telle que X � I mais x 62 I. Cette r�egle x X estappel�ee une erreur de � par rapport �a I.Il est facile de voir qu'un �el�ement de E est parfois symptome �a cause d'un autre symptome,c'est-�a-dire, il est la conclusion d'une r�egle dont une pr�emisse est un symptome. Il n'est pas tr�esint�eressant de d�esigner cette r�egle comme la r�egle responsable du symptome. Une erreur est bien plusint�eressante : c'est une r�egle dont la conclusion est un symptome alors qu'aucune de ses pr�emissesn'en est un. De plus, s'il n'y a pas d'erreur alors il n'y a pas de symptome. La conclusion d'uneerreur est une sorte de symptome minimal.Supposons que toutes les r�egles de � soient �nitaires.�Etant donn�e un arbre de preuve enracin�e par un symptome, l'id�ee d'un algorithme de diagnosticd'erreur est de v�eri�er si les �etiquettes des n�uds de l'arbre sont des symptomes : il existe un n�ud�etiquet�e par un symptome alors qu'aucun de ses �ls ne l'est. La r�egle qui relie l'�etiquette de ce n�udaux �etiquettes de ses �ls est une erreur. Comme l'arbre de preuve est �ni, l'algorithme termine.4.1.2 Co-symptomes, co-erreurs et diagnosticDu point de vue dual, un co-symptome de � par rapport �a I � E est un �el�ement de I n coind(�).Une co-erreur de � par rapport �a I est un �el�ement x de I tel qu'il n'existe aucune r�egle x X 2 �avec X � I (i.e. x 2 I n T�(I)).S'il existe un co-symptome alors coind(�) 6� I, donc I n'est pas support�e par T�, i.e. T�(I) 6� I ;par cons�equent, il existe une co-erreur.Notons que s'il n'y a pas de co-erreur alors il n'y a pas de co-symptome. De plus, s'il n'existeni erreur ni co-erreur alors I est un point �xe de T�.Supposons que toutes les r�egles de � soient �nitaires.�Etant donn�e un co-symptome x, l'id�ee d'un algorithme de diagnostic de co-erreur est d'essayerde construire un 1-arbre de preuve enracin�e par x dont l'ensemble des �etiquettes est inclus dansI. C'est impossible. Si c'�etait possible alors l'ensemble X des �etiquettes des n�uds de cet arbreserait support�e par T�, donc X � coind(�), or x 2 X. On construit une suite d'arbre de preuve\partiel"1 enracin�es par x dont les �etiquettes sont dans I. Chaque arbre Ai+1 de la suite (sauf le1Un arbre de preuve partiel est un arbre de preuve avec hypoth�eses, i.e. certaines de ses feuilles sont �etiquet�eespar des �el�ements qui ne sont pas n�ecessairement des conclusions de r�egles dont l'ensemble des pr�emisses est vide. Cesfeuilles (ou leurs �etiquettes) sont appel�ees des hypoth�eses.

90 CHAPITRE 4. DIAGNOSTIC D�ECLARATIF D'ERREURpremier) est obtenu �a partir du pr�ec�edent Ai : on choisit une hypoth�ese N 2 domAi et une r�eglelabAi(N) X 2 � telle que X � I, Ai+1 = graft(Ai; N;A), o�u A est l'arbre de preuve partiel deprofondeur 1 enracin�e par labAi(N) dont l'ensemble des feuilles est X. On trouve une \hypoth�ese"x0 2 I tel qu'il n'existe aucune r�egle de conclusion x0 dont les pr�emisses sont dans I (sinon onconstruit un 1-arbre de preuve enracin�e par x). Cet �el�ement x0 est une co-erreur. L'algorithmetermine si la tentative de construction de l'arbre n'est pas quelconque : par exemple, on peut leconstruire par niveaux.4.2 Survol du d�ebogage d�eclaratif en programmation logiqueNous rappelons, en nous appuyant sur le premier sch�ema g�en�eral les principaux travaux sur lediagnostic d�eclaratif d'erreur.4.2.1 Symptome et erreur pour les programmes logiquesOn a une premi�ere application tr�es simple du sch�ema g�en�eral (section 1.2) si l'on consid�ere unprogramme logique d�e�ni P , la base de Herbrand H (i.e. l'ensemble des atomes clos), et le syst�emede r�egles constitu�e des instances closes des clauses de P [62, 2]. L'op�erateur associ�e au syst�eme der�egles est g�en�eralement not�e TP .pppf (TP ) est le plus petit mod�ele de Herbrand de P et c'est aussi l'ensemble des atomes closcons�equence logique de P . En ce sens, il formalise la s�emantique d�eclarative (close) (positive) de P .Soit I un ensemble d'atomes clos formalisant des propri�et�es attendues pour le programme P .Un symptome de TP par rapport �a I est un atome repr�esentant une r�eponse close fausse de Pet est appel�ee un symptome d'incorrection de P par rapport �a I.Une erreur est appel�ee une incorrection de P par rapport �a I. Trivialement, s'il n'y a pasd'incorrection alors I est un mod�ele de Herbrand de P .Remarque. Notons que le sch�ema g�en�eral s'applique �egalement si l'on consid�ere d'autresformalisations par point �xe de la s�emantique des programmes : par exemple, la s�eman-tique avec variables [40, 32] ou la s-s�emantique [15]. 3Les propri�et�es attendues, formalis�ees par l'ensemble I, ne constituent pas obligatoirement unesp�eci�cation compl�ete du programme P . En d'autres termes, on d�esire seulement avoir pppf (TP ) �I, mais l'�egalit�e n'est pas n�ecessairement attendue : par exemple les propri�et�es attendues peuventconcerner la forme des atomes, le typage, etc. [70, 78].Les notions duales de co-symptome et co-erreur interviennent quand on s'int�eresse �a la s�eman-tique n�egative (close) du programme P , �a cause de l'ensemble d'�echec �ni de P , parce qu'il estinclus dans H n pgpf (TP ).Un co-symptome de TP par rapport �a I est appel�e un symptome d'insu�sance de P par rapport�a I. C'est une notion abstraite qui peut s'appliquer aux r�eponses manquantes (closes) e�ectivementcalcul�ees, c'est-�a-dire au cas o�u un atome appartient �a I mais appartient aussi �a l'ensemble d'�echec�ni de P .Une co-erreur est appel�ee insu�sance de P par rapport �a I. Le terme insu�sance [88] (et nonpas incompl�etude) fait ressortir la di��erence entre I � pgpf (TP ) et I � pppf (TP ). Il est int�eressantde constater que l'insu�sance est une bonne notion d'erreur : elle explique le symptome dans le butde corriger le programme. En particulier, une autre notion d'erreur qui expliquerait uniquementla raison pour laquelle il y a �echec �ni ne serait pas une bonne notion d'erreur car l'�echec �ni est

4.2. SURVOL DU D�EBOGAGE D�ECLARATIF EN PROGRAMMATION LOGIQUE 91une propri�et�e op�erationnelle du programme P seul, alors que les bonnes notions de symptomes etd'erreur doivent aussi d�ependre des propri�et�es attendues de P . De plus, il est int�eressant qu'ellesne d�ependent que de propri�et�es ind�ependantes du comportement op�erationnel.Cette approche th�eorique est bien pratique parce que les notions de symptome et d'erreur etles relations entre elles sont tr�es claires (et simple) dans ce cadre inductif. De plus, cette approches'applique aux symptomes e�ectivement calcul�es par la r�esolution SLD.Dans ce sch�ema g�en�eral, avec d'une part le plus petit point �xe de TP et d'autre part son plusgrand point �xe, on peut consid�erer l'information n�egative et l'information positive ensemble. Lesch�ema se g�en�eralise aux programmes logiques avec n�egation (programmes normaux) [41, 11] (las�emantique de Fitting [44] en donne une vision logique). A nouveau tout symptome est reli�e �a uneerreur, mais maintenant toute interaction est possible entre les deux types de symptomes et les deuxtypes d'erreurs �a travers les n�egations : un symptome d'incorrection (respectivement d'insu�sance)peut etre reli�e �a une insu�sance (respectivement une incorrection).On peut �egalement retrouver l'approche de Lloyd [61, 62] bas�e sur une s�emantique logique ducompl�et�e de Clark [17], la r�esolution SLDNF et la notion d'interpr�etation attendue I, o�u l'absenced'erreur signi�e que I est un mod�ele du compl�et�e du programme. En fait I mod�ele du compl�et�e deP est un cas particulier de I point �xe de l'op�erateur de Fitting associ�e �a P .Pour le cas des r�eponses manquantes, une autre notion d'erreur est �egalement �etudi�ee [78,37, 69] appel�ee atome non compl�etement couvert (ou insu�sance faible [94]). Il s'agit d'un atome�eventuellement avec variables dont une instance est un atome non couvert (i.e. une insu�sance).Cette notion d'erreur est plus faible (elle comporte moins d'information) que la notion d'insu�sance,mais intervient dans des algorithmes de diagnostics (voir section 4.2.2) qui ont une interaction avecl'oracle moins complexe.4.2.2 Diagnostic d�eclaratif pour les programmes logiquesBien entendu l'ensemble I de propri�et�es attendues pour le programme n'est pas toujours disponible.Ce n'est qu'une formalisation th�eorique en terme d'ensemble du concept d'oracle [88] i.e. la mani�erepar laquelle l'algorithme de diagnostic peut obtenir de l'information sur les propri�et�es attenduesdu programme (formalis�ees par I).Consid�erons un arbre de preuve enracin�e par un atome formalisant une r�eponse fausse. L'�eti-quette de sa racine appartient �a pppf (TP ) mais n'est pas attendue. C'est un symptome d'incorrec-tion de P par rapport aux propri�et�es attendues I.L'algorithme de diagnostic interroge l'oracle sur les n�uds de l'arbre de preuve : l'oracle indiquesi les �etiquettes des n�uds sont attendues (pour simpli�er si le n�ud est attendu). On montre (parinduction sur les arbres de preuve) qu'il existe un n�ud qui n'est pas attendu alors que tout ses�ls le sont : la racine n'est pas attendue et l'arbre est �ni. La r�egle reliant ce n�ud �a ces �ls estune erreur de TP par rapport �a I. Elle correspond �a une instance de clause incorrecte, c'est-�a-direune incorrection de P par rapport �a I. L'algorithme peut retourner la premi�ere erreur d�etect�ee, ouencore l'ensemble des erreurs ayant une occurrence dans l'arbre de preuve.Toute strat�egie pour localiser une erreur dans l'arbre de preuve peut etre envisag�ee. Par exemplela strat�egie descendante (qui interroge les �ls d'un n�uds de gauche �a droite en profondeur d'abord)[88, 40, 61, 72]. En g�en�eral, ces algorithmes s'arretent d�es que la premi�ere incorrection est d�etect�ee.Aussi, changer de strat�egie peut optimiser le nombre de questions pos�ees �a l'oracle2. Cela peut2Une des pr�eoccupation les plus importante dans le diagnostic d�eclaratif est de minimiser le nombre de questions�a l'oracle, et que ces questions soient les plus simples possible. Il ne faut pas oublier que le concept th�eorique

92 CHAPITRE 4. DIAGNOSTIC D�ECLARATIF D'ERREURchanger �egalement la sortie de l'algorithme, i.e. l'incorrection trouv�ee. Des strat�egies meilleures enmoyenne (en nombre de question �a l'oracle) que la strat�egie descendante (ou ascendante) sont parexemple la strat�egie \diviser pour r�egner" (divide-and-query) [88, 14], ou des strat�egies bas�ees surdes heuristiques [79, 75].Une autre mani�ere de r�eduire le nombre de questions �a l'oracle est d'avoir stock�e ses pr�ec�edentesr�eponses a�n de ne plus l'interroger sur des questions dont la r�eponse est subsum�ee par des r�eponses�a des questions pr�ec�edentes [88, 68, 16].Une sp�eci�cation partielle de la s�emantique attendue du programme fournie �a l'algorithmede diagnostic peut encore r�eduire le nombre de questions [28, 37]. Drabent et al. [37] sugg�erentd'utiliser les assertions, qui peuvent etre \attach�ees" aux symboles de pr�edicats du programme,comme sp�eci�cation partielle. Dans [34] une sp�eci�cation ex�ecutable est utilis�ee pour g�en�erer destests, localiser des erreurs et guider la correction, par l'interm�ediaire de techniques d'inf�erencesd�eductive et inductive (voir aussi [33, 59]). Notons tout de meme qu'une sp�eci�cation compl�ete etex�ecutable du programme est une hypoth�ese un peu forte !L'int�eret du diagnostic d�eclaratif par rapport aux techniques de traces est maintenant clair :1. L'utilisateur n'a pas besoin de comprendre le comportement op�erationnel du syst�eme (lesarbres de preuve sont intrins�eques au programme, i.e. ils ne d�ependent pas de la strat�egie der�esolution).2. L'algorithme suit le chemin direct du symptome jusqu'�a l'erreur (�evitant les explorationsinutiles dues au backtracking).3. Il n'a�che que de l'information pertinente (c'est-�a-dire indispensable �a la localisation del'erreur).4. Il aide le programmeur �a se poser les bonnes questions sur son programme.5. Il fournit au programmeur une clause fautive, mais aussi les conditions de son incorrectionformalis�ees par une instance de clause incorrecte.6. L'ensemble des points pr�ec�edents facilite la correction du programme.Pour le probl�eme des r�eponses manquantes, deux types de diagnostic sont envisag�es. Le premiertype recherche une insu�sance (un atome non couvert) [88, 40, 61] alors que le second rechercheune insu�sance faible (un atome non compl�etement couvert) [78, 37, 69].La donn�ee, pour le premier type d'algorithmes, est un symptome d'insu�sance, c'est-�a-dire unatome attendu formalisant une r�eponse manquante.Intuitivement, l'algorithme de diagnostic tente de construire un arbre de preuve enracin�e par lesymptome d'insu�sance. Naturellement, la tentative doit �echouer (si la construction est �equitable).Supposons que l'on ait d�ej�a un arbre de preuve partiel, c'est-�a-dire un arbre de preuve dont certainesfeuilles sont des hypoth�eses. L'algorithme choisit une hypoth�ese de l'arbre de preuve (une feuillenon �etiquet�ee par un fait) et demande �a l'oracle une instance de clause dont la conclusion estl'hypoth�ese et les pr�emisses sont attendues dans le but de \gre�er" cette r�egle �a la feuille. Quandaucune instance de clause n'a �et�e trouv�ee, l'hypoth�ese est un atome non couvert.d'oracle se traduit dans la r�ealit�e par le concept concret de programmeur. Dans la majorit�e des implantations, c'estle programmeur qui r�epond aux questions pos�ees sur les propri�et�es attendues, meme quand une sp�eci�cation partiellede ces propri�et�es est fournie �a l'algorithme de diagnostic : ce dernier peut toujours etre amen�e �a poser une questionsur la partie non sp�eci��ee des propri�et�es attendues.

4.2. SURVOL DU D�EBOGAGE D�ECLARATIF EN PROGRAMMATION LOGIQUE 93Cette fois toute strat�egie n'est pas une bonne strat�egie, contrairement aux algorithmes de diag-nostic d'incorrection. Une bonne strat�egie est, par exemple, de construire l'arbre de preuve partielpar niveaux. D'autres strat�egies peuvent etre utilis�ees, guid�ees par des heuristiques, dans le butde choisir la feuille qui minimisera le nombre de questions. Il faut souligner que l'interaction avecl'oracle est assez compliqu�ee : il doit fournir des substitutions (meme s'il est aid�e dans cette d�e-marche par l'algorithme de diagnostic).La donn�ee, pour le second type d'algorithmes est un symptome d'incompl�etude, i.e. un atomequi a un instance attendue formalisant une r�eponse manquante.L'interaction avec l'oracle est plus facile que celle du premier type d'algorithmes. En e�et, celui-ci n'a pas �a fournir de substitution. Il ne r�epond que par oui ou non aux questions d'incompl�etude[37, 78]. L'id�ee est de v�eri�er si toute instance attendue d'un atome a est instance d'un atomeformalisant une r�eponse au but a.Mais, l'algorithme, quant �a lui, est plus compliqu�e. De plus, il suppose l'existence d'un arbreSLD �ni sans co-routinage [69, 93] (ou un arbre SLD �ni standard [37]) �a partir du symptomed'incompl�etude (dans le but d'avoir des questions d'incompl�etude �nies). Naish dans [69] recherchedes possibilit�es a�n de supprimer cette condition de non co-routinage dans certain cas.Le Rationnal Debugging [78] invoque des d�ependances entre termes et utilise conjointement las�emantique d�eclarative et la s�emantique op�erationnelle en utilisant une notion d'\appels inadmis-sibles".Les algorithmes de diagnostic d�ecris ci-dessus ont �et�e implant�es pour plusieurs syst�emes deprogrammation logique. Les programmes de diagnostic sont souvent des m�eta-programmes, et leurimplantation soul�eve des probl�emes de repr�esentation du programme objet [51, 91]. De ce point devue, le langage G�odel [52] o�re des facilit�es de manipulation de programmes au niveau objet. Binksa d�evelopp�e le syst�eme de diagnostic d�eclaratif GRADE [14] pour G�odel, �ecrit en G�odel, incluantdes outils pour les types abstraits de donn�ees et le co-routinage. Un des composants du syst�eme demise au point NUDE [74], implant�e par Naish, est un diagnostic d�eclaratif. Le syst�eme HyperTracerenvironment utilisant des heuristiques [78] a �et�e implant�e pour C-prolog par Calejo [16].4.2.3 ExtensionsLe diagnostic d�eclaratif a �et�e �etendu �a des propri�et�es non d�eclaratives. Par exemple, dans uncontexte de programmation logique concurrente, Abstract Algorithmic Debugging [60] r�eduit lacomplexit�e des questions pos�ees �a l'oracle par le biais d'abstractions.Plus r�ecemment, Abstract Diagnosis [98, 27, 28, 29] �etend les m�ethodes de diagnostic d�eclaratifen combinant la s-s�emantique [15] et les techniques d'interpr�etation abstraite [30]. La m�ethodeest bas�ee sur la comparaison entre la sp�eci�cation I� et TP;�(I�) pour un TP;� ad�equat, o�u �est un observable [26]. Pour certains observables (par exemple l'ensemble des r�eponses calcul�ees�a une profondeur n) les auteurs donnent une m�ethode de diagnostic d'incorrection ind�ependantedes symptomes. Ils donnent �egalement une m�ethode de diagnostic d'incompl�etude pour une grandeclasse de programme incluant les programmes acceptables [4] (en tirant parti de l'unicit�e du point�xe3 de TP ). Le diagnostic n'est g�en�eralement pas e�ectif parce que I est in�ni, mais le devient siune s�emantique abstraite �nie ad�equate est consid�er�ee [29].3Ils supposent que tout programme que l'on souhaite �ecrire a un unique point �xe (c'est le cas de tous lesprogrammes propos�es dans [90] par exemple). De plus, ils supposent que les versions erron�ees de ces programmes ont�egalement un unique point �xe. Il se trouve que l'exp�erimentation montre que dans la majorit�e des cas ces hypoth�esess'av�erent v�eri��ees.

94 CHAPITRE 4. DIAGNOSTIC D�ECLARATIF D'ERREURLe diagnostic d�eclaratif �a �et�e �egalement �etendu �a d'autres types de langage de programmation :des langages logico-fonctionnels comme NUE-Prolog [73], Escher [63]. Une caract�eristique typiquedu cadre du diagnostic en Escher est sa simplicit�e, principalement parce que le calcul n'est pasd�ecrit explicitement par un arbre, mais par des �equations et un calcul d�eterministe.D'autres langages ont aussi �et�e consid�er�es : les langages fonctionnels paresseux [76, 71] et memedes langages imp�eratifs [46] incluant un sous-ensemble de Pascal. Dans le sch�ema de [72], Naishd�ecrit un cadre pour la mise au point d�eclarative de programmes logiques orient�es objet.Des travaux r�ecents �etendent les diagnostic d�eclaratif �a la programmation logique avec contraintes.La principale di�cult�e est que les interpr�etations de Herbrand ne repr�esentent plus la s�emantiquedes programmes. De plus, peu de langages de contraintes ont la propri�et�e d'ind�ependance descontraintes n�egatives (INC [65]), ce qui complique le diagnostic d'insu�sance (l'algorithme propos�edans la section 4.2.2 ne peut convenir si INC n'est pas v�eri��ee). Naish annonce dans [72] un pro-totype implant�e en CLP(R) bas�e sur son sch�ema (malheureusement, je n'ai pas trouv�e d'autresr�ef�erences �a ces travaux).Cette th�ese est une contribution �a l'extension �a la programmation logique avec contraintes. [95]fournit un cadre formel inductif bas�e sur la vision grammaticale [32] pour �etendre le diagnosticd�eclaratif au langages de PLC. [58] (r�eponses fausses) abstrait l'interpr�etation des contraintes parun crit�ere de rejet pour tenir compte de l'incompl�etude des solveurs de contraintes. [92] �etend lecrit�ere de rejet par une relation de couverture et d�e�nit les insu�sances et les insu�sance faiblesdans un cadre inductif unique [42].Un dernier point est le \probl�eme de pr�esentation" [63] qui consiste �a trouver des moyens depr�esenter �a l'oracle (souvent le programmeur) des questions �a l'origine longues et complexes sousune forme convenablement simpli��ee pour que celui-ci puisse y r�epondre correctement. Ce point estau moins aussi important en programmation logique avec contraintes qu'il l'est en programmationlogique pure.4.3 Symptomes et erreurs pour une relation bien fond�ee : deuxi�emesch�ema g�en�eralDans la section 4.1 nous avons d�ecrit les notions de symptomes, symptome minimal et erreur dupremier sch�ema g�en�eral [43] bas�e sur les d�e�nitions inductives [1].Il se peut que l'on �eprouve parfois des di�cult�es �a exprimer un syst�eme de r�egles qui conduise �aune notion de symptome minimal acceptable. Il se peut aussi que l'on dispose d'une bonne notionde symptome minimal, mais que les syst�emes de r�egles pour cette notion soient compliqu�es et nonintuitifs.Nous proposons dans cette section une autre approche du sch�ema g�en�eral du diagnostic d�eclaratifbas�e sur le fait que : un algorithme de diagnostic est essentiellement la recherche d'un symptomeminimal selon une relation bien fond�ee.Par exemple, supposons que l'on ait une relation binaire sur les �etats de calcul et que la restric-tion de cette relation �a un sous-ensemble des �etats de calcul soit bien fond�ee (la notion de relationbien fond�ee est intimement li�ee �a la notion de calcul �ni, preuve de terminaison, etc.). Alors lesch�ema que nous proposons s'applique imm�ediatement. De plus, si le sous-ensemble des �etats decalcul consid�er�e est �ni, alors il su�t, pour montrer que la relation est bien fond�ee, de montrer quesa cloture transitive est irr�e exive. En g�en�eral, c'est tr�es simple.

4.3. SYMPTOMES ET ERREURS POUR UNE RELATION BIEN FOND�EE 95Soit E un ensemble. Soit R une relation binaire bien fond�ee sur E. Soit I � E l'ensemble des�el�ements de E attendus. Supposons que I 6= E, c'est-�a-dire E n I 6= ;.D�e�nition 4.3.1 Symptome pour une relation bien fond�eeUn symptome de R par rapport �a I est un �el�ement de E n I.Comme R est bien fond�ee, E n I admet au moins un �el�ement minimal (selon R+).D�e�nition 4.3.2 Symptome minimal pour une relation bien fond�eeUn symptome minimal de R par rapport �a I � E est un �el�ement minimal de E n I (selon R+).Lemme 4.3.3 S'il existe un symptome de R par rapport �a I alors il existe un symptome minimalde R par rapport �a I.Preuve. R+ est un ordre bien fond�e.Si �a chaque symptome minimal on sait associer une notion d'erreur alors : s'il n'existe pasd'erreur, il n'existe pas de symptome.4.3.1 Diagnostic d'erreur pour une relation bien fond�eeLe diagnostic est aussi simple que le sch�ema lui-meme.Un algorithme de diagnostic �evident consiste �a construire une suite x0; x1; : : : ; xi; : : :, de symp-tomes tels que pour tout i (xi+1; xi) 2 R, i.e. une suite d�ecroissante de symptomes. La suite estobligatoirement �nie, puisque R est bien fond�ee.Si l'on construit une suite (�nie) d�ecroissante de symptomes dont le dernier �el�ement n'a pas depr�ed�ecesseur qui soit un symptome alors ce dernier �el�ement est un symptome minimal.4.3.2 Liens avec les d�e�nitions inductivesSoit R une relation binaire bien fond�ee sur E. Soit �R l'ensemble de r�egles sur E d�e�ni par : pourtout x 2 E, soit X � E l'ensemble des pr�ed�ecesseurs de x, x X est une r�egle de �R.Remarque.1. Le syst�eme de r�egles �R est non ambigu�e, i.e. chaque �el�ement de E est la conclusiond'au plus une r�egle (exactement une dans notre cas).L'ensemble d�e�ni inductivement par �R est l'ensemble E tout entier.2. Dans la section 1.2.1 nous avons d�e�ni les arbres de preuve pour des syst�emes der�egles �nitaires. Nous avons pro�t�e de la d�e�nition des domaines d'arbre standardpour d�e�nir l'ensemble des n�uds d'un arbre de preuve. Mais ce qui est importantc'est la structuration en arbre des n�uds plutot que la nature meme des n�uds.On peut d�e�nir les arbres de preuve meme pour des syst�emes non �nitaires (cepen-dant, leurs domaines d'arbre ne peuvent plus etre standards quand l'ensemble despr�emisses des r�egles ne sont plus d�enombrables). Un arbre de preuve est un arbre�etiquet�e bien fond�e (sans branche in�nie) tel que l'�etiquette de chaque n�ud estla conclusion d'une r�egle dont les pr�emisses sont les �etiquettes des �ls du n�uds.On montre toujours que l'ensemble des racines d'arbres de preuve est l'ensembled�e�ni inductivement par les r�egles.

96 CHAPITRE 4. DIAGNOSTIC D�ECLARATIF D'ERREUR3. On remarque que pour �R, tout �el�ement de E enracine un unique arbre de preuve.De plus, comme le syst�eme est non ambigu�e, on constate que l'on peut prendrecomme domaine d'arbre d'un arbre de preuve l'ensemble de ces �etiquettes et chaquen�ud correspond �a son �etiquette (cela devient faux si l'on veut d�e�nir les1-arbresde preuve).Les arbres de preuve pour �R sont �eventuellement in�nis si les r�egles ne sont pas�nitaires, mais il ne doivent pas etres confondus avec les 1-arbres de preuves :toute branche d'un arbre de preuve est �nie. 3Les notions de symptome et symptome minimal de R par rapport �a I � E correspondent auxnotions de symptome et symptome minimal de �R par rapport �a I de fa�con tout �a fait �evidente.Il semble que les d�e�nitions par rapport �a une relation bien fond�ee soient un cas particulier desd�e�nitions par rapport �a un ensemble de r�egles : quand celui-ci est non ambigu�e.En fait, il s'agit de deux formalismes �equivalents.Soit � un ensemble de r�egles sur E. Soit adp(�) l'ensemble des arbres de preuve pour �.Soit R� la relation binaire sur adp(�) d�e�nie par : (A0; A) 2 R� si et seulement si il existe i 2 INtel que A0 est l'arbre de preuve enracin�e en i dans A. R� est bien fond�ee (les branches des arbresde preuve sont �nies).Soit I � E tel que ind(�) 6� I. C'est �a dire qu'il existe au moins un symptome de � par rapport�a I. Les symptomes de � par rapport �a I sont des �el�ements de ind(�).Soit IR� l'ensemble des arbres de preuves enracin�es par un �el�ement de ind(�) \ I. D'une part,IR� � adp(�). D'autre part, adp(�)nIR� 6= ; puisque ind(�)nI 6= ; (adp(�)nIR� est l'ensemble desarbres de preuve enracin�es par les symptome de � par rapport �a I). Donc, il existe des symptomesde R� par rapport �a IR� .Un symptome minimal de R� par rapport �a IR� est enracin�e par un symptome de � par rapport�a I et est tel que tout ses pr�ed�ecesseurs sont enracin�es par des �el�ements de I, i.e. il est enracin�epar un symptome minimal de � par rapport �a I.R�eciproquement tout symptome minimal de � par rapport �a I enracine un symptome minimalde R� par rapport �a IR� puisqu'un symptome minimal correspond �a un symptome qui enracine unarbre de preuve dont tous les �el�ements �etiquetant les �ls de sa racine (ils enracine des \sous-arbrede preuve") sont dans I.C'est simplement du au fait que deux arbres enracin�es par le meme �el�ement et qui ont les memes\sous-arbres" sont identiques.En fait, les deux formalismes ont le meme pouvoir d'expression parce que les principes de preuvepar induction (structurelle [6]) et de preuves par induction bien fond�ee sont �equivalent : \l'un simulel'autre". Ce qui se montre facilement dans notre cadre.Soit � un ensemble de r�egles sur E. Le principe de preuve par induction structurelle d'unepropri�et�e P sur les �el�ements de ind(�) consiste �a v�eri�er que, pour toute r�egle x X 2 �, si les�el�ements de X v�eri�ent P alors x v�eri�e P .Soit R une relation binaire bien fond�ee sur E. Le principe de preuve par induction bien fond�eed'une propri�et�e P sur les �el�ements de E consiste �a v�eri�er que, pour tout x 2 E, si tout pr�ed�ecesseurde x v�eri�e P alors x v�eri�e P .En utilisant les deux techniques consistant �a passer de R �a �R et de � �a R�, on montreque toute preuve par induction structurelle se ram�ene �a une preuve par induction bien fond�ee etr�eciproquement.

4.4. CORRECTION PARTIELLE POSITIVE : R�EPONSES FAUSSES 97Nous avons donc deux sch�emas g�en�eraux �equivalents pour le diagnostic d�eclaratif. Il est int�eres-sant de disposer du second, car une relation bien fond�ee simple peut parfois aboutir �a un syst�emede r�egle inutilement compliqu�e comme nous le verrons par la suite (section 4.5).De plus, la notion de relation bien fond�ee est intrins�equement li�ee �a la notion de calcul �ni.Par exemple, dans le chapitre 2 tout calcul est d�ecrit par un arbre ; quand le calcul est �ni, lar�eciproque de sa relation de parent�e est bien fond�ee. Mais il existe d'autres relations bien fond�eessur les �etats de ces calculs �nis, et nous verrons que certaines conduisent �a des notions int�eressantesde symptome minimal.Remarque. Notons que nous n'avons pas d�e�ni la notion d'erreur pour le sch�ema bas�esur une relation bien fond�ee. Il y a une explication simple : nous n'avons pas d�e�ni lastructure �a partir de laquelle se d�e�nit la relation bien fond�ee.Dans le premier sch�ema on pouvait donner une notion d'erreur parce qu'on donnait unsyst�eme de r�egles � (une erreur est une r�egle de �).Les algorithmes de diagnostic recherchent en fait un symptome minimal. C'est une foisque ce symptome minimal est trouv�e qu'on l'explique par une notion d'erreur issue parexemple d'un syst�eme de r�egles ou d'un programme. 3Remarque. Nous n'avons pas cherch�e �a d�e�nir de notion duale (co-symptome) pour unerelation bien fond�ee. C'est parce que le probl�eme des r�eponses manquantes sera trait�ecomme celui des r�eponses fausses par un algorithme du type recherche d'incorrection.En fait, une r�eponse manquante peut s'expliquer par une incorrection d'un syst�eme der�egle. Ce syst�eme de r�egles est toutefois compliqu�e, mais heureusement, il existe unerelation bien fond�ee simple qui lui \correspond". C'est �a partir de cette relation bienfond�ee que nous rechercherons dans le programme les causes d'une r�eponse manquante.34.4 Correction partielle positive : r�eponses faussesOn suppose un programme P et un crit�ere de rejet RC �x�es.Rappelons que la notion de symptome est li�ee �a la notion de calcul �ni dont le r�esultat estinattendu. Dans cette section nous allons examiner le cas des symptomes pour le premier niveaude calcul : les d�erivations SLD.Consid�erons une SLD-d�erivation succ�es pour le but a dont l'�etat �nal S est telle que a AC(S; a) n'est pas attendu.L'�etat complet S peut etre construit �a partir des sous-squelettes gre��es en ses n�uds. D'apr�esle Lemme 2.4.2 chacun de ses sous-squelettes est une r�eponse.Soit < la relation binaire sur l'ensemble des r�eponses d�e�nie par S0 < S si il existe i 2 IN telque S0 est la r�eponse enracin�ee en i dans S (voir �gure 4.1).Lemme 4.4.1 < est bien fond�ee.Preuve. Les r�eponses sont �nies et si S0 < S alors card(domS 0) < card(domS ), o�ucard (X) est le cardinal de l'ensemble X.�Etant donn�e un ensemble de r�eponses attendues, d'apr�es le sch�ema g�en�eral de la section 4.3, ond�eduit imm�ediatement les d�e�nitions de symptome et symptome minimal.

98 CHAPITRE 4. DIAGNOSTIC D�ECLARATIF D'ERREURSoit S la r�eponse��������QQQQQ����� BBBBB��� AAA �� @@: : :S2S1 Snuu1 u2 unpour tout i = 1; : : : ; n, Si < S.(S = graft(� � � (graft(graft(sq(u); 0; S1); 1; S2); : : :); n� 1; Sn))Figure 4.1 : Relation < sur les r�eponsesIl est bien entendu que l'on ne peut d�ecemment exiger de l'utilisateur que sa formalisationdes propri�et�es attendues pour le programme P soit un ensemble de r�eponses attendues (i.e. uneensemble de squelettes �nis complets non rejet�es). Ce qu'il faut c'est disposer d'un crit�ere d�eclaratifqui permette de d�ecider si une r�eponse est attendue. �A l'origine de la mise en �uvre d'une m�ethodede diagnostic, on a un symptome calcul�e. Ce symptome a surgi parce que l'utilisateur a pos�e un but a et que le syst�eme a fourni un store r�eponse C pour le but a jug�e anormal par l'utilisateur.Il est anormal parce que a C n'est pas attendu alors qu'il appartient �a SS(P ). L'utilisateur doitsavoir d�eterminer si les �el�ements de SS(P ) sont attendus (c'est ainsi qu'il observe des symptomesen testant son programme). SS(P ) est l'ensemble succ�es associ�e au type de calcul consid�er�e : lesd�erivations SLD.Les propri�et�es attendues sont formalis�ees par un objet de meme nature que SS(P ), c'est-�a-dire,un ensemble d'atomes contraints, not�e I. L'ensemble I doit etre ferm�e par renommage. En e�et, siS est une r�eponse pour p 2 �p d'arit�e n alors pour toute s�equence de variables disjointes x1; : : : ; xn,par d�e�nition, AC(S; p(x1; : : : ; xn)) est un store r�eponse pour p(x1; : : : ; xn). C'est-�a-dire qu'ilexiste une forme d'�equivalence des stores r�eponses modulo les variables du but : si C est un storer�eponse pour a alors C� est un store r�eponse pour a�. Remarquons que a AC(S; a) ned�epend que de S.Remarque. Il est important de noter que des propri�et�es attendues formalis�ees en termesd'atomes contraints attendus sont di��erentes de propri�et�es attendues formalis�ees entermes de squelettes �nis complets attendus. En e�et, les propri�et�es attendues doi-vent avoir certaines propri�et�es leur permettant d'etre les propri�et�es attendues d'unprogramme, i.e. il doit exister un programme (id�eal) qui v�eri�e ces propri�et�es. Il estconseill�e qu'un \sous-squelette" d'un squelette attendu soit �egalement attendu, sinonles propri�et�es attendues seraient en contradiction avec le principe meme de constructiondes squelettes (cf. r�eponses manquantes).Si l'on consid�ere un diagnostic d�eclaratif, la notion de squelette attendu n'est pluspertinente, mais on peut retenir du squelette le store associ�e.C'est pourquoi les propri�et�es attendues sont formalis�ees en termes d'atomes contraintsattendus. D'une part, cela permet de d�eterminer si une r�eponse est attendue. D'autrepart, dans le cadre du diagnostic, on ne cherche qu'�a aider le programmeur pour quetous les calculs �nis fournissent un store r�eponse jug�ee correcte, par ce dernier, vis-�a-visdu but pos�e.

4.4. CORRECTION PARTIELLE POSITIVE : R�EPONSES FAUSSES 99En fait on peut consid�erer qu'un programme ayant la propri�et�e que tout calcul �nifournit un r�esultat attendu est d'un certain point de vue satisfaisant (meme s'il contientdes erreurs), c'est ce qu'on appelle la correction partielle. Cette propri�et�e n'est qu'enpartie satisfaisante, car toute extension du programme peut faire surgir des symptomesdus �a des erreurs du programme d'origine. C'est pourquoi les m�ethodes de validationau sens preuve de correction (voir la section ??) quand elles peuvent etre mise en �uvresont un compl�ement indispensable au diagnostic. 3La s�emantique partielle attendue formalis�ee par I �etant dor�enavant �x�ee, l'oracle peut d�eter-miner si une r�eponse S pour a est attendue : S est attendue si a AC(S; a) 2 I. Cela permetde pr�eciser la notion de symptome.D�e�nition 4.4.2 Symptome d'incorrection partielle positiveUn symptome d'incorrection partielle positive de P par rapport �a I est un atome contraint a C 2 SS(P ) n I.Pour all�eger le texte on l'appelle symptome positif.La cause d'un symptome de < par rapport �a I est un symptome minimal, mais quelle est lacause du symptome minimal ?Soit S un symptome minimal. Soit clause(labS(root (S))) = a C 2 a1 � � � an. S est un symp-tome donc a AC(S; a) 2 SS(P ) n I. Il est minimal donc si S1; : : : ; Sn sont les r�eponses en-racin�ees en i � 1 dans S alors ai AC(Si; ai) 2 I. Le symptome minimal vient du fait quea 9�a(C^Vi2f1;:::;ng AC(Si; ai)) 2 SS(P )nI alors que chaque ai AC(Si; ai) 2 SS(P )\I (voir lelemme 2.4.3). La clause a C 2 a1 � � � an est l'origine du symptome et le store Vi2f1;:::;ng AC(Si; ai)en est une explication.Nous associons maintenant une notion d'erreur �a tout symptome minimal.D�e�nition 4.4.3 Incorrection partielle positiveUne incorrection partielle positive (ou plus simplement une incorrection positive) de P par rapport�a I est un n + 1-uplet ha C 2 a1 � � � an; C1; : : : ; Cni, o�u a C 2 a1 � � � an 2 P et les Ci sont desstores, tel que fai Ci j i 2 f1; : : : ; ngg � I, mais a 9�a(C ^ C1 ^ � � � ^Cn) 62 I.Lemme 4.4.4 S'il existe un symptome positif de P par rapport �a I alors il existe une incorrectionpositive de P par rapport �a I.Preuve. Il existe un symptome positif si et seulement si il existe un symptome. Il existeun symptome si et seulement si il existe un symptome minimal. S'il existe un symptomeminimal alors il existe une incorrection positive.La r�eciproque du lemme 4.4.4 est, en g�en�eral, fausse. Il est facile de trouver des exemples o�ula clause d'une incorrection positive n'intervient dans aucun calcul �ni. Par contre, un corollaireint�eressant est sa contrapos�ee :Corollaire 4.4.5 S'il n'existe pas d'incorrection positive alors il n'existe pas de symptome positif.D'o�u l'int�eret des m�ethodes e�ectives de validation (quand elles existent).

100 CHAPITRE 4. DIAGNOSTIC D�ECLARATIF D'ERREURRemarque. Les notions de symptome positif et d'incorrection positive de P par rapport�a I sont exactement les notions de symptome et d'erreur de �(RC; P ) par rapport �a I.Nous verrons dans la section 4.5 qu'un syst�eme de r�egles qui donnerait les memes notionsde symptomes et d'erreurs qu'une relation bien fond�ee simple peut etre extremementcompliqu�e.La raison pour laquelle nous avons pr�ef�er�e d�e�nir une relation bien fond�ee plutot quer�eutiliser le syst�eme de r�egles �(RC; P ) r�eside dans la g�en�eralisation possible des d�e-�nitions quand la s�emantique d�eclarative fait r�ef�erence �a une pr�e-interpr�etation descontraintes ou une relation de couverture, comme nous le constaterons plus tard. 34.4.1 Diagnostics d'incorrection positiveOn fait appel au diagnostic d'incorrection positive quand on observe un symptome positif. C'est-�a-dire, une d�erivation SLD U pour le but a a abouti au store r�eponse C et a C n'est pasattendu. L'�etat �nal de U est une r�eponse S qui est un symptome de <.Pour simpli�er, dans la suite on dit qu'une r�eponse S pour a est (non) attendue si a AC(S; a) est (non) attendu.Soit S une r�eponse. Soit <S la restriction de < �a l'ensemble SA(S) = fS0 j il existe N 2 domS; S0est enracin�ee en N dans Sg.<S est bien fond�ee.On note >S la relation <S�1.Lemme 4.4.6 (SA(S); >S) est un arbre bien fond�e (�ni).Preuve. Triviale. La racine de (SA(S); >S) est S. Il est facile de voir d'apr�es la d�e�nitionde <S que� pour tout S0 2 SA(S), S>S�S0 ;� (S; S) 62>S ;� pour tout S0 2 SA(S) n fSg, il existe un unique S00 tel que S00 >S S0 : si S0 estenracin�e en N � i dans S alors S00 est la r�eponse enracin�ee en N dans S.(SA(S); >S) est bien fond�e puisque <S est bien fond�ee (voir section 1.1), il est meme�ni puisque SA(S) est �ni.Cet arbre s'oriente facilement en se donnant l'ensemble d'ordres f<(S;S0)gS02SA(S) tel que, pourtout n�ud S0 2 SA(S), si S0 est enracin�e en N dans S, si N a n �ls et S0i est la r�eponse enracin�eeen N � (i� 1), i = 1; : : : ; n, dans S alors S0j <(S;S0) S0k si j < k, pour tout j; k = 1; : : : ; n.De plus, si l'on �etiquette cet arbre par l'ensemble des atomes contraints avec la fonction d'�etique-tage lab(SA(S);>S) d�e�nie par lab(SA(S);>S)(S0) = a0 AC(S0; a0), o�u a0 = head (clause(labS0(root (S0)))),alors on retrouve un arbre similaire �a un arbre de preuve pour �(RC; P ).Intuitivement le diagnostic consiste �a chercher un symptome minimal dans l'arbre (SA(S); >S),mais l'algorithme s'exprime de mani�ere encore plus simple sur la r�eponse S directement.Comme S00<S�S si et seulement si S00 est enracin�e en un n�ud de domS dans S, tout parcoursdes n�uds de (SA(S); >S) revient �a un parcours des n�uds de S en consid�erant les arbres enracin�esen ces n�uds.Soit S une r�eponse pour a telle que a AC(S; a) 62 I. On dit qu'un n�ud N 2 domS estattendu si la r�eponse enracin�ee en N dans S est attendue. L'algorithme consiste �a v�eri�er pour

4.4. CORRECTION PARTIELLE POSITIVE : R�EPONSES FAUSSES 101go1(x; y) x = 1 + 1 ^ y = 1 + 1 est un symptome positif de FIB0 par rapport �a Ifib.Ce symptome positif est calcul�e par la r�eponse S1 :�� @@321 1Figure 4.2 : Symptome positif pour le programme FIB0chaque n�ud de domS s'il est attendu. Il existe un n�ud N 0 2 domS non attendu alors que tousces �ls sont attendus. Soit S0 la r�eponse enracin�ee en N 0 dans S. Soit clause(labS0(root (S0))) =a0 C 02 a01 � � � a0n. Soit S0i la r�eponse enracin�ee en i � 1 dans S0, i = 1; : : : ; n. Il est clair queha0 C 02 a01 � � � a0n;AC(S01; a01); : : : ;AC(S0n; a0n)i est une incorrection positive.Illustrons le diagnostic d'incorrection positive sur le petit exemple calculant la fonction deFibonacci, en consid�erant une version erron�ee du programme FIB de l'exemple 1.3.2 (cet exempleest similaire �a celui trait�e dans [58]).Exemple 4.4.1 FibonacciSoit FIB0 le programme :0 : fib(x; y) x = 0 ^ y = 12 "1 : fib(x; y) x = 1 ^ y = 12 "2 : fib(x; y) 1 < x ^ x = x1 + 1 ^ x = x2 + 1 ^ y = y1 + y22 fib(x1; y1)fib(x2; y2)3 : go1(x; y) x = y2 fib(x; y)4 : go2(x; y) x = 1 + 12 fib(x; y)Supposons que le crit�ere de rejet soit RCN , o�u N est la pr�e-interpr�etation des contraintes dont ledomaine est IN avec l'interpr�etation habituelle pour les symboles de � et �c.Remarque. On peut remarquer que l'ensemble des D-atomes de la forme fib(n1; n2) duplus petit N -mod�ele de FIB0 est ffib(n1; n2) j si n1 = 0 alors n2 = 1 sinon n2 = 2n1�1g.3L'ensemble d'atomes contraints qui formalise les propri�et�es attendues de FIB0 est not�e Ifib. Il s'agitde l'ensemble SS(FIB) de l'exemple 2.7.1.Le store-r�eponse 9x19x29y19y2(x = y^1 < x^x = x1 + 1^x = x2 + 1^y = y1 +y2^x1 = 1^y1 =1 ^ x2 = 1 ^ y2 = 1), �ecrit plus simplement x = 1 + 1 ^ y = 1 + 1, pour le but go1(x; y) estjug�e non attendu, c'est-�a-dire que go1(x; y) x = 1 + 1 ^ y = 1 + 1 n'appartient pas �a l'ensembled'atomes contraints Ifib : c'est un symptome positif de FIB0 par rapport �a Ifib.La r�eponse S1 concern�ee est pr�esent�ee par la �gure 4.2.Supposons que l'on interroge les n�uds de S1 selon le parcours pr�e�xe alors la session de diagnosticserait : go1(x; y) x = 1 + 1 ^ y = 1 + 1 attendu ? NONfib(x; y) x = 1 + 1 ^ y = 1 + 1 attendu ? NONfib(x; y) x = 1 ^ y = 1 attendu ? OUIfib(x; y) x = 1 ^ y = 1 attendu ? OUI

102 CHAPITRE 4. DIAGNOSTIC D�ECLARATIF D'ERREURIncorrection positive :h fib(x; y) 1 < x ^ x = x1 + 1 ^ x = x2 + 1 ^ y = y1 + y22 fib(x1; y1)fib(x2; y2);x1 = 1 ^ y1 = 1;x2 = 1 ^ y2 = 1 iOn remarque que l'on peut toujours �eviter la premi�ere question puisque l'entr�ee de l'algorithmeest un symptome. De plus, dans cet exemple, on peut �eviter la derni�ere question si l'on a stock�e laquestion et la r�eponse qui pr�ec�ede. Par cons�equent, il a su�t de deux questions pos�ees �a l'oraclepour localiser une erreur dans le programme.Voici, �a titre d'exemple, le d�ebut de la trace fournie par clp(FD) [35] :| ?- go1(X,Y).1 1 Call: go1(_31,_32) ?2 2 Call: (external) _31#=_32 ?2 2 Exit: (external) _31#=_31 ?3 2 Call: fib(_31,_31) ?4 3 Call: (external) _31#=0 ?4 3 Exit: (external) 0#=0 ?5 3 Call: (external) 0#=1 ?5 3 Fail: (external) _112#=1 ?3 2 Redo: fib/2 ?4 3 Call: (external) _31#=1 ?4 3 Exit: (external) 1#=1 ?5 3 Call: (external) 1#=1 ?5 3 Exit: (external) 1#=1 ?3 2 Exit: fib(1,1) ?1 1 Exit: go1(1,1) ?X = 1Y = 1 ? ;3 2 Redo: fib/2 ?4 3 Call: (external) _31#=_135+1 ?4 3 Exit: (external) 1..268435455#=0..268435454 +1 ?5 3 Call: (external) 1..268435455#=_144+1 ?5 3 Exit: (external) 1..268435455#=0..268435454 +1 ?6 3 Call: (external) 1..268435455#=_153+_154 ?6 3 Exit: (external) 1..268435455#=0..268435455 +0..268435455 ?7 3 Call: fib(0..268435454,0..268435455) ?8 4 Call: (external) 0..268435454#=0 ?8 4 Exit: (external) 0#=0 ?9 4 Call: (external) 0..1#=1 ?9 4 Exit: (external) 1#=1 ?7 3 Exit: fib(0,1) ?10 3 Call: fib(0,0) ?11 4 Call: (external) 0#=0 ?11 4 Exit: (external) 0#=0 ?12 4 Call: (external) 0#=1 ?

4.4. CORRECTION PARTIELLE POSITIVE : R�EPONSES FAUSSES 10312 4 Fail: (external) _532#=1 ?10 3 Redo: fib/2 ?11 4 Call: (external) 0#=1 ?11 4 Fail: (external) 0#=1 ?10 3 Redo: fib/2 ?11 4 Call: (external) 0#=_555+1 ?11 4 Fail: (external) 0#=0..268435455 +1 ?10 3 Fail: fib/2 ?7 3 Redo: fib/2 ?8 4 Call: (external) 0..268435454#=1 ?8 4 Exit: (external) 1#=1 ?9 4 Call: (external) 0..2#=1 ?9 4 Exit: (external) 1#=1 ?7 3 Exit: fib(1,1) ?10 3 Call: fib(1,1) ?11 4 Call: (external) 1#=0 ?11 4 Fail: (external) _546#=0 ?10 3 Redo: fib/2 ?11 4 Call: (external) 1#=1 ?11 4 Exit: (external) 1#=1 ?12 4 Call: (external) 1#=1 ?12 4 Exit: (external) 1#=1 ?10 3 Exit: fib(1,1) ?3 2 Exit: fib(2,2) ?1 1 Exit: go1(2,2) ?X = 2Y = 2 ?On peut comparer l'e�cacit�e du diagnostic d�eclaratif (deux questions) pour aider l'utilisateur �acorriger son programme (il fournit une clause incorrecte ainsi que des contraintes expliquant sonincorrection), avec l'e�cacit�e de la trace sur ce petit exemple (pour le but fib(n,Y), le nombre delignes a�ch�ees par la trace cro�t de mani�ere g�eom�etrique par rapport �a la valeur de n).4.4.2 Diagnostic d'incorrection positive selon une relation de couverture `Dans la section 3.5, nous avons d�ecrit la s�emantique d�eclarative du programme selon une relationde couverture. Il est naturel d'envisager une s�emantique attendue de meme nature.Soit ` une relation de couverture. Le crit�ere de rejet RC est d�e�ni par la relation unaire ` ;.Les propri�et�es attendues sont toujours formalis�ees par un ensemble d'atomes contraints I. Onsuppose maintenant que l'ensemble d'atomes contraints attendus I est tel que si a C 2 I etC 0 ` fCg alors a C 0 2 I.La notion de symptome positif est l�eg�erement modi��ee puisqu'on remplace SS(P ) par SS`(P ).D�e�nition 4.4.7 Symptome positifUn symptome (d'incorrection partielle) positif de P par rapport �a I selon ` est un atome contraintde SS`(P ) n I.

104 CHAPITRE 4. DIAGNOSTIC D�ECLARATIF D'ERREUROn remarque que les symptomes positifs de P par rapport �a I sont des symptomes positifs deP par rapport �a I selon `. En e�et, SS(P ) � SS`(P ).Pour distinguer les deux notions de symptomes, un �el�ement de SS(P )nI est appel�e un symptomepositif calcul�e.La d�e�nition d'incorrection positive demeure inchang�ee (elle est d�etermin�ee par la s�emantiqueattendue et ne fait pas r�ef�erence �a la s�emantique de fait). On rappelle la d�e�nition :D�e�nition 4.4.8 Incorrection positiveUne incorrection positive de P par rapport �a I est un n + 1-uplet ha C 2 a1 � � � an; C1; : : : ; Cni,o�u a C 2 a1 � � � an 2 P et les Ci sont des stores, tel que fai Ci j i 2 f1; : : : ; ngg � I, maisa 9�a(C ^C1 ^ � � � ^ Cn) 62 I.Lemme 4.4.9 S'il existe un symptome positif de P par rapport �a I selon ` alors il existe uneincorrection positive de P par rapport �a I.Preuve. On remarque que ha C 2 a1 � � � an; C1; : : : ; Cni est une incorrection positivesi, pour tout i = 1; : : : ; n, ai Ci 2 I et a 9�a(C ^ C1 ^ � � � ^Cn) 62 I. C'est-�a-dire,si a 9�a(C ^C1 ^ � � � ^Cn) 2 T [;P (I) n I. Or, SS`(P ) = pppf (T [;P ). D'o�u le r�esultat.Par cons�equent, on retrouve de mani�ere di��erente le lemme 4.4.4 pour les symptomes positifscalcul�es dans ce cadre plus g�en�eral.Nous montrons que, partant d'un symptome, on peut d�ecrire une famille d'algorithmes quig�en�eralise celle d�ecrite en section pr�ec�edente.Soit S une r�eponse.Dans la section pr�ec�edente, nous avons consid�er�e la relation bien fond�ee <S pour d�e�nir lanotion de symptome minimal.On a vu qu'il su�t de consid�erer S, la relation de parent�e de S et la r�eponse enracin�ee en chaquen�ud de S pour l'algorithme de diagnostic d'incorrection positive.Pour d�eterminer si la r�eponse S0 enracin�ee en un n�ud N 0 de S est attendue, on interrogel'oracle sur un atome contraint associ�e �a S0 (ou de mani�ere �equivalente �a N 0). Dans la sectionpr�ec�edente, c'�etait a0 AC(S0; a0) (S0 est une r�eponse pour a0).Nous changeons maintenant l'atomes contraint associ�e �a n�ud de S.L'atome contraint associ�e au n�ud N 2 domS est not�e aN CN .Ces atomes contraints doivent v�eri�er la condition suivante : Il existe une fonction de renommagerenoS pour S telle que, pour tout n�ud N 2 domS , aN = head (renoS(N)) et si N1; : : : ; Nn sontles �ls de N et C 0N le store de la clause renoS(N) alors CN ` f9�a(C 0N ^Vi2f1;:::;ng 9�aNiCNi)g.On constate tout de suite que si l'on �xe une fonction de renommage renoS pour S et si l'onassocie au n�ud N l'atome contraint aN AC(SN ; aN ), o�u SN est la r�eponse enracin�ee en N dansS et aN = head (renoS(N)), alors la propri�et�e pr�ec�edente est v�eri��ee (lemme 2.4.3 et REFL).On peut remarquer un autre cas particulier : si l'atome contraint associ�e au n�ud N 2 domSest aN 9�aN const(S; renoS). �A nouveau la condition est v�eri��ee : pour tout N 2 domS :9�aN const(S; renoS) = 9�aN (C 0N^Vi2f1;:::;ng 9�aNi const(S; renoS)) (section 1.3), o�u C 0N est le storede la clause renoS(N) et les Ni sont les �ls de N dans S.La relation de parent�e de S est bien fond�ee (S est une r�eponse). Un n�ud N 2 domS est attendusi et seulement si aN CN est attendu.

4.5. CORRECTION PARTIELLE N�EGATIVE : R�EPONSES MANQUANTES 105Supposons que a" C" soit un symptome positif.Du second sch�ema de diagnostic et de la relation de parent�e de S on d�eduit la notion de (n�ud)symptome et la notion de (n�ud) symptome minimal.Il est �evident que si N 2 domS est un symptome minimal et N a n �ls N1; : : : ; Nn dans S alorshrenoS(N); CN1 ; : : : ; CNni est une incorrection positive.Ce cadre plus g�en�eral est int�eressant. Par exemple, supposons que l'oracle (l'utilisateur) soit enmesure de fournir des stores qui renforcent le store r�eponse AC(S; a") de mani�ere que a" AC(S; a")soit toujours un symptome alors on obtient une incorrection positive \plus pr�ecise" On remarqueque la clause de l'incorrection positive trouv�ee n'est pas forcement la meme selon le choix des atomescontraints associ�es aux n�uds de la r�eponse si celle-ci fait intervenir plusieurs clauses incorrectes.Nous avons montr�e que l'algorithme de la section 4.4.1 est un cas particulier.On retrouve aussi l'algorithme de [58] si les stores des l'atomes contraints associ�es aux n�udssont construit �a partir du store associ�e �a S et une fonction de renommage pour S.Supposons que l'on dispose d'une D-interpr�etation attendue I pour le programme et que larelation de couverture soit correcte pour D (en particulier le crit�ere de rejet est correct pour D).Le programme est sens�e axiomatiser la D-interpr�etation. S'il existe des symptomes positifs c'estque ce n'est pas le cas.On retrouve alors le cadre de la section 2 de [58]. Mais ici la pr�esentation est di��erente (on sepasse de la notion de \store t�emoin") parce qu'on a choisi pour la s�emantique d�eclarative le cadreg�en�eral de la section 3.5 plutot que le cadre particulier de la section 3.2. a C est un symptomes'il existe une valuation v telle que vD(C) = true et vI(a) = false. ha C 2 a1 � � � an; C1; : : : ; Cniest une incorrection positive si et seulement si il existe une valuation v telle que vI(ai Ci) = truepour tout i = 1; : : : ; n mais vI(a 9�a(C ^Vi2f1;ldots;ng Ci)) = false.Quand l'oracle est l'utilisateur, c'est g�en�eralement en fonction d'une D-interpr�etation attendueI qu'il r�epond aux questions pos�ees par l'algorithme de diagnostic. Cela est possible car les crit�eresde rejet des syst�emes sont toujours corrects pour la pr�e-interpr�etation D sous-jacente.4.5 Correction partielle n�egative : r�eponses manquantesOn suppose un programme P et un crit�ere de rejet RC �x�es.Le cas des symptomes dus �a des r�eponses manquantes est propre �a l'ind�eterminisme des langagesde programmation relationnelle (par exemple la programmation logique avec contraintes).Supposons que pour le but a on obtient le _-store r�eponse R. La paire (a;R) est symptomed'une erreur dans le programme si R n'est pas un _-store r�eponse attendu pour a. On peutdistinguer deux cas :1. il existe au moins un store en trop dans R ;2. il manque au moins un store dans R.Le premier cas se ram�ene �a la recherche d'une incorrection positive. Le store qui ne devrait pasetre dans R vient d'une r�eponse S, et c'est dans la d�erivation SLD qui calcule S que se trouve leprobl�eme.Par contre le second cas ne se ram�ene pas �a l'�etude d'une d�erivation SLD. C'est pour l'arbreSLD que quelque chose ne va pas : il lui manque au moins une branche.Dans cette section on s'int�eresse au diagnostic d'erreur dans le programme quand le _-storer�eponse pour un but n'est pas attendu. D'apr�es les remarques pr�ec�edentes, on suppose qu'il n'est pas

106 CHAPITRE 4. DIAGNOSTIC D�ECLARATIF D'ERREURattendu parce qu'il est incomplet. Dans le cas contraire, on invoquera les techniques de diagnosticd'erreur de la section 4.4.Di��erentes approches peuvent etre envisag�ee pour le diagnostic d�eclaratif dans le cas de r�eponsesmanquantes.Nous avons fait le choix de ne d�etailler que celle qui semble la plus int�eressante : c'est le pendantpour la programmation logique avec contraintes de la recherche d'insu�sance faible en programma-tion logique pure. En �n de section et dans la section 4.6, nous discutons des alternatives possibles.Pour les insu�sances faibles, l'algorithme de [37] suppose l'existence d'un arbre SLD �ni stan-dard. De plus, lors de la recherche de l'insu�sance faible, l'algorithme suit de tr�es pr�es la strat�egiestandard (pour l'ordre des questions). Aussi, il n'est pas capable de trouver toutes les insu�sancesfaibles contenues dans l'arbre SLD, et on ne peut mettre en �uvre des optimisations du typediviser pour r�egner. [37] ne peut donner �a l'avance l'ensemble des questions susceptibles d'etrepos�ees �a l'oracle. C'est pourquoi, leur algorithme est l'unique preuve que s'il existe un symptomealors il existe une erreur. Dans [92], nous avons, dans le cadre de la programmation logique aveccontraintes, d�e�ni un syst�eme de r�egles qui permet de prouver, ind�ependamment de l'algorithme,que l'existence d'un symptome implique celle d'une erreur (de plus, nous avons d�e�ni les symptomesd'incompl�etude, les symptomes d'insu�sance, les insu�sances faibles et les insu�sance �a partir decet unique syst�eme de r�egles, ce qui facilite leur comparaison et la compr�ehension des liens entreces notions). Malheureusement, l'algorithme propos�e, largement inspir�e de celui de [37] sou�re desmemes d�efauts, bien que la condition d'existence d'un arbre SLD standard ait �et�e g�en�eralis�ee �ala condition d'existence d'un arbre SLD sans co-routinage. Dans la suite, nous expliquons en�ncompl�etement ces algorithmes qui ne sont en fait que des instances de la famille d'algorithmes plusg�en�erale que nous proposons.4.5.1 Compl�ements de s�emantique op�erationnelleOn commence par des compl�ements de s�emantique op�erationnelle. Ces compl�ements ne sont utilesque pour cette section. C'est pourquoi ils n'apparaissent qu'ici, bien qu'ils soient directement reli�esau chapitre 2.On d�e�nit la notion de store r�eponse pour une paire C 2A, o�u C est un store et A est une suite�nie d'atomes.D�e�nition 4.5.1 Store r�eponse pour C 2AUn store r�eponse pour C 2 a1 � � � an est C ^C1^ � � � ^Cn, o�u C1; : : : ; Cn sont n stores tels que, pourtout i = 1; : : : ; n, Ci est un store r�eponse pour ai et (C ^ C1 ^ � � � ^ Cn) 62 RC.On note R(C 2A) l'ensemble des stores r�eponses pour C 2A.En particulier, on peut remarquer que si C 62 RC alors R(C 2 ") = fCg. On remarque aussique si C 2 RC alors pour toute suite �nie d'atomes A, on a R(C 2A) = ;. En�n, on constate queR(;2 a) = SS(P; a).Ceci nous permet d'�enoncer le lemme de compositionalit�e suivant, plus g�en�eral que ceux d�ej�a�enonc�es dans le chapitre 2 :Lemme 4.5.2 Pour tout store C, pour toutes suites �nies d'atomes A1 et A2, pour tout atome a :R(C 2A1 � a �A2) = [C02R(C 2 a)R(C ^C 02A1 � A2)

4.5. CORRECTION PARTIELLE N�EGATIVE : R�EPONSES MANQUANTES 107Preuve. Soit faigi2I la famille d'atomes de la suite A1. Soit fajgj2J la famille d'atomesde la suite A2.Les �el�ements de R(C 2A1 � a �A2) sont les stores C ^ C1 ^ C 0 ^ C2 tels que� pour tout i 2 I, Ci est un store r�eponse pour ai et C1 = Vi2I Ci ;� C 0 est un store r�eponse pour a ;� pour tout j 2 J , Cj est un store r�eponse pour aj et C2 = Vj2J Cj ;� C ^ C1 ^ C 0 ^ C2 62 RC.Les �el�ements de SC02R(C 2a)R(C ^ C 02A1 �A2) sont les stores C ^ C 0 ^C1 ^ C2, o�u� C 0 est un store r�eponse pour a tel que C ^ C 0 62 RC ;� pour tout i 2 I, Ci est un store r�eponse pour ai et C1 = Vi2I Ci,� pour tout j 2 J , Cj est un store r�eponse pour aj et C2 = Vj2J Cj ,� C ^ C 0 ^ C1 ^ C2 62 RC.On constate que l'unique di��erence est que dans le second cas on a l'hypoth�ese suppl�e-mentaire C ^C 0 62 RC. Or les propri�et�es du crit�ere de rejet garantissent que, pour toutstore C0, si C0 2 RC alors, pour tout store C 00, C0 ^C 00 2 RC. Donc les deux ensemblessont �egaux.Nous continuons �a donner des compl�ements sur la s�emantique op�erationnelle. On suppose main-tenant qu'une r�egle de calcul r est �x�ee.Intuitivement, un �etat incomplet S peut etre vu de deux mani�eres di��erentes selon que l'ons'int�eresse �a S et r(S), ou �a S, r(S) et les fr�eres de r(S). A�n de mod�eliser ces deux visions, on faitla somme disjointe de l'ensemble des �etats avec lui-meme.Soit E0 = Sp2�pfS j sq(p),!pr �S; S incompletg. Soit E1 = Sp2�pfS j sq(p),!pr +Sg.Soit E0�E1 la somme disjointe de E0 et E1. Cet ensemble est isomorphe �a (f0g�E0)[(f1g�E1)et nous confondons ces deux ensembles, pour faciliter les notations. Par cons�equent, on repr�esenteles �el�ements de E0 �E1 par des paires (b; S), o�u b 2 f0; 1g, S 2 E0 si b = 0 et S 2 E1 si b = 1.On appelle b-�etat tout �el�ement de E0 � E1. Un �el�ement repr�esent�e par (0; S) est un 0-�etat, etun �el�ement repr�esent�e par (1; S) est un 1-�etat.Lemme 4.5.3 Si (1; S) est un 1-�etat alors il existe un unique S0 tel que S0 ,!r S.Preuve. Soit p 2 �p tel que S est un �etat pour p. Toute d�erivation SLD qui contient Sest une d�erivation SLD pour p. D'apr�es la d�e�nition de E1, S 2 dompr et S n'est pas laracine de (dompr ; ,!pr), donc S0 est le p�ere de S dans (dompr ; ,!pr).Dans la suite, si (1; S) est un b-�etat alors on appelle p�ere de S l'�etat S0 tel que S0 ,!r S. Lep�ere de S est not�e father (S).D�e�nition 4.5.4 Prolongement d'un b-�etatSoit (0; S) un 0-�etat. S0 est un prolongement de (0; S) si� il existe un �etat complet S00 tel que S0 = graft(S; r(S); S00),� S0 est un �etat.Soit (1; S) un 1-�etat. S0 est un prolongement de (1; S) si

108 CHAPITRE 4. DIAGNOSTIC D�ECLARATIF D'ERREUR������� TTTTTTT�� @@������� TTTTTTT�� @@������� DDDDDDD

������� TTTTTTT�� @@������� LLLLLLL������� DDDDDDD6 ���* ���*������� CCCCCO JJJJ]S S

S0SS0S00Ni NiNi NnN1 Ni�1 Ni+1: : : : : : un prolongementde (0; S) un prolongementde (1; S)

�etat S �etat S0 �etat S1

Ni = r(S), N1; : : : ; Ni�1; Ni+1; : : : ; Nn sont les fr�eres de NiS0 est un �etat complet (�eventuellement in�ni)S00 est un ensemble de n� 1 �etats complets (�eventuellement in�nis)Figure 4.3 : Prolongement d'un b-�etat.� domS � domS0,� pour tout N 2 def (S), labS(N) = labS0(N),� undef (father (S)) n fr(father(S))g = undef (S0),� S0 est un �etat.On note prol b(S) l'ensemble des prolongements de (b; S).Intuitivement, on obtient un prolongement de (0; S) en gre�ant une r�eponse en r(S) dans S, eton obtient un prolongement de (1; S) en gre�ant une r�eponse en chaque �ls de r(father (S)) dansS. On peut remarquer que, pour tout atome a dont le symbole de pr�edicat est p, prol 0(sq(p)) =success(a).Lemme 4.5.5 Soit (1; S) un 1-�etat.prol 1(S) = fS0 2 prol 0(father (S)) j labS0(r(father (S))) = labS(r(S0))gPreuve. Soit S0 = father (S).� Soit S0 2 prol 1(S). D'apr�es la d�e�nition domS � domS0 . Soit S00 l'�etat enracin�e enr(S0) dans S0. S00 est un �etat complet puisque undef (S0) n fr(S0)g = undef (S0).D'une part, pour tout N 2 def (S) on a labS(N) = labS0(N),d'autre part, undef (S0)nfr(S0)g = undef (S0), donc S0 = graft(S0; r(S0); S00). DoncS0 2 prol 0(S0).

4.5. CORRECTION PARTIELLE N�EGATIVE : R�EPONSES MANQUANTES 109� Soit S0 2 fS0 2 prol 0(S0) j labS0(r(S0)) = labS(r(S0))g. Il existe un �etat complet S00tel que S0 = graft(S0; r(S0); S00) et labS00(") = labS0(r(S0)) = labS(r(S0)). DoncdomS � domS0 et pour tout N 2 def (S), labS(N) = labS0(N). Comme S00 estcomplet alors undef (S0) n fr(S0)g = undef (S0). Donc S0 2 prol 1(S).Lemme 4.5.6 Soit S un �etat incomplet non initial. Si r(S) n'a pas de fr�ere ind�e�ni alorsprol 0(S) = prol 1(S).Preuve. Rappelons qu'un �etat initial est de la forme sq(p) o�u p 2 �p (voir section 2.5.1).La preuve est similaire �a celle du lemme 4.5.5 : on montre que tout �el�ement de prol 0(S)v�eri�e les propri�et�es de la d�e�nition de prol 1(S) et r�eciproquement.Remarque. Soient (1; S) un 1-�etat. Si r(father (S)) n'a pas de �ls dans S alors prol 1(S) =fSg (S est de la forme graft(father (S); r(father (S)); sq(u)), o�u u est le nom d'un fait).3Lemme 4.5.7 Soit (0; S) un 0-�etat.prol 0(S) = [S,!rS0 prol1(S0)En d'autres termes, si p est le symbole de pr�edicat associ�e �a r(S) dans S et si X = fu 2 cn(P; p) jgraft(S; r(S); sq(u)) est un �etatg alorsprol 0(S) = [u2X prol 1(graft(S; r(S); sq(u)))Preuve.� Soit S0 2 prol 0(S) et u = labS0(r(S)). S0 est un �etat donc graft(S; r(S); sq(u)) est un�etat. Le lemme 4.5.5 montre que S0 2 prol 1(graft(S; r(S); sq(u))).� Le lemme 4.5.5 montre que prol 1(graft(S; r(S); sq(u))) = fS0 2 prol 0(S) j labS0(r(S)) =ug. Donc Su2X prol 1(graft(S; r(S); sq(u))) � prol 0(S)Le lemme pr�ec�edent montre une forme de compositionalit�e (des �etats �eventuellement in�nis) dela s�emantique op�erationnelle.

110 CHAPITRE 4. DIAGNOSTIC D�ECLARATIF D'ERREUR

� JJJJJ ��� JJJJJ�� @@-

JJJJJ�� @@����� BBBBB JJJJJ JJJJJ�� @@����� BBBBB����� DDDDD ����� BBBBB

JJJJJ�� @@����� BBBBB JJJJJ�� @@��� AAA��� AAA

JJJJJ�� @@��� AAA��� @@@

JJJJJ�� @@����� BBBBB JJJJJ�� @@��� AAA

r(S)�etat incomplet Sr(S0)un �ls S0 de S dans (dompr; ,!pr)sq(u)

prolongements de (1; S0)prolongements de (0; S0)

L'ensemble des prolongements de (0; S) est la r�euniondes prolongements de (1; S0), o�u S0 est un �ls de S (S0,!prS).Les prolongements de (1; S0) sont les prolongements de (0; S)qui ont le n�ud r(S) �etiquet�e par u.Figure 4.4 : Compositionalit�e des prolongements d'un b-�etat

4.5. CORRECTION PARTIELLE N�EGATIVE : R�EPONSES MANQUANTES 111On suppose maintenant que la r�egle de calcul r est sans co-routinage.Soit T = (dompr; ,!pr) un arbre SLD pour p selon la r�egle de calcul sans co-routinage r.T (i.e. p et r) est �x�e jusqu'�a la �n de cette section. Dans la suite, on ne s'int�eressera qu'�ades b-�etats de la forme (b; S) avec S 2 dompr . Aussi, pour simpli�er, on suppose maintenant que leterme b-�etat d�esigne un �el�ement (b; S) avec S 2 dompr :Lemme 4.5.8 Soit (b; S) un b-�etat (S 2 dompr).prol b(S) � domprDe plus, pour tout S0 2 prol b(S),� si b = 1 et r(father(S)) n'a pas de �ls dans S alors S0 = S ;� sinon S0 est un descendant de S dans (dompr ; ,!pr).Preuve. Le lemme 4.5.5 montre que, pour tout 1-�etat (1; S), prol 1(S) � prol 0(father (S)).Or father (S) 2 dompr donc (0; father (S)) est un 0-�etat. Par cons�equent, il su�t de mon-trer que, pour tout 0-�etat (0; S), prol 0S � dompr.Soient (0; S) un 0-�etat et S0 2 prol 0(S). Il existe un �etat complet S00 tel que S0 =graft(S; r(S); S00). Comme S 2 dompr , il existe un pr�e�xe U d'une d�erivation SLD selonr pour p dont le dernier �etat est S. On montre que l'on peut construire un pr�e�xe U 0d'une d�erivation SLD selon r pour p dont le dernier �etat est graft(S; r(S); S00) :1. U est un pr�e�xe de U 0 ;2. �a partir du dernier �etat S de U (on remarque qu'une feuille ind�e�nie de S, di��erentede r(S), ne peut etre s�electionn�ee avant que l'�etat gre��e en r(S) ne soit complet :la r�egle est sans co-routinage), on d�e�nit la �n U 00 de U 0 = U � U 00 de la mani�eresuivante :(a) le premier �etat de U 00 est graft(S; r(S); sq(labS00("))) ;(b) si S000 est un �etat de U 00 di��erent de S0 alors, il existe N tel que r(S000) = r(S)�N ,l'�etat suivant S000 dans U 00 est graft(S000; r(S000); sq(labS00(N))).(c) le dernier �etat de U 00 est S0.U 0 est bien d�e�ni et U 0 est pr�e�xe d'une branche de (dompr; ,!pr) ; son dernier �etatest S0.Donc S0 2 dompr . De plus, c'est un descendant de S dans (dompr ; ,!pr).Il reste �a montrer que, pour tout 1-�etat (1; S), si S0 2 prol 1(S) alors S0 = S ou S0 estun descendant de S. On sait d�ej�a que S0 est un descendant de father(S). On a vu quesi r(father (S)) n'a pas de �ls dans S alors prol 1(S) = fSg. Il est facile de voir que sir(father (S)) a un �ls dans S alors S 62 prol 1(S).Le lemme pr�ec�edent montre une propri�et�e tout �a fait remarquable des arbres SLD sans co-routinage. Cette propri�et�e est fausse en g�en�eral si l'arbre est avec co-routinage.De plus, la r�eciproque du lemme est fausse. C'est-�a-dire, si pour tout �etat incomplet S d'un arbreSLD, prol 0(S) est un sous-ensemble des n�uds de l'arbre alors l'arbre n'est pas obligatoirementsans co-routinage : il peut avoir une branche �echec avec co-routinage. En fait, on peut seulementen d�eduire que ses branches succ�es sont sans co-routinages.

112 CHAPITRE 4. DIAGNOSTIC D�ECLARATIF D'ERREURCorollaire 4.5.9 Si l'arbre T est �ni alors, pour tout b-�etat (b; S), prol b(S) est un ensemble �nid'�etats �nis.Preuve. prol b(S) est �ni car dompr est �ni. Un �etat de prol b(S) est �ni car tout �etatd'un arbre SLD �ni est �ni.Soit <T la relation binaire sur l'ensemble des b-�etats d�e�nie par� pour tout 0-�etat (0; S), si S,!prS0 alors :(1; S0) <T (0; S)� pour tout 1-�etat (1; S), si r(father (S)) �a un �ls dans S (i.e. prol 1(S) 6= fSg) alors :(0; S) <T (1; S)� pour tout 1-�etat (1; S), si r(father (S)) �a un �ls dans S alors pour tout S0 2 prol 0(S) :(1; S0) <T (1; S)Cette relation est bien d�e�nie d'apr�es le lemme 4.5.8.Lemme 4.5.10 Si l'arbre T est �ni alors la relation <T est bien fond�ee.Preuve. On constate que si (b00; S00) <T (b0; S0) <T (b; S) alors S00 est un descendant deS dans T . Comme T est �ni, <T est une relation bien fond�ee.�A tout 0-�etat (0; S) est associ�ee la paire C 2 a, o�u C et a sont tels qu'il existe une fonction derenommage renoS pour S, C = 9�aconst(S; renoS) et a est l'atome associ�e �a r(S) par renoS .De la meme mani�ere, �a tout 1-�etat (1; S) est associ�ee la paire C 2 a1 � � � an, o�u C et les aisont tels qu'il existe une fonction de renommage renoS pour S, C = 9�var(a1���an)const(S; renoS),r(father (S)) �a n �ls dans S, les ai sont les atomes associ�es aux r(father (S)) � (i� 1) par renoS dansS. La paire C 2A associ�ee �a un b-�etat est d�e�nie �a un renommage pr�es.Notons que si S est un �etat incomplet non initial tel que r(S) n'a pas de fr�ere alors les pairesassoci�ees �a (0; S) et (1; S) sont les memes. Ce n'est pas sans rapport avec le lemme 4.5.6 et le lemmesuivant :Lemme 4.5.11 Soit (0; S) un 0-�etat. Soit C 2 a la paire associ�e �a (0; S).R(C 2 a) = f 9�aconst(S0; renoS0) jS0 2 prol 0(S);S0 est �nirenoS0 est une fonction de renommage pour S0;a est l'atome associ�e �a r(S) par renoS0 dans S0gSoit (1; S) un 1-�etat. Soit C 2 a1 � � � an la paire associ�e �a (1; S). Soit N1; : : : ; Nn les �ls de r(father (S))dans S. R(C 2 a1 � � � an) = f 9�var(A)const(S0; renoS0) jS0 2 prol 1(S);S0 est �nirenoS0 est une fonction de renommage pour S0;ai est l'atome associ�e �a Ni par renoS0 dans S0; i = 1 : : : ; ngPreuve. Le corollaire 4.5.9 assure que les �etats de prol b(S) sont �nis. Il su�t de suivreles d�e�nitions en remarquant qu'un �etat complet �ni est une r�eponse.

4.5. CORRECTION PARTIELLE N�EGATIVE : R�EPONSES MANQUANTES 113

��� AAA?�����������9 XXXXXXXXXXXz��� AAA ��� AAA ��� AAA................ ................ ................ ................ ................ .................��� AAA? ? ? ? ?������ AA AA AA ������ SS SS SSAA AA ���� @@@@....................... ��................ bb bb bb bbJJ JJ@@ �� ��

(((((((((((( hh hh hh hh hh hh hh hh

��� DDD? ? ? ? ?��� AAA����� BBBBB ��� AAA����� BBBBB ��� AAA�� LL ��� AAA���� LLLL ��� AAA���� LLLL

��� AAA���� LLLL��� AAA�� LL��� AAA�� LL��� AAA����� BBBBB����� EEEEE ����� BBBBB �� LL ���� EEEE ���� LLLL

JJ JJ��� AA AA �� @@@@ @@��

��HHHHj undef (S)def (S)r(S)

n�uds o�u les �etats gre��es en r(S) sont completsn�uds qui d�erivent directement de S (�ls de S dans (dompr; ,!pr))

n�uds o�u S est compl�etement d�evelopp�e

sq(p)

Figure 4.5 : Relation <T sur les n�uds de l'arbre SLD T

114 CHAPITRE 4. DIAGNOSTIC D�ECLARATIF D'ERREUR4.5.2 Diagnostic d'incorrection n�egativeLes pr�eliminaires sur la s�emantique op�erationnelle �etant donn�es, nous traitons le probl�eme dudiagnostic d'erreur pour le cas des r�eponses manquantes.On suppose �x�e un arbre SLD �ni T = (dompr ; ,!pr) sans co-routinage pour p selon la r�egle decalcul r jusqu'�a la �n de cette section.Supposons que l'on dispose d'un moyen de savoir si un b-�etat est attendu en fonction despropri�et�es attendues du programme.Le sch�ema g�en�eral de la section 4.3 fournit imm�ediatement la notion de symptome et symptomeminimal de <T par rapport �a la notion de b-�etat attendu.La relation \b-�etat attendu" doit v�eri�er des propri�et�es similaires aux propri�et�es v�eri��ees parles \b-�etats calcul�es".Cette propri�et�e est une propri�et�e de fermeture de la relation \b-�etat attendu" par les deuxderniers points de la d�e�nition de <T :Exigences sur la relation \b-�etat attendu"On exige que pour tout 1-�etat (1; S), si tout pr�ed�ecesseur de (1; S) par <T est attendualors (1; S) est attendu.On d�eduit de l'exigence de fermeture ci-dessus que les symptomes minimaux de <T sont des0-�etats. Par cons�equent, la notion de 0-�etat minimal est enti�erement d�etermin�ee par les 0-�etatssymptomes. On pourrait penser que la notion de 1-�etat est inutile. En fait, la distinction entre0-�etat et 1-�etat facilite la compr�ehension de la m�ethode et permettra par la suite de d�e�nir unenotion d'erreur associ�ee �a un symptome minimal simple et intuitive.Des arguments similaires �a ceux d�evelopp�es pour le diagnostic de r�eponses fausses nous am�ene�a ne pas exiger que les propri�et�es attendues du programme soient formalis�ees par un ensemble deb-�etats attendus. En fait, il su�t que les propri�et�es attendues de P permettent de d�eterminer si unb-�etat est attendu.Un b-�etat (b; S) est attendu si sa paire associ�ee est C 2A et C 2A ! R(C 2A) est attendue.C 2A ! R(C 2A) est la couverture locale d'atomes associ�ee au b-�etat (b; S). La question est ded�eterminer si l'ensemble des stores r�eponses pour C 2A convient. On peut noter que la propri�et�eC 2A! R(C 2A) attendu ne d�epend que de C 2A. Les propri�et�es attendues sont formalis�ees parun ensemble de couvertures locales d'atomes attendues.On suppose, bien-entendu, que la relation \couverture locale d'atomes attendue" v�eri�e certainespropri�et�es :Conditions sur la relation \Couverture locale d'atomes attendue"Pour tout store C, la couverture locale d'atomes C 2 "! fCg est attendue (on remarqueR(C 2 ") ne d�epend pas du programme).Pour tout store C, pour tout ensemble de stores R, pour toute famille d'ensembles destores fRC0gC02R, pour toutes suites �nies d'atomes A1 et A2, pour tout atome a, siC 2 a! R est attendu et, pour tout C 0 2 R, C ^ C 02A1 �A2 ! RC0 est attendu alorsC 2A1 � a �A2 ! SC02RR0C est attendu.Il faut montrer que sous la condition pr�ec�edente, la relation \b-�etat attendu" sous-jacente v�eri�el'exigence de fermeture par les deux derniers points de la d�e�nition de <T .

4.5. CORRECTION PARTIELLE N�EGATIVE : R�EPONSES MANQUANTES 115Lemme 4.5.12 Pour tout 1-�etat (1; S), si les pr�ed�ecesseurs de (1; S) par <T sont attendus alors(1; S) est attendu.Preuve.� Si r(father (S)) n'a pas de �ls dans S alors (1; S) ne peut pas etre un symptomepuisque pour tout store C, C 2 "! C est attendu.� Si r(father (S)) a un �ls dans S, sa paire associ�ee est de la forme C 2A1 � a � A2(ou a correspond �a r(S)). Les pr�ed�ecesseurs de (1; S) sont attendus, donc C 2 a!R(C 2 a) est attendu et, pour tout C 0 2 R(C 2 a), R(C^C 02A1 �A2) est attendu.D'apr�es la condition sur les couvertures locales d'atomes attendues, C 2A1 � a �A2 ! SC02R(C 2a) R(C ^ C 02A1 � A2) est attendue. Or R(C 2A1 � a � A2) =SC02R(C 2a)R(C ^ C 02A1 � A2), donc C 2A1 � a � A2 ! R(C 2A1 � a � A2) estattendue. D'o�u (1; S) n'est pas un symptome.Corollaire 4.5.13 Si (b; S) est un symptome minimal de <T alors b = 0.Les symptomes minimaux sont donc des 0-�etats.D�e�nition 4.5.14 Symptome d'incorrection partielle n�egatifUne paire C 2 a est un symptome n�egatif si C 2 a! R(C 2 a) n'est pas attendu.De plus, s'il existe un arbre SLD �ni T sans co-routinage tel que C 2 a! R(C 2 a) est la couverturelocale d'atomes associ�ee �a un 0-�etat alors C 2 a est un symptome n�egatif calcul�e.Il est tr�es int�eressant que les propri�et�es attendues soient les plus simples possibles. Ici, commela seule notion utile est celle de 0-�etat attendu, les questions �a l'oracle sont plus simples :� d'une part, elles sont atomiques car la paire associ�ee �a un 0-�etat ne contient qu'un seul atome ;� d'autre part, si A contient plusieurs atomes, la question pour C 2A contient �eventuellementplus de variables que si l'on se ram�ene �a une question pour chaque atome de la suite A.�A un symptome minimal (0; S), on peut associer une d�e�nition de pr�edicat erron�ee : c'est lad�e�nition du pr�edicat p0 associ�e �a r(S). Mais le cadre trop g�en�eral ne permet pas d'exprimerune notion d'erreur simple et intuitive qui explique la raison pour laquelle la d�e�nition de p0 estresponsable du symptome.De plus, nous ne voulons pas d�e�nir deux types de propri�et�es attendues pour un programme :des atomes contraints pour le probl�eme des r�eponses fausses et des couvertures locales d'atomespour le probl�eme des r�eponses manquantes.Nous allons utiliser uniquement la relation \atome contraint attendu" de la section 4.4. Pourcela on fait appel �a une relation de couverture.4.5.3 Diagnostic d'incorrection n�egatif selon une relation de couverture `Soit ` une relation de couverture. Le crit�ere de rejet est d�e�nit par la relation unaire ` ;, i.e.C 2 RC si et seulement si C ` ;.Les propri�et�es attendues du programme sont formalis�ees par l'ensemble I d'atomes contraintsattendus. Rappelons que I est ferm�e par la propri�et�e : si a C 2 I alors pour tout store C 0 telque C 0 ` fCg, a C 0 2 I

116 CHAPITRE 4. DIAGNOSTIC D�ECLARATIF D'ERREUROn pr�ecise maintenant comment on d�etermine si une couverture locale d'atomes est attendueen fonction de l'ensemble d'atomes contraints attendus I.Une couverture locale d'atomes C 2A! R(C 2A) est attendue si pour tout C 0 tel que C 0 ` fCget a C 0 2 I, a 2 A, on a C 0 ` R(C 2A).On rappelle qu'un b-�etat (b; S) est attendu si sa couverture locale d'atomes associ�ee est attendue.On remarque en particulier que (0; sq(p)) est attendu si, pour tout store C 0 tel que a C 0 2 I,on a C 0 ` SS(P; a), o�u p 2 �p et a est un atome dont le symbole de pr�edicat est p.Dans la suite, on note A C 2 I si pour tout atome a de la suite �nie A, l'atome contrainta C appartient �a I.Montrons que la relation \b-�etat attendu" sous-jacente v�eri�e toujours les exigences pr�ec�edentes.Il su�t de v�eri�er qu'elle v�eri�e les conditions de la relation \couverture locale d'atomes attendue"Lemme 4.5.15 Pour tout store C, pour toutes suites �nies d'atomes A1 et A2, pour tout atomea, 1. C 2 "! fCg est attendu.2. Si C 2 a ! R(C 2 a) est attendu et, pour tout C 0 2 R(C 2 a), C ^ C 02A1 � A2 ! R(C ^C 02A1 � A2) est attendu alors C 2A1 � a �A2 ! R(C 2A1 � a �A2) est attendu.Preuve.1. Il su�t d'appliquer les d�e�nitions.2. On suppose que C 2 a ! R(C 2 a) est attendu et, pour tout C 0 2 R(C 2 a),C ^ C 02A1 �A2 ! R(C ^ C 02A1 � A2) est attendu.Soit C0 un store tel que C0 ` fCg et A1 � a � A2 C0 2 I. Montrons que C0 `R(C 2A1 � a �A2).Pour tout C1 2 R(C 2 a) on a C0 ^ C1 ` fC ^ C1g (car C0 ` fCg et CONJ) etA1 � A2 C0 ^ C1 2 I (car A1 �A2 C0 2 I).C0 ` fCg et C0 ` R(C 2 a) donc C0 ` fC ^ C1 j C1 2 R(C 2 a)g (CONJ etC0 ^ C0 = C0 d'apr�es les �equivalences entre stores de la section 1.3).On a C0 ` fC ^ C1gC12R(C 2a) et, pour tout C1 2 R(C 2 a), C0 ^ C1 ` R(C ^C12A1 �A2) donc C0 ` SC12R(C 2a) R(C ^ C12A1 �A2) (TRAN).Donc C0 ` R(C 2A1 � a � A2) (lemme 4.5.2).Corollaire 4.5.16 Pour tout b-�etat (b; S), si (b; S) est un symptome alors b = 0.La relation de couverture permet d'associer une notion d'erreur �a tout symptome minimal.D�e�nition 4.5.17 Couvert, Compl�etement couvertSoit C un store et a un atome.L'atome contraint a C est couvert par P relativement �a I si a C 2 T �;P (I).La paire C 2 a est compl�etement couverte par P relativement �a I si, pour toute store C 0 telle queC 0 ` fCg et a C 0 2 I, on a a C 0 est couvert par P relativement �a I.

4.5. CORRECTION PARTIELLE N�EGATIVE : R�EPONSES MANQUANTES 117On remarque que a C couvert par P par rapport �a I signi�e : il existe un ensemble destores R tel que C ` R, pour tout C 0 2 R, il existe une clause renomm�ee a CC0 2 aC01 � � � aC0nC0 ,il existe nC0 stores CC01 ; : : : ; CC0nC0 tels que, pour tout i = 1; : : : ; nC0 , aC0i CC0i 2 I et C =9�a(CC0 ^Vi=1;:::;nC0 CC0i ).D�e�nition 4.5.18 Incorrection partielle n�egativeUne incorrection n�egative est une paire C 2 a non compl�etement couverte par P relativement �a I.Lemme 4.5.19 Si le 0-�etat (0; S) est minimal alors sa paire associ�ee C 2 a est une incorrectionn�egative.Preuve. Soit (0; S) un symptome minimal. On note C 2 a la paire associ�ee �a (0; S).(0; S) est un symptome donc C 2 a! R(C 2 a) n'est pas attendu. Ce qui signi�e qu'ilexiste un store C1 tel que C1 ` fCg et a C1 2 I, mais C1 6` R(C 2 a).Supposons que a soit couvert par P par rapport �a I. C'est-�a-dire, il existe un ensemblede stores R tel que� C1 ` R ;� pour tout r 2 R, il existe un nom de clause ur tel que a Cur 2 aur1 � � � aurnur (onnote Aur la suite d'atomes aur1 � � � aurnur ) est un renommage de clause(u) et il existenur stores Cur1 ; : : : ; Curnur tels que{ r = 9�a(Cur ^Vi2f1;:::;nurgCuri ),{ pour tout i = 1; : : : ; nur , auri Curi 2 I.Lemme interm�ediaire. Pour chaque r 2 R on a C ^ Cur 2Aur ! R(C ^ Cur 2Aur)attendu.Preuve.1. Si C^Cur 6` ; alors C^Cur 2Aur est la paire associ�ee d'un 1-�etat (1; Sur)tel que (1; Sur ) <T (0; S) (S est le p�ere de Sur) car var (C) � var(a)d'apr�es la d�e�nition de paire associ�ee �a un 0-�etat. (1; Sur ) est attendu(car (0; S) est minimal) donc C ^ Cur 2Aur ! R(C ^ Cur 2Aur) estattendu.2. Si C ^ Cur ` ; alors soit C 0 tel que C 0 ` C ^ Cur (i.e. C 0 ` ;) etAur C 0 2 I. On a R(C ^ Cur 2Aur) = ; (car C ^ Cur ` ;) doncC 0 ` R(C ^ Cur 2Aur). D'o�u C ^ Cur 2Aur ! R(C ^ Cur 2Aur) estattendu.Pour conclure, on veut une contradiction, �a savoir C1 ` R(C 2 a).Il su�t, pour chaque r 2 R, que C1 ^ r ` R(C 2 a) (car C1 ` fC1g (REFL), C1 ` Rdonc C1^C1 ` fC1^rgr2R (CONJ) ; or C1^C1 = C1 (section 1.3) ; de C1 ` fC1^rgr2Ret, pour tout r 2 R, C1 ^ r ` R(C 2 a) on d�eduit C1 ` R(C 2 a) (TRAN)).Or C1 ` fCg et r ` frg donc C1 ^ r ` fC ^ rg (CONJ).Donc il su�t que r ^ C ` R(C 2 a). (on remarque que var(r) [ var (C) � var (a).)Or, on a C ^ Cur ^ Vi2f1;:::;nurgCuri ` fC ^ Curg (CONJg) et Aur C ^ Cur ^Vi2f1;:::;nurg Curi 2 I (car chaque auri Curi 2 I et C ^ Cur ^ Vi2f1;:::;nurgCuri ` fCuri g(CONJg) donc auri C ^ Cur ^Vi2f1;:::;nurg Curi 2 I).

118 CHAPITRE 4. DIAGNOSTIC D�ECLARATIF D'ERREURDonc il su�t que C ^ Cur ^Vi2f1;:::;nurg Curi ` R(C ^Cur 2Aur).De plus, r = 9a(C ^Cur ^Vi2f1;:::;nurg Curi ) donc il su�t que r^C ` R(C ^Cur 2Aur)(EXISg et �equivalence entre stores de la section 1.3 (var (C) � var(a))).On v�eri�e en�n, pour tout r 2 R, que R(C ^ Cur 2Aur) � R(C 2 a) :� Si C ^ Cur 6` ; alors du lemme 4.5.7 on d�eduit R(C ^ Cur 2Aur) � R(C 2 a) ;� Si C ^ Cur ` ; alors R(C ^ Cur 2Aur) = ; donc R(C ^ Cur 2Aur) � R(C 2 a).Par cons�equent, a C1 couvert par P par rapport �a I implique C1 ` R(C 2 a).Donc a C1 n'est pas couvert par P par rapport �a I ; d'o�u C 2 a est non compl�etementcouvert par P par rapport �a I.Corollaire 4.5.20 S'il existe un symptome n�egatif calcul�e alors il existe une incorrection n�egative.L'absence d'incorrection n�egative implique l'absence de symptome n�egatif calcul�e.Remarque. Dans [92], nous obtenons un r�esultat �equivalent et de plus nous montrons ler�esultat plus g�en�eral : s'il existe un symptome d'incompl�etude (symptome n�egatif) alorsil existe une insu�sance faible (incorrection n�egative).Cet article montre les r�esultats en utilisant les relations (voir section 3.5) entre les op�e-rateurs TP , T`, T �;P et T [;P . Il �etablit les liens entre les symptomes d'incompl�etude, lessymptomes d'insu�sance, les insu�sances faibles et les insu�sances (fortes). Malheu-reusement, le cadre de cet article ne permet pas d'expliquer la famille d'algorithmes derecherche d'insu�sance faible dont nous donnons des instances dans la section suivante.En fait, ces algorithmes ne trouve leur explication que lorsqu'on constate qu'ils sontde simples algorithmes de recherche d'incorrection (mais sur un syst�eme de r�egles fortcompliqu�e qui n'a pas �et�e donn�e ici). Ceci est parfaitement montr�e ici grace �a la relationbien fond�ee entre les b-�etats.Le nouveau sch�ema de diagnostic bas�e sur une relation bien fond�ee montre ici tout sonint�eret. Il est probable qu'il existe bien d'autres exemples, �eventuellement pour d'autrestypes de langages de programmation (imp�eratifs, fonctionnels, etc.), o�u ce sch�ema �eclair-cirait des algorithmes de diagnostic d�eclaratifs, ou permettrait d'en d�ecouvrir des nou-veaux.Il est int�eressant de noter qu'un algorithme de diagnostic recherche avant tout un symp-tome minimal. C'est ensuite, que l'on associe �a ce symptome minimal une notion d'er-reur. Ceci est nettement mieux expliqu�e par une relation bien fond�ee que par un syst�emede r�egles o�u la distinction entre le symptome minimal et l'erreur qui lui est associ�e n'estpas mise en avant. 3L'int�eret de la relation de couverture est double :1. On se ram�ene �a des propri�et�es attendues exprim�ees en termes d'atomes contraints attendus.Ainsi, les propri�et�es attendues requises pour le diagnostic d'incorrection positive et le diag-nostic d'incorrection n�egative sont les memes. C'est agr�eable pour automatiser une partie dudiagnostic en utilisant par exemple une sp�eci�cation partielle de la s�emantique attendue.2. On peut exprimer une \bonne" notion d'erreur associ�ee �a la notion de symptome minimal.Elle est bonne parce qu'elle explique de mani�ere su�samment �ne le symptome minimal, maisaussi parce qu'elle est facilement compr�ehensible par l'utilisateur.

4.5. CORRECTION PARTIELLE N�EGATIVE : R�EPONSES MANQUANTES 1194.5.4 AlgorithmesDans la section 4.3 nous avons d�ecrit une famille d'algorithmes qui consistent �a construire unesuite d�ecroissante de symptomes jusqu'�a trouver un symptome minimal. L'algorithme que nousproposons dans [92] est une instance de cette famille. Cet algorithme g�en�eralise aux arbres SLDsans co-routinage en programmation logique avec contraintes l'algorithme de [37] donn�e dans lecadre de la programmation logique pure et qui suppose l'existence d'un arbre SLD standard.Nous donnons en�n l'explication de ce style d'algorithme grace �a la relation bien fond�ee <T .�Etant donn�e un 0-�etat symptome (0; S), on interroge les 0-�etats de l'ensemble f(0; S0) j il existeune suite �nie de 1-�etat (1; S1) � � � (1; Sm); (0; S0) <T (1; Sm) <T � � � <T (1; S1) <T (0; S)g. Cetensemble correspond �a la foret de preuve d�e�nie dans [92] et �a la foret de preuve d�e�nie dans [37] siT est un arbre SLD standard. Si un des 0-�etats de l'ensemble est un symptome alors l'algorithmeest appel�e r�ecursivement, sinon la paire associ�ee �a (S; 0) est une incorrection n�egative (ou uneinsu�sance faible pour [92] ou un atome non compl�etement couvert pour [37]).Comme l'algorithme est invoqu�e si (0; sq(p)) est un symptome, c'est par celui-ci que commencela recherche d'un symptome minimal.En plus d'avoir expliqu�e les algorithmes classiques de recherche d'atome non couvert, nousavons d�ecouvert une famille plus vaste d'algorithmes qui permet d'envisager des optimisationsdu type \diviser pour r�egner" ou bien guid�ees par des heuristiques. Les seules optimisations qui�etaient possibles dans les algorithmes classiques reposaient sur le non-d�eterminisme de l'ordre pourinterroger les n�uds d'une foret de preuve donn�ee. Maintenant, c'est le non-d�eterminisme de l'ordrepour interroger l'ensemble de tous les 0-�etats qui autorise toute sorte d'optimisations.Nous donnons maintenant un algorithme de diagnostic d'incorrection n�egative. Il correspond �al'algorithme de [92]. On remarquera que son expression est ici nettement plus simple, grace �a l'�etudequi pr�ec�ede. En�n sa preuve de correction et compl�etude a �et�e faite et de mani�ere ind�ependante del'algorithme lui-meme.Soit T = (dompr ; ,!pr) un arbre SLD sans co-routinage tel que (0; sq(p)) n'est pas attendu. Onsuppose donn�e un ordre sur les �ls de tout n�ud de T , i.e. on oriente l'arbre T (par exemple �apartir de l'ordre des clauses dans le programme).La paire associ�ee �a diagnostic(sq(p)) est une incorrection n�egative, o�u diagnostic est la fonction :fonction diagnostic(S : �etat) retourne �etatd�ebut fonctionX � fS0 j il existe une suite �nie de 1-�etat (1; S1) � � � (1; Sm),(0; S0) <T (1; Sm) <T � � � <T (1; S1) <T (0; S)gpour i de 1 �a card (X)soit Si le i�eme �etat de X trouv�e lors du parcours gauche en profondeur de T�n pouri � 1d�ebut bouclesi i > n alors sortir boucleinterroger l'oracle pour (0; Si)si r�eponse = NON alors retourner diagnostic(Si)i � i + 1�n boucleretourner S�n fonction

120 CHAPITRE 4. DIAGNOSTIC D�ECLARATIF D'ERREUROn illustre l'algorithme par l'exemple suivant (similaire �a celui trait�e dans [92]) du �a Colmerauer[21] en Prolog III utilisant le solveur sur les bool�eens [8].Exemple 4.5.1 D�etection de pannes dans un additionneur binaire en Prolog IIIOn cherche �a d�etecter des composants d�efectueux dans un additionneur binaire qui calcule la sommede trois bits x1; x2; x3 sous forme d'un nombre binaire sur deux bits y1y2. Le circuit est le suivant :P1ANDX1 P4XORX3X2 P2AND P5XORORP3U1U3U2 Y1Y2On ne s'int�eresse qu'au cas o�u un seul des composants est en panne.La clause a C 2A s'�ecrit en Prolog III (syntaxe marseilleise) :a -> A , C ;(en particulier un fait a C 2 " s'�ecrit a -> , C ;).Le programme DETECT1 exprime la relation entre les entr�ees, les sorties et le composant d�efec-tueux.circuit(C,E,S) -> au_plus_1(C,X) , {C = [P1,P2,P3,P4,P5], E = [X1,X2,X3],S = [Y1,Y2], X = 1', ~P1 => (U1 <=> (X1 & X3)),~P2 => (U2 <=> (X2 & U3)), ~P3 => (Y1 <=> (U1 | U2)),~P4 => (U3 <=> ~(X1 <=> X3)), ~P5 => (Y2 <=> ~(X2 <=> U3))} ;au_plus_1(L,X) -> , {L = [], X = 0'} ;au_plus_1(L,X) -> au_plus_1(Q,Z) , {L = [Y|Q], X = (Y | Z), (Y & Z) = 0'} ;booleen(X) -> , {X = 0'} ;booleen(X) -> , {X = 1'} ;enumere(L) -> , {L = []} ;enumere(L) -> booleen(X) enumere(Q) , {L = [X|Q]} ;go(C,E,S) -> circuit(C,E,S) enumere(E) , {C = [0',0',0',0',1'], S = [1',1']} ;

4.5. CORRECTION PARTIELLE N�EGATIVE : R�EPONSES MANQUANTES 121La variable C est la liste des composants (P1 �a P5), un composant est d�efectueux si sa valeur est1', la variable E est la liste des entr�ees (X1 �a X3) et la variable S est la liste des sorties (Y1 et Y2).Les variables existentielles U1,U2,U3 de la premi�ere clause sont les sorties des composants P1,P2,P4comme indiqu�e sur le sch�ema pr�ec�edent.Le but go(C,E,S) fournit des jeux de tests dans le cas ou le composant P5 est d�efectueux (poursimpli�er, on impose que la sortie soit [1',1']).Remarque. Il ne faut pas confondre notre objectif qui est de recherch�e des erreursdans le programme avec l'exemple qui est un programme qui recherche des composantsd�efectueux dans un additionneur binaire. 3Les r�eponses fournies par Prolog III sont :> go(C,E,S) ;{C = [0',0',0',0',1'], E = [0',1',1'], S = [1',1']}{C = [0',0',0',0',1'], E = [1',0',1'], S = [1',1']}{C = [0',0',0',0',1'], E = [1',1',0'], S = [1',1']}{C = [0',0',0',0',1'], E = [1',1',1'], S = [1',1']}La derni�ere r�eponse s'expliquent par le fait qu'un composant d�efectueux n'a pas sa sortie erron�eepour toutes les entr�ees possibles. C'est pour cette raison que nous avons mis des implicationsdans le programme : le composant P2 fonctionne correctement si P2 = 00, i.e. pour tout X2,U3,U2 laconjonction des entr�ees X2 & U3 est �equivalente �a la sortie U2.A�n d'illustrer le diagnostic d'incorrection n�egative nous donnons le programme DETECT2 qui estune autre implantation du probl�eme (erron�ee �evidement).circuit(C,E,S) -> au_plus_1(C,X) , {C = [P1,P2,P3,P4,P5], E = [X1,X2,X3],S = [Y1,Y2], X = 1', ~P1 => (U1 <=> (X1 & X3)),~P2 => (U2 <=> (X2 & U3)), ~P3 => (Y1 <=> (U1 | U2)),~P4 => (U3 <=> (~X1 & ~X3)), ~P5 => (Y2 <=> (~X2 & ~U3))} ;au_plus_1(L,X) -> , {L = [], X = 0'} ;au_plus_1(L,X) -> au_plus_1(Q,Z) , {L = [Y|Q], X = (Y | Z), (Y & Z) = 0'} ;booleen(X) -> , {X = 0'} ;booleen(X) -> , {X = 1'} ;enumere(L) -> , {L = []} ;enumere(L) -> booleen(X) enumere(Q) , {L = [X|Q]} ;go(C,E,S) -> circuit(C,E,S) enumere(E) , {C = [0',0',0',0',1'], S = [1',1']} ;Les r�eponses fournies par Prolog III pour le but go(C,E,S) du programme DETECT2 sont :> go(C,E,S) ;{C = [0',0',0',0',1'], E = [0',1',0'], S = [1',1']}{C = [0',0',0',0',1'], E = [1',0',1'], S = [1',1']}{C = [0',0',0',0',1'], E = [1',1',1'], S = [1',1']}

122 CHAPITRE 4. DIAGNOSTIC D�ECLARATIF D'ERREUROn constate que (0; sq(go(C; E; S))) est un symptome. fg2 go(C,E,S) est non compl�etement couvertparce qu'il existe un store C 0 tel que go(C; E; S) C 0 est non couvert. Par exemple, on peut prendreC 0 = f(C=[0',0',0',0',1'], S=[1',1'], E=[0',1',1'])g, ou C 0 = f(C=[0',0',0',0',1'],S=[1',1'], E=[1',1',0'])g.Voyons la session de diagnostic pour le programme DETECT2 et le but go(C,E,S).Les stores pr�esent�es ont �et�e simpli��es par Prolog III.Symptome : go(C,E,S)circuit(C; E; S)2 fC = [0',0',0',0',1'], S = [1',1']gest-il compl�etement couvert parfC = [0',0',0',0',1'], E = [X1,X2,X3], S = [1',1'], X2|X3 = 1', X1 => X3, X3 => X1,X1|X2 = 1'g? NONau plus 1(C; X)2 fC = [00; 00; 00; 00; 10]gest-il compl�etement couvert parf fC = [0',0',0',0',1'], X = 1'g g? OUIenumere(E)2 fE = [X1; X2; X3]; X2jX3 = 10; X1 => X3; X3 => X1; X1jX2 = 10gest-il compl�etement couvert parf fE = [0',1',0']g, fE = [1',0',1']g,fE = [1',1',1']g g? OUIIncorrection n�egative : circuit(C; E; S)2 fC = [0',0',0',0',1'], S = [1',1']gL'algorithme a isol�e une d�e�nition responsable du symptome. L'erreur vient du fait que dans lad�e�nition de circuit les \XOR" ont �et�e implant�es par des \NOT OR".Sur cet exemple, on constate que C 02 go(C;E; S) est aussi non compl�etement couvert, o�u C 0 =f(C=[0',0',0',0',1'], S=[1',1'], E=[A,� A,1'])g. Dans ce cas on peut rechercher une er-reur �a partir de C 02 go(C;E; S). En e�et, on peut ajouter la clause go' -> go(C,E,S), C' ; auprogramme, et consid�erer que fg2 go' est non attendu. Dans ce cas on retrouve l'exemple trait�edans [92] qui aboutit �a une erreur encore plus pr�ecise.Dans cette section, nous n'avons donn�e une m�ethode de diagnostic d'incorrection n�egative quesi l'arbre SLD associ�e au symptome n�egatif calcul�e est sans co-routinage. Cette condition permetd'assurer que les questions d'incompl�etude sont �nies, et que l'on peut calculer les prolongementsd'un 0-�etat de mani�ere e�ective.Les arbres SLD calcul�es par un syst�eme de PLC standard (standard international ISO de Prolog[31]) peuvent etre avec co-routinage. Cependant, en l'absence de m�eta-pr�edicat de controle (commedelay, freeze, etc.) les arbres SLD sont sans co-routinage (ils respectent la r�egle de calcul stan-dard). De plus, on constate que de nombreuses parties, des arbres SLD avec co-routinages calcul�es,sont sans co-routinage (on peut commencer par interroger ces parties). Et parfois on peut d�eduirede l'arbre SLD calcul�e un arbre SLD sans co-routinage.Maintenant que nous avons bien expliqu�e les algorithmes de recherche d'incorrection n�egative,on comprend pourquoi la condition de non co-routinage est n�ecessaire. On pouvait penser trouverdes m�ethodes pour �etendre ces algorithmes �a des arbres SLD avec co-routinage en conservant desquestions atomiques (qui ne font intervenir qu'un atome). On comprend pourquoi c'est impossiblegrace �a notre d�e�nition claire de l'arbre SLD.

4.5. CORRECTION PARTIELLE N�EGATIVE : R�EPONSES MANQUANTES 123D'autres techniques ont �et�e envisag�ees, mais celles qui permettent d'avoir des interactionssimples avec l'oracle ne fournissent pas de notion d'erreur int�eressante.En revanche, si on s'autorise �a poser des questions non atomiques alors on peut trouver d'autresalgorithmes.Par exemple, �a l'extreme, on peut consid�erer que le programme P est une abr�eviation pourIFF(P ). On pr�esente bri�evement une m�ethode similaire �a celle d�evelopp�ee dans [63] pour le langageESCHER.Dans ce cas, on peut voir la s�emantique op�erationnelle comme du remplacement de = par = :� le programme est un ensemble d'�egalit�es a = (C12 a11 � � � a1n1) _ � � � _ (Cm2 am1 � � � amnm)� on passe du butB1 _ � � � _Bi�1 _ (Ci2 ai1 � � � aij�1aijaij+1 � � � aini) _Bi+1 _ � � � _Blo�u aij est l'atome s�electionn�e, et les Bk sont de la forme Ck2 ak1 � � � aknk au butB1 _ � � � _Bi�1 _B(i;1) _ � � � _B(i;n) _Bi+1 _ � � � _Blo�u aij = (D12 b11 � � � b1n1) _ � � � _ (Dm2 bm1 � � � bmnm) est une �egalit�e du programme (dont lesvariables locales sont renomm�ees �a part) et les B(i;k), k = 1; : : : ; n sont de la forme Ci ^Dh2 ai1 � � � aij�1bh1 � � � bhnhaij+1 � � � aini pour les h 2 f1; : : : ;mg tels que Ci ^Dh n'est pas rejet�e.Le calcul est alors d�eterministe et de la forme :B11kB21 _ � � � _B2n2k� � �� � �� � �kBi1 _ � � � _BinikBi+11 _ � � � _Bi+1ni+1k� � �� � �� � �kBm1 _ � � � _Bmnmo�u chaque Bmk , k = 1; : : : ; nm, est de la forme Cmk 2 " et B11 est de la forme ;2 a (Bm1 _ � � � _Bmnmest le _-store r�eponse au but a).La s�emantique op�erationnelle est simple et le diagnostic d�eclaratif d'incorrection encore plus.Le _-store r�eponse est un symptome si a = Bm1 _ � � � _ Bmnm n'est pas attendu. C'est qu'il existeune �egalit�e Bi1 _ � � � _ Bini = Bi+11 _ � � � _ Bi+1ni+1 non attendue. L'erreur peut se d�e�nir �a partir del'�egalit�e du programme qui a permis de passer de l'�etat i �a l'�etat i + 1.

124 CHAPITRE 4. DIAGNOSTIC D�ECLARATIF D'ERREURCependant, on voit toute la di�cult�e de l'interaction avec l'oracle puisque ce dernier doit seprononcer sur des objets tr�es complexes, i.e. il doit d�eterminer si une �egalit�e de la forme Bi1 _ � � � _Bini = Bi+11 _ � � � _ Bi+1ni+1 est attendue, o�u chaque Bzy est de la forme Czy 2Azy o�u Azy est une suite�nie d'atomes.On comprend pourquoi Lloyd s'int�eresse tant au probl�eme de pr�esentation (i.e. comment pr�e-senter des question longues et complexes �a l'utilisateur).4.6 Insu�sance : r�eponses manquantesNous nous contentons d'une esquisse de l'adaptation des techniques de recherche d'insu�sanceconnues �a la programmation logique avec contraintes. La principale di��erence avec la programma-tion logique r�eside dans le probl�eme de non couverture unique largement discut�e dans le chapitre 3.Cette section se base sur les r�esultats de [92].On reprend une partie de la terminologie et des d�e�nitions introduites dans la section 4.5.On suppose un programme P et une relation de couverture ` �x�es. Le crit�ere de rejet RC estd�e�ni par la relation unaire ` ;.La s�emantique attendue est toujours formalis�ee par un ensemble d'atomes contraints I.Le sch�ema g�en�eral de la section 4.1 peut s'appliquer �a l'op�erateur T �;P .D�e�nition 4.6.1 Symptome d'insu�sanceUn symptome d'insu�sance est un atome contraint a C 2 I n pgpf (T �;P ).D�e�nition 4.6.2 Insu�sanceUne insu�sance est un atome contraint a C non couvert par P relativement �a I (i.e. a C 2I n T �;P (I)).D�e�nition 4.6.3 Symptome d'insu�sance calcul�eUn symptome d'insu�sance calcul�e est un atome contraint a C tel qu'il existe un arbre SLD�ni pour le but a et C 6` SS(P; a) (SS(P; a) est le _-store r�eponse pour le but a).Pour que la m�ethode s'applique aux symptomes e�ectivement calcul�es, il faut montrer qu'unsymptome d'insu�sance calcul�e est un cas particulier de symptome d'insu�sance. Ce cas particuliercorrespond �a l'existence d'un arbre SLD �ni pour le but concernant l'atome du symptome.Les trois premiers lemmes sont interm�ediaires �a la preuve du lemme 4.6.7.Lemme 4.6.4 S'il existe un arbre SLD �ni pour le but a et le _-store r�eponse associ�e estSS(P; a) = fC1; : : : ; Cmg alors il existe un entier k tel que, pour tout store C, si a C 2 TP # kalors C ` ; (i.e. C est rejet�e) ou il existe 1 � i � m tel que C = Ci.Preuve. On fait correspondre un �el�ement a C de TP # k �a un squelette S deprofondeur � k qui a toutes ses feuilles ind�e�nies �a la profondeur k et est tel queAC(S; a) = C.Si k0 est la profondeur de l'arbre SLD, on prend k > k0 et on constate qu'un squelettequi correspond �a un �el�ement a C de TP # k est soit une r�eponse, soit tel que C ` ;.Lemme 4.6.5 Pour tout entier n, si a C 2 T �;P # n alors il existe un ensemble de stores R telque C ` R et, pour tout store C 0 2 R, a C 0 2 TP # n.

4.6. INSUFFISANCE : R�EPONSES MANQUANTES 125Preuve. Le lemme se prouve par r�ecurrence sur l'entier n.1. Si a C 2 T �;P # 0 alors il su�t de prendre R = fCg.2. Pour l'h�er�edit�e de l'hypoth�ese, on utilise le fait que T �;P # n+1 = T`(TP (T �;P # n))et les propri�et�es CONJ, EXIS et TRAN de la relation de couverture.Lemme 4.6.6 Si a C 2 T �;P # ! et il existe un arbre SLD �ni pour le but a et SS(P; a) =fC1; : : : ; Cmg alors il existe R � fC1; : : : ; Cng tel que C ` R (i.e. a C 2 SS`(P )).Preuve. Le lemme 4.6.5 montre que, pour tout entier n, il existe Rn tel que C ` Rn et,pour tout store C 0 2 Rn, a C 0 2 TP # n.Le lemme 4.6.4 assure qu'il existe un entier k tel que si a C 0 2 TP # k alors C 0 ` ;ou il existe 1 � i � m tel que C 0 = Ci.Il su�t de prendre R = Rk.Nous pouvons maintenant �enonc�e le lemme principal qui �etabli qu'un symptome d'insu�sancecalcul�e est un cas particulier de symptome d'insu�sance.Lemme 4.6.7 Si a C est un symptome d'insu�sance calcul�e alors a C est un symptomed'insu�sance.Preuve. Soit a C un symptome d'insu�sance calcul�e. Si a C n'est pas unsymptome d'insu�sance alors a C 2 pgpf(T �;P ), donc a C 2 T �;P # ! etC ` SS(P; a) (lemme 4.6.6), or a C est un symptome d'insu�sance calcul�e, donca C est un symptome d'insu�sance.La m�ethode g�en�eralise celle utilis�ee en programmation logique (section 4.2), puisqu'on remplacela condition d'existence d'un arbre SLD d'�echec �ni pour le symptome par la condition d'existenced'un arbre SLD �ni. C'est parce que les deux niveaux de r�eponses consid�er�es permettent de g�en�erali-ser la s�emantique n�egative classique li�ee �a l'�echec �ni (notons qu'il �etait moins �evident de consid�ererdes \disjonctions" de substitutions r�eponses dans le cadre de la programmation logique).L'algorithme de diagnostic est bas�e sur les memes principes que l'algorithmes de diagnosticde la section 4.1.2. �A cette di��erence qu'il utilise des r�egles de couverture �eventuellement non�nitaires. Les r�egles de couverture correspondent, ramen�e au cadre de la section 4.2, �a la tentativede construction en parall�ele de plusieurs arbres de preuve.La non �nitude potentielle des r�egles de couverture pose le probl�eme d'e�ectivit�e du diagnostic.Si la relation de couverture est compacte (par exemple celle d�e�nie �a partir d'une th�eorie) ceprobl�eme ne se pose pas. En revanche, si elle n'est pas compacte alors supposons que l'utilisateurne puisse r�epondre �a une question par une couverture �nie alors deux cas sont a envisager :1. c'est parce qu'il n'existe pas de couverture possible alors on a trouv�e une insu�sance ;2. c'est parce que toute couverture possible est in�nie alors on constate que pour obtenir l'atomecontraint par un calcul �ni, la meilleure solution est peut-etre de l'ajouter comme clause duprogramme, meme si l'erreur qui a caus�e le symptome ne se situe pas n�ecessairement dans lad�e�nition correspondante.Dans tous les cas, si on veut utiliser une r�egle de couverture non �nitaire, la notion d'erreurn'est pas maniable de mani�ere e�ective.

126 CHAPITRE 4. DIAGNOSTIC D�ECLARATIF D'ERREURCet algorithme demande donc �a l'utilisateur de fournir des contraintes pour couvrir ce qui estattendu. On remarque qu'il y a beaucoup plus de contraintes �a fournir qu'il y avait de substitutions�a fournir en programmation logique : la m�ethode revient �a explorer plusieurs arbres de preuve quandla propri�et�e d'ind�ependance des contraintes n�egatives n'est pas v�eri��ee.Aucun prototype n'a �et�e r�ealis�e pour le diagnostic d'insu�sance, mais on peut s'attendre �a unegrande complexit�e de l'interaction avec l'oracle. C'est pourquoi nous avons privil�egi�e le diagnosticd'incorrection n�egative.Malgr�e tout cette m�ethode reste une piste int�eressante dans le cas o�u il n'existe pas d'arbreSLD sans co-routinage (ou �a partir de l'arbre SLD calcul�e on n'a pas pu d�eduire un arbre SLD sansco-routinage).En comparant les deux types de d�e�nitions, nous allons constater qu'une collaboration des deuxm�ethodes pourrait etre envisag�ee.Un symptome d'insu�sance calcul�e est un atome contraint a C v�eri�ant la propri�et�e :� a C 2 I ;� C 6` SS(P; a), i.e. C 6` R(C 2 a) (REFL et CONJ).Donc a2C est un symptome d'incorrection n�egative.De la meme mani�ere, un symptome d'incorrection n�egative calcul�e est une paire a2C v�eri�ant :� il existe C 0 ` fCg ;� a C 0 2 I ;� C 0 6` R(C 2 a), i.e. C 0 6` SS(P; a) (sinon C 0 ^ C ` R(C 2 a) or C 0 ` fC 0 ^ Cg d'o�u lacontradiction).Donc si l'utilisateur fournit la contrainte C 0 (celle dont on lui demande si elle existe dans la questiond'incompl�etude) alors a C 0 est un symptome d'insu�sance.Par cons�equent, il semble qu'il soit possible de passer d'un type de symptome �a l'autre. Si cettevoie, qui reste �a explorer, s'av�ere fructueuse alors (lors d'une session de diagnostic pour des r�eponsesmanquantes) on peut imaginer utiliser le premier algorithme pour les parties de l'arbre SLD sansco-routinage et le second algorithme pour les autres parties.Le r�esultat suivant renforce aussi cette perspective :Lemme 4.6.8 Il existe une insu�sance si et seulement si il existe une incorrection n�egative.Preuve.) Soit a C une insu�sance, i.e. a C 62 I n T �;P (I). On a C 0 ` fC 0g, a C 0 2 Imais a C 0 non couvert par P par rapport �a I, donc a2C 0 est une incorrectionn�egative.( Soit a2C une incorrection n�egative, i.e. il existe C 0 tel que C 0 ` fCg, a C 0 2 Imais a C 0 n'est pas couvert par P par rapport �a I, donc a C 0 est uneinsu�sance.D'o�u le corollaire suivant, qui s'applique bien entendu aux symptomes calcul�es :

4.6. INSUFFISANCE : R�EPONSES MANQUANTES 127Corollaire 4.6.9 S'il existe un symptome d'insu�sance (respectivement un symptome d'incorrec-tion n�egatif) alors il existe une incorrection n�egative (respectivement une insu�sance).En�n, notons que c'est l'op�erateur T �;P qui a �et�e choisit pour les d�e�nitions. Soulignons qu'eng�en�eral : pgpf (T �;P ) 6= pgpf (T [;P ) 6= T`(pgpf (TP ))

128 CHAPITRE 4. DIAGNOSTIC D�ECLARATIF D'ERREUR

Chapitre 5ConclusionDeux contributions aux domaines de la programmation logique avec contraintes se d�egagent de cetravail :1. Une reformulation compl�ete de la s�emantique op�erationnelle et de la s�emantique d�eclarativedes programmes logiques avec contraintes en termes de squelettes et d'arbres de preuve.Notre cadre permet de rendre compte de l'incompl�etude des solveurs de contraintes grace aucrit�ere de rejet pour la s�emantique op�erationnelle et grace �a la relation de couverture pourla s�emantique d�eclarative. Le crit�ere de rejet abstrait la notion de satis�abilit�e d'un storedans une interpr�etation du langage des contraintes ou dans une th�eorie dans le langage descontraintes. La relation de couverture �etend le crit�ere de rejet pour abstraire la notion decouverture d'un store par un ensemble (�eventuellement in�ni) de stores.Cette reformulation d�egage les deux niveaux de calcul manipul�es en programmation logiqueavec contraintes : d�erivations SLD et arbres SLD ; les premiers peuvent etre vu comme descalculs positifs et les seconds comme des calculs n�egatifs. Cela permet de distinguer deuxs�emantiques : la s�emantique positive et la s�emantique n�egative. En g�en�eral la s�emantiquen�egative se d�e�nit �a partir des arbres SLD d'�echec �ni. Nous consid�erons qu'une bonne g�en�e-ralisation est de la d�e�nir �a partir des arbres SLD �nis en consid�erant les _-stores r�eponses(on retrouve le cas particulier de l'�echec �ni quand le _-store r�eponse est vide).2. Une �etude du diagnostic d�eclaratif d'erreur en programmation logique avec contraintes met-tant �a pro�t la reformulation en termes de squelettes et d'arbres de preuve de la s�emantiquedes programmes logiques avec contraintes.Nous avons �etudi�e le cas des r�eponses fausses (incorrection positive) et le cas des r�eponsesmanquantes (incorrection n�egative et insu�sance). Pour la recherche d'incorrection n�egative,nous avons contribu�e �a �eclaircir les fondements th�eoriques de l'algorithme que nous propo-sions dans [92]. Cet algorithme est une double g�en�eralisation (�a la programmation logiqueavec contraintes et aux arbres SLD sans co-routinage) d'un algorithme connu pour la pro-grammation logique [68]. De ce point de vue, nous contribuons �egalement �a la compr�ehensionformelle des algorithmes de recherche d'atomes non compl�etement couverts de la program-mation logique : ce sont de simples algorithmes de recherche d'incorrections, mais pour unsyst�eme de r�egles compliqu�e.Nous avons d�e�ni un nouveau sch�ema g�en�eral pour le diagnostic bas�e sur une relation bienfond�ee, qui n'explique pas directement la notion d'erreur, mais qui rend compte �d�element129

130 CHAPITRE 5. CONCLUSIONdes algorithmes de diagnostic d'incorrection qui ne sont que la recherche d'�el�ement minimauxparmi les symptomes.Nous n'avons impos�e aucune condition sur les programmes, telle que la propri�et�e d'etre ac-ceptable [4]. Nous n'avons impos�e aucune condition sur le solveur de contraintes, telle quela compl�etude. La seule condition que nous ayons impos�e est l'existence d'un arbre SLD �nisans co-routinage pour le diagnostic d�eclaratif d'incorrection n�egative. Cependant, les arbresSLD calcul�es par les syst�emes ont g�en�eralement de nombreuses parties sans co-routinage. Deplus, nous discutons dans la section 4.6 des m�ethodes qui permettraient une collaborationjudicieuse entre les techniques de recherche d'insu�sance et de recherche d'incorrection n�ega-tive. Une telle collaboration peut etre possible grace �a notre d�e�nition des arbres SLD (avantcette d�e�nition, il �etait di�cile de l'envisager). Cela permettrait de diagnostiquer des erreursdans le programme dans le cas de r�eponses manquantes en conservant, quand c'est possible,une interaction simple avec l'oracle.Nous avons compar�e notre mod�elisation de la s�emantique op�erationnelle avec les mod�eles plusclassiques et nous avons montr�e qu'elle d�ecrit une abstraction du comportement op�erationnel dessyst�emes r�eels.Rappelons que nous avons fait le choix de voir un syst�eme de PLC comme un vrai langage deprogrammation et non comme un syst�eme de r�esolution de contraintes uniquement.Le probl�eme de pr�esentation (voir section 4.2) n'a pas �et�e abord�e. C'est un probl�eme qui d�epasselargement le cadre du diagnostic. En e�et, lors du diagnostic on interroge l'utilisateur pour savoir sile r�esultat d'un calcul est attendu. Le probl�eme de pr�esentation de ce r�esultat existe d�ej�a quand onconsid�ere l'implantation du syst�eme de PLC lui-meme, et au del�a il existe d�ej�a quand on s'int�eresseau syst�eme de r�esolution de contraintes. Des solutions sont en partie connues, par exemple enutilisant des approximations, l'�enum�eration des solutions, l'�elimination des variables quanti��eesexistentiellement, des outils graphiques, des transformations des formules conservant l'ensembledes solutions, etc.Le niveau de cette reformulation convient pour �etudier l'aspect programmation, mais pas encorel'aspect r�esolution de contraintes.Par exemple, si le programme est de la forme (o�u C est un tr�es gros stores)go(x1; : : : ; xn) C 2 "et qu'on observe un symptome �a l'ex�ecution, les m�ethodes de recherche d'erreur que nous pr�esentonssont sans int�eret. On peut discuter de la m�ethodologie de programmation et pr�ef�erer un programmemieux structur�e : en g�en�eral il est plus facile de d�ecouper un probl�eme en sous-probl�eme: : : mais cen'est pas notre propos.Notons que le programme ci-dessus peut �a peine etre consid�er�e comme un programme. C'estplutot l'utilisation d'un syst�eme de programmation logique avec contraintes comme simple syst�emede r�esolution de contraintes : seule une partie des possibilit�es du syst�eme est utilis�ee (c'est commesi l'on utilisait un langage de programmation imp�erative pour calculer la valeur de (1+p5)=2 alorsqu'on dispose d'une calculette1).Chercher des erreurs dans le store C n'a pas de sens dans notre cadre au sens strict : lespr�edicats de contrainte sont suppos�es corrects, c'est le programme que nous d�eboguons non lesyst�eme. Cependant, s'il y a un symptome c'est bien qu'une erreur a �et�e commise lors de l'�ecrituredu store C.1Cependant, peu de programmeurs peuvent a�rmer n'avoir jamais utilis�e un langage de programmation de cettemani�ere.

131Il serait donc important de se placer dans un autre cadre pour chercher des moyens formelsappropri�es a�n de diagnostiquer des erreurs dans des syst�emes de contraintes purs. C'est-�a-dires'int�eresser au diagnostic pour les probl�emes de satisfaction de contraintes.Nous n'avons pas parl�e d'implantation des algorithmes d�ecrits dans le chapitre 4. Les implanta-tions r�ealis�ees actuellement sont �a l'�etat de prototype. Notamment elles n'int�egrent pas d'interfaceconviviale et sont encore semi-automatiques en ce qui concerne le probl�emes des r�eponses man-quantes.Comme pour la programmation logique, l'implantation de prototypes �ecrits dans le langagelui-meme soul�eve des probl�emes de m�eta-programmation. La di�cult�e suppl�ementaire est la mani-pulation des contraintes au niveau m�eta. Cette di�cult�e intervient par exemple lors du probl�emede pr�esentation. Elle est en partie simpli��ee en Prolog III grace au pr�edicat outc qui a�che unterme avec les contraintes associ�ees aux variables qui �gurent dans ce terme.On constate que la repr�esentation avec variables du programme objet fonctionne correctement(comme en programmation logique). Par exemple le m�eta-interpr�ete vanilla :solve(true) ;2 "solve(x) ;2 clause(x if y) solve(y)solve(x et y) ;2 solve(x) solve(y)o�u la d�e�nition du pr�edicat clause est : pour toute clause a C 2 a1 � � � an du programme objet,le m�eta-interpr�ete a un fait clause(a if a1 et � � � et an et true) C 2 ". On peut noter que c'est lad�e�nition exacte du pr�edicat clause de Prolog III. Ce langage semble etre le mieux adapt�e pourl'implantation de prototypes m�eta-programm�es.Cette di�cult�e �a manipuler les contraintes au niveau m�eta, en partie simpli��ee en Prolog III,am�ene �a penser que les algorithmes de diagnostic seraient plus simples �a implanter dans le syst�emelui-meme et non au niveau m�eta. Un interpr�ete manipulant les contraintes sur les intervalles surIN et sur IR est en cours de d�eveloppement au Laboratoire d'Informatique Fondamental d'Orl�eanssous la direction de Fr�ed�eric Benhamou. Nous envisageons d'int�egrer nos algorithmes de diagnosticd�eclaratif d'erreur dans ce syst�eme.Nous n'avons pas parl�e de l'optimisation possible de nos algorithmes. Toutes les optimisationsd�ecrites dans la section 4.2 sont envisageables. De plus, en tenant compte de l'interpr�etation sous-jacente des contraintes on pourrait exhiber des heuristiques permettant d'optimiser le nombre dequestions ou de d�eterminer un ordre allant des questions les plus simples aux questions les pluscomplexes.Il est important de noter que le diagnostic d�eclaratif d'erreur n'�evite pas tout travail de la partde l'utilisateur et qu'il n'est qu'une aide pour la recherche des erreurs dans le programme (il n'y apas de miracle !).Rappelons en�n que ces outils doivent s'int�egrer dans un environnement g�en�eral de mise aupoint de programme, et qu'ils ne viennent qu'en appui de toutes les autres techniques permettantd'aider �a la correction du programme.

132 CHAPITRE 5. CONCLUSION

Appendice ARappelsCette annexe rappelle les d�e�nitions de base utiles dans cette th�ese. Les notations et le vocabulaireintroduits sont tr�es classiques. Le lecteur trouvera plus de d�etail sur les di��erents concepts dans lesouvrages de math�ematiques discr�etes pour l'informatique (par exemple [53, 6, 99, 66, 82]).A.1 RelationsUne relation R sur E1�� � ��En est un sous-ensemble de E1�� � ��En (� est le produit cart�esien).�Etant donn�e une relation R sur E1� � � ��En, nous notons aussi R la fonction de E1� � � ��Endans l'ensemble des valeurs de v�erit�e fvrai; fauxg et nous utilisons les notations (e1; : : : ; en) 2 R etR(e1; : : : ; en) pour indiquer que (e1; : : : ; en) est un �el�ement de R. Notons que E1 � � � � �En est larelation sur E1 � � � � �En vraie pour tout �el�ement de E1 � � � � �En.Si R est une relation sur En nous dirons �egalement que R est une relation n-aire sur E.Soit R une relation binaire sur E. On note parfois e1Re2 pour (e1; e2) 2 R et e1 =R e2 pour(e1; e2) 62 R. De plus, on dit que :� R est r�e exive si pour tout e 2 E : (e; e) 2 R ;� R est irr�e exive si pour tout e 2 E : (e; e) 62 R ;� R est sym�etrique si pour tout (e1; e2) 2 E2 : (e1; e2) 2 R implique (e2; e1) 2 R ;� R est antisym�etrique si pour tout (e1; e2) 2 E2 : (e1; e2) 2 R et (e2; e1) 2 R implique e1 = e2 ;� R est transitive si pour tout (e1; e2; e3) 2 E3 : (e1; e2) 2 R et (e2; e3) 2 R implique (e1; e3) 2 R ;� R est une relation d'�equivalence si R est r�e exive, sym�etrique et transitive ;� R est un ordre (partiel) si R est r�e exive, antisym�etrique et transitive ;� R est un ordre strict si R est irr�e exive et transitive ;� R est un ordre total (strict) si R est un ordre (strict) et pour tout (e1; e2) 2 E2, e1 6= e2 :(e1; e2) 2 R ou (e2; e1) 2 R.Soit R une relation sur E1 � E2. On note R�1 la relation r�eciproque de R sur E2 � E1 d�e�niepar : pour tout (e1; e2) 2 E1 �E2, (e2; e1) 2 R�1 si et seulement si (e1; e2) 2 R.133

134 APPENDICE A. RAPPELSSoit R une relation binaire sur E. On appelle cloture transitive (respectivement r�e exive tran-sitive) de R la plus petite relation transitive (respectivement r�e exive et transitive) qui contient R.La cloture transitive de R est not�ee R+ et sa cloture r�e exive transitive est not�ee R�.Soit R une relation binaire sur E. Soit (e1; e2) 2 R. e1 est un pr�ed�ecesseur de e2 selon R (ete2 est un successeur de e1 selon R) s'il n'existe aucun e 2 E tel que (e1; e) 2 R et (e; e2) 2 R. Larelation binaire sur E d�e�nie par f(e1; e2) 2 E2 j e1 est un pr�ed�ecesseur de e2 selon Rg est appel�eerelation successeur issue de R (elle est incluse dans R) ; sa relation r�eciproque est appel�ee relationpr�ed�ecesseur issue de R.Soit R une relation d'�equivalence sur E. On appelle classe d'�equivalence de e 2 E (moduloR) l'ensemble fe0 2 E j (e0; e) 2 Rg. Deux classes d'�equivalences sont soit �egales soit disjointes ;une classe d'�equivalence est enti�erement d�etermin�ee par un de ses �el�ements. L'ensemble des classesd'�equivalences modulo R est une partition de E not�ee E=R (le quotient de E par R). A�n desimpli�er, une classe d'�equivalence est not�ee, en pratique, par n'importe lequel de ses �el�ements ; lecontexte su�t, en g�en�eral, �a �etablir s'il s'agit de la classe ou de l'�el�ement.Une relation binaire R sur E est bien fond�ee (ou n�therienne) si pour tout �el�ement e0 2 E, iln'existe pas de suite in�nie feigi2IN d'�el�ements de E telle que (ei+1; ei) 2 R, pour tout i 2 IN (i.e.il n'existe pas de suite in�nie \d�ecroissante").La cloture transitive d'une relation bien fond�ee est un ordre strict bien fond�e.A.2 Mots sur un alphabetSoit A un ensemble de lettres appel�e alphabet.L'ensemble des mots A� sur l'alphabet A est l'ensemble des suites �nies d'�el�ements de A. La suitevide est not�ee " ; La suite compos�ee des n > 0 lettres a1; : : : ; an dans cet ordre est not�ee a1 � � � an(n est la longueur du mot a1; : : : ; an) ; en particulier, la suite compos�ee de l'unique �el�ement a 2 Aest not�ee aussi a (en g�en�eral, le contexte l�eve toute ambigu��t�e).Si N = a1a2 � � � am et N 0 = a01a02 � � � a0n sont des �el�ements de A�, la concat�enation de N et N 0est la suite �nie, not�ee N �N 0, d�e�nie par : N �N 0 = a1a2 � � � ama01a02 � � � a0n. N est appel�e un pr�e�xe(ou facteur de gauche) de N �N 0.(A�; �; ") est le mono��de libre engendr�e par A. Un langage sur A� est un sous-ensemble de A�.A.3 TreillisSoit E un ensemble et � un ordre sur E ((E;�) est un ensemble partiellement ordonn�e). Soit Xun sous-ensemble de E.On appelle majorant de X tout �el�ement e 2 E tel que, pour tout x 2 X : x � e. Le dual est lanotion de minorant de X. Une borne sup�erieure de X � E est un majorant e de X tel que, pourtout majorant e0 de X : e � e0. La borne sup�erieur de X, si elle existe, est unique et not�ee lub(X).La notion duale de borne inf�erieure est not�ee glb(X).(E;�) est un treillis si, pour tout (e1; e2) 2 E2, la borne sup�erieure et la borne inf�erieure defe1; e2g existent. (E;�) est un treillis complet si pour tout sous-ensemble X de E : lub(X) et glb(X)existent.Un sous-ensemble X de E est dirig�e si tout sous-ensemble �ni de X a sa borne sup�erieure dansX.

A.3. TREILLIS 135Exemple A.3.1 Treillis sur l'ensemble des parties d'un ensembleSoit E un ensemble. (2E ;�) est un treillis complet. Si X � 2E alors lub(X) = Sx2X x et glb(X) =Tx2X x. La borne sup�erieure de 2E est E et sa borne inf�erieure est ;.

136 APPENDICE A. RAPPELS

Bibliographie[1] Peter Aczel. An Introduction to Inductive De�nitions, chapter 7, pages 739{782. In J. Barwise,editor, Handbook of Mathematical Logic. North-Holland Publishing Company, 1977.[2] K. R. Apt. Handbook of Theoretical Computer Science, volume 2, chapter Logic Programming,pages 493{574. Elsevier, 1990.[3] K. R. Apt and M. H. Van Emden. Contributions to the Theory of Logic Programming. Journalof the ACM, 29(3):841{862, 1982.[4] K.R. Apt and D. Pedreschi. Reasoning about termination of pure PROLOG programs. Infor-mation and Computation, 106(1):109{157, 1993.[5] Krzysztof R. Apt and Dino Pedreschi. Studies in Pure Prolog: Termination. In John W.Lloyd, editor, Symposium on Computational Logic, Lecture Notes in Computer Science, pages150{176. Springer-Verlag, 1990.[6] A. Arnold and I. Guessarian. Math�ematiques pour l'informatique. Logique Math�ematiquesInformatiques. Masson, 1993.[7] Roberto Bagnara, Marco Comini, Francesca Scozzari, and Enea Za�anella. The AND-compositionality of CLP computed answer constraints. In Paqui Lucio, Maurizio Martelli,and Marisa Navarro, editors, Joint Conference on Declarative Programming, pages 355{366,1996.[8] Fr�ed�eric Benhamou. Boolean Algorithms in Prolog III. In Alain Colmerauer and Fr�ed�ericBenhamou, editors, Constraint Logic Programming: Selected Research, chapter 17, pages 307{326. MIT Press, 1993.[9] Fr�ed�eric Benhamou. Heterogeneous Constraint Solving. In Michael Hanus and MarioRofr��guez-Artalejo, editors, International Conference on Algebraic and Logic Programming,volume 1139 of Lecture Notes in Computer Science, pages 62{76. Springer-Verlag, 1996.[10] Fr�ed�eric Benhamou and Toura��vane. Prolog IV: langage et algorithmes. In Journ�ees Franco-phones de Programmation en Logique, pages 51{65. Teknea, 1995.[11] Michel Berg�ere. Approche d�eclarative du diagnostic d'erreur pour la programmation en logiqueavec n�egation. PhD thesis, Universit�e d'Orl�eans, 1991.[12] Michel Berg�ere, G�erard Ferrand, Fran�cois Le Berre, Bernard Malfon, and Alexandre Tessier.La Programmation Logique avec Contraintes revisit�ee en termes d'arbres de preuve et desquelettes. Technical Report 95/06, LIFO, University of Orl�eans, 1995.137

138 BIBLIOGRAPHIE[13] Michel Berg�ere, G�erard Ferrand, Fran�cois Le Berre, Bernard Malfon, and Alexandre Tessier.La Programmation Logique avec Contraintes revisit�ee en termes d'arbres de preuve et desquelettes. In Pole Contraintes et Programmation Logique. Journ�ees du GDR Programmationdu CNRS, 1994.[14] Dominic Frank Julian Binks. Declarative Debugging in G�odel. PhD thesis, University of Bristol,1995.[15] Annalisa Bossi, Maurizio Gabrielli, Giorgio Levi, and Maurizio Martelli. The S-SemanticsApproach: Theory and Applications. The Journal of Logic Programming, 19&20:149{198,1994.[16] Miguel Cruz Costa Calejo. A Framework for Declarative Prolog Debugging. PhD thesis,Universidade Nova de Lisboa, 1992.[17] K. L. Clark. Negation as Failure. In H. Gallaire and J. Minker, editors, Logic and Data Bases,pages 293{322. Plenum Press, 1978.[18] Philippe Codognet. Programmation logique avec contraintes : une introduction. Technique etScience Informatique, Hermes, 14(6):665{692, 1995. Journ�ees Francophones de Programmationen Logique 1994.[19] Philippe Codognet and Daniel Diaz. Compiling Constraints in clp(FD). Journal of LogicProgramming, 27(3):185{226, 1996.[20] Alain Colmerauer. Prolog II, Manuel de r�ef�erence et mod�ele th�eorique, Groupe IntelligenceArti�cielle Luminy edition, 1982.[21] Alain Colmerauer. An Introduction to Prolog III. Communications of the ACM, 33(7):69{90,1990.[22] Alain Colmerauer. Combining Constraint domains. Technical Report 3, Acclaim, ESPRITProject 7195, 1995. Deliverable D2.11/3.[23] Alain Colmerauer. Speci�cations of prolog iv. Draft, 1996.[24] Livio Colussi, Elena Marchiori, and Massimo Marchiori. A Data ow Semantics for ConstraintLogic Programs. In Manuel V. Hermenegildo and S. Doaitse Swierstra, editors, Symposium onProgramming Languages: Implementations, Logics and Programs, volume 982 of Lecture Notesin Computer Science, pages 431{448. Springer-Verlag, 1995.[25] Livio Colussi, Elena Marchiori, and Massimo Marchiori. On Termination of Contraint Lo-gic Programs. In Ugo Montanari and Francesca Rossi, editors, International Conference onPrinciples and Practice of Constraint Programming, volume 976 of Lecture Notes in ComputerScience, pages 431{448. Springer-Verlag, 1995.[26] Marco Comini and Giorgio Levi. An Algebraic Theory of Observables. In M. Bruynooghe,editor, International Symposium on Logic Programming, pages 172{186. MIT Press, 1994.[27] Marco Comini, Giorgio Levi, and Giuliana Vitiello. Abstract Debugging of Logic Programs.In Laurent Fribourg and F. Turini, editors, Logic Program Synthesis and Transformation andMetaprogramming, volume 883 of Lecture Notes in Computer Science, pages 440{450. Springer-Verlag, 1994.

BIBLIOGRAPHIE 139[28] Marco Comini, Giorgio Levi, and Giuliana Vitiello. Declarative Diagnosis Revisited. In JohnLloyd, editor, International Logic Programming Symposium, Logic Programming, pages 275{287. MIT Press, 1995.[29] Marco Comini, Giorgio Levi, and Giuliana Vitiello. E�cient Detection of IncompletenessErrors in the Abstract Debugging of Logic Programs. In Mirelle Ducass�e, editor, Automatedand Algorithmic Debugging, pages 159{174. IRISA-CNRS, 1995.[30] Patrick Cousot and Radhia Cousot. Abstract Interpretation and Applications to Logic Pro-grams. Journal of Logic Programming, 13(2&3):103{179, 1992.[31] Pierre Deransart, AbdelAli Ed-Dbali, and Laurent Cervoni. Prolog: The Standard, ReferenceManual. Springer-Verlag, 1996.[32] Pierre Deransart and Jan Ma luszy�nski. A Grammatical View of Logic Programming. MITPress, 1993.[33] Nachum Dershowitz and Yuh-Jeng Lee. Deductive Debugging. In Fourth IEEE Symposiumon Logic Programming, pages 298{306, 1987.[34] Nachum Dershowitz and Yuh-Jeng Lee. Logical Debugging. Journal of Symbolic Computation,15:745{773, 1993.[35] Daniel Diaz. �Etude de la compilation des langages logiques de programmation par contraintessur les domaines �nis : le syst�eme clp(FD). PhD thesis, Universit�e d'Orl�eans, 1995.[36] Mehmet Dincbas, Pascal Van Hentenryck, H. Simonis, and Abderrahmane Aggoun. TheConstraint Logic Programming Language CHIP. In International Conference on Fifth Ge-neration Computer Systems, pages 249{264, 1988.[37] Wlodek Drabent, Simin Nadjm-Tehrani, and Jan Ma luszy�nski. Algorithmic Debugging withAssertions. In Harvey Abramson and M. H. Rogers, editors, Meta-Programming in LogicProgramming, pages 501{522. MIT Press, 1989.[38] Fran�cois Fages. Programmation Logique avec Contraintes. �Ecole jeunes chercheurs, GDRprogrammation du CNRS, 1995.[39] Fran�cois Fages. Programmation Logique par Contraintes. ellipses, 1996.[40] G�erard Ferrand. Error Diagnosis in Logic Programming: an adaptation of E. Y. Shapiro'smethod. Journal of Logic Programming, 4:177{198, 1987.[41] G�erard Ferrand. The Notions of Symptom and Error in Declarative Diagnosis of Logic Pro-grams. In Peter A. Fritzson, editor, Automated and Algorithmic Debugging, volume 749 ofLecture Notes in Computer Science, pages 40{57. Springer-Verlag, 1993.[42] G�erard Ferrand and Alexandre Tessier. S�emantique des Programmes Logiques avec Contraintesfond�ee sur la Relation de Couverture. In Pole Contraintes et Programmation Logique. Journ�eesdu GDR Programmation du CNRS, 1995.[43] G�erard Ferrand and Alexandre Tessier. Declarative Debugging. The Newsletter of the EuropeanNetwork in Computational Logic, 1996. COMPULOG NET.

140 BIBLIOGRAPHIE[44] Melvin Fitting. A Kripke-Kleene Semantics for Logic Programs. Journal of Logic Programming,2:295{312, 1985.[45] Melvin Fitting. Computability Theory, Semantics, and Logic Programming. Number 13 inOxford Logic Guides. Oxford University Press, 1987.[46] Peter Fritzson, Tibor Gyimothy, Mariam Kamkar, and Nahid Shahmeri. Generalized Al-gorithmic Debugging and Testing. ACM Letters on Programming Languages and Systems,1(4):303{322, 1992.[47] Maurizio Gabbrielli and Giorgio Levi. Modeling answer constraints in Constraint Logic Pro-grams. In Vijay A. Saraswat and K. Ueda, editors, International Conference on Logic Pro-gramming, pages 238{252. MIT Press, 1991.[48] Roberto Giacobazzi, Saumya K. Debray, and Giorgio Levi. Generalized Semantics and AbstractInterpretation for Constraint Logic Programs. Journal of Logic Programming, 25(3):191{248,1995. (Short version available in International Conference on Fifth Generation Computer, pp581-591, 1992).[49] Nevin C. Heintze, Joxan Ja�ar, Spiro Michaylov, Peter J. Stuckey, and Roland H.C. Yap. TheCLP(R) Programmer's Manual Version 1.2. IBM Thomas J. Watson Research Center, 1992.[50] Leon Henkin, J. Donald Monk, and Alfred Tarski. Cylindric Algebras, volume 64 of Studies inLogic and the Foundations of Mathematics. North-Holland Publishing Company, �rst edition,1971.[51] P. M. Hill and John W. Lloyd. Analysis of Meta-Programs. In Harvey Abramson and M. H.Rogers, editors, Meta-Programming in Logic Programming. MIT Press, 1989.[52] P. M. Hill and John W. Lloyd. The G�odel Programming Language. Technical Report CSTR-92-27, Department of Computer Science, University of Bristol, 1992.[53] Kiyosi Ito. Encyclopedic Dictionary of Mathematics, volume 1&2. MIT Press, second edition,1993.[54] Joxan Ja�ar and Jean-Louis Lassez. Constraint Logic Programming. In 14th ACM Sympo-sium on Principles of Programming Languages, pages 111{119, 1987. (Full paper available as,Department of Computer Science, Monash University, Technical Report 86/73).[55] Joxan Ja�ar and Michael J. Maher. Constraint Logic Programming: a survey. Journal of LogicProgramming, 19-20:503{581, 1994.[56] R. A. Kowalski. Predicate Logic as a Programming Language. In Information Processing,pages 569{574, 1974.[57] Jean-Louis Lassez, V. L. Nguyen, and E. A. Sonenberg. Fixed Point Theorems and Semantics:A Folk Tale. Information Processing Letters, 14(3):112{116, 1982.[58] Fran�cois Le Berre and Alexandre Tessier. Declarative Incorrectness Diagnosis in ConstraintLogic Programming. In Paqui Lucio, Maurizio Martelli, and Marisa Navarro, editors, JointConference on Declarative Programming, pages 379{391, 1996. (Preliminary version availableas, LIFO, University of Orl�eans, Technical Report 95/08).

BIBLIOGRAPHIE 141[59] Yuh-Jeng Lee and Nachum Dershowitz. Debugging Logic Programs Using Speci�cations. InPeter A. Fritzson, editor, Automated and Algorithmic Debugging, volume 749 of Lecture Notesin Computer Science, pages 75{84. Springer-Verlag, 1993.[60] Y. Lichtenstein and Ehud Y. Shapiro. Abstract Algorithmic Debugging. In Joint InternationalConference and Symposium on Logic Programming, pages 512{530. MIT Press, 1988.[61] John W. Lloyd. Declarative Error Diagnosis. New Generation Computing, 5(2):133{154,, 1987.[62] John W. Lloyd. Foundations of Logic Programming. Springer-Verlag, 1987. second edition.[63] John W. Lloyd. Declarative Programming in Escher. Technical Report CSTR-95-013, Depart-ment of Computer Science, University of Bristol, 1995.[64] Michael J. Maher. A CLP View of Logic Programming. In Conference on Algebraic and LogicProgramming, volume 632 of Lecture Notes in Computer Science, pages 364{383. Springer-Verlag, 1992.[65] Michael J. Maher. A Logic Programming view of CLP. In Warren, editor, InternationalConference on Logic Programming, pages 737{753. MIT Press, 1993.[66] Michel Marchand. Math�ematique discr�ete. De Boeck Universit�e, 1989.[67] Glenford J. Myers. The Art of Software Testing. Wiley & Sons, 1979.[68] Simin Nadjm-Tehrani. Contributions to the Declarative Approach to Debugging Prolog Pro-grams. PhD thesis, Linkoping University, 1989.[69] Lee Naish. Declarative Diagnosis of Missing Answers. New Generation Computing, 10(3):255{285, 1992. (Also available as, Melbourne University, Technical Report 88/9).[70] Lee Naish. Types in Logic Programming, chapter Types and the Intended Meaning of LogicPrograms, pages 189{216. Logic Programming Series. MIT Press, 1992.[71] Lee Naish. Declarative Debugging of Lazy Functional Programs. Australian Computer ScienceCommunications, 15(1):287{294, 1993. (Also available as, Department of Computer Science,University of Melbourne, Technical Report 92/6).[72] Lee Naish. A Declarative Debugging Scheme. Technical Report 95/1, Department of ComputerScience, University of Melbourne, 1995.[73] Lee Naish and Timothy Barbour. A Declarative Debugger for a Logical-Functional Language.Technical Report 94/30, Department of Computer Science, University of Melbourne, 1994.[74] Lee Naish, P. W. Dart, and J. Zobel. The NU-Prolog Debugging Environment. In GiorgioLevi and Maurizio Martelli, editors, International Conference on Logic Programming, pages521{536. MIT Press, 1989.[75] A. E. Nicholson. Declarative Debugging of the Parallel Logic Programming Language GHC.In Australian Computer Science Conference, pages 225{236, 1988.[76] Henrik Nilsson and Peter Fritzson. Algorithmic debugging for lazy functional languages. Jour-nal of Functional Programming, 4(3):337{370, 1994.

142 BIBLIOGRAPHIE[77] William J. Older and Fr�ed�eric Benhamou. Programming in CLP(BNR). In Workshop onPrinciples and Practice of Constraint Programming, 1993.[78] Lu��s Moniz Pereira. Rational Debugging in Logic Programming. In Ehud Y. Shapiro, editor,International Conference on Logic Programming, Lecture Notes in Computer Science. Springer-Verlag, 1986.[79] Lu��s Moniz Pereira and Miguel Calejo. A Framework for Prolog Debugging. In InternationalConference and Symposium on Logic Programming, pages 481{495. MIT Press, 1988.[80] PrologIA. Le manuel de Prolog III, 1989.[81] PrologIA. Le manuel de Prolog IV, 1996.[82] Kenneth H. Rosen. Discrete Mathematics and its Applications. The Random House/Birkh�auserMathematics Series. Random House, �rst edition, 1988.[83] Salvatore Ruggieri. On Termination of Contraint Logic Programs. In Paqui Lucio, MaurizioMartelli, and Marisa Navarro, editors, Joint Conference on Declarative Programming, pages391{403, 1996.[84] Vijay A. Saraswat. The Category of Constraint Systems is Cartesian-Closed. In Logic InComputer Science. IEEE Press, 1992.[85] Vijay A. Saraswat. Concurrent Constraint Programming. ACM Doctoral Dissertation Awards.MIT Press, 1993. (Also available as, Concurrent Constraint Programming Languages, PhDthesis, Carnegie-Mellon University, 1989).[86] Vijay A. Saraswat, Martin Rinard, and Prakash Panangaden. Semantic foundations of concur-rent constraint programming. In Symposium on Principles of Programming Languages, pages333{352. ACM Press, 1991.[87] Dana S. Scott. Domains for Denotational Semantics. In M. Nielsen and E. M. Schmidt, editors,Automata, Languages and Programming, volume 140 of Lecture Notes in Computer Science,pages 577{613. Springer-Verlag, 1982.[88] Ehud Y. Shapiro. Algorithmic Program Debugging. ACM Distinguished Dissertation. MITPress, 1982.[89] M. B. Smyth. Handbook of Logic in Computer Science, volume 1 Background: Mathematicalstructures, chapter Topology, pages 641{761. Oxford University Press, 1992.[90] Leon Sterling and Ehud Shapiro. The Art of Prolog. Logic Programming. MIT Press, thirdedition, 1987.[91] Alexandre Tessier. M�eta-programmation en programmation en logique. Rapport de DEA,LIFO, Universit�e d'Orl�eans, 1992.[92] Alexandre Tessier. Declarative Debugging in Constraint Logic Programming. In Joxan Jaf-far, editor, Asian Computing Science Conference, volume 1179 of Lecture Notes in ComputerScience, pages 64{73. Springer-Verlag, 1996.

BIBLIOGRAPHIE 143[93] Alexandre Tessier. Declarative Debugging in Constraint Logic Programming. In MichaelHanus, editor, International Conference on Algebraic and Logic Programming (Poster session),pages 38{49. Technical Report 96/9, Aachener Informatik { Berichte, 1996.[94] Alexandre Tessier. Diagnostic d�eclaratif d'insu�sance en programmation logique aveccontraintes. In Jean-Louis Imbert, editor, Journ�ees Francophones de Programmation Logiqueet Programmation par Contraintes, pages 65{82. HERMES, 1996. (Also available as, LIFO,University of Orl�eans, Technical Report 96/04).[95] Alexandre Tessier. Une caract�erisation des arbres SLD en programmation logique aveccontraintes. In Pole Contraintes et Programmation Logique. Journ�ees du GDR Programmationdu CNRS, 1996.[96] Maarten H. Van Emden. Value Constraints in the CLP scheme. In International Logic Pro-gramming Symposium, post-conference workshop on Interval Constraints, 1995.[97] Pascal Van Hentenryck. Constraint Logic Programming. Knowledge Engineering Review,6(3):151{194, 1991. (Also available as, Brown University, Technical Report CS-91-05).[98] Giuliana Vitiello. On the Abstract Diagnosis of Logic Programs. PhD thesis, University ofSalerno, 1996.[99] Nguyen Huy Xuong. Math�ematiques discr�etes et informatique. Logique Math�ematiques Infor-matiques. Masson, 1992.

144 BIBLIOGRAPHIE

Notationsa C 2A Une clause, 27,! Relation de transition entre �etats de cal-cul, 43,!r Relation de transition selon la r�eglede calcul r, 45(dompr; ,!pr) Arbre SLD pour le pr�edicat deprogramme p selon la r�egle de calcul r,47,!pr Relation de transition selon r pour p(relation de parent�e de l'arbre SLD),47dompr Domaine d'arbre de l'arbre SLD pourp selon r, 47� Concat�enation(Xi)i2I Famille index�ee par Iarity(R) Arit�e de la clause R, 27ATOM Ensemble des atomesbody(R) Corps de la clause R, 27clauseP (u) Clause dont le nom est u dans leprogramme P (not�e clause(u) quand Pest �x�e), 28cn(P ) Ensemble des noms des clauses duprogramme P , 28cn(P; p) Ensemble des noms des clauses dela d�e�nition de p dans P , 28coind(�) Ensemble d�e�ni co-inductivementpar �, 22consistent Relation de consistance du storeactif, 32CONST Ensemble des contraintes basiquesdu langage, 25

const(S; renoS) Store associ�e au squelette Set �a la fonction de renommage renoS ,36def (S) Ensemble des n�uds d�e�nis du sque-lette S, 35domT Domaine d'arbre standard d'un arbreorient�e �etiquet�e T , 199~xF Quanti�cation existentielle de F sur lesvariables de ~x, 25~9F Cloture existentielle de F , 259�~xF Cloture existentielle de F sauf sur lesvariables de ~x, 259�aF Cloture existentielle de F sauf sur lesvariables libres de l'atome a, 25FF(P ) Ensemble d'�echec �ni du programmePFI(P ) Partie \seulement si" du programmePglb Borne inf�erieurgraft(T;N; T 0) Gre�e de l'arbre T 0 sur len�ud N dans l'arbre T , 19head (R) Tete de la clause R, 27IF(P ) Partie \si" du programme PIFF(P ) Partie \si et seulement si" du pro-gramme Pind(�) Ensemble d�e�ni inductivement par�, 20infer Fonction de d�etermination des contraintesactives et des contraintes passives, 32145

146 NOTATIONSlabT Fonction d'�etiquetage d'un arbre orient�e�etiquet�e T , 19lub Borne sup�erieur�c Ensemble des symboles de pr�edicat decontrainte d'un programme, 24�p Ensemble des symboles de pr�edicat deprogramme d'un programme, 24Pf (E) Ensemble des parties �nies de l'en-semble E, 40pgpf (T ) Plus grand point �xe de l'op�erateurT , 22pppf (T ) Plus petit point �xe de l'op�erateurT , 21R+ Cloture transitive de RR� Cloture r�e exive transitive de R ou en-semble des suites �nies d'�el�ements de RR�1 Relation r�eciproque de RRC Crit�ere de rejet du syst�eme, 39RCD Crit�ere de rejet d�e�ni par une inter-pr�etation D, 39RCT Crit�ere de rejet d�e�ni par une th�eo-rie T , 39RCA Crit�ere de rejet d�e�ni par un algo-rithme de test de satisfaction A, 39renoS Une fonction de renommage pour lesquelette S, 36root ((E;R)) Racine de l'arbre (E;R), 17� Ensemble des symboles de fonction d'unprogramme, 24sq(p) Squelette de racine ind�e�ni enracin�epar le symbole de pr�edicat de programmep, 35sq(u) Squelette enracin�e par le nom de clauseu dont les �ls de sa racine sont ind�e�nis,35

SS(P ) Ensemble succ�es du programme P(succ�es positifs), 55SS_(P ) Ensemble _-succ�es du programmeP (succ�es n�egatifs), 55STORE Ensemble des stores du langage, 26store(R) Store de la clause R, 27success(a) Ensemble des r�eponses pour lebut a, 50T " � Puissance ordinal ascendante � de TT # � Puissance ordinal descendante � deTundef (S) Ensemble des n�uds ind�e�nis dusquelette S, 35V Ensemble des variables d'un programmes,24var (E) Ensemble des variables libres de E,24! Plus petit ordinal limite (> 0)~x Ensemble (en g�en�eral �ni) de variablesfx1; : : : ; xi; : : :g

Indexarbre, 17�etiquet�e, 18bien fond�e, 17branche, 17de preuve, 23de preuve 1, 23domaine d'arbre, 17standard, 18enracin�e en, 19enracin�e par, 18gre�e, 19n�ud, 17descendant, 17feuille, 17�ls, 17fr�ere, 17p�ere, 17racine, 17orient�e, 18orient�e �etiquet�e, 19profondeur, 17relation de parent�e, 17SLD, voir SLDatome, 25associ�e �a un n�ud, 36contraint, 29couvert, 29couverture locale d'atomes, 29b-�etat, 107prolongement, 107bien fond�earbre, voir arbrebranche, voir arbresucc�es, �echec, voir SLD, arbrebut, 29calcul n�egatif, 31, 47, 55calcul positif, 31, 43, 55clause, 27

arit�e, 27but, voir butcorps, 27fait, voir faitnom de, 28standardisation, 28store, 27tete, 27variable existentielle, voir variableclos, voir ensemblecompacit�e de la logique, 75compactop�erateur, voir op�erateurpour les solutions, 69compl�et�e, 58compositionalit�e ET, 29, 34, 41conclusion, voir r�eglecons�equence logique, 72consistent , 32contrainteactive, 32passive, 32contrainte basique, 25contraintesdomaine, 59corps, voir clausecorrection partielle, 87couverturedans une pr�e-interpr�etation, 66locale d'atomes, voir atomerelation de, voir relation de couvertureCrit�ere de rejetcomplet pour une pr�e-interpr�etation, 63complet pour une th�eorie, 74correct pour une pr�e-interpr�etation, 63correct pour une th�eorie, 74crit�ere de rejet, 34, 39d�e�nition de pr�edicat, 28d�e�nition inductive, 20147

148 INDEXco-symptome, co-erreur, 89op�erateur, voir op�erateurassoci�e, 20symptome, erreur, 89D-arbre de preuve, 64D-arbre de preuve 1, 64D-atomes, 59D-base, 59D-clause, 59d�erivation SLD, 43�echec, 43�equitable, 46sans co-routinage, 46selon une r�egle de calcul, 45succ�es, 43d�erive, 43selon une r�egle de calcul, 45descendant, voir arbrediagnostic d�eclaratif d'erreur, 87D-interpr�etation, 60D-mod�ele, 60domaine, 59d'arbre, voir arbreD-r�egle, 61�echec �ni, 69enracin�e, voir arbreensembleclos, 20d�e�ni co-inductivement, 22d�e�ni inductivement, 20support�e, 22Ensemble succ�es_-succ�es, 55ensemble succ�es, 55n�egatif, 55positif, 55erreur, 87�etat, 39b-�etat, 107�echec, 43complet, voir squelette�nal, 43initial, 43succ�es, 43�etat de calcul, voir �etatfail , 32

fait, 27feuille, voir arbre�ls, voir arbre�nitaire, voir r�eglefonction d'�etiquetage, 18fonction de renommage, 36pour un squelette et un but, 37fr�ere, voir arbregre�e, voir arbre, voir squeletteid�eal, 33incorrectionn�egative, 117partielle n�egative, 117partielle positive, 99positive, 99, 104incr�ementalit�e, 33ind�ependance des contraintes n�egatives, 75infer , 32insu�sance, 124interpr�etation, 60monotone, voir op�erateurmots, 134pr�e�xe, 134nom de clause, voir clausen�ud, voir arbreatomne associ�e, 36symbole de pr�edicat, 35op�erateurcompact, 21it�eration ascendantes, 21it�eration descendante, 22monotone, 20ordre (partiel,strict,total), voir relationpartiellement correct, 87p�ere, voir arbrepr�e-interpr�etation, 58pr�edicat, voir symboled�e�nition, 28pr�emisses, voir r�egleprogramme, 28compl�et�e, 58progressif, 33

INDEX 149quick-checking, 33racine, voir arbreRC-clause, 76RC-r�egle, 76r�egle, voir d�e�nition inductivede couverture, 81de programme, 81�nitaire, 20r�egle de calcul, 45�equitable, 46sans co-routinage, 46standard, 46relation, 133antisym�etrique, 133cloture, 134d'�equivalence, 133classe, 134d'ordre, 133de couverture, voir relation de couvertureirr�e exive, 133parent�e, voir arbrer�e exive, 133sym�etrique, 133transitive, 133relation de couverture, 79compl�ete pour une pr�e-interpr�etation, 81correcte pour une pr�e-interpr�etation, 81relation de transition, 43selon une r�egle de calculpour un pr�edicat, 47renommage, 24fonction de, 36r�eponse, 40calcul�ee, 43selon une r�egle de calcul, 45n�egative, 31, 54positive, 31, 40, 54squelette, 40store, 40_-store, 54_-r�eponse, 54r�esolution, 42pr�esentation classique, 32SLD, 43selon une r�egle de calcul, 45s�emantique

n�egative, 31op�erationnelle, 31positive, 31satis�ableformule, 72SLDarbre, 47branche �echec, 48branche succ�es, 48d'�echec �ni, 51�equitable, 48sans co-routinage, 48standard, 48d�erivation, voir d�erivationr�esolution, 43solution, 60squelette, 34complet, 35enracin�e en, 35gre�e, 35incomplet, 35pour, 35r�eponse, voir r�eponsestore associ�e, 37store pur associ�e, 36store, 26associ�e �a un squelette, 37clause, voir clausepur, 25associ�e �a un squelette, 36r�eponse, 40pour C 2A, 106_, 54satis�able, 60solution, 60_-store r�eponse, 54support�e, voir ensemblesymbolede fonction, 24de pr�edicat de contrainte, 24de pr�edicat de programme, 24associ�e �a un n�ud, 35symptome, 87d'incorrection partielle n�egatif, 115d'incorrection partielle positive, 99d'insu�sance, 124minimal, 95

150 INDEXn�egatif, 115positif, 99, 103pour une relation bien fond�ee, 95syst�eme de transition, 43tete, voir clauseth�eorie, 72compl�ete, 72compl�ete pour la satisfaction, 72engendr�ee, 72valuation, 59solution, 60variable, 24existentielle, 27renommage, voir renommage

Adresse postale : Alexandre Tessier, LIFO, Facult�e des Sciences, Universit�e d'Orl�eans, BP 6759,45067 Orl�eans Cedex 2, FranceAdresse �electronique : [email protected] : http://www.univ-orleans.fr/SCIENCES/LIFO/tessier/FTP : ftp-lifo.univ-orleans.fr directory /pub/Users/tessier/T�el�ephone : +33 2 38 49 46 70 | Fax : +33 2 38 41 71 37 | Telex : 783 388 F151

Approche, en termes de squelettes de preuve,de la s�emantique et du diagnostic d�eclaratif d'erreurdes programmes logiques avec contraintesR�esum�eCette th�ese propose une reformulation compl�ete de la s�emantique des programmes logiques aveccontraintes dans la lign�ee de la vision grammaticale de la programmation logique [P. Deransart etJ. Maluszynski 1993]. La s�emantique g�en�eralise les s�emantiques classiques [J. Ja�ar et J-L. Lassez1987] bas�ees sur une interpr�etation ou une th�eorie pour la s�emantique du langage des contraintes.De plus, elle tient compte de l'incompl�etude des solveurs de contraintes. Les r�esultats connus sontretrouv�es. Cette reformulation est particuli�erement bien adapt�ee pour �etudier le diagnostic d�e-claratif d'erreur [E. Y. Shapiro 1982] des programmes logiques avec contraintes. Diverses notionsd'erreurs sont d�e�nies et des algorithmes de diagnostics sont propos�es. Ils sont compar�es aveccertaines techniques �elabor�ees pour la programmation logique pure.Mots Cl�esProgrammation logique avec contraintes, s�emantique op�erationnelle, s�emantique d�eclarative, sque-lettes, arbre SLD, d�e�nitions inductives, arbres de preuve, diagnostic d�eclaratif d'erreur, correctionpartielle, d�ebogage, validation.AbstractThis thesis proposes a full reformulation of the Constraint Logic Program semantics following theGrammatical View of Logic Programming [P. Deransart et J. Maluszynski 1993]. Our semanticsgenralizes classical semantics [J. Ja�ar et J-L. Lassez 1987] based on an interpretation or a theoryfor the contraint language semantics. Moreover, it takes into account incompleteness of the contraintsolvers. Known results are revisited. This reformulation is particularly adapted to study DeclarativeError Diagnosis [E. Y. Shapiro 1982] of Constraint Logic Programs. Several notions of errors arede�ned and diagnosis algorithms are proposed. They are compared with some technics developpedfor pure Logic Programming.Key WordsConstraint logic programming, operational semantics, declarative semantics, skeleton, SLD tree,inductive de�nitions, proof trees, declarative error diagnosis, partial correctness, debugging, vali-dation.Th�ese du Laboratoire d'Informatique Fondamentale d'Orl�eans pr�esent�ee par Alexandre Tessier.