Sunteți pe pagina 1din 22

Programare Logică

Asist. univ. drd. Doru Constantin


2
Cuprins

1 Limbaje de prim ordin 5


1.1 Sintaxa limbajelor de prim ordin . . . . . . . . . . . . . . . . . . . . . . . . 5

3
4 CUPRINS
Capitolul 1

Limbaje de prim ordin

Limbajele de primul ordin au fost introduse de Frege in 1879. Comparativ cu limbajul


calculului cu propoziţii, structura unui limbaj de primul ordin este mult mai complexă şi
oferă un cadru suficient pentru reprezentarea unei clase relativ largi de propoziţii dintr-
un limbaj natural. În contextul sistemelor bazate pe cunoştinţe, un limbaj de prim ordin
este un sistem formal ataşat unui astfel de sistem şi permite proiectarea, analiza şi con-
trolul mecanismelor inferenţiale ı̂n gestiunea cunoştinţelor stocate ı̂n baza de cunostinţe
a sistemului. Convenţional, sistemul bazat pe cunostinţe modelat prin intermediul unui
anume limbaj de primul ordin, este referit ca interpretare intenţionată pentru acel limbaj.

1.1 Sintaxa limbajelor de prim ordin


Vocabularul V unui limbaj de primul ordin conţine din două tipuri de simboluri şi
anume simbolurile logice şi simbolurile non-logice. Spre deosebire de simbolurile logice
care sunt comune tuturor limbajelor din această clasă, simbolurile non-logice sunt definite
ı̂n funcţie de interpretarea intenţionată pentru limbajul respectiv. Definirea mulţimilor
de simboluri non-logice pentru construirea unui limbaj de prim ordin aferent unui sistem
de cunoştinţe dat, se numeşte conceptualizare a sistemului.
Simbolurile logice sunt elementele mulţimii V ∪ L ∪ S ∪ Q, unde:
• V este mulţimea variabilelor; V 6= ∅.
• L = {∧, ∨, →, ↔, ¬} este mulţimea conectivelor logice: conjuncţie, disjuncţie, im-
plicaţie, echivalenţă şi negaţie ;
• S = {(, )} este mulţimea simbolurilor de punctuaţie.
• Q = {∀, ∃} este mulţimea cuantificatorilor; simbolul ∀ este cuantificatorul universal,
respectiv simbolul ∃ este cuantificatorul existenţial.
Simbolurile non-logice sunt elementele mulţimii CS ∪ F S ∪ P S unde:
• CS este mulţimea constantelor,
• F S este mulţimea simbolurilor functoriale. Fiecare functor f ∈ F S este caracterizat
de un număr natural r (f ) ≥ 1 numit aritatea functorului f .
• P S este mulţimea simbolurilor predicaţionale. Fiecare predicat π ∈ P S este carac-
terizat de un număr natural r (π) ≥ 0 numit aritatea predicatului π.

5
6 CAPITOLUL 1. LIMBAJE DE PRIM ORDIN

Presupunem că mulţimile V, L, S, Q, CS, F S, P S sunt două câte două disjuncte.


Vocabularul limbajului este V = V ∪ L ∪ S ∪ Q ∪ CS ∪ F S ∪ P S, elementele mulţimii

A = V se numesc asamblaje.
Pentru α ∈ A şi x ∈ V , indicăm prin α hxi faptul că simbolul x apare cel puţin o dată
printre simbolurile asamblajului α respectiv prin α ixh situaţia contrară.
Într-un limbaj de prim ordin identificăm două mulţimi de structuri simbolice de interes
şi anume mulţimea termenilor T ERM şi mulţimea formulelor F ORM .

Definiţia 1.1.1 Secvenţa de asamblaje t1 , . . . , tn este o secvenţă generativă termeni


(SGT ), dacă pentru orice i, 1 ≤ i ≤ n, ti ı̂ndeplineşte una din condiţiile:

(i) ti ∈ V ∪ CS

(ii) există f ∈ F S şi există indicii j1 , . . . , jr(f ) cu 1 ≤ jp < i, p = 1, . . . , r (f )


astfel ı̂ncât ti = f tj1 tj2 . . . tjr(f )

Definiţia 1.1.2 Numim termen orice asamblaj t cu proprietatea că există n = 1 şi
t1 , . . . , tn − SGT astfel ı̂ncât tn = t. Mulţimea termenilor este notată T ERM.

Observaţia 1.1.1 Dacă t1 , . . . , tn este SGT atunci t1 ∈ V ∪ CS şi ti ∈ T ERM, i =


1, . . . , n. În particular rezultă V ∪ CS ⊂ T ERM .

Observaţia 1.1.2 Gramatica care genereaza limbajul teremenilor este,

hargumenti → x pentru orice x ∈ V


hargumenti → c pentru orice c ∈ CS
hf unctori → f pentru orice f ∈ F S
hlista argumentei → hargumenti hlista argumentei
htermeni → hargumenti | hf unctori hlista argumentei

ı̂mpreună cu regula suplimentară ca numărul de termeni din lista de argumente să fie egal
cu aritatea simbolului functorial respectiv.

Reprezentarea convenţională a structurilor simbolice termeni este prin intermediul


arborilor de structură.

Definiţia 1.1.3 Arborele T direcţionat, cu rădăcină şi vârfurile etichetate cu simboluri


din mulţimea V ∪ CS ∪ F S este un arbore de structură termen, dacă pentru orice vârf n
al arborelui,

(i) dacă od (n) = 0 atunci ϕ (n) ∈ V ∪ CS

(ii) dacă od (n) ≥ 1 atunci ϕ (n) ∈ F S şi r (ϕ (n)) = od (n)

unde ϕ (n) este eticheta vârfului n.

Construcţia unui arbore de structură T (t) pentru reprezentarea termenului t ∈


T ERM poate fi realizată recursiv astfel:

a) dacă t ∈ V ∪ CS atunci T (t) = ({r} , ∅) şi ϕ (r) = t


1.1. SINTAXA LIMBAJELOR DE PRIM ORDIN 7

