Sémantique des modèles stables

La sémantique des modèles stables est une sémantique déclarative en programmation logique utilisant la négation par l'échec. C'est l'une des nombreuses approches standard pour la signification de la négation dans la programmation logique, au côté de la terminaison de programme et de la sémantique bien fondée. La sémantique du modèle stable est à la base du langage de programmation déclarative Answer Set Programming (ASP).

Motivation modifier

Les recherches sur la sémantique déclarative de la négation en programmation logique ont été motivées par une divergence possible entre le comportement de la résolution SLDNF (la généralisation de la résolution SLD utilisée par Prolog en présence de négation dans les corps de règle) et les tables de vérité familières de la logique propositionnelle classique. Considérons, par exemple, le programme

 
 
 

Dans ce programme, la requête p réussira par la premi̠ère règle. La requête q échouera, car elle n'est jamais présente dans la tête d'une règle. La requête r échouera également, car la seule règle avec r dans la tête contient le sous-objectif q dans son corps ; et que ce sous-objectif échoue. Enfin, la requête s réussit, car chacun de ses sous-objectifs (p et  ) réussit. En résumé, le comportement de la résolution SLDNF sur le programme donné peut être représenté par la table de vérité suivante :

p q r s
T F F T.

Cependant, nous pouvons aussi considérer les règles de ce programme comme des formules propositionnelles (en identifiant la virgule avec la conjonction  , le symbole   avec négation  , et que l'on accepte de considérer   comme l'implication   écrite à l'envers). Par exemple, la dernière règle de ce programme donnerait, une fois ré-écrite comme une formule propositionnelle :

 

Nous pouvons alors vérifier que, pour l'affectation proposée ci-dessus, chacune des règles est bien vraie (au sens logique). Cette affectation est donc bien un modèle du programme. Mais ce programme a aussi d'autres modèles, par exemple :

p q r s
T T T F.

L'un des modèles du programme donné est donc particulier, dans le sens où il représente correctement le comportement de la résolution SLDNF. Quelles sont les propriétés mathématiques de ce modèle qui le rendent spécial ? C'est pour répondre à cette question qu'a été défini la notion de modèle stable.

Lien avec la logique non monotone modifier

Le sens à donner à la négation dans les programmes logiques est lié à deux théories du raisonnement non monotone (à savoir la logique autoépistémique et la logique par défaut). La découverte de ces relations fut une étape clé pour le développement de la sémantique des modèles stables.

Dans la logique autoépistémique on utilise un opérateur modal afin de distinguer entre ce qui est vrai et ce que l'on croit. Michael Gelfond [1987] a proposé de lire   dans le corps d'une règle comme "je pense que   est faux", et de comprendre une règle avec négation comme la formule correspondante de la logique autoépistémique. Dans sa forme initiale, la sémantique du modèle stable peut être considérée comme une reformulation de cette idée en évitant les références explicites à cette logique.

Dans la logique par défaut, une position par défaut est similaire à une règle d'inférence, sauf qu'elle inclut, en plus de ses prémisses et sa conclusion, une liste de formules appelées justifications. Une position par défaut peut être utilisée pour tirer sa conclusion si ses justifications sont cohérentes avec ce que l'on croit actuellement. Concrètement, cela consiste à ajouter à la règle une série d'hypothèses qu'il faudra vérifier être vraie par la suite.

Nicole Bidoit et Christine Froidevaux [1987] ont proposé de traiter les atomes niés dans les corps de règles comme des justifications. Par exemple, la règle

 

peut être comprise comme la proposition par défaut qui nous permet de dériver   de   en supposant que   est vrai (ce qu'il faudra vérifier en fin de programme). Là encore et bien qu'il n'y fasse pas explicitement référence, la sémantique des modèles stables utilise une idée similaire.

Modèles stables modifier

La définition d'un modèle stable ci-dessous (tirée de [Gelfond et Lifschitz, 1988]) utilise deux conventions.

Premièrement, une affectation de vérité est identifiée avec l'ensemble d'atomes qui obtiennent la valeur T . Par exemple, la table de vérité :

p q r s
T F F T.

est identifiée à l'ensemble   . Cette convention nous permet d'utiliser la relation d'inclusion des ensembles pour comparer les affectations de vérité les unes avec les autres. La plus petite de toutes les affectations de vérité   est celle pour laquelle chaque atome est faux ; la plus grande affectation de vérité est celle où chaque atome est vrai.

Deuxièmement, un programme logique avec des variables est vu comme décrivant l'ensemble de toutes les instances closes de ses règles. C'est-à-dire qu'il décrit la substitution dans les règles du programme des variables par tous les termes clos possibles. Prenons pour exemple, la définition des nombres pairs par le programme logique suivant :

 
 

Il faut comprendre ceci comme le résultat du remplacement de X dans ce programme par tous les termes clos possibles :

 

Le résultat en est donc le programme clos infini

 
 
 
 

Définition modifier

Soit P un ensemble de règles de la forme

 

  sont des termes clos. Si P ne contient pas de négation (  dans chaque règle du programme) alors, on peut montrer qu'il a exactement un modèle minimal (au sens de l'inclusion des ensembles[1]) obtenu par propagation des clauses unitaires, ceci permet de définir le modèle stable de P.

Pour étendre cette définition au cas des programmes avec négation, nous avons besoin du concept auxiliaire de réduction, que l'on définit comme suit.

Pour tout ensemble I d'atomes clos, la réduction du programme P par rapport à I est l'ensemble des règles sans négation obtenu à partir de P en supprimant d'abord chaque règle pour laquelle au moins un des atomes   dans son corps

 

appartient à I. Puis en supprimant les parties   dans le corps de toutes les règles restantes.

On dit alors que I est un modèle stable de P si I est le modèle stable du programme   obtenu en réduisant P par rapport à I. Par construction   ne contient pas de négation et son modèle stable est donc bien défini. Comme le suggère le terme « modèle stable », tout modèle stable de P est un modèle de P.

Exemple modifier

Pour illustrer ces définitions, vérifions que   est un modèle stable du programme suivant :

 
 
 

La réduction de ce programme par rapport à   est

 
 
 

(En effet, puisque  , la réduction est obtenue en supprimant la partie négative de la dernière règle.) Comme l'ensemble satisfait toutes les règles de la réduction (et aucun de ses sous-ensembles n'a cette propriété), le modèle stable de la réduction est donc  . Ainsi, comme la réduction de notre programme par   aboutit à ce même ensemble, cet ensemble est bien un modèle stable.

