• Aucun résultat trouvé

Référence : Fondements mathématiques de l’informatique.

N/A
N/A
Protected

Academic year: 2022

Partager "Référence : Fondements mathématiques de l’informatique."

Copied!
3
0
0

Texte intégral

(1)

Un exemple de programme Prolog

Référence : Fondements mathématiques de l’informatique.

Jacques Stern 2011-2012

Définition 0.1

On appelleclause de Hornune clause dontau plusun littéral est positif.

Siexactementun littéral est positif, on parle de clause définie.

Siaucunlittéral n’est positif, on parle de but.

On a alors

Proposition 0.2

SoitΣun ensemble de clauses de Horn, et soitΣ0 le sous-ensemble formé des clauses définies. Alors : – Σ0n’est pas contradictoire ;

– siΣest contradictoire, il existe un butGdeΣtel queΣ0Gsoit contradictoire.

Définition 0.3

On dit qu’un arbre de résolution est de type LD (Linéaire etDéfini) s’il se compose d’une branche étiquetée de la feuille vers la racine par des buts G0, . . . , Gm et de nœuds terminaux étiquetés par des clauses définies qui sont fils d’éléments de cette branche,C0, . . . , Cm1.

SiC0, . . . , Cm1∈Σet Gm=, on dit que l’arbre réfuteG0 à partir deΣ.

Théorème 0.4

Soient Σ un ensemble de clauses définies et G un but. Si Σ∪ {G} est contradictoire, il existe un arbre de réfutation de type LD qui réfuteGà partir deΣ.

De plus, on peut remarquer que la recherche d’un arbre de réfutation LD donne explicitement un contre-exemple.

C’est cette propriété qui est utilisée par PROLOG.

PROLOG construit en fait un arbre de réfutation LD pareffacement des buts.

On opère sur des suites de littéraux positifsQ1. . . Qn, appeléesclauses ordonnées.

S’il existe une variante d’une règleLP1. . . Pk, où L s’unifie àQ1 par l’unificateur principalσ, on dit que P1σ . . . PkσQ2σ . . . Qnσest obtenue pareffacementà partir deQ1. . . Qn.

Si la règle est un fait (k= 0), on obtient doncQ2σ . . . Qnσ : on a effacéQ1.

Le choix de la règle à unifier se fait de façon non déterministe. On contruit un arbre d’effacement de la façon

1

(2)

suivante :

On noteR1, . . . , Rles règles dans l’ordre où elles sont écrites, et Q1. . . Qn le but.

Chaque nœud de l’arbre correspond au but courant, et a autant de fils que de règle qui peuvent s’unifier avec le premier but, dans l’ordre de l’indice.

Regardons maintenant le programme PROLOG suivant :

homme(jacques).

homme(julien).

homme(aymeric).

homme(françois).

homme(didier).

femme(brigitte).

femme(martine).

femme(vanessa).

parent(jacques,julien).

parent(jacques,aymeric).

parent(brigitte,julien).

parent(brigitte,aymeric).

parent(martine,françois).

parent(didier,vanessa).

soeur(martine,brigitte).

soeur(brigitte,martine).

soeur(martine,didier).

soeur(brigitte,didier).

fils(X,Y) :- parent(Y,X), homme(X).

fille(X,Y) :- parent(Y,X), femme(X).

frere(X,Y) :- soeur(Y,X), femme(X).

cousin(X,Y) :- fils(X,T), soeur(T,Z), parent(Z,Y).

cousin(X,Y) :- fils(X,T), frere(T,Z), parent(Z,Y).

cousine(X,Y) :- fille(X,T), frere(T,Z), parent(Z,Y).

cousine(X,Y) :- fille(X,T), soeur(T,Z), parent(Z,Y).

On pose la question (le but) à PROLOG :

cousin(françois,A).

PROLOG va donc construire l’arbre d’effacement.

On commence par chercher à unifiercousin(françois,A)avec une règle. Les deux règles possibles sont cousin(X,Y) :- fils(X,T), soeur(T,Z), parent(Z,Y).}

cousin(X,Y) :- fils(X,T), frere(T,Z), parent(Z,Y).}

dans cet ordre là, avec l’unificateurX → françois.

Le fils gauche de l’arbre est donc

fils(françois,T).

2

(3)

soeur(T,Z).

parent(Z,A).

et le fils droit

fils(françois,T).

frere(T,Z).

parent(Z,A).

On continue ainsi de suite pour obtenir l’arbre d’effacement :

cousin(françois,A)

fils(françois,T) soeur(T,Z) parent(Z,A) parent(T,françois)

homme(françois) soeur(T,Z) parent(Z,A)

T→martine homme(françois) soeur(martine,Z)

parent(Z,A) soeur(martine,Z)

parent(Z,A)

Z→brigitte parent(brigitte,A) A→julien

A→aymeric

parent(didier,A) A→vanessa

fils(françois,T) soeur(T,Z) parent(Z,A) parent(T,françois)

homme(françois) frere(T,Z) parent(Z,A)

T→martine homme(françois) frere(martine,Z)

parent(Z,A) frere(martine,z)

parent(Z,A) soeur(Z,martine)

homme(martine) parent(Z,A) Z→brigitte homme(martine) parent(brigitte,A)

échec

3

Références

Documents relatifs

Le probl` eme de cet exercice consiste ` a d´ eterminer le nombre de points du plan contenus dans un rectangle donn´ e.. Ce genre de situation apparait tr` es souvent dans les

Ces deux coins ne pour- raient pas être des coins d'un petit carré, ils devraient donc être «noyés» dans un des petits carrés, ce qui demande au moins deux pièces de plus, et

Pour un objet en rotation, la vitesse moyenne se calcule avec la formule v = π×D×n , ou π×D représente la distance parcourue en 1 tour et n la fréquence de rotation..

Si vous voulez être sûr d'apparaître dans la page de résultats, il vous suffit d'utiliser cette recherche comme titre pour votre annonce :.. Engager un photographe

Ce Guide (voir notamment le Chapitre 5) précise la façon dont ces principes fondamentaux, ainsi que ceux dont ils découlent, sont appliqués dans la pratique.

Dans quelle mesure êtes-vous d’accord avec cette mesure du gouvernement du Québec bloquant l’accès au taux d’impôt réduit pour les plus petites entreprises en fonction

94% des employeurs dont les employés sont toujours en télétravail souhaitent un retour au bureau, à temps partiel (66%) ou à temps plein (28%).. Du côté des employés, 53%

Montrer que tout nombre complexe s’´ ecrit comme somme d’un ´ el´ ement de Z[i] et d’un nombre complexe de module < 1.. Supposons p r´ eductible