• Aucun résultat trouvé

4.3 Programmation en clauses de Horn

Le langage de la programmation logique en clauses de Horn est un ensemble de clauses d´efinies

La partie gauche (un atome) est la tˆete de la clause.

La partie droite ( une conjonction d’atomes ) est le corps de la clause.

La clause but est de la forme ←− B1,...,Bn, i.e. une clause sans cons´equences.

La clause vide, not´ee 2 est la clause sans cause ni cons´equence. Cette clause est consid´er´ee comme une contradiction.

Un ensemble fini de clauses d´efinies (une conjonction) ayant le mˆeme nom de pr´edicat dans la tˆete en est sa d´efinition.

Un programme logique est un ensemble (une conjonction ) fini de d´efinitions de pr´edicats.

§4.4 Les mod`eles de programmes logiques

La s´emantique d’un programme est donn´ee par les s´emantiques des formules de la logique du premier ordre. Dans ce paragraphe, on s’int´eresse aux interpr´etations et mod`eles, princi- palement `a la classe des interpr´etations de Herbrand.

Pour voir si une formule est vraie ou non, il est n´ecessaire d’attacher un sens `a chaque sym- 55

bole de cette formule i.e. aux constantes, fonctions et pr´edicats de la formule. On s’interesse particuli`erement aux interpr´etations pour lesquelles les formules expriment une valeur vraie. De telles interpr´etations sont appel´es mod`eles pour la formule.

La logique du premier ordre donne des m´ethodes pour d´eduire les th´eor`emes. Ces derniers peuvent ˆetre consid´er´es comme des formules qui sont les cons´equences logiques des axiomes de la th´eorie i.e. qu’ils sont vrais pour tous les mod`eles et pour les axiomes de la th´eorie. Les syst`emes de programmation `a qui on s’int´eresse utilisent les r`egles de r´esolution comme unique r`egle d’inf´erence. Supposons qu’on veut prouver que la formule∃y1...∃yr(B1∨ ... ∨ Bn)

(question) est une cons´equence logique du programme P , on proc`ede ainsi: La n´egation de la formule est la clause but ←− B1,...,Bn. Celle-ci est additionn´ee aux axiomes et on aboutit

`

a une contradiction. Par des manipulations effectu´ees sur cette clause, le syst`eme d´erive des clauses but successives. Si la clause vide est ´eventuellement d´eriv´ee, alors une contradiction est obtenue et on peut assurer que ∃y1...∃yr(B1∨ ... ∨ Bn) est une cons´equence logique de P .

Une interpr´etation d’un langage du premier ordre consiste en: (a) un ensemble non vide D, appel´e domaine de l’interpr´etation; (b) `a chaque constante dans L, on associe un ´el´ement dans D;

(c) `a chaque fonction dans L `a n arguments, on associe une application de Dn vers D

(d) et `a chaque pr´edicat `a n arguments, on associe une application de Dn dans {true,false}.

Soit I une interpr´etation d’un langage du premier ordre L et F une formule de L. I est un mod`ele pour F si la valeur de v´erit´e de F par I est true.

Ce concept peut ˆetre ´etendu `a un ensemble de formules.

Soit S un ensemble de formules d’un langage du premier ordre L et soit I une interpr´etation de L. On dit que I est un mod`ele pour S si I est un mod`ele pour chaque formule de S.