On peut alors vérifier de la même manière que les 15 autres ensembles constitués des atomes   ne sont pas eux-mêmes des modèles stables. Par exemple, la réduction du programme par rapport à   est

 
 

Le modèle stable de cette réduction est   ce qui est différent de l'ensemble   utilisé pour la réduction.

Programmes sans modèle stable unique modifier

Un programme avec négation peut avoir plusieurs modèles stables ou bien aucun modèle stable. Par exemple, le programme

 
 

a deux modèles stables  ,   . Tandis que le programme constitué d'une seule règle

 

n'a pas de modèles stables.

Si nous considérons la sémantique du modèle stable comme une description du comportement de Prolog en présence de négation, alors les programmes qui n'ont pas un modèle stable unique peuvent être jugés non satisfaisants dans le sens où ils ne fournissent pas une spécification sans ambiguïté pour la réponse aux requêtes de style Prolog. Ainsi, les deux programmes ci-dessus ne forment pas des programmes Prolog raisonnables puisque leur résolution du SLDNF ne termine pas.

Mais l'utilisation des modèles stables dans ASP offre une perspective différente sur de tels programmes. Dans ce paradigme de programmation, un problème de recherche donné est représenté par un programme logique de sorte que les modèles stables du programme correspondent aux solutions. Dans ce cadre, les programmes ayant plusieurs modèles stables correspondent à des problèmes avec plusieurs solutions, tandis que les programmes sans modèles stables sont des problèmes insolubles. Par exemple, le problème des huit reines a 92 solutions ; pour le résoudre à l'aide d'un programme ASP, nous l'encodons par un programme logique ayant 92 modèles stables. De ce point de vue, les programmes logiques avec exactement un modèle stable sont des cas assez spéciaux dans ASP, comme peuvent l'être en algèbre, les polynômes avec une seule racine.

Propriétés de la sémantique du modèle stable modifier