b) dacă t = f t1 . . . tr(f ) pentru anume f ∈ F S atunci

 
r(f ) r(f )
[ [ © ª
T (t) = {r} ∪ V (Ti ) , E (Ti ) ∪ rr1 , . . . , rrr(f ) 
i=1 i=1

S)
r(f
unde T (ti ) = (V (Ti ) , E (Ti )) , i = 1, . . . , r (f ), r este un vârf nou, r ∈
/ V (Ti )
i=1
şi ϕ (r) = f.

Exemplul 1.1.1 Simbolurile non-logice ale limbajului de prim ordin al aritmeticii sunt:

CS = {0} ,
F S = {+,
n ∗, o S} ,

P S = <, = ,

³ ´

unde r (+) = r (∗) = r (<) = r = = 2, r (S) = 1. Simbolul S desemnează functorul

succesor; pentru orice număr natural n, SS . . . S} 0 = n
| {z
n

Observaţia 1.1.3 În acest limbaj, structurile simbolice din mulţimea T ERM sunt re-
prezentări ale expresiilor aritmetice ı̂n scriere prefixată.
Fie asamblajul t = ∗ + ∗SySSzSSx + xSS0, unde x, y, z ∈ V
Secvenţa de asamblaje

t1 = 0,
t2 = x,
t3 = y,
t4 = z,
t5 = Sx = St2 ,
t6 = Sy = St3 ,
t7 = Sz = St4 ,
t8 = SSz = St7 ,
t9 = SSx = St5 ,
t10 = ∗SySSz = ∗t6 t8 ,
t11 = + ∗ SySSzSSx = +t10 t9 ,
t12 = S0,
t13 = SS0 = St12 ,
t14 = +xSS0 = +t2 t13 ,
t15 = ∗ + ∗SySSzSSx + xSS0 = ∗t11 t14 = t

este SGT , deci t ∈ T ERM .


8 CAPITOLUL 1. LIMBAJE DE PRIM ORDIN

Arborele de structură T (t) construit prin aplicarea metodei prezentate este:

r ϕ (r) = ∗
.&
n1 n2 ϕ (n1 ) = +, ϕ (n2 ) = +
.& ↓& ϕ (n3 ) = ∗, ϕ (n4 ) = S
n3 n4 n12 n13 ϕ (n12 ) = x, ϕ (n13 ) = S
T (t) : .& ↓ ↓
n5 n6 n10 n14 ϕ (n5 ) = S, ϕ (n6 ) = S
↓ ↓ ↓ ↓ ϕ (n10 ) = S, ϕ (n14 ) = S
n7 n8 n11 n15 ϕ (n7 ) = y, ϕ (n8 ) = S
↓ ϕ (n11 ) = x, ϕ (n15 ) = 0
n9 ϕ (n9 ) = z

Definiţia 1.1.4 Mulţimea atomilor notată AT OM , este


© ª
AT OM = {π|π ∈ P S, r (π) = 0} ∪ πt1 . . . tr(π)|π ∈ P S, r (π) ≥ 1, t1 , . . . , tr(π) ∈ T ERM

Observaţia 1.1.4 Limbajul atomilor este generat de gramatica,

hsimbol predicationali → π pentru orice π


hlista termenii → htermeni | hlista termenii
hatomi → hsimbol predicationali
| hsimbol predicationali hlista termenii

ı̂mpreună cu regula suplimentară ca numărul argumentelor din lista de termeni să fie egal
cu aritatea simbolului predicaţional respectiv.
Reprezentarea convenţională a atomilor este prin intermediul arborilor de structură.
Pentru π ∈ P S, r (π) = 0 arborele de structură este T (π) = ({r} , ∅) , ϕ (r) = π. Pentru
π ∈ P S, r (π) ≥ 1 şi t1 , . . . , tr(π) ∈ T ERM , arborele de structură corespunzător atomului
α = πt1 . . . tr(π) este
 
r(π) r(π)
[ [ © ª
T (α) = {n} ∪ V (ti ) , E (ti ) ∪ nn1 , . . . , nnr(π) 
i=1 i=1

unde T (ti ) = (V (ti ) , E (ti )) este arborele de structură corespunzător termenului ti ,


S
r(π)
i = 1, . . . , r (π) şi n ∈
/ V (ti ) .
i=1

Definiţia 1.1.5 Secvenţa de asamblaje α1 , . . . , αn este o secvenţă generativă formule


(SGF ), dacă pentru orice i, 1 ≤ i ≤ n, αi ı̂ndeplineşte una din condiţiile:
(i) αi ∈ AT OM

(ii) există 1 ≤ j < i astfel ı̂ncât αi = (¬αj )

(iii) există 1 ≤ j, k < i şi există ρ ∈ L8 {¬} astfel ı̂ncât αi = (αj ραk )

(iv) există 1 ≤ j < i şi există x ∈ V astfel ı̂ncât αi = ∀xαj

(v) există 1 ≤ j < i şi există x ∈ V astfel ı̂ncât αi = ∃xαj


1.1. SINTAXA LIMBAJELOR DE PRIM ORDIN 9

Definiţia 1.1.6 Numim formulă orice asamblaj α cu proprietatea că există n = 1 şi
α1 , . . . , αn − SGF αn = α. Mulţimea formulelor este notată F ORM.

Observaţia 1.1.5 Limbajul formulelor este generat de gramatica,

hconectivai → ∧| ∨ | → | ↔
hcuantif icatori → ∀|∃
hf ormulai → hatomi | (¬ hf ormulai) | (hf ormulai hconectivai hf ormulai)
| hcuantif icatori hf ormulai

Observaţia 1.1.6 Din Definiţia 1.1.5 rezultă AT OM ⊂ F ORM şi dacă α ∈ AT OM


atunci (¬α) ∈ F ORM. Convenim să numim literal orice structură simbolică din mulţimea
AT OM ∪ ¬AT OM.

Exemplul 1.1.2 Reprezentarea simbolică ı̂n limbajul de prim ordin al aritmeticii a afir-
maţiei ”Pentru orice x număr natural, are loc egalitatea (x + 1) (x + 2) = x2 + 3x + 2”
este,

α = ∀x = ∗ + xS0 + xSS0 + + ∗ xx ∗ SSS0xSS0
Într-adevăr, deoarece numerele naturale 1, 2, 3 sunt reprezentate respectiv prin

S0, SS0, SSS0,

rezultă că termenii

∗ + xS0 + xSS0, + + + ∗ xx ∗ SSS0xSS0

reprezintă expresiile aritmetice (x + 1) (x + 2), respectiv x2 + 3x + 2.


Structura simbolică α este o formulă deoarece secvenţa

=
| ∗ + xS0 + xSS0 +{z
+ + ∗xx ∗ SSS0xSS0}, ∀xπ = α
π

este SGF .

Exemplul 1.1.3 Reprezentarea simbolică ı̂n limbajul de prim ordin al aritmeticii a a-


firmaţiei ”Pentru orice numere naturale x, y, dacă x < y atunci există z număr natural
astfel ı̂ncât x + z = y”, este
³ ´

α = ∀x∀y < xy → ∃z = +xzy .

Secvenţa de asamblaje

< xy,

= +xzy,

∃z = +xzy,
³ ´

< xy → ∃z = +xzy ,
³ ´

∀y < xy → ∃z = +xzy ,
³ ´

∀x∀y < xy → ∃z = +xzy = α
10 CAPITOLUL 1. LIMBAJE DE PRIM ORDIN

este SGF , deci α ∈ F ORM.


Convenim să numim expresie orice structură simbolică din mulţimea T ERM ∪F ORM .
Variabilele care apar ı̂n expresiile unui limbaj de prim ordin pot fi libere sau legate. Pentru
orice expresie α, notăm cu F V (α) mulţimea variabilelor libere din α, respectiv cu BV (α)
mulţimea variabilelor legate. Mulţimile F V, BV se calculează recursiv ı̂n modul următor.
Pentru t ∈ T ERM,


 {t} , dacă t ∈ V
 ∅, dacă t ∈ CS
F V (t) =

 S)
r(f
 F V (ti ) , dacă t = f t1 . . . tr(f ) , f ∈ F S.
i=1


 ∅, dacă t ∈ CS ∪ V
BV (t) = S)
r(f
 BV (ti ) , dacă t = f t1 . . . tr(f ) , f ∈ F S
i=1

Pentru α ∈ F ORM,


 ∅, dacă α ∈ P S, r (α) = 0,

 S
r(π)


 F V (ti ) , dacă α = πt1 . . . tr(f ) , π ∈ P S, r (π) ≥ 1,
F V (α) = i=1

 F V (β) , dacă α = (¬β)



 F V (β) ∪ F V (γ) , dacă α = (βργ) , ρ ∈ L \ {¬} ,

F V (β) \ {x} , dacă α = ∀xβ sau α = ∀xβ, x ∈ V.



 ∅, dacă α ∈ P S, r (α) = 0,


 ∅, dacă α = πt1 . . . tr(f ) , π ∈ P S, r (π) ≥ 1,
BV (α) = BV (β) , dacă α = (¬β) ,



 BV (β) ∪ BV (γ) , dacă α = (βργ) , ρ ∈ L \ {¬} ,

BV (β) ∪ {x} , dacă α = ∀xβ sau α = ∀xβ, x ∈ V.

Observaţia 1.1.7 Din construcţie rezultă că pentru orice t ∈ T ERM ∪AT OM, BV (t) =
∅. De asemenea, ‘legarea’ unei variabile revine la prezenţa ı̂n structura simbolică respectivă
a unei cuantificări, existenţiale sau universale, relativ la acea variabilă.

Exemplul 1.1.4 Pentru t = ∗+∗SySSzSSx+xSS0 considerat ı̂n Exemplul 1.1.1 rezultă


BV (t) = ∅,

F V (t) = F V (+ ∗ SySSzSSx) ∪ F V (+xSS0)


= F V (∗SySSz) ∪ F V (SSx) ∪ F V (x) ∪ F V (SS0)
= F V (Sy) ∪ F V (SSz) ∪ F V (Sx) ∪ {x} ∪ F V (S0)
= {y} ∪ F V (Sz) ∪ {x} ∪ {x} ∪ F V (0)
= {y} ∪ {z} ∪ {x} ∪ ∅
= {x, y, z} .
1.1. SINTAXA LIMBAJELOR DE PRIM ORDIN 11
³ ´

Pentru formula α = ∀x∀y < xy → ∃z = +xzy din Exemplul 1.1.3, obţinem,
³ ³ ´´

F V (α) = F V ∀y < xy → ∃z = +xzy \ {x}
³³ ´´

= FV < xy → ∃z = +xzy \ {x, y}
³ ³ ´´

= F V (< xy) ∪ F V ∃z = +xzy \ {x, y}
³ ³ ³ ´ ´´

= F V (x) ∪ F V (y) ∪ F V = +xzy \ {z} \ {x, y}
= ({x} ∪ {y} ∪ ((F V (+xz) ∪ F V (y)) \ {z})) \ {x, y}
= ({x, y} ∪ ((F V (x) ∪ F V (z) ∪ F V (y)) \ {z})) \ {x, y}
= ({x, y} ∪ (({x} ∪ {z} ∪ {y}) \ {z})) \ {x, y}
= ({x, y} ∪ {x, y}) \ {x, y}
= ∅.
³ ³ ´´

BV (α) = BV ∀y < xy → ∃z = +xzy ∪ {x}
³³ ´´

= BV < xy → ∃z = +xzy ∪ {x, y}
³ ³ ´´

= BV (< xy) ∪ BV ∃z = +xzy ∪ {x, y}
³ ³ ³ ´ ´´

= ∅ ∪ BV = +xzy ∪ {z} ∪ {x, y}
³ ´

= BV = +xzy ∪ {z} ∪ {x, y}
= ∅ ∪ {x, y, z}
= {x, y, z} .

Observaţia 1.1.8 În general se doreşte ca pentru orice formulă α, să nu existe cuan-
tificări multiple asupra aceleiaşi variabile şi F V (α) ∩ BV (α) = ∅. Regulile de bună
formare pentru structurile simbolice din F ORM (Definiţia 1.1.5) permit ı̂nsă generarea
de formule α astfel ı̂ncât F V (α) ∩ BV (α) 6= ∅ respectiv formule cu cuantificări multiple
asupra aceleiaşi variabile.
De exemplu, ı̂n limbajul de prim ordin al aritmeticii, secvenţa
< xy,
< +xyz,
∃y < +xyz,
∀x∃y < +xyz, (< xy → ∀x∃y < +xyz) ,
∀x (< xy → ∀x∃y < +xyz) = α
este SGF , deci α ∈ F ORM.
F V (α) = F V ((< xy → ∀x∃y < +xyz)) \ {x}
= (F V (< xy) ∪ F V (∀x∃y < +xyz)) \ {x}
= ({x, y} ∪ (F V (∃y < +xyz) \ {x})) \ {x}
= ({x, y} ∪ (F V (< +xyz) \ {x, y})) \ {x}
= ({x, y} ∪ ({x, y, z} \ {x, y})) \ {x}
= {y, z}
BV (α) = BV ((< xy → ∀x∃y < +xyz)) ∪ {x}
= (BV (< xy) ∪ BV (∀x∃y < +xyz)) ∪ {x}
= (BV (∃y < +xyz) ∪ {x}) ∪ {x}
= ((BV (< +xyz) ∪ {x, y})) ∪ {x}
= {x, y}
12 CAPITOLUL 1. LIMBAJE DE PRIM ORDIN

deci F V (α) ∩ BV (α) 6= ∅.

Definiţia 1.1.7 Dacă α = ∀xβ ∈ F ORM atunci formula β este domeniul variabilei x.
Analog, dacă α = ∃xβ atunci domeniul variabilei x este β.
De exemplu, ı̂n formula

α = ∀x (< xy → ∀x∃y < +xyz) ,

domeniul primei cuantificări asupra variabilei x este

(< xy → ∀x∃y < +xyz)

respectiv domeniul celei de a doua cuantificări asupra aceleiaşi variabile este formula

∃y < +xyz.

În scopul evitării cuantificărilor multiple asupra aceleiaşi variabile in formula α şi
pentru asigurarea condiţiei F V (α) ∩ BV (α) = ∅, ocurenţele ı̂n α ale fiecărui simbol x
∈ BV (α) sunt substituite printr-un un nou simbol de variabilă (care nu apare ı̂n α) cu
excepţia subexpresiei domeniu al variabilei respective.
De exemplu, pentru
α = ∀x (< xy → ∀x∃y < +xyz) ,
domeniul celei de a doua cuantificări asupra variabilei x este

∃y < +xyz

deci ocurenţele variabilei x ı̂n exteriorul domeniului ei vor fi substituite cu u ∈ V ; rezultă

∀u (< uy → ∀x∃y < +xyz) .

De asemenea ocurenţele variabilei y ı̂n exteriorul domeniului ei vor fi substituite cu p ∈ V .


Obţinem
α0 = ∀u (< up → ∀x∃y < +xyz)
şi
F V (α0 ) = {p, z} ,
BV (α0 ) = {x, y, u} .
Cu toate că prin aplicarea acestei transformări structura simbolică reprezentând o formulă
se modifică, aşa după cum va rezulta ı̂n secţiunea următoare, formula iniţială şi formula
rezultată sunt echivalente din punct de vedere semantic.

Definiţia 1.1.8 Spunem că formula α este ı̂nchisă, dacă F V (α) = ∅. Mulţimea for-
mulelor ı̂nchise este notată F ORM0 . Dacă α ∈ F ORM \ F ORM0 şi

F V (α) = {x1 , . . . , xn } ,

formulele ı̂nchise α = ∀x1 . . . ∀xn α, α = ∃x1 . . . ∃xn α se numesc ı̂nchiderile universală


respectiv existenţială ataşate formulei α.
1.1. SINTAXA LIMBAJELOR DE PRIM ORDIN 13

Definiţia 1.1.9 Se numeşte substituţie o mulţime de perechi θ = {t1 | x1 , . . . , tn | xn },


unde ti ∈ T ERM, xi ∈ V , xi 6= xj , xi 6= ti pentru orice 1 ≤ i 6= j ≤ n. Ter-
menii t1 , . . . , tn se numesc termeni substituenţi pentru variabilele substituite x1 , . . . , xn .
Substituţia θ este o substituţie de bază dacă ı̂n structurile simbolice corespunzătoare ter-
menilor substituenţi nu apar simboluri de variabile.
Substituţia vidă, notată ε, corespunde mulţimii vide. Spunem că θ este substituţie
proprie dacă nici o variabilă substituită nu are ocurenţe ı̂n termenul substituent pereche.
Mulţimea substituţiilor este notată SU BST .

Definiţia 1.1.10 Fie t ∈ T ERM , θ ∈ SU BST. Rezultatul aplicării substituţiei θ ter-


menului t, notat tθ, este definit prin:


 t, dacă θ = ε sau t ∈ CS sau t ∈ V \ {x1 , . . . , xn } ,

θ = {t1 | x1 , . . . , tn | xn } ,
tθ =

 t i , dacă t = xi ∈ {x1 , . . . , xn } ,

f t1 θ . . . tr(f ) θ, dacă t = f t1 . . . tr(f ) .
Observaţia 1.1.9 Din Definiţia 1.1.10 rezultă imediat că pentru orice t ∈ T ERM , θ ∈
SU BST, tθ ∈ T ERM

Exemplul 1.1.5 Pentru termenul t = ∗ + ∗SySSzSSx + xSS0 ı̂n limbajul de prim ordin
al aritmeticii şi θ = {S0 | x, +xy | y, ∗yz | z}, obţinem,

tθ = ∗t1 θt2 θ, unde t1 = + ∗ SySSzSSx, t2 = +xSS0


t1 θ = +t3 θt4 θ, unde t3 = ∗SySSz, t4 = SSx
t3 θ = ∗t5 θt6 θ, unde t5 = Sy, t6 = SSz
Deoarece
t5 θ = Syθ = S + xy şi
t6 θ = SSzθ = SS ∗ yz,
t4 θ = SSxθ = SSS0,
rezultă ı̂n continuare,
t1 θ = + ∗ S + xySS ∗ yzSSS0
De asemenea,
t2 θ = +xθSS0θ = +S0SS0
deci obţinem ı̂n final,

tθ = ∗ + ∗S + xySS ∗ yzSSS0 + S0SS0

Observaţia 1.1.10 Fie t ∈ T ERM , θ ∈ SU BST. Arborele de structură T (tθ) rezultă


prin aplicarea arborelui de structură T (t) a transformării constând ı̂n substituirea vârfu-
rilor terminale ale căror etichete sunt variabile substituite de θ, prin arborii de structură
corespunzători termenilor asociaţi ı̂n substituţia θ. Cu alte cuvinte termenul tθ rezultă
prin substituirea ı̂n structura simbolică t a fiecărei variabile substituite de θ prin termenul
pereche corespunzător.
Fie
t = ∗ + ∗SySSzSSx + xSS0
şi
θ = {S0 | x, +xy | y, ∗yz | z}
14 CAPITOLUL 1. LIMBAJE DE PRIM ORDIN

(Exemplul 1.1.5). Arborii de structură corespunzători termenilor t, S0, +xy, ∗yz sunt,


.&
+ +
.& ↓&
∗ S x S
T (t) : .& ↓ ↓
S S S S
↓ ↓ ↓ ↓
y S x 0

z

S
T (S0) : ↓
0
+
T (+xy) : .&
x y

T (∗yz) : .&
y z
Prin substituirea ı̂n T (t) a vârfurilor terminale cu etichete simboluri de variabile sub-
stituite de θ, prin arborii de structură corespunzători termenilor asociaţi, rezultă arborele

.&
+ +
.& ↓&
∗ S S S
.& ↓ ↓ ↓
T : S S S 0 S
↓ ↓ ↓ ↓
+ S S 0
.& ↓ ↓
x y ∗ 0
.&
y z

Evident, T = T (tθ) .

Definiţia 1.1.11 Fie α ∈ AT OM , θ ∈ SU BST. Rezultatul aplicării substituţiei θ atom-


ului α, notat αθ, este definit prin:
½
α, dacă α ∈ P S şi r (α) = 0,
αθ =
πt1 θ . . . tr(f ) θ, dacă α = πt1 . . . tr(π)

Evident, αθ ∈ AT OM .
1.1. SINTAXA LIMBAJELOR DE PRIM ORDIN 15

Definiţia 1.1.12 Fie α ∈ F ORM \AT OM , θ ∈ SU BST. Rezultatul aplicării substituţiei


θ atomului α, notat αθ, este definit prin:
(i) dacă θ = ε atunci αθ = α
(ii) dacă θ = {t1 | x1 , . . . , tn | xn } atunci,


 (¬βθ) , dacă α = (¬β) ,



 (βθργθ) , dacă α = (βθργθ) , ρ ∈ L \ {¬} ,

∀xβθ, dacă α = ∀xβşi x ∈ / {x1 , . . . , xn } ,
αθ =

 ∃xβθ, dacă α = ∃xβ şi x ∈ / {x1 , . . . , xn } ,

 0

 αθ , dacă α = ∃xβ sau α = ∀xβ şi x = xi ∈ {x1 , . . . , xn } ,
 0
θ = θ \ {ti | xi } .

Evident, pentru orice α ∈ F ORM şi θ ∈ SU BST , αθ ∈ F ORM .

Observaţia 1.1.11 Din Definiţiile 1.1.10, 1.1.11, 1.1.12 rezultă că dacă α ∈ F ORM ∪
T ERM , θ ∈ SU BST atunci αθ rezultă prin substituirea variabilelor libere din α prin
termenii pereche corespunzători ı̂n substituţia θ. În particular, dacă α ∈ F ORM0 atunci
αθ = α pentru orice θ ∈ SU BST.

Exemplul 1.1.6 Fie formulele


α1 = (∃y $ +xyz →< xz) ,
α2 = ∃y ($ +xyz →< xz) ,
α3 = ($ +xyz →< xz) ,
α4 = ∀x∀z ($ +xyz → ∃y < xz) .

În limbajul de prim ordin al aritmeticii şi θ = {+S0z | x, ∗zz | y, SS0 | z } .


Rezultă,
F V (α1 ) = F V (α2 ) = {x, z} ,
F V (α3 ) = {x, y, z} ,
F V (α4 ) = ∅.
α1 θ = ∗ (∃y $ + + S0zySS0 →< +S0zSS0) ,
α2 θ = ∃y ($ + + S0zySS0 →< +S0zSS0) ,
α3 θ = ($ + + S0z ∗ zzSS0 →< +S0zSS0) ,
α4 θ = α4 .
Definiţia 1.1.13 Fie λ, θ ∈ SU BST. Compunerea substituţiilor λ, θ, notată λ· θ este
definită prin,
(i) dacă θ = ε atunci λ· θ = λ
(ii) dacă λ = ε atunci λ· θ = θ
(iii) dacă θ 6= ε şi λ 6= ε atunci λ· θ rezultă din mulţimea
{t1 θ | x1 , . . . , tn θ | xn , s1 | y1 , . . . , sm | ym }
prin eliminarea perechilor ti θ | xi pentru care ti θ = xi şi a perechilor sj | yj pentru
care yj ∈ {x1 , . . . , xn }, unde
λ = {t1 | x1 , . . . , tn | xn } ,
θ = {s1 | y1 , . . . , sm | ym } .
16 CAPITOLUL 1. LIMBAJE DE PRIM ORDIN

Exemplul 1.1.7 Fie λ = {+SySz | x, x | y} , θ = {y | x, x | z} .


Din mulţimea

{+SyθSzθ | x, xθ | y, y | x, x | z} = {+SySx | x, y | y, y | x, x | z}

prin eliminarea perechilor y | y, y | x rezultă

λ · θ = {+SySx | x, x | z} .

Din mulţimea

{yλ | x, xλ | z, +SySz | x, x | y} = {x | x, + SySz | z, +SySz | x, x | y}

prin eliminarea perechilor x | x şi +SySz | x, rezultă

θ · λ = {+SySz | z, x | y} .

Observaţia 1.1.12 Operaţia de compunere a substituţiilor nu este comutativă. Pentru


orice λ, θ, η substituţii proprii λ · (θ · η) = (λ · θ) · η. Dacă E ∈ T ERM ∪ AT OM , atunci
E (λ · θ) = (Eλ) θ.

Definiţia 1.1.14 Fie E = {E1 , . . . , En } ⊂ T ERM ∪ AT OM. Substituţia θ este substi-


tuţie unificator pentru E dacă Ei θ = Ej θ, 1 ≤ i, j ≤ n. Mulţimea E este unificabilă dacă
există substituţie unificator pentru E. Dacă θ este substituţie unificator pentru E spunem
că Eθ = {E1 θ} este singleton.

Exemplul 1.1.8 Fie E = {f gxhf ab, f yhz} unde f, g, h ∈ F S, r (f ) = 2, r (g) = r (h) =


1, x, y, z ∈ V , a, b ∈ CS. Pentru θ = {gx | y, f ab | z} obţinem f gxhf abθ = f yhzθ =
f gxhf ab deci θ este substituţie unificator pentru E.

Definiţia 1.1.15 Fie E mulţime unificabilă. Substituţia unificator σ este un cel mai
general unificator pentru E dacă pentru orice substituţie unificator θ există λ ∈ SU BST
astfel ı̂ncât θ = σ · λ. Substituţia cel mai general unificator este referită prin termenul de
mgu (most general unifier) pentru mulţimea dată.

Definiţia 1.1.16 Dezacordul D (E) al mulţimii E = {E1 , . . . , En } ⊂ T ERM ∪ AT OM


este mulţimea rezultată prin reţinerea câte unei subexpresii din fiecare expresie din E
ı̂ncepând cu prima poziţie ı̂n ordinea de la stânga la dreapta ı̂n care cel puţin două expresii
diferă.

Observaţia 1.1.13 Arborii de structură corespunzători elementelor din D (E) sunt sub-
arborii arborilor de structură ai expresiilor din E având rădăcinile primele vârfuri (ı̂n
traversarea top-down şi left-to-right) cu etichete distincte.

Exemplul 1.1.9 Fie


E1 = f gxgxyhby,
E2 = f gxzaha,
E3 = f gxhabz,
unde f, g, h ∈ F S, r (f ) = 3, r (g) = 2, r (h) = 1, x, y, z ∈ V , a, b ∈ CS. Dezacordul
multimii E = {E1 , E2 , E3 } este D (E) = {gxy, z, ha} .
Arborii de structură corespunzători termenilor E1 , E2 , E3 sunt:
1.1. SINTAXA LIMBAJELOR DE PRIM ORDIN 17

f
.↓&
g h y
T (E1 ) : .↓ ↓
x g b
.&
x y
f
.↓&
T (E2 ) : g a h
.↓ ↓
x z a
f
.↓&
g h z
T (E3 ) : .↓ ↓
x h b

a
Arborii de structură corespunzători termenilor din mulţimea D (E) sunt

g
T (gxy) : .&
x y

T (z) : z
h
T (z) : ↓
a
Verificarea proprietăţii că o mulţime E ⊂ T ERM ∪ AT OM este unificabilă/neuni-
ficabilă şi calculul unui mgu ı̂n cazul ı̂n care E este unificabilă pot fi realizate pe baza
procedurii de unificare Robinson.
procedure UnificareRobinson(E:MultimeExpresii);
W0 ← E; σ0 ← ε; k ← 0; gata ← f alse;
repeat
if (Wk este singleton) then
write (’E este unificabilă ’, σk ,’ mgu pentru E’);
gata ← true
else
calculeaza(Wk , Dk );
if exista(x, t, Dk ) then
alege(xk , tk , Dk );
Wk+1 ← Wk {tk | xk } ;
σk+1 ← σk · {tk | xk } ;
k ←k+1
18 CAPITOLUL 1. LIMBAJE DE PRIM ORDIN

else
write(’E nu este unificabilă’);
gata ← true
endif
endif
until gata
end;

Apelurile de proceduri iniţiate de procedura UnificareRobinson determină următoa-


rele acţiuni:

• calculeaza (W, D): calculează D dezacordul mulţimii W,

• exista (x, t, D) : returnează true dacă şi numai dacă există x ∈ V ∩ D şi există
t ∈ T ERM ∩ D astfel ı̂ncât t ixh,

• alege (x, t, D) : selectează x ∈ V ∩ D şi t ∈ T ERM ∩ D astfel ı̂ncât t ixh.

Teorema 1.1.1 (Teorema de unificare Robinson) Procedura UnificareRobinson


este un algoritm care decide corect asupra proprietăţii de a fi unificabilă respectiv neu-
ni-ficabilă a mulţimii E. Dacă E este unificabilă şi calculul se termină cu Wk singleton,
atunci σk este un mgu pentru E.
Demonstraţie. Deoarece σk , k = 0, 1, . . . sunt substituţii proprii şi Wk+1 = Wk {tk | xk }
rezultă Wk hxk i şi Wk+1 ixk h. Evident, pentru orice k > 0, şi orice p > k + 1, Wp ixk h.
În consecinţă numărul de variabile cu ocurenţe ı̂n expresiile din mulţimea curentă Wk
descreşte la fiecare pas al buclei repeat−until, deci după un număr finit de etape expresiile
mulţimii curente Wk nu vor mai conţine simboluri din V, stare ı̂n care, evident, una din
cele două condiţii care determină terminarea calculului este ı̂ndeplinită.
Demonstrăm prin inducţie că pentru orice k > 0, Wk = Eσk . Proprietatea este
evidentă pentru k = 0. Deoarece substituţiile calculate de algoritm sunt substituţii proprii,
dacă nici una din condiţiile terminale nu este ı̂ndeplinită la pasul k si presupunând că
Wk = Eσk , rezultă

Wk+1 = Wk {tk | xk } = (Eσk ) {tk | xk } = E (σk · {tk | xk }) = Eσk+1 .

Presupunem că mulţimea E este unificabilă. Fie θ substituţie unificator pentru E.


Demonstrăm că pentru orice k > 0 există λk ∈ SU BST astfel ı̂ncât θ = σk · λk . Deoarece
σ0 = ε pentru λ0 = θ obţinem σ0 · λ0 = θ. Presupunem că există λp ∈ SU BST astfel
ı̂ncât θ = σp · λp , pentru p = 0, 1, . . . , k.
a) Dacă Wk este singleton atunci calculul se termină cu decizia 0 E este unif icabilă0 şi
σk este 0 mgu pentru E 0 . Deoarece Wk = Eσk rezultă σk este substituţie unificator pentru
E. În plus, cum substituţia unificator θ pentru E este arbitrară şi există λk ∈ SU BST
astfel ı̂ncât θ = σk · λk , rezultă că substituţia σk calculată de algoritm este ı̂ntr-adevăr
mgu pentru E.
b) Dacă Wk nu este singleton atunci apelul calculeaza (Wk , Dk ) determină evaluarea
mulţimii dezacord Dk = D (Wk ). Deoarece Wk nu este singleton, mulţimea Dk conţine
cel puţin două elemente. Mulţimea Eθ este singleton şi

Eθ = E (σk · λk ) = (Eσk ) λk = Wk λk ,
1.1. SINTAXA LIMBAJELOR DE PRIM ORDIN 19

deci λk este substituţie unificator pentru Dk ceea ce implică t1 λk = t2 λk pentru orice


t1 , t2 ∈ Dk .
Fie t1 , t2 ∈ Dk , t1 6= t2 arbitrare. Evident dacă t1 = f1 s1 . . . sp1 şi t2 = f2 d1 . . . dp2 unde
fi ∈ F S ∪ P S, i = 1, 2, cum t1 λk = t2 λk rezultă f1 = f2 . În concluzie, toate structurile
t ∈ (T ERM ∪ AT OM ) ∩ Dk şi care nu sunt simboluri din V au acelaşi prim simbol.
Dacă {t1 , t2 } ⊂ CS ∩ Dk atunci ti = ti λk , i = 1, 2 ceea ce implică t1 λk 6= t2 λk . În
consecinţă, mulţimea CS ∩ Dk are cel mult un element. Pe baza argumentelor considerate
rezultă că există x ∈ V ∩ Dk şi t ∈ T ERM ∩ Dk , t 6= x. Evident x, t nu pot fi unificate de
λk dacă t hxi, deci t ixh . Rezultă că apelul exista (x, t, Dk ) returnează true deci calculul
continuă cel puţin ı̂ncă o etapă. În particular rezultă t ixh pentru orice x ∈ V ∩ Dk şi
t ∈ T ERM ∩ Dk astfel ı̂ncât t 6= x. Fie xk ∈ V ∩ Dk , tk ∈ T ERM ∩ Dk selectate prin
apelul alege (xk , tk , Dk ) deci Wk+1 = Wk {tk | xk } şi σk+1 = σk · {tk | xk } .
Definim λk+1 = λk \ {tk λk | xk }. Deoarece tk ixk h si Wk+1 ixk h obţinem tk λk+1 = tk λk ,

Wk+1 λk+1 = (Wk {tk | xk }) (λk \ {tk λk | xk })


= Wk ({tk | xk } · (λk \ {tk λk | xk }))
= Wk ({tk λk | xk } ∪ (λk \ {tk λk | xk })) = Wk λk = Eθ.

deci λk+1 este substituţie unificator pentru D (Wk+1 ) .


De asemenea,

σk+1 · λk+1 = (σk · {tk | xk }) · λk+1 = σk · ({tk | xk } · λk+1 ) = σk · λk = θ

În concluzie, dacă E este unificabilă atunci există k > 0 astfel ı̂ncât Wk este singleton
deci algoritmul decide corect şi calculează σk mgu pentru E.
Presupunem că mulţimea E nu este unificabilă. Deoarece pentru orice k > 0, Wk =
Eσk rezultă că pentru orice k > 0, Wk nu este singleton. În consecinţă, terminarea
calculului rezultă prin returnarea valorii f alse de apelul exista (x, t, Dk ) pentru anume
k > 0, deci şi ı̂n acest caz decizia algoritmului este corectă. ¥

Observaţia 1.1.14 Mecanismul de unificare descris de procedura UnificareRobinson


revine la tentativa de ’reparare’ a dezacordurilor existente ı̂n structurile simbolice din
mulţimea E,prin aplicarea, atunci când este posibil, de substituţii cu efect de unificare
local. Din argumentele stabilite ı̂n demonstraţia Teoremei 1.1.1 obţinem că dezacordurile
’nereparabile’ sunt de două categorii:

a) t1 ∈
/ V , t2 ∈
/ V şi f rontchar (t1 ) 6= f rontchar (t2 ), unde f rontchar (t) reprezintă
primul simbol al structurii t,

b) t1 ∈ V , t2 ∈
/ V şi t2 ht1 i.

