Sunteți pe pagina 1din 43

Curs 2

2016-2017 Programare Logica


1 / 43
Din cursul trecut

Programare logica cazul logicii propozitionale


O clauza definita este o formula care poate avea una din formele:
1 q (clauza unitate) (un fapt n Prolog q.)
2 p1 . . . pk q (o regula n Prolog q :- p1 ,. . .,pn )
unde q, p1 , . . . , pn sunt atomi.

Un program logic este o lista F1 , . . . , Fn de clauze definite.

O tinta (goal) este o lista g1 , . . . , gm de atomi.

Sarcina sistemului este sa stabileasca:


F1 , . . . , Fn |= g1 . . . gm .

Scop: Vrem sa gasim metode sintactice pentru a rezolva problema


de mai sus!

2 / 43
Cuprins

1 Cazul logicii propozitionale

2 Cazul calculului cu predicate

3 / 43
Cazul logicii propozitionale

4 / 43
Sistem de deductie

Sistem de deductie pentru clauze definite propozitionale


Pentru o multime S de clauze definite propozitionale, avem
Axiome: orice clauza din S

Reguli de deductie:
P PQ P Q
(MP) (andl)
Q P Q

Aceste reguli ne permit sa deducem formula de sub linie din


formulele de deasupra liniei.

5 / 43
Sistemul de deductie

P P Q P Q
(MP) (andl)
Q P Q

Exemplu
oslo windy
oslo norway
norway cold
cold windy winterIsComing
oslo
oslo oslo norway
norway cold
norway oslo oslo windy
cold windy
cold windy

cold windy cold windy winterIsComing


winterIsComing

6 / 43
Sistemul de deductie

Spunem ca putem deduce o formula Q din S n sistemul de deductie,


S `Q

daca exista o secventa de formule Q1 , . . . , Qn astfel ncat Qn = Q si


fiecare Qi :
fie apartine lui S
fie se poate deduce din Q1 , . . . , Qi1 folosind regulile de deductie

7 / 43
Sistemul de deductie

Putem folosi sistemul de deductie pentru a deduce alti atomi:


Clauzele unitate din S (atomii pi S) sunt considerate adevarate.
Sunt dedusi ca axiome.

Putem deduce ca un nou atom r este adevarat daca


am dedus ca p1 , . . . , pn sunt adevarati, si
p1 . . . pn r este n S.
O astfel de derivare foloseste de n 1 ori andl si o data MP.

Deci putem construi multimi din ce n ce mai mari de atomi care sunt
consecinte logice din S, si pentru care exista derivari din S.

8 / 43
Completitudinea sistemului de deductie

Se poate demonstra ca aceste reguli sunt corecte, folosind tabelele


de adevar.
Daca formulele de deasupra liniei sunt adevarate, atunci si formula
de sub linie este adevarata.

Mai mult, sistemul de deductie este si complet. Adica


daca S |= Q, atunci S ` Q.
Daca Q este o consecinta logica, atunci exista o derivare a sa
folosind sistemul de deductie, unde Q este o conjunctie de atomi.

In continuare vom demonstra ca aceasta afirmatie este adevarata.

9 / 43
Multimi de multimi

Fiind data o multime X , putem considera multimea tuturor


submultimilor (multimea partilor) lui X , notata P(X ).

Exemplu. P({1, 2, 3}) este multimea cu 8 multimi:


{{}, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3}}
Daca X are n elemente, atunci P(X ) are 2n elemente.
Putem considera si multimea partilor unei multimi infinite.

10 / 43
Multimi de multimi

Fiind data orice multime de multimi Y (nu neaparat multimea


T
partilor unei multimi), definim intersectia lui Y , notata Y , ca fiind
multimea tuturor elementelor ce apar n toate multimile lui Y .
T
x Y ddaca Z (Z Y x Z )
T
Exemplu. {{1, 2, 3}, {1, 3}, {2, 3}} = {3}

11 / 43
Functii monotone

Fie X , Y multimi de multimi si f : X Y o functie.


Spunem ca f este monotona daca pentru orice multimi X1 , X2 X ,
daca X1 X2 , atunci f (X1 ) f (X2 ).

Exemplu
Fie urmatoarele functii fi : P({1, 2, 3}) P({1, 2, 3})

f1 (Y ) = Y {1} este monotona.