Dans cette section, tout comme pour la définition d'un modèle stable ci-dessus, nous entendons par programme logique, un ensemble de règles de la forme

 

  sont des atomes clos.

Atomes de tête
Si un atome A appartient à un modèle stable d'un programme logique P alors A est la tête d'une des règles de P .
Minimalité
Tout modèle stable d'un programme logique P doit être minimal (au sens de l'inclusion des ensembles) parmi les modèles de P.
La propriété antichaîne
Si I et J sont des modèles stables du même programme logique, alors I n'est pas un sous-ensemble propre de J (par minimalité). En d'autres termes, l'ensemble des modèles stables d'un programme est une antichaîne.
NP-complétude
Déterminer si un programme de logique clos fini a un modèle stable est NP-complet.

Relation avec d'autres théories de la négation par l'échec modifier

Achèvement du programme modifier

Tout modèle stable d'un programme clos fini est non seulement un modèle du programme lui-même, mais aussi un modèle de son achèvement [Marek et Subrahmanian, 1989]. Cependant, l'inverse n'est pas vrai. Par exemple, l'achèvement du programme constitué de l'unique règle :

 

est la tautologie   . Le modèle   de cette tautologie est un modèle stable de  , mais son autre modèle   n'en est pas un. Comme l'a prouvé François Fages [1994], il existe une condition syntaxique sur les programmes logiques permettant de se prémunir contre de tels contre-exemples et qui garantit ainsi la stabilité de chaque modèle d'achèvement du programme. De tels programmes sont dits serrés.

Fangzhen Lin et Yuting Zhao [2004] ont montré comment renforcer l'achèvement d'un programme non serré, en y ajoutant des formules dites "de boucles", afin d'éliminer tous ses modèles instables.

Sémantiques bien fondées modifier

Dans la sémantique bien fondée, les atomes clos d'un programme logique sont répartis en trois ensembles : vrai, faux et inconnu. Si un atome est vrai dans le modèle bien fondé de  , alors il est vrai dans tous les modèles stables de  . Encore une fois, l'inverse n'est pas vrai en général. Par exemple, le programme

 
 
 
 

a deux modèles stables,   et  . Bien que   soit vrai dans ces deux modèles, sa valeur dans le modèle bien fondé est inconnue.

De plus, si un atome est faux dans le modèle bien fondé d'un programme alors il est faux pour tous ses modèles stables. Ainsi, le modèle bien fondé d'un programme logique fournit-il une borne inférieure sur l'intersection de ses modèles stables et une borne supérieure sur leur union.

Négation forte modifier

Représentation d'informations incomplètes modifier

Du point de vue de la représentation des connaissances, un ensemble d'atomes clos peut être considéré comme la description d'un état des connaissances : les atomes qui appartiennent à l'ensemble sont connus pour être vrais, et les atomes qui n'appartiennent pas à l'ensemble sont connus pour être faux. Un état de connaissance éventuellement incomplet peut cependant être décrit à l'aide d'un ensemble cohérent mais éventuellement incomplet de littéraux (c'est-à-dire de l'ensemble des atomes clos et de leurs négations) ; si ni un atome   ni sa négation n'appartiennent à l'ensemble alors on ne sait pas si   est vrai ou faux.

Dans le contexte de la programmation logique, cette idée conduit à la nécessité de distinguer deux types de négation — la négation par l'échec, discutée ci-dessus, et la négation forte, que nous indiqueront par  [2]. L'exemple suivant, illustrant la différence entre ces deux types de négation, a été proposé par John McCarthy : "Un autobus scolaire ne peut traverser une voie ferrée qu'à condition qu'aucun train ne s'approche". Si l'on ne sait pas si un train approche ou non, alors une règle reposant sur la négation par l'échec

 

n'est pas une représentation adéquate de cette idée : puisqu'elle laisserait à penser qu'il est acceptable de traverser en l'absence d'informations sur l'approche d'un train. La règle, plus faible, qui utilise une négation forte dans son corps, est ainsi préférable :

 

elle dit qu'il est possible de traverser si et seulement si nous savons qu'aucun train ne s'approche.

Modèles stables cohérents modifier