Exemplul 1.1.10 Fie E = {πxf xas, πyf gtagz, πxf uwgv, πzf uagv}, π ∈ P S, r (π) =
3, f, g ∈ F S, r (f ) = 2, r (g) = 1, a ∈ CS, u, v, t, s, x, y, z ∈ V .
Aplicarea procedurii UnificareRobinson mulţimii E determină următoarea evoluţie:
k = 0, σ0 = ε, W0 = {πxf xas, πyf gtagz, πxf uwgv, πzf uagv}
calculeaza(W0 , D0 ) ⇒ D0 ={ x, y, z}
exista(x, t, D0 ) ⇒ true
alege( x0 , t0 , D0 ) ⇒ x0 = y, t0 = x
W1 ← W0 {x | y} = {πxf xas, πxf gtagz, πxf uwgv, πzf uagv}
σ1 ← σ0 · {x | y} = {x | y}
20 CAPITOLUL 1. LIMBAJE DE PRIM ORDIN

k←1
k = 1, σ1 = {x | y} , W1 = {πxf xas, πxf gtagz, πxf uwgv, πzf uagv}
calculeaza(W1 , D1 ) ⇒ D1 ={x, z}
exista(x, t, D1 ) ⇒ true
alege(x1 , t1 , D1 ) ⇒ x1 = z, t1 = x
W2 ← W1 {x | z} = {πxf xas, πxf gtagx, πxf uwgv, πxf uagv}
σ2 ← σ1 · {x | z} = {x | y, x | z}
k←2
k = 2, σ2 = {x | y, x | z} , W2 = {πxf xas, πxf gtagx, πxf uwgv, πxf uagv}
calculeaza(W2 , D2 ) ⇒ D2 ={ x, gt, u}
exista(x, t, D2 ) ⇒ true
alege(x2 , t2 , D2 ) ⇒ x2 = x, t2 = gt
W3 ← W2 {gt | x} = {πgtf gtas, πgtf gtaggt, πgtf uwgv, πgtf uagv}
σ3 ← σ2 · {gt | x} = {gt | y, gt | z, gt | x}
k←3
k = 3, σ3 = {gt | y, gt | z, gt | x} , W3 = {πgtf gtas, πgtf gtaggt, πgtf uwgv, πgtf uagv}
calculeaza(W3 , D3 ) ⇒ D3 ={ gt, u}
exista(x, t, D3 ) ⇒ true
alege(x3 , t3 , D3 ) ⇒ x3 = u,t3 = gt
W4 ← W3 {gt | u} = {πgtf gtas, πgtf gtaggt, πgtf gtwgv, πgtf gtagv}
σ4 ← σ3 · {gt | u} = {gt | y, gt | z, gt | x, gt | u}
k←4
k = 4, σ4 = {gt | y, gt | z, gt | x, gt | u} , W4 = {πgtf gtas, πgtf gtaggt, πgtf gtwgv, πgtf gtagv}
calculeaza(W4 , D4 ) ⇒ D4 ={a, w}
exista(x, t, D4 ) ⇒ true
alege(x4 , t4 , D4 ) ⇒ x4 = w, t4 = a
W5 ← W4 {a | w} = {πgtf gtas, πgtf gtaggt, πgtf gtagv}
σ5 ← σ4 · {a | w} = {gt | y, gt | z, gt | x, gt | u, a | w}
k←5
k = 5, σ5 = {gt | y, gt | z, gt | x, gt | u, a | w} , W5 = {πgtf gtas, πgtf gtaggt, πgtf gtagv}
calculeaza(W5 , D5 ) ⇒ D5 ={ s, ggt, gv}
exista(x, t, D5 ) ⇒ true
alege(x5 , t5 , D5 ) ⇒ x5 = s, t5 = gv
W6 ← W5 {gv | s} = {πgtf gtagv, πgtf gtaggt}
σ6 ← σ5 · {gv | s} = {gt | y, gt | z, gt | x, gt | u, a | w, gv | s}
k←6
k = 6,σ6 = {gt | y, gt | z, gt | x, gt | u, a | w, gv | s} , W6 = {πgtf gtagv, πgtf gtaggt}
calculeaza( W6 , D6 ) ⇒ D6 ={v, gt}
exista(x, t, D6 ) ⇒ true
alege(x6 , t6 , D6 ) ⇒ x6 = v, t6 = gt
W7 ← W6 {gt | v} = { πgtf gtaggt}
σ7 ← σ6 · {gt | v} = {gt | y, gt | z, gt | x, gt | u, a | w, gv | s, gt | v}
k←6
k = 7; W7 este singleton⇒
E este unificabilă, {gt | y, gt | z, gt | x, gt | u, a | w, gv | s, gt | v} mgu pentru E

