Documente Academic
Documente Profesional
Documente Cultură
3 / 46
Logica de ordinul I
4 / 46
Limbaje de ordinul I
5 / 46
Logica de ordinul I
Exemplu
Un limbaj L de ordinul I în care:
R = {P, R}
F = {f}
C = {c}
ari(P) = 1, ari(R) = 2, ari(f) = 2
6 / 46
Sintaxa Prolog
Atenţie!
În sintaxa Prolog
termenii compuşi sunt predicate: father(eddard, jon_snow)
operatorii sunt funcţii: +, *, mod
7 / 46
Logica de ordinul I
Exemplu
8 / 46
Logica de ordinul I
Exemplu
9 / 46
Logica de ordinul I
Exemplu
10 / 46
Logica de ordinul I
Exemplu
Fie limbajul L1 cu R = {<}, F = {s, +}, C = {0} şi
ari(s) = 1, ari(+) = ari(<) = 2.
Exemple de termeni:
0, x, s(0), s(s(0)), s(x), s(s(x)), . . .,
+(0, 0), +(s(s(0)), +(0, s(0))), +(x, s(0)), +(x, s(x)), . . .,
Exemple de formule atomice:
< (0, 0), < (x, 0), < (s(s(x)), s(0)), . . .
Exemple de formule:
∀x ∀y < (x, +(x, y))
∀x < (x, s(x))
11 / 46
Semantica
12 / 46
Modelarea unei lumi
13 / 46
Modelarea unei lumi
Exemplu Example U
NI VER
S
IT
TH
Y
O F
H
G
E
R
Să considerăm o lume în care avem cutii:
D I U
N B
d
c
a b
base
on = {(e, c), (c, a), (e, d), (d, b), (a, base), (b, base)}
Definiţie
O structură este de forma A = (A, FA , RA , CA ), unde
A este o mulţime nevidă
FA = {fA | f ∈ F} este o mulţime de operaţii pe A;
dacă f are aritatea n, atunci fA : An → A.
RA = {RA | R ∈ R} este o mulţime de relaţii pe A;
dacă R are aritatea n, atunci RA ⊆ An .
CA = {cA ∈ A | c ∈ C}.
15 / 46
Structură
Exemplu
Lumea în care avem cutii.
Limbajul L
R = {on}
F=∅
C=∅
ari(on) = 2
O structură A:
A = {base, a, b, c, d, e}
FA = ∅.
CA = ∅.
RA = {onA }, unde
onA = {(e, c), (c, a), (e, d), (d, b), (a, base), (b, base)} ⊆ A2 .
16 / 46
Structură
Exemplu
L1 : R = {<}, F = {s, +}, C = {0} cu ari(s) = 1, ari(+) = ari(<) = 2.
sN : N → N, sN (n) := n + 1,
+N : N × N → N, +N (n, m) := n + m,
0N := 0
17 / 46
Interpretare
Definiţie
O interpretare a variabilelor lui L în A este o funcţie
I : V → A.
Definiţie
Inductiv, definim interpretarea termenului t în A sub I (tA
I ) prin:
dacă t = xi ∈ V, atunci tA
I := I(xi )
dacă t = c ∈ C, atunci tA
I := c
A
18 / 46
Interpretare
19 / 46
Interpretare
20 / 46
Model
Exemplu
Fie limbajul L cu F = {s}, R = {P}, C = {0} cu ari(s) = ari(P) = 1.
Fie structura N = (N, sN , PN , 0N ) unde 0N := 1 şi
sN : N → N, sN (n) := n2
PN ⊂ N, PN = {n | n este impar }
Demonstraţi că N |= ∀x (P(x) → P(s(x))).
Fie I : V → N o interpretare. Observăm că
N , I |= P(x) dacă PN (I(x)), adică N , I |= P(x) dacă I(x) este impar.
N , I |= ∀x (P(x) → P(s(x))) dacă
N , Ix←n |= P(x) → P(s(x)) oricare n ∈ N
N , Ix←n ̸|= P(x) sau N , Ix←n |= P(s(x)) oricare n ∈ N
Ix←n (x) nu este impar sau Ix←n (s(x)) este impar oricare n ∈ N
n este par sau n2 este impar oricare n ∈ N
ceea ce este întodeauna adevărat.
21 / 46
Consecinţă logică
Definiţie
O formulă φ este o consecinţă logică a formulelor φ1 , . . . , φn , notat
φ1 , . . . , φn |= φ,
Problemă semidecidabilă!
Nu există algoritm care să decidă mereu dacă o formula este sau nu
consecinţă logică a altei formule în logica de ordinul I!
22 / 46
Logica clauzelor definite
23 / 46
Programare logica
24 / 46
Logica clauzelor definite
Exemplu
Fie următoarele clauze definite:
father(jon, ken).
father(ken, liz).
father(X, Y) → ancestor(X, Y)
dauther(X, Y) → ancestor(Y, X)
ancestor(X, Y) ∧ ancestor(Y, Z) → ancestor(X, Z)
Putem întreba:
ancestor(jon, liz)
ancestor(Q, ken) adică ∃Q ancestor(Q, ken)
25 / 46
Substituţii şi unificare
26 / 46
Substituţii
Definiţie
O subtituţie σ este o funcţie (parţială) de la variabile la termeni, adică
σ : V → TrmL
Exemplu
În notaţia uzuală, σ = {x/a, y/g(w), z/b}.
27 / 46
Substituţii
Exemplu
substituţia σ = {x/a, y/g(w), z/b}
σ(P(x, g(x), y)) = P(a, g(a), g(w))
28 / 46
Substituţii
σ1 ; σ2
Exemplu
t = P(u, v, x, y, z)
τ = {x/f(y), y/f(a), z/u}
µ = {y/g(a), u/z, v/f(f(a))}
29 / 46
Unificare
30 / 46
Unificator
Exemplu
t = x + (y ⋆ y) = +(x, ⋆(y, y))
t′ = x + (y ⋆ x) = +(x, ⋆(y, x))
ν = {x/y, y/y}
ν(t) = y + (y ⋆ y)
ν(t′ ) = y + (y ⋆ y)
ν este cgu
ν ′ = {x/0, y/0}
ν ′ (t) = 0 + (0 ⋆ 0)
ν ′ (t′ ) = 0 + (0 ⋆ 0)
ν ′ = ν; {y/0}
ν ′ este unificator, dar nu este gcu
31 / 46
Algoritmul de unificare
Iniţial:
Lista soluţie: S = ∅
· ·
Lista de rezolvat: R = {t1 = t2 , . . . , tn−1 = tn }
·
= este un simbol nou care ne ajută sa formăm perechi de termeni
(ecuaţii).
32 / 46
Algoritmul de unificare
DESCOMPUNE
·
orice ecuaţie de forma f(t1 , . . . , tn ) = f(t′1 , . . . , t′n ) din R este
· ·
înlocuită cu ecuaţiile t1 = t′1 , . . . , tn = t′n .
REZOLVĂ
· ·
orice ecuaţie de forma x = t sau t = x din R, unde variabila x nu
·
apare în termenul t, este mutată sub forma x = t în S.
În toate celelalte ecuaţii (din R şi S), x este înlocuit cu t.
33 / 46
Algoritmul de unificare
34 / 46
Algoritmul de unificare - schemă
35 / 46
Exemplu
Exemplu
· ·
Ecuaţiile {g(y) = x, f(x, h(x), y) = f(g(z), w, z)} au gcu?
S R
· ·
∅ g(y) = x, f(x, h(x), y) = f(g(z), w, z) REZOLVĂ
· ·
x = g(y) f(g(y), h(g(y)), y) = f(g(z), w, z) DESCOMPUNE
· · · ·
x = g(y) g(y) = g(z), h(g(y)) = w, y = z REZOLVĂ
· · ·
w = h(g(y)), g(y) = g(z), y = z REZOLVĂ
·
x = g(y)
· · ·
y = z, x = g(z), g(z) = g(z) SCOATE
·
w = h(g(z))
· ·
y = z, x = g(z), ∅
·
w = h(g(z))
36 / 46
Exemplu
Exemplu
· ·
Ecuaţiile {g(y) = x, f(x, h(y), y) = f(g(z), b, z)} au gcu?
S R
· ·
∅ g(y) = x, f(x, h(y), y) = f(g(z), b, z) REZOLVĂ
· ·
x = g(y) f(g(y), h(y), y) = f(g(z), b, z) DESCOMPUNE
· · · ·
x = g(y) g(y) = g(z), h(y) = b, y = z - EŞEC -
37 / 46
Exemplu
Exemplu
· ·
Ecuaţiile {g(y) = x, f(x, h(x), y) = f(y, w, z)} au gcu?
S R
· ·
∅ g(y) = x, f(x, h(x), y) = f(y, w, z) REZOLVĂ
· ·
x = g(y) f(g(y), h(g(y)), y) = f(y, w, z) DESCOMPUNE
· · · ·
x = g(y) g(y) = y, h(g(y)) = w, y = z - EŞEC -
·
În ecuaţia g(y) = y, variabila y apare în termenul g(y).
Nu există unificator pentru ecuaţiile din U.
38 / 46
Terminarea algoritmului
Propoziţie
Algoritmul de unificare se termină.
Demonstraţie
Notăm cu
N1 : numărul variabilelor care apar în R
N2 : numărul apariţiilor simbolurilor care apar în R
Este suficient să arătăm că perechea (N1 , N2 ) descreşte strict în
ordine lexicografică la execuţia unui pas al algoritmului:
dacă la execuţia unui pas (N1 , N2 ) se schimbă în (N′1 , N′2 ), atunci
(N1 , N2 ) ≥lex (N′1 , N′2 )
39 / 46
Demonstraţie (cont.)
Fiecare regulă a algoritmului modifică N1 şi N2 astfel:
N1 N2
SCOATE ≥ >
DESCOMPUNE = >
REZOLVĂ >
40 / 46
Corectitudinea algoritmului
Lema 1
Mulţimea unificatorilor pentru reuniunea ecuaţiilor din R şi S nu se
modifică prin aplicarea celor trei reguli ale algoritmului de unificare.
Demonstraţie
Analizăm fiecare regulă:
SCOATE: evident
DESCOMPUNE: Trebuie să arătăm că
ν unificator pt. ⇔ ν unificator pt.
· ·
f(t1 , . . . , tn ) = f(t′1 , . . . , t′n ) ti = t′i , or. i = 1, . . . , n.
·
ν unif. pt. f(t1 , . . . , tn ) = f(t′1 , . . . , t′n )
⇔ ν(f(t1 , . . . , tn )) = ν(f(t′1 , . . . , t′n ))
⇔ f(ν(t1 ), . . . , ν(tn )) = f(ν(t′1 ), . . . , ν(t′n ))
⇔ ν(ti ) = ν(t′i ), or. i = 1, . . . , n
·
⇔ ν unificator pt. ti = t′i , or. i = 1, . . . , n
41 / 46
Demonstraţie (cont.)
REZOLVĂ:
Se observă că or. unificator ν pt. reuniunea ecuaţiile din R şi S, atât
înainte cât şi după aplicarea regulii REZOLVĂ, trebuie să satisfacă:
ν(x) = ν(t).
·
Pt. or. unificator µ pt. x = t observăm că:
(x ← t); µ = µ
unde (x ← t)(x) = t şi (x ← t)(y) = y pentru orice y ̸= x ∈ V.
((x ← t); µ)(x) = µ(t) = µ(x)
((x ← t); µ)(y) = µ(y), or. y ̸= x
Deci,
µ este un unificator pt. ec. din R şi S înainte de REZOLVĂ
⇔
µ este un unificator pt. ec. din R şi S după REZOLVĂ
42 / 46
Corectitudinea algoritmului
Lema 2
Variabilele care apar în partea stângă a ecuaţiilor din S sunt distincte
două câte două şi nu mai apar în altă parte în S şi R.
Demonstraţie
Exerciţiu!
43 / 46
Corectitudinea algoritmului
44 / 46
Corectitudinea algoritmului
Lema 3
ν definit mai sus cf. algoritmului de unificare este cgu pentru U.
Demonstraţie
Exerciţiu!
45 / 46
Pe săptămâna viitoare!
46 / 46