(
{1} daca 1 Y
f2 (Y ) = este monotona.
{} altfel
(
{} daca 1 Y
f2 (Y ) = nu este monotona.
{1} altfel

12 / 43
Puncte fixe

Un punct fix al unei functii f : P(X ) P(X ) este o multime


Y X astfel ncat f (Y ) = Y .
Un cel mai mic punct fix (lfp) Y al lui f este un punct fix continut
n toate celelalte puncte fixe ale lui f , adica
Y este punct fix, si
daca Z este tot un punct fix, atunci Y Z .

Teorema
Daca f : P(X ) P(X ) este monotona, atunci f are un cel mai mic
punct fix.

13 / 43
Clauze definite si functii monotone

Fie A multimea atomilor p1 , p2 , . . . care apar n S.


Fie Baza = {pi | pi S} multimea atomilor care apar n clauzele unitate
din S.
Definim functia fS : P(A) P(A) prin

fS (Y ) = Y Baza
{a A | (s1 . . . sn a) este n S,
s1 Y , . . . , sn Y }

Exercitiu. Aratati ca functia fS este monotona.

14 / 43
Clauze definite si functii monotone

Analizati ce se ntampla cand consideram succesiv

{}, fS ({}), fS (fS ({})), fS (fS (fS ({}))), . . .

La fiecare aplicare a lui fS , rezultatul fie se mareste, fie ramane


neschimbat.

Sa presupunem ca n S avem k atomi. Atunci dupa k + 1 aplicari


ale lui fS , trebuie sa existe un punct n sirul de multimi obtinute de
unde o noua aplicare a lui fS nu mai schimba rezultatul (punct fix):
fS (X ) = X

Daca aplicam fS succesiv ca mai devreme pana gasim un X cu


proprietatea fS (X ) = X , atunci gasim cel mai mic punct fix al lui fS .

15 / 43
Cel mai mic punct fix

fS (Y ) = Y Baza
{a A | (s1 . . . sn a) este n S,
s1 Y , . . . , sn Y }

Exemplu
Pentru
cold wet
wet wet scotland

obtinem fS ({}) = {}, deci {} este cel mai mic punct fix.
De aici deducem ca niciun atom nu este consecinta logica a formulelor de
mai sus.

16 / 43
Exemplu

Exemplu
In sintaxa Prolog
fS (Y ) = Y Baza
cold. {a A | (s1 . . . sn a) este n S,
wet :- cold.
s1 Y , . . . , sn Y }
dry :- dry.
scotland :- wet, cold.

fS ({}) = { cold }
fS ({ cold }) = { cold, wet }
fS ({ cold, wet }) = { cold, wet, scotland }
fS ({ cold, wet, scotland }) = { cold, wet, scotland }

Deci cel mai mic punct fix este { cold, wet, scotland }.

17 / 43
Programe logice si cel mai mic punct fix

Teorema
Fie X este cel mai mic punct fix al functiei fS . Atunci

qX ddaca S |= q.

Intuitie: Cel mai mic punct fix al functiei fS este multimea tuturor
atomilor care sunt consecinte logice ale programului.

Functia fS : P(A) P(A) este definita prin

fS (Y ) = Y Baza
{a A | (s1 . . . sn a) este n S, s1 Y , . . . , sn Y }

unde A este multimea atomilor din S si Baza = {pi | pi S} este multimea atomilor
care apar n clauzele unitate din S.

18 / 43
Programe logice si cel mai mic punct fix

Demonstratie
() q X S |= q.
Functia fS conserva atomii adevarati.
Deci, daca fiecare clauza unitate din S este adevarata, dupa fiecare
aplicare a functiei fS obtinem o multime adevarata de atomi.

() q X S |= q.
Fie S |= q. Presupunem prin absurd ca q 6 X .
Cautam o interpretare I care face fiecare formula din S adevarata,
dar q falsa.

19 / 43
Programe logice si cel mai mic punct fix

Demonstratie (cont.)
Fie interpretarea
(
true, daca p X
I (p) =
false, altfel
Evident, aceasta interpretare face q falsa.
Aratam ca I |= P, pentru orice formula P S.
Fie P S. Avem doua cazuri:
1 P este o clauza unitate. Atunci P X , deci I |= P.
2 P este de forma p1 . . . pn r . Atunci avem doua cazuri:
exista un pi , i = 1, . . . , n, care nu este n X . Deci I |= P.
toti pi , i = 1, . . . , n, sunt n X . Atunci r fS (X ) = X , deci I |= r .
In concluzie I |= P.

20 / 43
Sistemul de deductie

Corolar
Sistemul de deductie pentru clauze definite propozitionale este complet
pentru a arata clauze unitate:

daca S |= q, atunci S ` q.

Demonstratie
Presupunem S |= q.
Atunci q X , unde X este cel mai mic punct fix al functiei fS .
Fiecare aplicare a functiei fS produce o multime demonstrabila de
atomi.
Cum cel mai mic punct fix este atins dupa un numar finit de aplicari
ale lui fS , orice a X are o derivare.

21 / 43
Metoda de decizie

Avem o metoda de decizie (decision procedure) pentru a verifica S ` q:


Metoda consta n:
calcularea celui mai mic punct fix X al functiei fS
daca q X atunci returnam true, altfel returnam false

Aceasta metoda se termina.


Exercitiu. De ce?

Nu acesta este algoritmul folosit de Prolog!

22 / 43
Cazul calculului cu predicate

23 / 43
Logica de ordinul I

Sloganul programarii logice:


Un program este o teorie ntr-o logica formala,
iar executia sa este o deductie n teorie.

Programarea logica tinteste sa foloseasca logica de ordinul I (calculul


cu predicate) ca limbaj de reprezentare.

In aceasta reprezentare, programele sunt teorii logice multimi de


formule din calculul cu predicate.

Reamintim ca problema consta n cautarea unei derivari a unei


ntrebari (formule) din program (teorie).

24 / 43
Limbaje de ordinul I

Un limbaj L de ordinul I este format din:


o multime numarabila de variabile V = {xn | n N}
conectorii , , ,
paranteze
cuantificatorul universal si cuantificatorul existential
o multime P de simboluri de relatii
o multime F de simboluri de functii
o multime C de simboluri de constante
o functie aritate ar : F P N

25 / 43
Logica de ordinul I

L este unic determinat de = (R, F, C, ari)


se numeste signatura (vocabularul, alfabetul) lui L

Exemplu
Un limbaj L de ordinul I n care:
R = {P, R}
F = {f }
C = {c}
ari(P) = 1, ari(R) = 2, ari(f ) = 2

26 / 43
Sintaxa Prolog

Atentie!
Sintaxa Prolog nu face diferenta ntre simboluri de functii si
simboluri de predicate!

Dar este important cand ne uitam la teoria corespunzatoare


programului n logica sa facem acesta distinctie.

27 / 43
Logica de ordinul I

Termenii lui L sunt definiti inductiv asftel:


orice variabila este un termen;
orice simbol de constanta este un termen;
daca f F, ar (f ) = n si t1 , . . . , tn sunt termeni, atunci f (t1 , . . . , tn )
este termen.

Notam cu TrmL multimea termenilor lui L.

Exemplu

c, x1 , f (x1 , c), f (f (x2 , x2 ), c)

28 / 43
Logica de ordinul I

Formulele atomice ale lui L sunt definite asftel:


daca R R, ar (R) = n si t1 , . . . , tn sunt termeni, atunci
R(t1 , . . . , tn ) este formula atomica.

Exemplu

P(f (x1 , c)), R(c, x3 )

29 / 43
Logica de ordinul I

Formulele lui L sunt definite asftel:


orice formula atomica este o formula
daca A este o formula, atunci A este o formula
daca A si B sunt formule, atunci A B, A B, A B sunt formule
daca A este o formula si xi este o variabila, atunci (xi )A, (xi )A
sunt formule

Exemplu

P(f (x1 , c)), P(x1 ) P(c), (x1 )P(x1 ), (x2 )R(x2 , x1 )

30 / 43
Semantica

Pentru a stabili daca o formula este adevarata, avem nevoie de o


interpretare ntr-o structura!

31 / 43
Modelarea unei lumi

Presupunem ca putem descrie o lume prin:


o multime de obiecte
functii
relatii
unde
functiile duc obiecte n obiecte
relatiile cu n argumente descriu proprietatile a n obiecte

32 / 43
Modelarea unei lumi

Exemplu Example U
NI VER
S

IT
TH

Y
O F

H
G
E

R
Sa consideram o lume n care avem cutii:
D I U
N B

Look at a blocks world:

d
c
a b

base

This can be described using objects O = {base, a, b, c, d, e}.


PutemWedescrie
can say lumea folosind
which object is on obiecte
which other one with a 2-place
relation, on:
O = {base, a, b, c, d, e}.
on = {(e, c), (c, a), (e, d), (d, b), (b, base), (a, base)}.
Putem descrie ce obiect se afla deasupra altui obiect folosind un
predicat binar on:
Alan Smaill Logic Programming Nov 2. 2015 11/32

on = {(e, c), (c, a), (e, d), (d, b), (a, base), (b, base)}

33 / 43
Structura

Definitie
O structura este de forma S = (S, FS , PS , CS ), unde
S este o multime nevida
FS = {f S | f F} este o multime de operatii pe A;
daca f are aritatea n, atunci f S : S m S.
RS = {R S | R R} este o multime de relatii pe A;
daca R are aritatea n, atunci R S S m .
CS = {c S S | c C}.

S se numeste universul structurii S.


f S (respectiv R S , c S ) se numeste interpretarea lui f (respectiv R,c)
in S.

34 / 43
Structura

Exemplu
Lumea n care avem cutii.
Limbajul L
R = {on}
F=
C=
ari(on) = 2

O structura S:
S = {base, a, b, c, d, e}
FS = .
CS = .
RS = {onS }, unde
onS = {(e, c), (c, a), (e, d), (d, b), (a, base), (b, base)} S 2 .

35 / 43
Interpretare

Fie L un limbaj de ordinul I si S o (L-)structura.

Definitie
O interpretare a variabilelor lui L n S este o functie

I : V S.

Definitie
Inductiv, definim interpretarea termenului t n S sub I (tIS ) prin:
daca t = xi V , atunci tIS := I (xi )
daca t = c C, atunci tIS := c S
daca t = f (t1 , . . . , tn ), atunci tIS := f S ((t1 )SI , . . . , (tn )SI )

36 / 43
Interpretare

Putem defini inductiv cand o formula este adevarata n S sub


interpretarea I :

S, I |= P(t1 , . . . , tn ) daca P S (t1S , . . . , tnS )


S, I |= B daca S, I 6|= B
S, I |= B C daca S, I |= B sau S, I |= C
S, I |= B C daca S, I |= B si S, I |= C
S, I |= B C daca S, I 6|= B sau S, I |= C
S, I |= (x)B daca pentru orice interpretare Ixa avem S, Ixi a |= B
S, I |= (x)B daca exista o interpretare Ixa astfel ncat
S, Ixi a |= B
(
I (y ) daca y 6= x
unde pentru orice a S, Ixa (y ) =
a daca y = x

37 / 43
Interpretare

O formula A este adevarata ntr-o structura S, notat S |= A,


daca este adevarata n S sub orice interpretare.
Spunem ca S este model al lui A.

O formula A este adevarata n logica de ordinul I, notat |= A,


daca este adevarata n orice structura.

38 / 43
Consecinta logica

Definitie
O formula G este o consecinta logica a formulelor F1 , . . . , Fn , notat
F1 , . . . , Fn |= G ,

daca pentru orice structura S


daca S |= F1 si . . . si S |= Fn , atunci S |= G

Problema semidecidabila!
Nu exista algoritm care sa decida mereu daca o formula este sau nu
consecinta logica a altei formule in logica de ordinul I!

39 / 43
Logica clauzelor definite

Alegem un fragment al logicii de ordinul I astfel:

Renuntam la cuantificatori (dar pastram variabilele!)

Renuntam la , (dar pastram , !)


Singurele formule admise sunt de forma:
formule atomice: P(t1 , . . . , tn )
A1 . . . An B, unde toate Ai , B sunt formule atomice.

Astfel de formule se numesc clauze definite (sau clauze Horn).


Acest fragment al logicii de ordinul I se numeste logica clauzelor definite
(sau logica clauzelor Horn).

40 / 43
Programare logica

Presupunem ca putem reprezenta cunostintele ca o multime de


clauze definite T si suntem interesati sa aflam raspunsul la o
ntrebare de forma A1 . . . An , unde toate Ai sunt formule
atomice.

Adica vrem sa aflam daca


T |= A1 . . . An

Variabilele din partea stanga sunt considerate ca fiind cuantificate


universal!

Variabilele din partea dreapta sunt considerate ca fiind cuantificate


existential!

41 / 43
Logica clauzelor definite

Exemplu
Fie urmatoarele clauze definite:
father (jon, ken).
father (ken, liz).
father (X , Y ) ancestor (X , Y )
dauther (X , Y ) ancestor (Y , X )
ancestor (X , Y ) ancestor (Y , Z ) ancestor (X , Z )
Putem ntreba:
ancestor (jon, liz)
daca exista Q astfel ncat ancestor (Q, ken)
(adica (Q)ancestor (Q, ken))

42 / 43
Pe saptamana viitoare!

43 / 43

S-ar putea să vă placă și