• Aucun résultat trouvé

4.5 R´ eduction, d´ ecomposition des syst` emes

5.1.2 S´ emantique des mod` eles stables

Cas des programmes d´efinis Un programme logique Π estd´efini (basic program)

s’il ne contient pas de n´egation par d´efaut, c’est-`a-dire si :

∀r∈Π body

(r) =∅

Dans ce cas particulier, la d´efinition de l’ensemble r´eponse est naturelle : un ensemble

r´eponse est l’ensemble des d´eductions possibles en utilisant les r`egles du programme.

Cet ensemble est unique et se construit facilement, comme nous allons le voir. Pour un

programme d´efini Π, on note α

Π

l’application d´efinie par :

α

Π

:

2

A

→2

A

X 7→X∪head({r |r∈Π,body

+

(r)⊂X})

L’applicationα

Π

calcule les cons´equences d’un ensemble d’atomes selon Π et les ajoute

`

a son argument. Dit autrement, pour un ensemble d’atomesX, on applique les r`egles

ayant tous leurs pr´erequis dans X, et on ajoute les tˆetes de ces r`egles `a X. Cette

application est donc croissante au sens de l’inclusion.

Voyons ce qui arrive si on it`ere cette op´eration. Soit H l’ensemble des atomes se

trouvant en tˆete d’une r`egle de Π, et soitX⊂H; on a alorsα

Π

(X)⊂H. On en d´eduit

que la suite (α

nΠ

(∅))

n

est born´ee (par H). Elle admet par cons´equent une limite, que

l’on note Cn(Π). Cn(Π) est l’ensemble des atomes que l’on peut d´eduire en utilisant

un nombre fini de r`egles de Π. Plus formellement, Cn(Π) est l’unique plus petit point

fixe deα

Π

et correspond donc au plus petit ensemble clos par les r`egles du programme

Π. On dira que c’est l’ensemble r´eponse de Π dans le cas d´efini.

R´eduit d’un programme par rapport `a un ensemble d’atomes Passons

main-tenant au cas g´en´eral : on appeller´eduit d’un programme Π par rapport `a un ensemble

d’atomesX le programme

Π

X

=head(r)←body

+

(r) |r∈Π,body

(r)∩X =∅

Le passage au r´eduit transforme un programme logique en un programme d´efini, en

supprimant :

– les pr´erequis n´egatifs des r`egles,

– les r`egles qui ne sont pas applicables `a cause de certains atomes pr´esents dansX

Ensembles r´eponse d’un programme normal Puisque Π

X

est un programme

d´efini, on peut calculer son ensemble r´eponseCn(Π

X

). On appelleensemble r´eponse(ou

mod`ele stable) d’un programme logique Π tout ensemble d’atomesXtel queCn(Π

X

) =

X. Intuitivement, on peut comprendre cette d´efinition de la mani`ere suivante. Pour

qu’un ensemble d’atomesX soit un ensemble r´eponse, ce doit ˆetre un mod`ele o`u tout

atome admet une preuve, sous la forme d’une suite d’applications de r`egles. Pour savoir

si X est un ensemble r´eponse, il faut donc commencer par supprimer toutes les r`egles

qui ne sont pas applicables sous X, `a cause des n´egations par d´efaut. Dans les r`egles

restantes, le corps n´egatif n’est donc pas utile. C’est ainsi le r´eduit de Π par X que

l’on a calcul´e. Maintenant, si les cons´equences de Π

X

sont exactement X, cela signifie

que tout atome de X a une preuve valide, et que rien de plus ne peut ˆetre prouv´e

en utilisant les r`egles applicables. L’id´ee derri`ere les ensembles r´eponse consiste `a se

donner un ensemble de faits (les atomes) et `a en appr´ecier la coh´erence. On le jugera

coh´erent si sous l’hypoth`ese que ces faits d´ecrivent correctement une situation, chacun

d’eux admet une preuve finie, non circulaire par applications successives de r`egles.

Voyons cette d´efinition `a l’œuvre sur un exemple. Pour le programme

p ← not q

q ← not p (5.1)

les diff´erents possibilit´es sont r´esum´ees dans le tableau suivant :

X Π

X

Cn(Π

X

)

p

q ← {p, q}

{p} p ← {p}

{q} q ← {q}

{p, q} ∅ ∅

qui montrent que seuls{p}et{q}sont des ensembles r´eponses. En effet ce sont les seuls

ensemblesX tels que Cn(Π

X

) =X. Ce programme exprime donc l’exclusion mutuelle

des atomes p etq.

Consid´erons maintenant le programme

p←not p

et les diff´erentes possibilit´es

X Π

X

Cn(Π)

∅ p ← {p}

{p} ∅ ∅

