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

1
2 N. T
 andareanu

1 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 for-
mulelor ^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

2 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 meto-
delor 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 3

- un limbaj formal prin intermediul caruia construim formule co-


recte; 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 ro-
tunde. 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 sim-
bol este utilizata ^n constructia termenilor si a formulelor dupa cum se
4 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 5

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


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

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.
6 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 echiva-
lenta. Elementele acestei multimi se utilizeaza ^n constructia formulelor.
Mai ^nt^ai de nim conceptul de formula atomica sau atom.
De nitia 2.2 O formul
a atomica peste B [ SV sau atom peste
B [SV este o expresie de forma p(t1 ; ::: ; tn ) unde p(n) 2 SP si t1 ; :::; tn 2
Fundamentele programelor logice 7

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:


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

' ! = ((:') _ )
8 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 urma-
toarea:
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 9

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. Ast-
fel, ^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 vari-
abilelor 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 for-
mulei 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 en-
titati 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 ter-
meni 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.
Fundamentele programelor logice 11

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.
Fundamentele programelor logice 13

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.

3 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 ! D, unde n este aritatea lui
f;

 pentru ecare p 2 SP ,
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 consid-
eram ca orice element a 2 SC este un simbol de aritate zero atunci con-
statam 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 ^ntr-
un 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 vari-
abile 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


Fundamentele programelor logice 15

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 )) pen-
tru 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 false
true 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 )
Fundamentele programelor logice 17

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) daca y 6= x
F fxjcg(y ) = >
:c 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 2 D avem truth val('; F fxjcg) =
true
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.

4 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) q (x)
Baza programului P va B = (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 = fq(x) j x 2 UHP g [ fp(x; y) j
x; y 2 UHP g.
Remarca 4.1 Orice element din SC va considerat ^n cele ce urmeaza
simbol de functie de aritate zero.
Fundamentele programelor logice 21

5 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 urma-
toarele 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.
Fundamentele programelor logice 23

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 daca n < m
><
k(q )(n; m) = >
>:
false 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 con-
sidera 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 ex-
ista 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.

6 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:
Fundamentele programelor logice 27

 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

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

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

 De niti relatia B1 v B2 daca SC 1  SC 2 , SF 1  SF 2 , SP 1  SP 2.


Aratati ca v este o relatie de ordine partiala.

 Demonstrati ca exista cea mai mica baza B ^n raport cu v astfel
^nc^at sa avem relatia P  F ORM (B; SV ).
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
Fundamentele programelor logice 29

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:
k(f ) : N! N , k(f )(n) = n + 3;
k(p) : N ! ftrue; falseg, unde
8
>> true daca n < 2m
><
k(p)(n; m) = >
>>
: 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 ) 9z(r(x; y; z) ^ q(x; y; z))]


8x8y8z[p(X; Y ) (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