Soit S un ensemble de formules d’un langage du premier ordre L. On dit que S est satisfaite si L a une interpr´etation qui est un mod`ele pour S. S est valide si chaque interpr´etation de L

est un mod`ele pour S. S est insatisfaite si elle n’a aucun mod`ele.

Soit S un ensemble de formules d’un langage du premier ordre L. On dit que F est une cons´equence logique de S si pour toute interpr´etation I de L, I est un mod`ele pour S implique que I est un mod`ele pour F.

Proposition 4.4.1 Soit S un ensemble de formules et F une formule d’un langage du premier ordre L. Alors F est cons´equence logique de S si et seumement si S ∪ {¬F } est insatisfaite. Preuve. Supposons que F est une cons´equence logique de L et soit I une interpr´etation de L. Soit I un mod`ele pour S, donc I est un mod`ele pour F . D’o`u I n’est pas un mod`ele pour S∪ {¬F }. Ainsi, S ∪ {¬F } est insatisfaite.

R´eciproquement, supposons que S∪ {¬F } est insatisfaite. Soit I une interpr´etation de L et soit I un mod`ele pour S. Comme S∪ {¬F } est insatisfaite, donc I n’est pas un mod`ele pour ¬F . D’o`u I est un mod`ele pour F et par suite F est une cons´equence logique de S.

Ainsi le prob`eme est de d´eterminer l’insatisfabilit´e ou non de P ∪ {G} o`u P est un pro- gramme et G est une clause but. Selon la d´efinition, ceci nous am`ene `a v´erifier qu’aucune interpr´etation de P ∪ {G} n’est un mod`ele. Il existe une classe plus petite et plus appropri´ee d’interpr´etations qui est suffisante pour v´erifier l’insatisfabilit´e. Elle est appel´ee la classe des interpr´etations de Herbrand.

§4.5 Les mod`eles de Herbrand

Un ”ground terme” ou terme clos (ou libre) est un terme ne contenant pas de variables. De la mˆeme fa¸con, un ”ground atome” est un atome ne contenant pas de variables.

Soit L un langage du premier ordre, l’univers de Herbrand ULpour L est l’ensemble des ground

termes qui, peuvent ˆetre form´es par des constantes et des fonctions appairaissant dans L. la base de Herbrand BL pour L est l’ensemble des ground atomes.

Une instance d’une clause est la clause obtenue `a partir de celle ci par substitution des termes

figurant dans la clause par d’autres termes du langage.

Une ground instance d’une clause de L est une instance de la clause o`u les termes de sub- stitution sont dans l’univers de Herbrand.

Soit P un programme, il convient mieux de se ref´erer, par abus de langage, `a une interpr´etation de l’ensemble des clauses figurant dans le programme qu’`a tout le langage du premier ordre d’o`u viennent ces formules. Ceci nous am`ene `a consid´erer l’univers de Herbrand Up et la base

de Herbrand Bp .

Soit P un programme. Une interpr´etation de P est dite une interpr´etation de Herbrand si les conditions suivantes sont satisfaites:

(a) Le domaine de l’interpr´etation est l’univers de Herbrand UP; (b) les constantes sont as-

soci´ees `a elles mˆemes dans UP et (c) si f est une fonction `a n arguments, alors f est associ´ee

`

a l’application de (UP)n dans UP d´efinie par (t1,...tn)−→ f(t1,...tn).

On ne met pas de restriction sur les pr´edicats de fa¸con que l’on puisse former plusieurs in- terpr´etations de Herbrand. Ainsi on peut identifier une interpr´etation `a un sous ensemble de la base de Herbrand de la fa¸con suivante. A chaque interpr´etation de Herbrand, on fait associer les sous-ensembles de Bp form´es par les ”ground” atomes qui sont ”true” `a travers

l’interpr´etation. R´eciproquement, si A est un sous ensemble arbitraire de Bp, on fait corres-

pondre l’interpr´etation de Herbrand en mettant la valeur des applications d’un pr´edicat `a ”true” si ce dernier figure dans l’ensemble A.

On va voir que pour prouver l’insatisfabilit´e d’un ensemble de clauses, il suffit de consid´erer les interpr´etations de Herbrand seulement.

Th´eor`eme 10 (de Herbrand) Soit P un programme et supposons que P a un mod`ele alors P a un mod`ele de Herbrand.

Preuve. Soit I une interpr´etation de P. On d´efinit l’interpr´etation de Herbrand suivante: I0 ={p(t1,...tn)∈ Bp/p(t1,...tn) est true suivant I}.

On v´erifie facilement que si I est un mod`ele pour P, alors I’ l’est ´egalement.

Ainsi, pour d´eterminer les mod`eles d’un programme, il suffit de se restreindre `a sa ”ground” instance, i.e. au programme obtenu en rempla¸cant les clauses par leur ”ground” instances.