Afin d'introduire la notion de négation forte dans la théorie des modèles stables, Gelfond et Lifschitz [1991] ont proposé que chacune des expressions  ,  ,   dans une règle

 

puisse être soit un atome, soit la négation forte d'un atome. Cette généralisation fournit alors des ensembles de réponses (au lieu de modèles stables), qui peuvent inclure à la fois des atomes et des atomes préfixés par une négation forte.

Une approche alternative [Ferraris et Lifschitz, 2005] traite la négation forte comme une partie d'un atome (elle ne nécessite donc aucun changement dans la définition d'un modèle stable). Dans cette théorie de la négation forte, nous distinguons des atomes de deux sortes, positifs et négatifs, et nous supposons que chaque atome négatif est une expression de la forme  , où   est un atome positif. Un ensemble est dit cohérent s'il ne contient pas de paires d'atomes "complémentaires"   . Les modèles stables cohérents d'un tel programme sont alors identiques aux ensembles de réponses cohérentes au sens de [Gelfond et Lifschitz, 1991].

Par exemple, le programme

 
 
 
 

a deux modèles stables :   et  , le premier modèle étant cohérent et le second ne l'étant pas.

Hypothèse du monde fermé modifier

Selon [Gelfond et Lifschitz, 1991], l'hypothèse du monde clos pour un prédicat   peut être exprimé par la règle

 

(la relation   est considérée comme fausse pour un tuple   s'il n'y a aucune preuve qu'elle soit vraie). Par exemple, le modèle stable du programme

 
 
 

se compose de 2 atomes positifs

 

et 14 atomes négatifs

 

c'est-à-dire, les négations fortes de tous les autres atomes clos positifs formés à partir de  .

Un programme logique utilisant la négation forte peut inclure les règles d'hypothèse du monde clos uniquement pour certains de ses prédicats, laissant ainsi les autres prédicats dans le domaine de l'hypothèse du monde ouvert.

Programmes avec contraintes modifier

La sémantique des modèles stables peut être généralisée à de nombreux types de programmes logiques au-delà des ensembles de règles "traditionnelles" telles que discuté ci-dessus.

Une simple extension permet aux programmes de contenir des contraintes — c'est-à-dire des règles avec une tête vide :

 

Rappelons qu'une règle traditionnelle peut être considérée comme une notation alternative pour une formule logique (en identifiant la virgule avec la conjonction  , le symbole   avec négation  , et en traitant   comme l'implication   écrit à l'envers). On peut aussi étendre cette convention aux contraintes, on identifie alors une contrainte avec la négation de son corps :

 

Ceci permet d'étendre la définition de modèle stable aux programmes avec contraintes. Comme dans le cas des programmes traditionnels, nous commençons par des programmes qui ne contiennent pas de négation. Un tel programme peut être incohérent ; il n'y a alors pas de modèles stables. Si un tel programme   est cohérent alors   a un modèle minimal unique : c'est le seul modèle stable de   .

Le cas des modèles stables avec négation est traité à l'aide de réductions, de la même manière que dans le cas de programme sans contraintes (voir la définition d'un modèle stable ci-dessus). Un ensemble   d'atomes est un modèle stable d'un programme   avec contraintes, si la réduction de   par   a un modèle stable et que ce modèle stable est   lui-même.

Les propriétés de la sémantique du modèle stable énoncées ci-dessus pour les programmes traditionnels restent valables en présence de contraintes.

Les contraintes jouent un rôle important dans la programmation par ensembles de réponses car l'ajout d'une contrainte à un programme logique   modifie la collection de modèles stables de   de manière très simple : on élimine simplement tous les modèles stables qui ne respectent pas la contrainte.

Programmes disjonctifs modifier

Dans une règle disjonctive, la tête peut être la disjonction de plusieurs atomes :

 

(le point-virgule est considéré comme une notation alternative pour la disjonction   ). Ainsi, les règles traditionnelles correspondent à  , et les contraintes à  . Afin d'étendre la sémantique du modèle stable aux programmes disjonctifs [Gelfond et Lifschitz, 1991], nous procédons toujours de l amême manière. En commençant par le cas où il n'y a pas de négation (  dans chaque règle), les modèles stables d'un programme sont alors ses modèles minimaux. Puis nous définissons la réduction pour les programmes disjonctifs de la même manière qu'auparavant. Un ensemble   d'atomes est alors un modèle stable de   si   est un modèle stable de la réduction de   par  .

