Sunteți pe pagina 1din 31

BAZE DE CUNOS

 TINT
E
Sinteza 2-1:

Fundamentele programelor logice


Nicolae T
 andareanu

Facultatea de Matematica-Informatica,
Universitatea din Craiova,
str.A.I.Cuza 13, 1100-Craiova, Romania
e-mail: ntand@oltenia.ro

N. T
 andareanu

Obiective

Obiectivele acestui capitol sunt urmatoarele:

 ^ntelegerea corecta a conceptelor fundamentale din programarea


logica: termen, formula, clauza, program logic

 formarea deprinderilor de calcul la evaluarea termenilor si a formulelor ^n raport cu o structura data
^In vederea atingerii acestor obiective cursantul trebuie sa ^nteleaga modul
^n care:

 se construiesc elementele multimilor


T ERM (B; SV ); AT OM (B; SV ); F ORM (B; SV )

 se calculeaza valorile functiilor eval si truth val

Termeni, formule si programe logice

Programarea logica se ocupa cu studiul programelor logice. Ea este str^ans


legata de logica matematica. Putem spune ca programarea logica se
ocupa cu reprezentarea cunostintelor prin formule logice si studiul metodelor de demonstrare a consecintelor logice ale acestora.
Pentru a de ni o reprezentare si procesare logica a cunostintelor este
necesar sa de nim :

Fundamentele programelor logice

- un limbaj formal prin intermediul caruia construim formule corecte; aceasta presupune sa de nim sintaxa limbajului
- o procedura pentru calculul valorii de adevar a unei formule, adica
semantica limbajului

Pentru a de ni sintaxa unui limbaj de ordinul I este necesar sa de nim :


1) Un triplet B = (SC ; SF ; SP ) numit baza limbajului, unde SC ; SF
si SP sunt multimi nite de simboluri, disjuncte doua c^te doua,
ale caror elemente se numesc simboluri de constante, simboluri de
functii, respectiv simboluri de predicate. Fiecare element din SF [SP
are atasat un numar natural numit aritatea acestuia.
2) O multime SV nita, ale carei elemente se numesc simboluri de
variabile

3) O multime SO de simboluri de operatii


