• Aucun résultat trouvé

[PDF] Cours du langage Prolog : les concepts de base | Cours informatique

N/A
N/A
Protected

Academic year: 2021

Partager "[PDF] Cours du langage Prolog : les concepts de base | Cours informatique"

Copied!
46
0
0

Texte intégral

(1)

PROLOG: concepts de base

(2)

PLAN DU COURS

I - Introduction: un langage de haut niveau, un langage déclaratif

II – Éléments syntaxique du langage PROLOG

1 - Les termes, les atomes logiques, les clauses, les Listes (syntaxe et manipulations élémentaires) 2 - Portée et quantification des variables

III - Sémantique d'un programme Prolog :

1 - Signification logique : dénotation

2 - Signification opérationnelle: SLD, exploration en profondeur 3 - Vision procédurale de Prolog

(3)

IV - Contrôle et la Négation:

1 - Le Contrôle

• Définition de la Coupure— Exemples • Applications de la Coupure

(4)

UN EXEMPLE

append([],L,L).

(5)

UN LANGAGE DE HAUT NIVEAU

Programmation Procédurale Instruction = Ordre

→ Ordre pour la machine

→ Ordre dans l'énoncé

Spécification d'une solution en terme de comportement de la machine

• Programmation Fonctionnelle

Instruction = Fonction

Spécification d'une solution en terme de valeurs calculées

• Programmation en Logique

Instruction = Relation

Spécification d'une solution en terme de relations entre entités (ou classes d'entités) Programme en logique ≅ spécification exécutable

(6)

UN LANGAGE DECLARATIF

Programmer en logique = Décrire l'univers du problème

Programme Prolog = Ensemble de propriétés et relations entre les objets de l'univers

Un programme Prolog ne décrit pas une solution : c'est une suite d'affirmations

• Problème = Ensemble de questions concernant certains objets

• Exécution = Déduction de nouvelles relations à partir des affirmations du programme

(7)

CONSTITUANTS ELEMENTAIRES ET TERMES

Constituants élémentaires :

Variable : objet inconnu de l'univers du problème

- chaîne commençant par une majuscule ou par _ (variable anonyme : _) - exemples : X, Y1, _ObjetInconnu, ...

Constante : objet particulier de l'univers du problème

- nombre : 12, 1.056, ...

- chaine commençant par une minuscule : toto, a, jean_paul_II, ... - chaine entre "" : "Constante chaine", "123",

Un terme est soit une constante, soit une variable, soit un terme fonctionnel

Un terme fonctionnel est de la forme f(t1,…,tn) avec:

- f un symbole fonctionnel, - t1,…,tn : suite de termes

Exemples : succ(zero), f(X,12), adresse(2,"rue des mimosas", valbonne), ...

(8)

LES LISTES :SYNTAXE ET MANIPULATION

La liste est un terme fonctionnel

• Définition

- Foncteur : . - Arité : 2

- Arguments :

- premier argument : terme, - deuxième argument : liste

• Notation :

- syntaxe : .(terme,liste) ou [terme I liste ]

- Notation simplifiée:

.(terme1,.(terme2,.(termen,.(...,liste),...) peut s'écrire : [terme1,terme2,...,termen I liste ]

- la liste vide est notée : []

• Exemples :

'.'(a, '.'(b, '.'(c, []))) notée [a,b,c]

'.'(Tête, Queue) notée [Tête | Queue] '.'(1, '.'(2, X)) notée [1, 2 | X]

(9)

LES ATOMES

• atome logique : propriété, relation entre termes

Syntaxe : symbole_de_prédicat(terme1,…,termen)

n : arité du prédicat

Exemples:

est_pere_de(pierre,paul), temps(ensoleillé)

est_mere_de(X,paul), atome_sans_termes

• atome clos : atome sans variables

Exemples:

(10)

LES CLAUSES

• clause : relation (certaine ou conditionelle)

T :- Q1,…,Qn.

T : littéral positif, appelé Tête de Clause

Q1,...,Qn : suite de littéraux négatifs appelée Corps de clause. Si { Q1,...,Qn } ≠ ∅ et T ≠ ∅, la clause est une

affirmation conditionnelle (règle)

Exemple même_pere(X,Y) :-

pere_de(P,X), pere_de(P,Y).

Si { Q1,...,Qn } = ∅, la clause est une affirmation

inconditionnelle (fait)

exemple : homme(pierre).

Si T = ∅, la clause est une question (dénégation)

(11)

• Sémantique informelle

Si tous les atomes du corps sont vrais, alors l'atome de tête est vrai

':-' : Implication logique ',' : ET logique

(12)

QUANTIFICATION DES VARIABLES

• Portée des variables : les variables sont locales aux clauses.

• Quantification des variables

Soit une clause A :- B et une variable x

Si x ∈ A et x ∈ B, alors x est quantifié universellement dans A et B

∀ x (B ⇒ A)

Si x ∈ A et x ∉ B, ou si B = ∅, alors x est quantifié universellement dans A

B ⇒(∀ x A)

Si x ∈ B et x ∉ A, ou si A = ∅, alors x est quantifié existentiellement dans B

(∃ x B ) ⇒ A

• Exemple :

même_pere(X,Y):-pere(P,X),pere(P,Y).

(13)

PROGRAMME ET PAQUETS

• Un programme Prolog : suite de clauses regroupées en paquets • Paquet = ensemble de clauses qui ont :

- le même symbole de prédicat en tête de clause - la même arité.

Deux clauses d'un même paquet sont liées par un ou logique.

parent(X,Y) :- est_pere_de(X,Y).

parent(X,Y) :- est_mere_de(X,Y).

Remarque :

Un prédicat est défini par une conjonction de clauses. Soit le prédicat p défini par le programme :

p :- a1, a2, a3.

p :- b1, b2.

On a: (p ⇐ (a1 ∧ a2 ∧ a3)) ∧ (p ⇐ (b1 ∧ b2))

≡ (p ∨ ¬a1 ∨ ¬a2 ∨ ¬a3 ) ∧ (p ∨ ¬b1 ∨ ¬b2)

≡ p ∨ ((¬a1 ∨ ¬a2 ∨ ¬a3 ) ∧ (¬b1 ∨ ¬b2))

≡ p ∨ ¬((a1 ∧ a2 ∧ a3) ∨ (b1 ∧ b2))

(14)

LA SYNTAXE PROLOG:RECAPITULATIF

Programme = ensemble de Paquets

Paquet = ensemble de Clauses qui ont le même prédicat (i.e., même symbole de prédicat et même arité de prédicat) comme tête de clause

Clause = Atome_logique '.' | Atome_logique ':-' Atome_logique ',' ... ',' Atome_logique '.' Atome_logique = Symbole_de_prédicat

| Symbole_de_prédicat '(' Terme ',' ... ',' Terme ')' Terme =

Constante | Variable

(15)

Constante = Entier | Réel | '"' Caractère* '"' | Minuscule (Car_alphanum | '_')* Variable = Majuscule (Car_alphanum | '_')* | '_'

Symbole_de_prédicat =

Minuscule (Car_alphanum | '_')*

Symbole_de_fonction =

(16)

L'EXEMPLE DE LA FAMILLE

Programme :

/* fils(Pere,Mere,Fils*/ ou

fils(claude, nicole, françois). fils(parents(claude, nicole),françois). fils(daniel, marie, nicolas). ...

/* fille(Pere,Mere,Fille*/ ou

fille(claude, nicole, claire). fille(parents(claude, nicole), claire). fille(daniel, marie, virginie). ...

/* pere(Pere,Enfant) */ ou

pere(P,E):- fils(P,_,E) pere(P,E):- fils(parents(P,_),E) pere(P,E):- fille(P,_,E). ...

/* mere(Mere,Enfant) */ ou

mere(M,E) :- fils(_,M,E). mere(M,E):- fils(parents(_,M),E) mere(M,E) :- fille(_,M,E). ...

/* parent(Parent,Enfant) */ ou

parent(P,E) :- fils(_,P,E). parent(P,E):- fils(parents(P,_),E) parent(P,E) :- fils(P,_,E). parent(M,E):- fils(parents(_,M),E)

(17)

/* parents(Père,Mère,Enfant) */

parents(P,M,E) :- pere(P,E), mere(M,E).

Exemples de questions :

?-parent(P, françois) ?-parent(P,théodore)

P = claude false P = nicole True ?-parents(P, M, claire) P = claude P = nicole True

(18)

SIGNIFICATION LOGIQUE

• Signification logique d'un programme P : Dénotation de P

DEN(P) = Ensemble des atomes qui sont des conséquences logiques de P (ensemble souvent infini)

Exemple 1 :

P= { p(a). DEN(P) = {p(a),p(b),

p(b). q(c),q(a),q(b),

q(c). f(a,a),f(a,b),

q(X) :- p(X). f(b,b),f(b,a),

(19)

Exemple :

P={ plus(zero,X,X).

plus(suc(X),Y,suc(Z)) :- plus(X,Y,Z). }

DEN(P) = { plus(zero,X,X), plus(suc(zero),Y,suc(Y)), plus(suc(suc(zero)),Y,suc(suc(Y))),

plus(suc(suc(suc(zero))),Y,suc(suc(suc(Y)))),...} = {plus(sucn(zero),A,sucn(A)), n 0,AT} avec T : ensemble des termes de P

• Pour un programme P, la réponse Prolog à une question A est l'ensemble S des instances de A appartenant à la dénotation de P

S ={s(A) / s(A) ∈ DEN(P)}

(20)

Rappel de la r ´esolution et SLD resolution

• M ´ethode de preuve d ´eductive pour v ´erifier |= φ

i.e., v ´erifier la validit ´e de φ dans chaque mod `ele (approche

s ´emantique)

• Algorithme efficace pour les clauses de Horn

• Principe:

Appliquer la

r ´esolution

`a F sous

forme de clauses pour

d ´eriver la

clause

(21)

N

OTATIONS

(

RAPPEL

)

x, y, z

:

variables

a, b, c

:

constantes

p, q, r

:

symboles de pr ´edicat

f, g

:

symboles de function

A, B, C, D, F φ

, ψ

:

formules

(22)

U

NE PROC

EDURE DE PREUVE

´

Pour prouver que τ |=

M OD

φ

:

1. Mettre la formule φ sous forme ∀ φ (

cloture universelle)

2. Ajouter ¬∀ φ `a τ . On obtient F

0

= {τ ∧ ¬∀(φ)}

3. Mettre F

0

sous

forme pr ´enexe

On obtient F

1

(23)

F

ORME

C

LAUSALE

D ´efinition 1.

Soit φ une formule. On dit que φ est sous forme de clauses si φ est une formule

F

1

∧ F

2

∧ . . . ∧ F

m

o `u chaque F

i

est de la forme :

p

l1

∨ p

l2

∨ . . . p

li

∨ ¬p

m1

∨ ¬p

m2

∨ . . . ∨ ¬p

mj

D ´efinition 2.

Une disjonction de litt ´eraux

p

l1

∨ p

l2

∨ . . . p

li

∨ ¬p

m1

∨ ¬p

m2

∨ . . . ∨ ¬p

mj

est

(24)

R `

EGLE D

INF

ERENCE DE LA R

´

ESOLUTION

´

A ∨ F

1

¬B ∨ F

2

σ(Φ(F

1

) ∨ F

2

)

o `u

A

et B sont des formules atomiques

Φ

est une substitution telle que Φ(A ∨ F

1

)

et ¬B ∨ F

2

n’aient aucune

variable commune

(25)

Exemple 1.

p(x,c) ∨ r(x)

¬p(c,c) ∨ q(x)

r(c) ∨ q(x)

A = p(x, c)

F

1

= r(x)

Φ = (x|y)

Φ(A ∨ F

1

) = p(y, c) ∨ r(y)

(26)

U

NIFICATION

Trouver un repr ´esentant commun `a deux atomes

Substitution

D ´efinition 3.

Si A est une formule du calcul des pr ´edicats, on note (x|t)A la formule obtenue

en remplac¸ant toutes les occurrences libres de x dans A par t

Exemple 2.

(27)

S

TRAT

EGIES DE R

´

ESOLUTION

´

Techniques de gestion d’ensembles de clauses

Enrichissement par r ´esolution & simplication jusqu’ `a d ´etection de la clause

vide ou saturation

Techniques d’exploration de l’arbre des d ´eductions

Parcours en largeur ou en profondeur d’abord de l’arbre de d ´eduction pour

trouver la clause vide

(28)

S

TRAT

EGIES DE SATURATION

´

Algorithme:

S

0

: ensemble initial de clauses

i ← 1

Faire

S

i

← ∪ {clauses obtenues en effectuant toutes les r ´esolutions et

diminutions possibles sur S

i−1

}

i ← i + 1

jusqu’ `a ce que  ∈ S

i

ou S

i

= S

i−1

(29)

S

TRAT

EGIE DE SATURATION AVEC SIMPLIFICATION

´

Elimination des tautologies

(A ∨ ¬A ∨ C) o `u A est un atome et C une clause

Elimination des clauses subsum ´ees

la clause D est subsum ´ee par la clause C s’il existe une substitution σ telle

que D = σC ∨ F avec F une clause

(30)

S

TRAT

EGIES

´

INPUT

ORDONN

EES

´

D ´efinition 4.

On appelle d ´eduction “input” de racine C

0

`a partir de l’ensemble de clauses C

toute d ´eduction CF

0

F

1

. . . F

n

telle que :

 F

0

est obtenue par r ´esolution ou diminution `a partir de clauses dont l’une

est C

0

 F

i

, i > 0

est obtenue par r ´esolution ou diminution `a partir de clauses

dont

l’une est dans C

(31)

S

TRAT

EGIES

´

INPUT

ORDONN

EES AVEC DES

´

CLAUSES DE

H

ORN

Une

clause de Horn

est une clause comportant en ensemble de litt ´eraux

n ´egatifs et au

plus un litt ´eral positif

D ´efinition 5.

La r ´esolution ordonn ´ee entre deux clauses ordonn ´ees sans variables

communes

C =

l

1

∨ l

2

∨ . . . ∨ l

n

avec

l

1

: litt ´eral positif

C

0

=

l

01

∨ l

20

∨ . . . ∨ l

0n

avec

l

01

: litt ´eral n ´egatif

a pour r ´esultat (quand elle est possible) la clause ordonn ´ee

Φ(

l

2

∨ . . . ∨ l

n

l

02

∨ . . . ∨ l

0n

)

(32)

S

TRAT

EGIES

´

INPUT

ORDONN

EES AVEC DES

´

CLAUSES DE

H

ORN

(

SUITE

)

Exemple de r ´esolution avec des

clauses de Horn

C =

p

1

(a) ∨ ¬q

1

(y) ∨ ¬r

1

(z)

C

0

=

¬p

1

(x) ∨ ¬q

2

(x) ∨ ¬r

2

(z)

p

1

(a) ∨ ¬q

1

(y) ∨ ¬r

1

(z)

¬p

1

(x) ∨ ¬q

2

(x) ∨ ¬r

2

(z)

(33)

S

TRAT

EGIES

´

INPUT

ORDONN

EES AVEC DES

´

CLAUSES DE

H

ORN

(suite)

Th ´eor `eme 1.

Si C = C

0

∪{C

0

} est insatisfiable, que C

0

est

une clause ne comportant

que des litt ´eraux n ´egatifs,

et que C

0

ne contient que des

clauses de Horn

ordonn ´ees dont le litt ´eral positif

est en t ˆete,

alors

il existe une d ´eduction lin ´eaire “input” ordonn ´ee de racine C

0

,

(34)

S

TRAT

EGIES

´

INPUT

ORDONN

EES AVEC DES

´

CLAUSES DE

H

ORN

(suite)

Limites des strat ´egies “input” ordonn ´ees avec des clauses de Horn:



Toute formule n’est pas transformable en clause de Horn,

e.g.,

A ⇒ B ∨ D

Exemple:

riche(x) ⇒ gagnant lotto(x) ∨ h ´eritier(x)



Impossible de d ´eduire des connaissances n ´egatives,

e.g.,

∀x ¬(premier(double(succ(x)))

(35)

S

TRAT

EGIES

´

INPUT

ORDONN

EES ET EXTRACTION DE

´

R

ESULTATS

´

Th ´eor `eme 2.

Si un ensemble de clauses de Horn C = C

0

∪ {C

0

} est insatisfiable,

et que C

0

est un litt ´eral n ´egatif tel que C

0

= ¬p

1

(x

1

, . . . , x

n

) ∨ . . . ∨

¬p

m

(x

1

, . . . , x

n

)

et que C

0

ne contient que des clauses de Horn ordonn ´ees en plac¸ant le litt ´eral

positif en t ˆete,

alors chaque d ´eduction “input” ordonn ´ee de racine C

0

conduisant `a la clause

vide et dont les substitutions sont (x

1

|t

1

), . . . , (x

n

|t

n

)

d ´efinit des objets t

i

de l’univers de Herbrandt tel que

p

1

(t

1

, . . . , t

n

) ∧ . . . ∧ p

m

(t

1

, . . . , t

n

)

est cons ´equence de C

0

Exemple 3.

C

0

= {p(a), p(b), r(f (x)) ∨ ¬p(x), q(y) ∨ ¬r(y), q(c)}

(36)

F

ONDEMENTS LOGIQUES DE

P

ROLOG

 Langage :

clauses de Horn

 S ´emantique op ´erationelle Prolog “pur”: Strat ´egie “input” ordonn ´ee

 S ´emantique op ´erationnelle :

exploration en profondeur d’abord

avec

retour arri `ere de l’arbre des d ´eductions input ordonn ´ees

(37)

VISION PROCEDURALE DE PROLOG

Question ≈ Appel de procédure

Unification ≈ Transmission de paramètres Paquet ≈ Procédure

Clauses d'un paquet ≈ Définition de la procédure

Exemple :

add(zero,X,X).

add(suc(X),Y,suc(Z)) :- add(X,Y,Z).

procédure add(arg1, arg2, arg3) :

if arg1 = zero then unify(arg2,arg3)

elseif unify(arg1,suc(X)) and unify(arg3,suc(Z)) then add(X, arg2, Z)

endif end add

(38)

LE CONTROLE

Problèmes :

Coût élevé du parcours de l'ensemble de l'arbre de recherche,

(39)

LA COUPURE

• La coupure est un atome, noté !

La coupure est sans signification logique • L'appel de la coupure réussit toujours

L'appel de la coupure a pour effet de bord de modifier l'arbre de recherche

• L'appel de la coupure supprime toutes les branches en attente dans l'arbre depuis l'appel de la clause qui la contient

(40)

LA COUPURE—EXEMPLES — Exemple r(b,b1). q(a). r(c,c1). q(b). r(a,a1). q(c). r(a,a2). r(a,a3). p(X,Y) :- q(X), r(X,Y). p(d,d1). p1(X,Y) :- q(X), r(X,Y), !. p1(d,d1). p2(X,Y) :- q(X), !, r(X,Y). p2(d,d1). p3(X,Y) :- !, q(X), r(X,Y). p3(d,d1).

(41)

APPLICATION DE LA COUPURE

Recherche déterministe de la première solution

Exemple :

?- grand_pere(X,Y), !.

Optimisation : évite des recherches inutiles, voire infinies ... Exemple :

plus(zero,X,X).

plus(suc(X),Y,suc(Z)) :- plus(X,Y,Z).

?- plus(X,zero,Z), plus(suc(X),Z,suc(zero)), !.

Masquage d'une définition incomplète : mauvaise utilisation Exemple :

fact(0,1):- !. au lieu de fact(0,1).

fact(X,Y) :- fact(X,Y) :-

X1 is X-1, X \== 0,

fact(X1,Y1), X1 is X-1,

Y is X*Y1. fact(X1,Y1),

(42)

LA COUPURE (1)

→ EXPRIMER LE DETERMINISME

→ OPTIMISER L'ESPACE DE RECHERCHE Exemples:

minimum(X,Y,X) :- Y ≥ X, !. minimum(X,Y,Y) :- X > Y, !.

(43)

LA COUPURE (2) fusion([X|Xs],[Y|Ys],[X|Zs]) :- X < Y, !,fusion(Xs,[Y|Ys],Zs). fusion([X|Xs],[Y|Ys],[X,Y|Zs]) :- X = Y, !,fusion(Xs,Ys,Zs). fusion([X|Xs],[Y|Ys],[Y|Zs]) :- X > Y, !,fusion([X|Xs],Ys,Zs). fusion(Xs,[],Xs):- !. fusion([],Ys,Ys) :- !.

(44)

LA COUPURE (3)

→ OMISSION DE CONDITIONS EXPLICITES

→ MODIFICATION DE LA SEMANTIQUE DU PROGRAMME

Exemples: minimum(X,Y,X) :- Y ≥ X, !. minimum(X,Y,Y).

Et donc

?-minimum(X,Y,Y).

yes !!

member(X,[X|Xs]) :- !. member(X,[Y|Ys]) :- member(X,Ys).

(45)

LA NEGATION

Absence de négation logique

Le principe de résolution "confisque" la négation logique disponible dans les clauses de Horn

On ne peut exprimer en Prolog que le vrai

non(A) ∉ DEN(P)

La négation par l'échec

A n'est pas une conséquence logique de P → non (A est une conséquence logique de P)

Définition en Prolog :

non(X) :- X, !, échec. % Où échec est un

non(X). % prédicat faux.

(46)

LIMITES DE LA NEGATION PAR L'ECHEC

Basée sur l'hypothèse du monde clos :

" Tout ce qui n'est pas démontrable est FAUX "

Pas de sémantique précise :

Exemple :

homme(pierre). homme(jacques). riche(pierre).

?- homme(X), \+(riche(X)). ?- \+(riche(X)), homme(X).

Références

Documents relatifs

An arbitrary Lagrangian-Eulerian finite element approach to non-steady state turbulent fluid flow with application to mould filling in casting... Fluids 34

A rigid actin and myosin filaments hypothesis is made, so that for each active bridge the microscopic strain rate ˙s is equal to the macroscopic filament sliding rate ˙e c.. What

In their study of the co-gasification of coal, biomass and plastics wastes with air/steam mixtures in a fluidized bed reactor, Pinto et al., 2003 [81] studied the

It is found that the three major factors affecting the decomposition rate of epoxy matrix are, in order of increasing influence, the steam flow-rate (slope term of 2.93), the

1 - les milieux de basse altitude, qui couvrent une part majoritaire du terri- toire des îles de Guadeloupe, offrent une gamme plus variée de milieux, avec pour corollaire des

Nous y étudions l'ensemble des enclos fossoyés découverts par prospection aérienne depuis 1975 en Bretagne nord, en nous inspirant des méthodes d'app r oche mises

Les garçons Roms, dont les actes de délinquance (essentiellement des actes de petite délinquance : vol, recel, escroquerie) sont fortement réprimés, ne sont certes

A partir des enquêtes nationales SUMER 2003 et 2010, nous examinons l’influence d’une instance représentative du personnel en charge de la santé-sécurité, le Comité