Par exemple, l'ensemble   est un modèle stable du programme disjonctif

 
 

car c'est l'un des deux modèles minimaux de la réduction

 
 

Le programme ci-dessus a un autre modèle stable :  .

Comme dans le cas des programmes traditionnels, les éléments d'un modèle stable d'un programme disjonctif   apparaissent dans la tête d'au moins une règle de  . Comme dans le cas traditionnel, les modèles stables d'un programme disjonctif sont minimaux et forment une antichaîne. Tester si un programme disjonctif fini a un modèle stable est   -complet [ Eiter et Gottlob, 1993].

Modèles stables d'un ensemble de formules propositionnelles modifier

Les règles (y compris les règles disjonctives) ont une forme syntaxique assez particulière, en comparaison des formules propositionnelles arbitraires. Chaque règle disjonctive est en effet une implication dans laquelle l'antécédent (le corps de la règle) est une conjonction de littéraux, et le conséquent (la tête) est une disjonction d'atomes. David Pearce [1997] et Paolo Ferraris [2005] ont cependant montré que l'on pouvait étendre la définition des modèles stables à des ensembles de formules propositionnelles quelconques. Cette généralisation a des applications dans la programmation par ensemble de réponses.

La formulation de Pearce est très différente de la définition originale d'un modèle stable. Au lieu de réduire, il se réfère à la logique d'équilibre — un système de logique non monotone basé sur des modèles de Kripke. La formulation de Ferraris, d'autre part, est basée sur des réductions, bien que le processus de construction de la réduction qu'il utilise diffère de celui décrit ci-dessus . Les deux approches pour définir des modèles stables pour des ensembles de formules propositionnelles sont équivalentes.

Définition générale d'un modèle stable modifier

Selon [Ferraris, 2005], la réduction d'une formule propositionnelle   par rapport à un ensemble   d'atomes est la formule obtenue à partir de   en remplaçant chaque sous-formule maximale non satisfaite par   par la constante logique   (faux). La réduction d'un ensemble   de formules propositionnelles par   se compose alors des réductions de toutes les formules de   par   . Comme dans le cas des programmes disjonctifs, on dit qu'un ensemble   d'atomes est un modèle stable de   si   est minimale (au sens de l'inclusion des ensembles) parmi les modèles de la réduction de   par  .

Par exemple, la réduction de l'ensemble

 

par l'ensemble   est

 

Puisque   est un modèle de cette réduction, et que les sous-ensembles stricts de cet ensemble ne sont pas des modèles de la réduction,   est bien un modèle stable de cet ensemble de formules.

Nous avons vu que   est aussi un modèle stable de la même formule, écrit en tant que programme logique. C'est un exemple d'un fait général : lorsqu'elle est appliquée à un ensemble de (formules correspondant à) des règles (au sens traditionnel, avec contrainte ou même disjonctives), la définition d'un modèle stable selon Ferraris est équivalente à la définition donnée dans cet article.

Propriétés de la sémantique générale des modèles stables modifier

Le théorème affirmant que les éléments de tous les modèle stable d'un programme   sont des atomes des têtes de   peut être étendu à des ensembles de formules propositionnelles en utilisant la définition suivante. Un atome   est un atome de tête d'un ensemble   de formules propositionnelles si au moins une occurrence de   dans une formule de   n'est ni dans la portée d'une négation ni dans l'antécédent d'une implication.

La minimalité et la propriété d'antichaîne des modèles stables valable pour un programme traditionnel ne sont cependant plus vrai dans ce cas général. Par exemple, (l'ensemble singleton composé de) la formule

 

a deux modèles stables,   et   . Ce dernier n'est cependant pas minimal et c'est un sur-ensemble strict du premier.

Tester si un ensemble fini de formules propositionnelles a un modèle stable est   -complet, comme dans le cas des programmes disjonctifs.

Voir également modifier

Bibliographie modifier

Notes et références modifier

  1. This approach to the semantics of logic programs without negation is due to Maarten van Emden and Robert Kowalski [1976].
  2. Gelfond and Lifschitz [1991] call the second negation classical and denote it by  .