De cele mai multe ori aritatea unui element din multimea SF [ SP se
noteaza ca exponent al simbolului respectiv, inclus ^ntre paranteze rotunde. Astfel, atunci c^and scriem expresia f (2) 2 SF ^ntelegem ca f este
un simbol de functie de aritate 2. De asemenea, scrierea p(3) 2 SP ne
arata ca avem un simbol p de predicat de aritate 3. Aritatea unui simbol este utilizata ^n constructia termenilor si a formulelor dupa cum se

N. T
 andareanu

va arata ^n cele ce urmeaza. Deseori utilizam urmatoarea conventie de


notare a constantelor, variabilelor si a simbolurilor de functii si predicate:
constantele vor notate cu primele litere ale alfabetului, eventual
utiliz^and indici:
a; b; c; : : : ; a1 ; b3 ; : : :

variabilele vor notate cu x; y; z; x1; x2 ; y1; : : :


simbolurile de functii se vor nota cu f; g; h; f1; g3; h2; : : :
simbolurile de predicate vor notate cu p; q; r; p1; p2; q1 ; q2; : : :
Unii autori considera ca elementele multimii SC sunt simboluri de functii
de aritate zero. Justi carea acestei conventii va evidenta ^n paragraful
care urmeaza, unde se de neste evaluarea unui termen si a unei formule.
Exista doua concepte de baza utilizate ^n programarea logica, care
vor prezentate ^n cele ce urmeaza: termenul si formula.
De nitia 2.1 Multimea T ERM (B; SV ) a tuturor termenilor peste baza

B si multimea SV este cea mai mica multime care satisface urmatoarele
proprietati :

 SC  T ERM (B; SV )
 SV  T ERM (B; SV )

Fundamentele programelor logice

2 SF este un simbol de functie de aritate n si t1; :::; tn 2


T ERM (B; SV ) atunci f (t1 ; :::; tn ) 2 T ERM (B; SV )
Daca f

Deseori vom spune despre un element din T ERM (B; SV ) ca este un
termen peste B [ SV .
Analiz^and de nitia 2.1 putem spune ca termenii peste o baza B si o
multime de variabile SV se obtin astfel:
orice constanta este un termen
orice variabila este un termen
daca f 2 SF si are aritatea n, iar t1 ; : : : ; tn sunt termeni peste
B [SV atunci f (t1 ; : : : ; tn ) este de asemenea un termen peste B [SV
pentru orice termen t peste B [ SV exista un numar natural k,
exista un simbol g 2 SF de aritate k si exista k termeni t1 ; : : : ; tk 2
T ERM (B; SV ) astfel ^nc^at t = g (t1 ; : : : ; tk )
Un element din T ERM (B; SV ) care nu contine variabile se numeste
termen ground, iar multimea acestora o notam cu T GB . Observam ca
^n constructia unui termen nu apar elementele lui SP . ^Intr-adevar, ^n
de nitia 2.1 nu se utilizeaza simbolurile de predicate. Pentru acest motiv
^n exemplul care urmeaza nu se precizeaza aceasta multime.

N. T
 andareanu

Exemplul 2.1 Consideram baza B formata din multimile SC = fa; bg,

SF = ff (2) ; g(1)g

si multimea de variabile SV

= fx; yg.

Urmatoarele

stringuri sunt constructii corecte de termeni peste B [ SV :

 a; b; x; y sunt termeni; a si b sunt termeni ground


 f (x; g(a)); g(f (b; b)); f (y; x); g(f (x; x)) sunt termeni
 f (g(f (a; b)); a); g(g(b)); f (f (a; b); f (a; a)) sunt termeni ground
iar urmatoarele constructii nu ne dau termeni corect constituiti peste

B [ SV :
f (x; y; x); g (f (a; b); a); f (x; z ); h(x; g (a)); f (c; g (x))
pentru motive cum sunt: nu se respecta aritatea unui simbol de functie asa
cum este ea precizata ^n de nirea multimii SF , se utilizeaza simboluri de

variabile care nu sunt ^n multimea SV , se utilizeaza simboluri de functii


care nu sunt ^n SF sau se utilizeaza constante care nu apar ^n SC .

Vom considera multimea SO = f:; _; ^; !; !g, ale carei elemente vor


reprezenta respectiv negatia, disjunctia, conjunctia, implicatia si echivalenta. Elementele acestei multimi se utilizeaza ^n constructia formulelor.
Mai ^nt^ai de nim conceptul de formula atomica sau atom.

[ SV sau atom peste


B [SV este o expresie de forma p(t1 ; ::: ; tn ) unde p(n) 2 SP si t1 ; :::; tn 2
De nitia 2.2

O formul
a atomica peste B

Fundamentele programelor logice

T ERM (B; SV ). Multimea tuturor atomilor peste B [ SV o notam cu


AT OM (B; SV ).

^In afara elementelor din SO , la de nirea conceptului de formula se mai


utilizeaza semnele 8 si 9. Aceste simboluri desemneaza cuanti catorul
universal, respectiv existential.
De nitia 2.3 Multimea F ORM (B; SV ) a tuturor formulelor peste B [

SV

este cea mai mica multime care satisface conditiile:

 AT OM (B; SV )  F ORM (B; SV )




daca ';

2 F ORM (B; SV ) atunci (' _ ) 2 F ORM (B; SV ) si


(:') 2 F ORM (B; SV )

daca ' 2 F ORM (B; SV ) si x 2 SV atunci

(9x') 2 F ORM (B; SV )


De nitia 2.4 Un literal peste B [ SV este un atom peste B [ SV sau

negatia unui atom peste B [SV . Un atom se mai numeste literal pozitiv,
iar negatia unui atom se numeste literal negativ.

Vom utiliza ^n continuare urmatoarele notatii:


' ^ = :((:') _ (: ))
' ! = ((:') _ )

N. T
 andareanu

'

! = (' ! ) ^ ( ! ')

8x' = :(9x(:'))
Sa aplicam de nitia 2.3 pentru formulele ' si din F ORM (B; SV ).
Constatam ca :' si : sunt de asemenea formule, deci ' ^ , ' ! ,
' ! si 8x' sunt formule din F ORM (B; SV ). ^In acest fel, formulele
enumerate mai sus devin notatii prescurtate ale altor formule.
Facem observatia ca vom utiliza conventiile obisnuite cu privire la
prioritatea unei operatii pentru a evita utilizarea parantezelor inutile.
Ordinea descrescatoare a prioritatilor simbolurilor de operatii este urmatoarea:
negatia
conjunctia
disjunctia
implicatia
Astfel, ^n loc de ((:x) ! y) vom scrie :x ! y deoarece negatia este mai
puternica dec^t implicatia. De asemenea, scrierea :p _ q este echivalenta
cu (:p) _ q, iar scrierea p ! p _ q este echivalenta cu p ! (p _ q).
Aceste conventii se vor utiliza numai atunci c^and nu apare nici un pericol
de confuzii. Deseori ^n scrierea formulelor cu cuanti catori vom utiliza
parantezele pentru a ^nlatura orice confuzie posibila.

Fundamentele programelor logice

Exemplul 2.2 Sa adaugam la elementele considerate ^n exemplul 2.1


multimea SP

= fp(2) ; q(1) g. Conform de nitiei 2.2 urmatoarele elemente

sunt atomi sau literali pozitivi:

q (f (a; b)); p(f (x; y ); g (x)); p(g (b); g (x))


^n timp ce

:q(f (a; b)); :p(f (x; y); g(x)); :p(g(b); g(x))


sunt literali negativi. Expresiile

8xp(x; g(a)); p(x; b) ! (9yq(y)); :q(f (a; b)) _ :p(f (x; y); g(x))
sunt formule corecte ^n F ORM (B; SV ), iar urmatoarele expresii nu sunt
formule corecte:

9xf (x; y); p(8x; a); q(p(x; y))


deaorece cuanti catorul existential nu se aplica unui termen, expresia 8x
din primul argument al celei de a doua expresii nu este un termen, iar
la a treia expresie simbolul de predicat q se aplica unui atom si nu unui
termen.

Variabilele care apar l^anga cuanti catorul universal sau existential se


numesc variabile legate. Celelate variabile se numesc variabile libere. Astfel, ^n expresia 9x(p(f (x; b); y) ! q(g(x))), variabila x este variabila
legata, iar y este variabila libera. Cuanti catorii se pot aplica numai variabilelor libere. ^In acelasi timp, vom accepta scrieri de forma p(x; g(y)) ^

10

N. T
 andareanu

9xq(x). Aceasta este o formula corecta deoarece p(x; g(y)) si 9xq(x)
sunt formule corecte. Facem precizarea ca ^n formula p(x; g(y)) ^ 9xq(x)
variabilele x si y din subformula p(x; g(y)) sunt variabile libere si mai
mult, acestea sunt singurele variabile libere care apar. Vom conveni ca
^n scrierea cuanti catorilor din formule sa utilizam parantezele pentru
a preciza subformula careia i se aplica cuanti catorul. Astfel, formula
9x(q(x) ^ p(x; y)) precizeaza ca se aplica cuanti catorul existential formulei q(x) ^ p(x; y). ^In acelasi timp, scrierea de forma 9xq(x) ^ p(x; y)
va reprezenta notatia fara paranteze a formulei 9x(q(x)) ^ p(x; y).
De nitia 2.5 O formula care nu are variabile libere se numeste formula
ground.

Se cuvine sa facem urmatoarea precizare foarte importanta: elementele


multimii F ORM (B; SV ) sunt considerate ^n acest moment drept entitati sintactice, adica sunt privite ca stringuri. Drept urmare, formulele
p(x; y ) _ q (g (x)) si q (g (x)) _ p(x; y ) sunt considerate formule distincte.
Acest aspect este de natura sintactica, dar din punct de vedere semantic
vom vedea ca cele doua formule sunt echivalente, adica au acelasi ^nteles.
Ori de c^ate ori am xat o baza B , o multime SV de variabile, o
multime SO de operatii si o multime de reguli prin care construim termeni si formule, spunem ca am de nit un limbaj de ordinul I. Din punct
de vedere sintactic, limbajul de nit ^n acest caz este format din toate
formulele care se pot construi aplic^and regulile limbajului.

11

Fundamentele programelor logice

De nitia 2.6 O clauza este o formula de forma:

8x1 : : : 8xk (A1 _ : : : _ Am _ :B1 _ : : : _ :Bn )


unde fA1 ; : : : ; Am ; B1 ; : : : ; Bn g

 AT OM (B; SV ), iar x1 ; : : : ; xk sunt


toate variabilele care apar ^n formula A1 _ : : : _ Am _ :B1 _ : : : _ :Bn .
Pentru o clauza vom utiliza urmatoarea notatie consacrata :
A1 _ : : : _ Am

B1 ; :::; Bn

si ^n aceasta notatie se sub^antelege ca toate variabilele care apar sunt
cuanti cate universal. Vom considera ca ^n aceasta scriere A1; : : : ; Am
sunt atomi, iar B1; : : : ; Bn sunt literali.
^In general se utilizeaza urmatoarea terminologie:

 expresia B1; : : : ; Bn formeaza corpul clauzei;


 expresia A1 _ : : : _ Am este capul clauzei;
 Bi este un subscop, i 2 f1; : : : ; ng
De nitia 2.7 O clauza A1 _ : : : _ Am

B1 ; :::; Bn se numeste :

 clauza Horn daca m  1 si orice subscop al ei este un atom


 clauza Horn generala daca m  1
 clauza disjunctiva pozitiva daca m > 1 si orice subscop este
atom

12

N. T
 andareanu

 clauza disjunctiva daca m > 1


Pentru o clauza A1 _ : : : _ Am B1; :::; Bn vom utiliza de asemenea
terminologia urmatoare : clauza se numeste regula daca m  1 si n  1,
fapt daca m  1 si n = 0, scop daca m = 0 si n  1.
Conceptul de clauza sta la baza notiunii de program logic, care se
de neste astfel:
De nitia 2.8 Un program logic este o multime nita de reguli si fapte.

Observam ca un program logic nu poate sa contina scopuri.


Dupa tipul clauzelor pe care le contine, un program logic poate :

 program Horn daca contine numai clauze Horn


 program Horn general daca contine numai clauze Horn si/sau
clauze Horn generale

 program disjunctiv pozitiv daca contine numai clauze Horn


si/sau clauze disjunctive pozitive

 program disjunctiv daca contine clauze Horn si/sau clauze Horn


generale si/sau clauze disjunctive
Uneori ^n literatura de specialitate se considera ca un program normal
este un program Horn sau Horn general.

13

Fundamentele programelor logice

De cele mai multe ori vom considera un program logic P fara sa
speci cam explicit baza acestuia. Evident, exista mai multe baze B si
mai multe multimi SV astfel ^nc^at P  F ORM (B; SV ). Cea mai mica
baza cu aceasta proprietate va considerata si numita baza programului
P . Completari cu privire la acest concept se gasesc ^n exercitiile de la
sf^arsitul acestui capitol.

Evaluarea termenilor si formulelor

O formula oarecare este privita nu numai sub aspectul sintactic ci si


din punct de vedere semantic. Aspectul semantic este legat de valoarea
de adevar a formulei. Pentru a prezenta acest aspect avem nevoie de
conceptul de structura, care este prezentat ^n de nitia care urmeaza.
De nitia 3.1 O structura  peste baza B este o pereche  = (D; k)
unde:

 D este o multime nevida numita domeniul structurii




pentru ecare f

2 SF ,

k(f ) este o functie, k(f ) : Dn


f;

pentru ecare p 2 SP ,

! D, unde n este aritatea lui

14

N. T
 andareanu

k(p) este o functie, k(p) : Dn

! ftrue; falseg, unde n este

aritatea lui p
Multimea tuturor structurilor peste B o notam cu ST RUCTB .

Atunci c^and de nim o structura, domeniul ei D este o multime efectiv


de nita, precizata. Prin intermediul unei structuri simbolurile de functii
devin functii, iar simbolurile de predicate devin predicate. Daca consideram ca orice element a 2 SC este un simbol de aritate zero atunci constatam ca k(a) trebuie sa e o functie de aritate zero, k(a) : D0 ! D.
Deoarece D0 contine un singur element, simbolul vid, observam ca prin
intermediul unei structuri un simbol de constanta este transformat ^ntrun element din domeniul structurii.
De nitia 3.2 O functie F : SV

! D se numeste asignare de vari-

abile sau mai simplu, asignare. Multimea tuturor asignarilor de variabile din SV la multimea D se noteaza cu DSV .

De ^ndata ce avem de nita o structura  2 ST RUCTB si o asignare F


putem evalua termeni si putem evalua formule. Rezultatul evaluarii
unui termen este un element din D, iar rezultatul evaluarii unei formule
este true sau false. Formalizarea conceptului de evaluare este prezentata
^n cele doua de nitii care urmeaza.
De nitia 3.3 Fie B o baza,  = (D; k) 2 ST RUCTB si SV o multime

15

Fundamentele programelor logice

de variabile. De nim functia

eval : T ERM (B; SV )  DSV

!D

astfel:

 eval(x; F ) = F (x) pentru orice x 2 SV

si orice F

2 DSV

 eval(h(t1 ; :::; tn); F ) = k(h)(eval(t1 ; F ); : : : ; eval(tn; F )) pentru orice F 2 DSV


De nitia data mai sus precizeaza explicit modul ^n care se evalueaza o
variabila si un termen. ^In mod implicit de nitia arata cum se evalueaza
o constanta. ^Intr-adevar, daca a 2 SC atunci am convenit sa consideram
pe a ca simbol de functie de aritate zero. Aceasta ^nseamna ca aplic^and
de nitia data avem:
eval (a; F ) = k(a)
Pe multimea ftrue; falseg de nim operatia unara :true = false si
:false = true. Consideram de asemenea operatia binara _ de nita ^n
Tabelul 1. Elementele true si false se numesc valori de adevar.
Cu ajutorul acestor operatii putem de ni de asemenea urmatoarele
operatii pe multimea ftrue; falseg:
x ^ y = :(:x _ :y )
x ! y = ((:x) _ y )

16

N. T
 andareanu

_
true

true false
true

true

false true false

Tabelul 1: Operatia _
x

! y = (x ! y) ^ (y ! x)

De nitia 3.4 Fie B o baza,  = (D; k) 2 ST RUCTB si SV o multime


de variabile. De nim functia

truth val : F ORM (B; SV )  DSV

! ftrue; falseg

astfel:
(1) truth val (p(t1 ; :::; tn ); F ) =

k(p)(eval (t1 ; F ); : : : ; eval (tn ; F ))


pentru ecare atom p(t1 ; : : : ; tn ) 2 AT OM (B; SV )
(2) e ';

2 F ORM (B; SV );

a) truth val (:'; F ) = :(truth val ('; F ))


b) truth val (' _ ; F ) = truth val ('; F )_

truth val ( ; F )

17

Fundamentele programelor logice

c) truth val (9x'; F ) = true daca si numai daca exista c 2

D astfel ^nc^t
truth val ('; F fxjcg) = true
unde F fxjcg este asignarea obtinuta din F ^n urmatorul mod:

8>
< F (y)
F fxjcg(y ) = >
:c

daca y 6= x
daca y = x

De nitia 3.5 O formula ' cu proprietatea truth val ('; F ) = true


se numeste formula adev
arata ^n structura

si asignarea F . Dava

truth val ('; F ) = false atunci ' se numeste formula falsa.

^In relatiile a) si b) din de nitia 3.4 apar semnele : si _. Evident,
semnele din st^anga sunt din SO ,^n timp ce semnele din dreapta reprezinta
operatiile din multimea ftrue; falseg. Astfel, prin intermediul functiei
truth val orice formula primeste una din valorile de adevar true sau
false.
Referitor la valoarea de adevar a unei formule ^n care apare cuanti catorul universal, putem demonstra urmatoarea proprietate:
Propozitia 3.1 Pentru orice ' 2 F ORM (B; SV ) si orice asignare F :

SV ! D avem

truth val (8x'; F ) = true

daca si numai daca pentru orice c

true

2 D avem truth val('; F fxjcg) =

18

N. T
 andareanu

Proof. Deoarece formula 8x' reprezinta notatia formulei :9x:', re-

zulta ca
truth val (8x'; F ) = truth val (:9x:'; F ) =

:truth val(9x:'; F )
Pe de alta parte avem urmatorul lant de relatii echivalente:

:truth val(9x:'; F ) = true


truth val (9x:'; F ) = false

pentru orice c 2 D avem truth val (:'; F fxjcg) = false


pentru orice c 2 D avem truth val ('; F fxjcg) = true
Sa consideram baza B = (fag; ff (1)g; fp(2) ; q(2) g), SV = fx; y; zg si o
structura  = (D; k) peste baza B . Fie F o asignare oarecare de variabile.
Expresiile = p(x; y) _ q(f (z); x) si = q(f (z); x) _ p(x; y) sunt formule
peste B [ SV . Evalu^and valorile de adevar ale acestor formule obtinem:
truth val ( ; F ) =
truth val (p(x; y ); F ) _ truth val (q (f (z ); x); F ) =
truth val (q (f (z ); x); F ) _ truth val (p(x; y ); F ) =
truth val ( ; F )

Fundamentele programelor logice

19

Asadar formulele si sunt distincte din punct de vedere sintactic, dar
au aceleasi valori de adevar^n raport cu orice structura  si orice asignare
de variabile.
De nitia 3.6 Fie B o baza si SV o multime de variabile. Pe multimea
F ORM (B; SV ) de nim relatia  astfel:

 daca truth val ( ; F ) = truth val ( ; F )


pentru orice

 2 ST RUCTB si orice asignare de variabile F .

Propozitia 3.2 Relatia

este re exiva, simetrica si tranzitiva, deci

este o relatie de echiva- lenta pe multimea F ORM (B; SV ).

Demonstratia acestei proprietati este evidenta pe baza proprietatilor


relatiei de egalitate.
De cele mai multe ori, atunci c^and  se spune ca si sunt
formule logic echivalente.

Entitati Herbrand

Exista doua entitati Herbrand si ele joaca un rol deosebit de important ^n
programarea logica: univers Herbrand si baza Herbrand. Aceste entitati
sunt prezentate ^n cele ce urmeaza.

20

N. T
 andareanu

De nitia 4.1 Consideram o baza B = (SC ; SF ; SP ). Multimea T GB a


termenilor ground peste B se numeste universul Herbrand al lui B si
se noteaza cu UHB . Multimea

fp(x1 ; : : : ; xn) j p(n) 2 SP ; n  1; x1; : : : ; xn 2 UHB g


se noteaza cu BHB si se numeste baza Herbrand atasata lui B . Daca

B este baza unui program logic P atunci UHB se mai noteaza cu UHP
si se numeste universul Herbrand al programului P . ^In acest caz,
multimea BHB se noteaza cu BHP si se numeste baza Herbrand a

programului P .
Exemplul 4.1 Consideram urmatorul program logic:

8
>> p(a; b)
><
>> q(b)
>: p(f (x); x)

Baza programului P va B

q (x)

= (SC ; SF ; SP ),

unde SC

= fa; bg, SF =

ff (1) g, SP = fp(2) ; q(1) g. Universul Herbrand al programului P

este mul-

timea

UHP = fa; b; f (a); f (b); f (f (a)); f (f (b)); : : :g


Baza Herbrand este multimea BHP

x; y 2 UHP g.

= fq(x) j x 2 UHP g [ fp(x; y) j

Remarca 4.1 Orice element din SC va considerat ^n cele ce urmeaza


simbol de functie de aritate zero.

Fundamentele programelor logice

21

Exemple si aplicatii

^In logica matematica calculul propozitional este legat de conceptul de


limbaj de ordinul zero. Pentru a de ni un asemenea limbaj din punct
de vedere sintactic este necesar sa precizam:
- o multime de simboluri numite litere propozitionale
- o multime de simboluri de operatii
- regulile de formare corecta a formulelor
De exemplu, sa consideram multimea literelor propozitionale A = fp;
q; rg, multimea de simboluri de operatii O = f:; ^g si precizam urmatoarele reguli de formare a formulelor:

 orice litera propozitionala este o formula


 daca ' si sunt formule atunci :', ' ^ sunt formule
 orice formula se obtine aplic^nd de un numar nit de ori regulile
anterioare.
Astfel, p; p ^ q; :r ^ :p; : : : sunt formule corecte din punct de vedere
sintactic, iar ^p; s ^ p; : : : sunt formule incorecte.
Daca dorim sa introducem si alte simboluri de operatii, acestea se pot
introduce astfel:

22

N. T
 andareanu

x _ y = :(:x ^ :y )
x ! y = :x _ y
x

! y = (x ! y) ^ (y ! x)

Observam ca un limbaj de ordin zero nu are variabile si nici cuanti catori.
Lipsa cuanti catorilor se justi ca prin lipsa simbolurilor de predicate.
Valoarea de adevar a unei formule se obtine cu ajutorul unei functii v :
A ! ftrue; falseg, care se extinde la functia v : L ! ftrue; falseg,
unde L este limbajul tuturor formulelor corecte, astfel:
v (x ^ y ) = v (x) ^ v (y )
v (:x) = :v (x)

Astfel, daca luam v(p) = true, v(q) = false, v(r) = false atunci v(p^
q ) = v (p) ^ v (q )= true ^ false=false, v (:q ^:r ^ p) = v (:q ) ^ v (:r) ^ v (p)
=:v(q) ^:v(r):v(p)= :false ^:false ^ true= true ^ true ^ true= true.
Sa consideram acum un exemplu de limbaj de ordinul 1. Consideram
baza B = (SC ; SF ; SP ), unde SC = fag; SF = ff g; SP = fp; qg, f este
un simbol unar, p si q sunt simboluri binare. Universul Herbrand UHB
este multimea
fa; f (a); f (f (a)); : : :g
Notam f n(a) = f (f (f : : : (f (a)) : : :)), unde simbolul f apare de n ori.

23

Fundamentele programelor logice

Pentru a lua un exemplu de structura vom considera D = N =


f0; 1; 2; : : :g, k(f ) : N ! N este functia k(f )(n) = n + 3, k(p) :
N  N ! ftrue; falseg este de nita prin :

8>
>> true daca njm
<
k(p)(n; m) = >
>:
false
altfel

iar k(q) : N  N ! ftrue; falseg o de nim prin:

8
>> true
><
k(q )(n; m) = >
>:

false

daca n < m
altfel

Mai este necesar sa de nim k(a) si luam k(a) = 1.


Pentru a obtine termeni si formule corecte este necesar sa precizam
multimea SV a variabilelor: vom considera SV = fx; y; zg. Putem considera urmatoarele exemple de termeni si formule:

 termeni: x; f (x); f (y); f (z); f (f (x)); f (f (f (y))); a; f (a); f (f (a))


 formule atomice ground : p(a; f (a)); q(f 2(a); f 5(a)) etc.
 formule : 8xp(x; f (a)), 8x8yq(x; y), s.a.m.d.
Rezultatul evaluarii se obtine de nind o asignare de variabile
F : fx; y; z g

!N

24

N. T
 andareanu

Vom lua F (x) = 3; F (y) = 8; F (z) = 9. Am obtinut astfel o structura


 = (N; k) si o asignare F . Rezultatul evaluarii unui termen va un
numar natural. De exemplu :
eval (x; F ) = 3
eval (f (y ); F ) = k(f )(eval (y; F )) = k(f )(F (y )) = k(f )(8) = 11

Rezultatul evaluarii unei formule este true sau false. De exemplu :

 truth val(p(a; a); F ) =


k(p)(eval (a; F ); eval (a; F )) = k(p)(1; 1) = true

deoarece a este considerat simbol de functie de aritate zero si prin


urmare eval (a; F ) = k(a) = 1

 truth val(q(f (z); a); F ) = k(q)(eval(f (z); F ); eval(a; F )) =


k(q )(k(f )(eval(z; F )); k(a)) = k(q )(k(f )(F (z )); k(a)) =
k(q )(k(f )(9); 1) = k(q )(12; 1) = false

 truth val(9xp(x; f (y)); F ) = true daca si numai daca exista c 2


N astfel ^nc^t
truth val (p(x; f (y )); F fxjcg) = true

Observam ca:
truth val (p(x; f (y )); F fxjcg) =

Fundamentele programelor logice

25

k(p)(eval (x; F fxjcg); k(f )(eval(y; F fxjcg))) =


k(p)(c; k(f )(8)) = k(p)(c; 11)

Deoarece k(p)(1; 11) = true rezulta ca


truth val (9xp(x; f (y )); F ) = true

 truth val(8xp(x; f (y)); F ) = false deoarece


truth val (8xp(x; f (y )); F ) = truth val (:9x:p(x; f (y )); F )

si truth val(9x:p(x; f (y)); F ) = true.


^Intr-adevar,

truth val (9x:p(x; f (y )); F ) = true

daca si numai daca exista c 2 N astfel ^nc^at


truth val (:p(x; f (y )); F fxjcg) = true

Dar

truth val (:p(x; f (y )); F fxjcg) =

:truth val(p(x; f (y)); F fxjcg) =


:k(p)(eval(x; F fxjcg); eval(f (y); F fxjcg)) =
:k(p)(c; k(f )(F (y))) = :k(p)(c; k(f )(8)) =
:k(p)(c; 11)

26

N. T
 andareanu

Asadar truth val(9x:p(x; f (y)); F ) = true daca si numai daca exista c 2 N astfel ^nc^at k(p)(c; 11) = false. Dar k(p)(c; 11) = false daca
si numai daca c nu divide pe 11. ^In concluzie,
truth val (9x:p(x; f (y )); F ) = true

daca si numai daca exista un numar natural c care nu divide pe 11, ceea
ce este adevarat.

TEME

Tema 1
Exercitiul nr. 1
Fie SC

= fa; bg, SF = ff (1) ; g(2)g, SP = fp(2) g. Fie B = (SC ; SF ; SP ).

Veri cati ca:

a) f (f (a)); g (f (a); g (b; b)) sunt termeni ground peste B


b) g (f (x); g (a; b)) este un termen peste B
c) :p(f (a); g (a; a)) si 9xp(x; g (x; y )) sunt formule peste B
Exercitiul nr. 2
Fie B o baza. Aratati ca T GB este cea mai mica multime care satisface
proprietatile:

27

Fundamentele programelor logice

 SC  T GB


daca f (n)

2 SF si t1 ; : : : ; tn 2 T GB atunci f (t1 ; : : : ; tn) 2 T GB .

Exercitiul nr. 3
Consideram un program logic P si notam cu SV multimea variabilelor
cuanti cate universal ^n P . Fie

B1 = (SC 1 ; SF 1 ; SP 1 ); B2 = (SC 2 ; SF 2 ; SP 2 )
doua baze astfel ^nc^at sa avem

 F ORM (B1; SV ); P  F ORM (B2; SV )

Demonstrati ca B

= (SC 1 \ SC 2 ; SF 1 \ SF 2 ; SP 1 \ SP 2) satisface
proprietatea P  F ORM (B; SV ), deci B este o baza a lui P .

De niti relatia B1

Aratati ca

v B2 daca SC 1  SC 2 , SF 1  SF 2 , SP 1  SP 2.

v este o relatie de ordine partiala.

Demonstrati ca exista cea mai mica baza B ^n raport cu

^nc^at sa avem relatia P

 F ORM (B; SV ).

v astfel

28

N. T
 andareanu

Tema 2
Exercitiul nr. 4
Se consideram urmatorul program logic P :

8
>> p(a)
><
>> p(b)
>:

q (f (x))

p(x)

a) A ati tipul lui P ^n clasi carea programelor logice


b) Calculati baza B a lui P
c) Calculati universul Herbrand si baza Herbrand a lui P
Exercitiul nr. 5
Dati exemple de doua programe logice diferite care sa aiba aceeasi baza
(^n consecinta acelasi univers Herbrand si aceeasi baza Herbrand).

Exercitiul nr. 6
Consideram urmatorul program logic P :

8
>> zbor(x; y) zbor direct(x; y)
>>
>< zbor(x; y) zbor direct(x; z); zbor(z; y)
>> zbor direct(a; b)
>>
>: zbor direct(b; c)

a) Calculati baza B a programului P

29

Fundamentele programelor logice

b) Calculati universul Herbrand si baza Herbrand atasata lui P


c) Adaugati urmatoarea clauza lui P :
zbor indirect(x; y )

zbor(x; y ); :zbor direct(x; y )

Notati cu P1 programul obtinut. Ce fel de program logic este P1 ?

d) Adaugati la P clauza de mai jos si notati cu P2 programul


obtinut:

zbor indirect(x; y ) _ zbor direct(x; y )

zbor(x; y )

Ce tip de program logic s-a obtinut?

Exercitiul nr. 7
Demonstrati urmatoarele relatii:

 truth val(' ^ ; F ) = truth val('; F ) ^ truth val( ; F )


 truth val(' ! ; F ) = truth val('; F ) ! truth val ( ; F )
 truth val(' $ ; F ) = truth val('; F ) $ truth val ( ; F )
Tema 3
Exercitiul nr. 8
Fie SC

= fag, SF = ff (1) g, SP = fp(2) ; q(2) g.

Consideram structura

30

N. T
 andareanu

 = (N; k), unde N

este multimea numerelor naturale, iar k este de nit

astfel:

! N , k(f )(n) = n + 3;
k(p) : N ! ftrue; falseg, unde
8
>> true daca n < 2m
><
k(p)(n; m) = >
>>
:
k(f ) : N

false altfel

k(q ) : N

! ftrue; falseg, unde


8
>> true daca n2 + m2 < 100
><
k(q )(n; m) = >
>>
:
false altfel

k(a) = 2

Consideram SV

= fx; y; zg

si asignarea F (x)

= 2; F (y) = 5; F (z) =
6. Calculati truth val pentru F de nit mai sus si formulele p(a; a),
9xp(x; f (y)), 9xp(x; f (z)), 9xp(x; f (x)), 8xq(x; y), 9xq(f (a); x).
Exercitiul nr. 9
Aratati ca urmatoarele formule sunt logic echivalente:

8x8y[p(X; Y )
8x8y8z[p(X; Y )

9z(r(x; y; z) ^ q(x; y; z))]


(r(x; y; z) ^ q(x; y; z)]

Fundamentele programelor logice

31

Tema 4
Exercitiul nr. 10
Consideram p(1) 2 SP . Aratati ca:

1) 8xp(x)  8yp(y)
2) 8xp(y)  p(y)
3) :8xp(x)  9x:p(x)
4) :9xp(x)  8x:p(x)
5) p(x)  ::p(x)
Exercitiul nr. 11
Pentru orice ;

2 F ORM (B; SV ) aratati ca

1) :( _ )  : ^ :
2) :( ^ )  : _ :
3) :: 
Exercitiul nr. 12
Pentru ecare din formulele de mai jos gasiti o clauza logic echivalenta:

1) 8x(p(x) _ :9y(q(x; y) ^ r(x)))


2) 8x(:p(x) _ (q(x) ! r(x)))

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