Exemplul 1.1.11 Fie E = {f gxyhzgahx, f ghazhhygaha} unde f, g, h ∈ F S, r (f ) = 3,


r (g) = 2, r (h) = 1, a ∈ CS, x, y, z ∈ V
1.1. SINTAXA LIMBAJELOR DE PRIM ORDIN 21

Aplicarea procedurii U nif icareRobinson mulţimii E determină umătoarea evoluţie:


k = 0, σ0 = ε, W0 = {f gxyhzgahx, f ghazhhygaha}
calculeaza (W0 , D0 ) ⇒ D0 = {x, ha}
exista (x, t, D0 ) ⇒ true
alege (x0 , t0 , D0 ) ⇒ x0 = x, t0 = ha
W1 ← W0 {ha | x} = {f ghayhzgahha, f ghazhhygaha}
σ1 ← σ0 · {ha | x} = {ha | x}
k←1
k = 1, σ1 = {ha | x} , W1 = {f ghayhzgahha, f ghazhhygaha}
calculeaza (W1 , D1 ) ⇒ D1 = {y, z}
exista (x, t, D1 ) ⇒ true
alege (x1 , t1 , D1 ) ⇒ x1 = z, t1 = y
W2 ← W1 {y | z} = {f ghayhygahha, f ghayhhygaha}
σ2 ← σ1 · {y | z} = {ha | x, y | z}
k←2
k = 2, σ2 = {ha | x, y | z} , W2 = {f ghayhygahha, f ghayhhygaha}
calculeaza (W2 , D2 ) ⇒ D2 = {y, hy}
exista (x, t, D2 ) ⇒ f alse
⇒ E nu este unif icabilă

