Documente Academic
Documente Profesional
Documente Cultură
3
4 CUPRINS
Capitolul 1
5
6 CAPITOLUL 1. LIMBAJE DE PRIM ORDIN
(i) ti ∈ V ∪ CS
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.
ı̂mpreună cu regula suplimentară ca numărul de termeni din lista de argumente să fie egal
cu aritatea simbolului functorial respectiv.
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
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
ı̂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
(iii) există 1 ≤ j, k < i şi există ρ ∈ L8 {¬} astfel ı̂ncât αi = (αj ραk )
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.
hconectivai → ∧| ∨ | → | ↔
hcuantif icatori → ∀|∃
hf ormulai → hatomi | (¬ hf ormulai) | (hf ormulai hconectivai hf ormulai)
| hcuantif icatori hf ormulai
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
este SGF .
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
∅, 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ă.
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
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
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
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 } ,
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,
(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θ) .
Evident, αθ ∈ AT OM .
1.1. SINTAXA LIMBAJELOR DE PRIM ORDIN 15
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.
{+SyθSzθ | x, xθ | y, y | x, x | z} = {+SySx | x, y | y, y | x, x | z}
λ · θ = {+SySx | x, x | z} .
Din mulţimea
θ · λ = {+SySz | z, x | y} .
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ă.
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.
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;
• 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,
Eθ = E (σk · λk ) = (Eσk ) λk = Wk λk ,
1.1. SINTAXA LIMBAJELOR DE PRIM ORDIN 19
Î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ă. ¥
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
λ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