Ce programme n’a pas d’ensemble r´eponse et nous y aurons recours plus tard pour

augmenter le langage des programmes logiques. Apr`es avoir vu la d´efinition des

en-sembles r´eponse, et quelques exemples, il nous reste `a les distinguer d’autres d´efinitions

de mod`elesa priori plus intuitives. Les mod`eles stables sont :

– des mod`eles minimaux (au sens de l’inclusion) : supposons que X et X

0

sont

deux mod`eles stables tels que X

0

⊂ X. Alors n´ecessairement Π

X

⊂ Π

X0

, et

par cons´equent Cn(Π

X

)⊂Cn(Π

X0

) puisque Π

X

et Π

X0

sont d´efinis. Or comme

Cn(Π

X

) = X et Cn(Π

X0

) = X

0

, on a X = X

0

. En revanche, les mod`eles

mi-nimaux ne sont pas forc´ement stables : le programme {p ← not p} admet un

(unique) mod`ele minimal{p}, mais pas d’ensemble r´eponse, comme nous l’avons

vu pr´ec´edemment.

– des mod`eles minimaux o`u tous les atomes sont support´es par l’application d’une

r`egle. Mais la r´eciproque est fausse, comme le montre l’exemple suivant :

p ← q

q ← p

r ← not q

(5.2)

{r} et{p, q} sont des mod`eles minimaux o`u tous les atomes sont support´es par

l’application d’une r`egle, mais seul{r}est un ensemble r´eponse. En effet, Π

{p,q}

=

{p ← q, q ← p} et Cn(Π

{p,q}

) = ∅. L’ensemble {p, q} n’est donc pas stable ;

intuitivement la raison en est qu’il n’est pas possible de trouver des preuves

non-circulaires pour la pr´esence de p etq.

Avant de passer `a la suite, et aux extensions des programmes normaux, essayons

de bien comprendre ce qui fait la difficult´e ici. Les programmes d´efinis constituent un

fragment de logique classique, celui des clauses de Horn. Il est tr`es facile de d´efinir

des mod`eles raisonnables de ce type de programme, et ces mod`eles ont deux propri´et´es

importantes : premi`erement les programmes d´efinis admettent un unique mod`ele ;

en-suite, il s’agit d’une s´emantique monotone : si j’ajoute des r`egles au programme, le

mod`ele ne peut qu’augmenter, au sens de l’inclusion. L’utilisation de la n´egation par

d´efaut perturbe compl`etement ces propri´et´es : l’ajout de nouveaux faits ou de nouvelles

r`egles peut diminuer le mod`ele (consid´erer par exemple les programmes {p ← not q}

et{p ←not q, q ←}). On parle dans ce cas de logique non monotone. D`es qu’un

pro-gramme comporte des n´egations par d´efaut, il peut avoir plusieurs mod`eles mod`eles

minimaux, et la question revient `a d´efinir le, ou les((bons))mod`eles.

Pour finir, insistons bien sur le fait que la n´egation par d´efaut est tr`es diff´erente de

la n´egation en logique classique. Si un mod`ele v´erifienot p, cela signifie qu’on ne peut

pas trouver de preuve depsous ce mod`ele. Illustrons cette diff´erence sur un((classique))

de logique non-monotone, avec ce programme d´ecrivant le protocole `a observer avant

de traverser une voie de chemin de fer :

check ← not¬check

¬check ← not check

train ← not¬train, check

¬train ← not train, check

cross ← not train

Les deux premi`eres lignes stipulent que l’on peut ou non v´erifier avant de traverser, selon

que l’ensemble r´eponse contient check ou ¬check (les deux premi`eres r`egles assurent

l’exclusion mutuelle, comme vu plus haut). Les deux lignes suivantes signifient que si

l’on v´erifie avant de traverser, on peut prouver la pr´esence ou l’absence de train (selon

le mˆeme m´ecanisme d’exclusion mutuelle). La derni`ere ligne donne la condition pour

traverser la voie. Le probl`eme de ce protocole est qu’il admet, entre autres, le mod`ele

{¬check, cross}, c’est-`a-dire(( traverser sans regarder)). En effet, si¬checkest dans le

mod`ele, alorscheck ne peut pas y ˆetre ; par cons´equent ni train, ni¬trainne peuvent

ˆetre dans le mod`ele. Dit plus simplement, si on ne v´erifie pas, on ne peut prouver ni

la pr´esence, ni l’absence de train. La derni`ere r`egle dit en substance : (( traverser si

on ne peut pas prouver la pr´esence de train)), au lieu de dire(( traverser si l’on peut

prouver l’absence de train)). Or il vaut mieux – on en conviendra – prouver l’absence

de train avant de traverser. Pour cela, la r`egle cross←not traindoit ˆetre corrig´ee en

cross← ¬train.