Sémantique des modèles stables

Un article de Wikipédia, l'encyclopédie libre.

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

Achèvement du programme[modifier | modifier le code]

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 | modifier le code]

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 | modifier le code]

Représentation d'informations incomplètes[modifier | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

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 | modifier le code]

Bibliographie[modifier | modifier le code]

Notes et références[modifier | modifier le code]

  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 .