Exemplul 1.1.12 Fie E = {f xf xy, f gyf guz} unde f, g ∈ F S, r (f ) = 2, r (g) = 1,


x, y, z ∈ V
Pentru θ = {gga | x, ga | u, ga | y, ga | z} obţinem Eθ = {f ggaf ggaga} deci E este
unificabilă şi θ este substituţie unificator pentru E.
Calculul substituţiilor λk astfel ı̂ncât pentru orice k > 0, θ = σk · λk unde σk rezultă
prin aplicarea procedurii U nif icareRobinson mulţimii E:
k = 0, σ0 = ε, W0 = {f xf xy, f gyf guz} , λ0 = θ
calculeaza (W0 , D0 ) ⇒ D0 = {x, gy}
exista (x, t, D0 ) ⇒ true
alege (x0 , t0 , D0 ) ⇒ x0 = x, t0 = gy
W1 ← W0 {gy | x} = {f gyf gyy, f gyf guz}
σ1 ← σ0 · {gy | x} = {gy | x}
λ1 ← λ0 \ {gyλ0 | x} = { ga | u, ga | y, ga | z}
k←1
k = 1, σ1 = {gy | x} , W1 = {f gyf gyy, f gyf guz}
calculeaza (W1 , D1 ) ⇒ D1 = {u, y}
exista (x, t, D1 ) ⇒ true
alege (x1 , t1 , D1 ) ⇒ x1 = u, t1 = y
W2 ← W1 {y | u} = {f gyf gyy, f gyf gyz}
σ2 ← σ1 · {y | u} = {gy | x, y | u}
λ2 ← λ1 \ {yλ1 | u} = { ga | y, ga | z}
k←2
k = 2, σ2 = {gy | x, y | u} , W2 = {f gyf gyy, f gyf gyz}
calculeaza (W2 , D2 ) ⇒ D2 = {y, z}
exista (x, t, D2 ) ⇒ true
alege (x2 , t2 , D2 ) ⇒ x2 = y, t2 = z
W3 ← W2 {z | y} = {f gzf gzz}
σ3 ← σ2 · {z | y} = {z | y, gy | x, y | u}
22 CAPITOLUL 1. LIMBAJE DE PRIM ORDIN

λ3 ← λ2 \ {zλ2 | y} = { ga | z}
k←3
k = 3, W3 este singleton ⇒
E este unif icabilă, {z | y, gy | x, y | u} mgu pentru E

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