Sunteți pe pagina 1din 52

Logica cu predicate de ordinul I

Curs 1 - Sintaxa

Ştefan Ciobâcă

28 Noiembrie 2016
Logică pentru Informatică - Partea a II-a

1. S, tefan Ciobâcă
2. http://profs.info.uaic.ro/~stefan.ciobaca/logica/
3. stefan.ciobaca@gmail.com
4. Consultat, ii - C508, mart, i de la 18 la 20.
Logica de predicate de ordinul I (LP1)

1. o nouă logică, mai expresivă decât LP


2. ı̂n engleză: first-order logic (FOL)
LP1 ı̂n loc de LP - motivat, ie

Vreau să modelez ı̂n LP următorul rat, ionament: “S, tiu că dacă sunt
om atunci sunt muritor s, i că sunt om. Deci sunt muritor.”
Fie p, q ∈ A două variabile propozit, ionale.
1. p - “sunt om”
2. q - “sunt muritor”
În logica propozit, ională, p → q, p |= q corespunde rat, ionamentului
de mai sus.
LP1 ı̂n loc de LP - motivat, ie

Vreau să modelez următorul rat, ionament: “S, tiu că dacă cineva
este om atunci acea persoană este muritor. S, tiu că Socrates este
om. Deci Socrates este muritor.”
(imposibil de modelat ı̂n LP).
Privire fugară ı̂n LP1:
1. P(x) - “x este om”
2. Q(x) - “x este muritor”
3. S - “Socrates”
În LP1, avem ∀x.(P(x) → Q(x)), P(S) |= Q(S).
LP1

1. variabile, simboluri funct, ionale, termeni


2. simboluri predicative, formule
3. pozit, ii
4. aparit, ii legate/libere, variabile legate/libere
5. substitut, ii
Not, iunea de termen (sau term)

1. Fixăm X - o mult, ime infinit numărabilă de simboluri numite


variabile (a nu se confunda cu variabilele propozit, ionale din
LP).
2. Fixăm F = F0 ∪ F1 ∪ F2 ∪ . . ., unde:
2.1 F0 este mult, imea simbolurilor funct, ionale de aritate 0.
2.2 F1 este mult, imea simbolurilor funct, ionale de aritate 1.
2.3 F2 este mult, imea simbolurilor funct, ionale de aritate 2.
2.4 ...
Not, iunea de termen (sau term)

F - mult, ime indexată de simboluri funct, ionale.


1. F0 - simboluri constante,
2. F1 - simboluri funct, ionale unare,
3. F2 - simboluri funct, ionale binare,
4. F3 - simboluri funct, ionale ternare,
5. Fn - simboluri funct, ionale n-are.

Exemplu
Fie X = {x, y , z, x1 , x2 , x3 , . . .}. Fie F0 = {c}, F1 = {h} s, i
F2 = {f , g }.
Not, iunea de termen (sau term)

Alfabetul termenilor este AlfT = {0 (0 ,0 )0 } ∪ X ∪ F0 ∪ F1 ∪ . . ..


Termenii sunt s, iruri de caractere peste AlfT , definit, i astfel:
Definit, ie
Mult, imea T (a termenilor) este definită inductiv astfel:
1. orice variabilă x ∈ X este termen: x ∈ T
2. orice simbol constant c ∈ F0 este termen: c ∈ T
3. dacă n ∈ {1, 2, . . .}, f ∈ Fn este un simbol funct, ional de
aritate n s, i t1 , t2 , . . . , tn ∈ T sunt termeni, atunci f (t1 , . . . , tn )
este termen.
Not, iunea de termen (sau term)
Exemplu
În continuarea exemplului de mai sus: fie
X = {x, y , z, x1 , x2 , x3 , . . .}. Fie F0 = {c}, F1 = {h} s, i
F2 = {f , g }, avem următorii termeni:

x ∈T y ∈T x3 ∈ T c∈T
h(x) ∈ T h(y ) ∈ T h(c) ∈ T
g (x, y ) ∈ T f (c, c) ∈ T f (c, y ) ∈ T
f (h(x), y ) ∈T g (h(c), h(c)) ∈ T  f (c, y ) ∈ T
 
f g f (x, y ), h(c) , f (c, c) ∈ T

1. orice variabilă x ∈ X este termen: x ∈ T


2. orice simbol constant c ∈ F0 este termen: c ∈ T
3. dacă n ∈ {1, 2, . . .}, f ∈ Fn este un simbol funct, ional de
aritate n s, i t1 , t2 , . . . , tn ∈ T sunt termeni, atunci f (t1 , . . . , tn )
este termen.
Formule atomice
Vom fixa ı̂n continuare o mult, ime indexată de simboluri predicative:

P = P0 ∪ P1 ∪ P2 ∪ . . . .

1. P0 este mult, imea simbolurilor predicative constante,


2. P1 este mult, imea simbolurilor predicative unare,
3. P2 este mult, imea simbolurilor predicative binare iar
4. Pn este mult, imea simbolurilor predicative n-are.

Definit, ie
Mult, imea At, a formulelor atomice, este definită astfel:
1. P0 ⊆ At,
2. dacă P ∈ Pn (cu n ≥ 1) s, i t1 , . . . , tn ∈ T , atunci
P(t1 , . . . , tn ) ∈ At.
Formule atomice

Exemplu
Fie P0 = {P}, P1 = {Q} s, i P2 = {R} (P3 = P4 = . . . = ∅).
Câteva exemple de formule atomice sunt:

P ∈ At
Q(x) ∈At  Q(c) ∈ At Q(f (f (x,y ), c)) ∈ At
R c, x ∈ At R h(x), f (x, y ) ∈ At
   
R f f (x, y ), f (x, y ) , h(c) ∈ At

Formulele atomice sunt s, iruri de caractere peste alfabetul


AlfAt = AlfT ∪ P0 ∪ P1 ∪ P2 ∪ . . . .
Formule LP1

Definit, ie
Mult, imea LP1 (formule din logica de ordinul I) este definită
inductiv astfel:
1. At ⊆ LP1;
2. Dacă F ∈ LP1, atunci (¬F ) ∈ LP1 s, i (F ) ∈ LP1;
3. Dacă F1 , F2 ∈ LP1, atunci (F1 ∧ F2 ) ∈ LP1, (F1 ∨ F2 ) ∈ LP1;
4. Dacă F ∈ LP1 s, i x ∈ X , atunci (∀x.F ) ∈ LP1 (s, i
(∃x.F ) ∈ LP1).
notat, ie
N.B. Vom considera următoarele notat, ii: F1 → F2 = ¬F1 ∨ F2 ,
notat, ie notat, ie
F1 ← F2 = F2 → F1 , F1 ↔ F2 = (F1 → F2 ) ∧ (F2 → F1 ).
Exemplu

 P ∈LP1
Q(x) ∈ LP1 R h(x), f (x, y ) ∈ LP1 (¬Q(f (x, y ))) ∈ LP1
  
(P ∧ Q(x)) ∈ LP1 Q(x) ∨ R h(x), f (x, y ) ∈ LP1
(Q(x) → R(x, y )) ∈ LP1 ((Q(x) ∧ P) ∨ Q(y )) ∈ LP1
(∀x.(Q(x) ∨ P)) ∈ LP1 ((∃x.Q(x)) ∨ (¬P)) ∈ LP1

1. At ⊆ LP1;
2. Dacă F ∈ LP1, atunci (¬F ) ∈ LP1 s, i (F ) ∈ LP1;
3. Dacă F1 , F2 ∈ LP1, atunci (F1 ∧ F2 ) ∈ LP1, (F1 ∨ F2 ) ∈ LP1
(s, i (F1 → F2 ) ∈ LP1);
4. Dacă F ∈ LP1 s, i x ∈ X , atunci (∀x.F ) ∈ LP1 (s, i
(∃x.F ) ∈ LP1).
Sumar

Mult, imea termenilor (T ):

t ::= x | c | f (t, . . . , t ) x ∈ X , c ∈ F0 , f ∈ Fn
| {z }
n

Mult, imea formulelor atomice (At):

a ::= P | Q(t, . . . , t ) P ∈ P0 , Q ∈ Pn
| {z }
n

Mult, imea formulelor de ordinul I (LP1):

F ::= a | (¬F ) | (F ) | (F ∨ F ) | (F ∧ F ) |
(F → F ) | (∀x.F ) | (∃x.F ) a ∈ At, x ∈ X
Exemplu

P1 = {P, Q}, F0 = {s}

1. P(x) - “x este om”


2. Q(x) - “x este muritor”
 
(∀x.(P(x) → Q(x))) ∧ P(s) → Q(s)
Exemplu

P2 = {L}

I L(x, y ) - “x ı̂l iubes, te pe y ”

1. (∀x.(∃y .L(x, y )))


“everybody has somebody whom they love” (Optimist)
2. (∃y .(∀x.L(x, y )))
“there is someone who everyone loves” (Popular)
3. (∀y .(∃x.L(x, y )))
“everyone is loved by someone” (Hopeless Romantic)
4. http://ctp200.com/comic/27
Arborele abstract asociat unui termen

c
1. dacă t = c, c ∈ F0 , atunci arb(t) =
x
2. dacă t = x, x ∈ X , atunci arb(t) =
3. dacă t = f (t1 , . . . , tn ), f ∈ Fn (n > 0), t1 , . . . , tn ∈ T , atunci
f

arb(t1 ) ... arb(tn )


arb(t) =
Arborele abstract asociat unui termen - exemplu

x h

y
arb(f (x, h(y ))) =
Arborele abstract asociat unei formule - ¬, ()

arb(F1 )
I dacă F = (¬F1 ), atunci arb(F ) =
I dacă F = (F1 ), atunci arb(F ) = arb(F1 )
Arborele abstract asociat unei formule - P(t1 , . . . , tn )

I dacă F = P(t1 , . . . , tn ), atunci


P

arb(t1 ) ... arb(tn )


arb(F ) =
Arborele abstract asociat unei formule - ∧

I dacă F = (F1 ∧ F2 ), atunci


arb(F1 ) arb(F2 )
arb(F ) =
Arborele abstract asociat unei formule - ∨

I dacă F = (F1 ∨ F2 ), atunci


arb(F1 ) arb(F2 )
arb(F ) =
Arborele abstract asociat unei formule - ∀

∀x

arb(F1 )
I dacă F = (∀x.F1 ), atunci arb(F ) =
Arborele abstract asociat unei formule - ∃

∃x

arb(F1 )
I dacă F = (∃x.F1 ), atunci arb(F ) =
Exemplu

∃x

Q P

x
arb((∃x.(Q(x) ∧ P))) =
Despre paranteze

La fel cum scriem −3 × 4 + 5 ı̂n loc de (((−3) × 4) + 5), vom


renunt, a la paranteze după cum urmează:

 scrie ¬P(x) ∧ Q(y


1. vom

) ∨ R(x,y ) ı̂n loc de

¬P(x) ∧ Q(y ) ∨ R(x, y ) (la fel ca la logica
propozit, ională).
Ordinea de prioritate: ¬, ∀, ∃, ∧, ∨, →.
Exemplu

∀x.(P(x) ∧ ¬Q(x) → R(x)) ı̂n loc de


  
(∀x. P(x) ∧ (¬Q(x)) → R(x) ) ı̂n loc de

When in doubt: use parantheses.


Pozit, iile unui termen

Definit, ie
O poziţie p este un şir de numere naturale n1 · . . . · nk . Pentru
k = 0, şirul vid este notat cu .

Exemplu
Spre exemplu, o poziţie este p = 0 · 2 · 1.
Pozit, iile unui termen

Definit, ie
Poziţiile ataşate unui termen, notate pos(t), sunt:
1. pos(c) = {}, dacă c ∈ F0
2. pos(x) = {}, dacă x ∈ X
S
3. pos(f (t1 , . . . , tn )) = {} ∪ i∈{1,...,n} i · pos(ti ), dacă f ∈ Fn .

În definitia de mai sus, am notat cu i · P mulţimea de poziţii


obţinută din P prin adăugarea numărului i ı̂n faţă:
i · P = {i · p | p ∈ P}.
Exemplu
Pentru t = f (g (a, b), y ), avem pos(t) = {, 1, 2, 1 · 1, 1 · 2}.
Pozit, iile unui termen

Exemplu
Pentru t = f (g (a, b), y ), avem pos(t) = {, 1, 2, 1 · 1, 1 · 2}.

f ()

g (1) y (2)

a (1 · 1) b (1 · 2)
Pozit, iile unui termen

Definit, ie
Fie t un termen şi fie p ∈ pos(t) o poziţie a termenului. Termenul
aflat la poziţia p ı̂n termenul t, notat t|p este definit astfel:
1. t| = t,
2. f (t1 , . . . , tn )|i·p = (ti )|p .

Exemplu
Pentru t = f (g (a, b), y ), şi p = 1, avem t|p = g (a, b). Dacă
q = 1 · 2, atunci t|q = b.
Pozit, iile unei formule

Funcţia pos se extinde si asupra formulelor:


Definit, ie
S
1. pos(P(t1 , . . . , tn )) = {} ∪ i∈{1,...,n} i · pos(ti ),
2. pos(¬F ) = {} ∪ 1 · pos(F ),
3. pos(F1 ∧ F2 ) = pos(F1 ∨ F2 ) = {} ∪ 1 · pos(F1 ) ∪ 2 · pos(F2 ),
4. pos(∀x.F1 ) = pos(∃x.F1 ) = {} ∪ 1 · pos(F1 ).
Pozit, iile unei formule

Termenul sau formula aflat/aflată la poziţia p ı̂n formula F ,


notat(ă) F |p este:
Definit, ie
1. F | = F ,
2. P(t1 , . . . , tn )|i·p = ti |p
3. (¬F )|1·p = F |p ,
4. (F1 ∧ F2 )|i·p = (F1 ∨ F2 )|i·p = (F1 → F2 )|i·p = (Fi )|p
(i ∈ {1, 2}),
5. (∀x.F1 )|1·p = (∃x.F1 )|1·p = (F1 )|p .
Exemplu
 
∀x.(P(x) ∧ Q(y )) |1·2 = Q(y )

∀x ()

∧ (1)

P (1 · 1) Q (1 · 2)

x (1 · 1 · 1) y (1 · 2 · 1)
Aparit, ii ale variabilelor

Mulţimea variabilelor unui termen t este notată var(t) şi este


definită astfel:
Definit, ie
1. var(c) = ∅ (dacă c ∈ F0 )
2. var(x) = {x} (dacă x ∈ X )
S
3. var(f (t1 , . . . , tn )) = i∈{1,...,n} var(ti )

Similar, se defineşte var(F ) ca fiind mulţimea variabilelor dintr-o


formulă F .
În mod alternativ,
var(t) = {x ∈ X | există p ∈ pos(t) a.i. t|p = x}.
Domeniul de vizibilitate al unei variabile - analogie

1: for (int x = 1; x <= 10; ++x) {


2: for (int x = 1; x <= 10; ++x) {
3: s++;
4: }
5: }

∀x.(Q(x) ∧ ∃x.P(x))
Domeniul de vizibilitate a “primei variabile” x (cea cuantificată
universal) este (Q(x) ∧ ∃x.P(x)), iar domeniul de vizibilitate a celei
de-a “doua variabile” x (cea cuantificată existent, ial) este P(x).
Aparit, ii ale variabilelor

Definit, ie
O apariţie a unei variabile x ı̂ntr-o formulă F (respectiv intr-un
termen t) este o pozitie p a.i. F |p = x (respectiv t|p = x).

Definit, ie
O apariţie p a unei variabile x ı̂ntr-o formulă F este legată dacă
există un prefix q a lui p astfel incât F |q = ∀x.G sau F |q = ∃x.G
(dacă pe drumul de la apariţia respectivă spre rădăcina arborelui
formulei găsim un nod ∀x sau ∃x).
O aparitie p a unei variabile x ı̂ntr-o formulă F este liberă dacă nu
este legată.
Exemplu

F = (∀x.P(x)) ∧ Q(x)

∧ ()

∀x (1) Q (2)

P (1 · 1) x (2 · 1)

x (1 · 1 · 1)
Aparit, ii ale variabilelor

Definit, ie
Mulţimea variabilelor unei formule care au cel puţin o apariţie
legată se notează bound(F ):
1. bound(P(t1 , . . . , tn )) = ∅,
2. bound(¬F1 ) = bound(F1 ),
3. bound(F1 ∧ F2 ) = bound(F1 ∨ F2 ) = bound(F1 → F2 ) =
bound(F1 ) ∪ bound(F2 ),
4. bound(∀x.F1 ) = bound(∃x.F1 ) = bound(F1 ) ∪ {x}.

Exemplu !
  
bound ∀x. P(x) ∨ R(x, y ) = {x}
Aparit, ii ale variabilelor

Definit, ie
Mulţimea variabilelor unei formule care au cel puţin o apariţie
liberă se notează free(F ):
1. free(P(t1 , . . . , tn )) = var(t1 ) ∪ . . . ∪ var(tn ),
2. free(¬F1 ) = free(F1 ),
3. free(F1 ∧ F2 ) = free(F1 ∨ F2 ) = free(F1 → F2 ) =
free(F1 ) ∪ free(F2 ),
4. free(∀x.F1 ) = free(∃x.F1 ) = free(F1 ) \ {x}.

Atenţie! free(F ) şi bound(F ) pot avea elemente ı̂n comun.


Exemplu !
  
free ∀x. P(x) ∨ R(x, y ) = {x, y }
Aparit, ii ale variabilelor

Exemplu
Fie F = P(x) ∧ ∀x.Q(x, y ). Prima apariţie a lui x este liberă.
Singura apariţie a lui y este liberă. A doua apariţie a lui x este
legată. Avem var(F ) = {x, y }, bound(F ) = {x} şi
free(F ) = {x, y }.
Substitut, ii

Definit, ie
O substitut, ie este o funct, ie σ : X → T , cu proprietatea că
σ(x) 6= x pentru un număr finit de variabile x ∈ X .

Definit, ie
Dacă σ : X → T este o substitut, ie, atunci mult, imea
dom(σ) = {x | σ(x) 6= x} se numes, te domeniul substitut, iei σ.
Substitut, ii - exemplu

Fie funct, ia σ : X → T , astfel ı̂ncât:


1. σ(x) = h(x);
2. σ(y ) = f (h(x), a);
3. σ(z) = z, pentru orice variabilă z ∈ X \ {x, y }.
Conform definit, iei de mai sus, σ este o substitut, ie de domeniu
dom(σ) = {x, y }.
Substitut, ii - extensia homomorfică

Definit, ie
Dacă σ : X → T este o substitut, ie, atunci extensia homomorfică a
lui σ la mult, imea termenilor este funct, ia σ ] : T → T , definită
astfel:
1. σ ] (x) = σ(x), pentru orice x ∈ X ;
2. σ ] (f (t1 , . . . , tn )) = f (σ ] (t1 ), . . . , σ ] (tn )), pentru orice simbol
funct, ional f ∈ Fn de aritate n ∈ N s, i orice termeni
t1 , . . . , tn ∈ T .
Substitut, ii - extensia homomorfică - exemplu

Fie substitut, ia σ : X → T , astfel ı̂ncât:


1. σ(x) = h(x);
2. σ(y ) = f (h(x), a);
3. σ(z) = z, pentru orice variabilă z ∈ X \ {x, y }.
Avem că σ ] (g (x)) = g (σ ] (x)) = g (σ(x)) = g (h(x)).
Practic, pentru a obt, ine tσ din t, fiecare apariţie a unei variabile x
din t este ı̂nlocuită cu termenul σ(x).
Notăm σ ] (t) = σ(t) = tσ.
Substitut, ii - operat, ia de actualizare

Definit, ie
Dacă σ : X → T este o substitut, ie, x ∈ X este o variabilă s, i t ∈ T
este un termen, atunci σ[x 7→ t] este o (nouă) substitut, ie
σ 0 : X → T , notată σ 0 = σ[x 7→ t], definită astfel:
1. σ 0 (y ) = σ(y ) pentru orice y ∈ X \ {x};
2. σ 0 (x) = t.
Operat, ia de actualizare - exemplu

Fie substitut, ia σ : X → T , astfel ı̂ncât:


1. σ(x) = h(x);
2. σ(y ) = f (h(x), a);
3. σ(z) = z, pentru orice variabilă z ∈ X \ {x, y }.
Substitut, ia σ 0 = σ[x 7→ x] este definită astfel:
1. σ 0 (x) = x;
2. σ 0 (y ) = f (h(x), a);
3. σ 0 (z) = z, pentru orice variabilă z ∈ X \ {x, y }.
Substitut, ii - extensia homomorfică la mult, imea formulelor

Definit, ie
Pentru orice substitut, ie σ : X → T , extensia homomorfică a lui σ
la mult, imea formulelor este funct, ia σ [ : LP1 → LP1, definită astfel:
1. σ [ (P(t1 , . . . , tn )) = P(σ ] (t1 ), . . . , σ ] (tn ));
2. σ [ (¬F ) = ¬(σ [ (F ));
3. σ [ (F1 opF2 ) = (σ [ (F1 ))op(σ [ (F2 )) (pentru orice operator logic
op ∈ {∧, ∨});
4. σ [ (∀y .F ) = ∀y .((σ 0 )[ (F )), unde σ 0 = σ[y 7→ y ],
5. σ [ (∃y .F ) = ∃y .((σ 0 )[ (F )), unde σ 0 = σ[y 7→ y ],
Substitut, ii - extensia homomorfică la mult, imea formulelor

Fie substitut, ia σ : X → T , astfel ı̂ncât:


1. σ(x) = h(x);
2. σ(y ) = f (h(x), a);
3. σ(z) = z, pentru orice variabilă z ∈ X \ {x, y }.
Avem că σ [ (∀x.(P(x) ∧ Q(h(y )))) = ∀x.(P(x) ∧ Q(h(f (h(x), a)))).
Substitut, ii - extensia homomorfică la mult, imea formulelor

Practic, pentru a obt, ine formula σ [ (F ) din formula F , fiecare


apariţie liberă a variabilei x din formula F este ı̂nlocuită cu
termenul σ(x).
Atent, ie! Aparit, iile legate ale variabilelor nu sunt ı̂nlocuite prin
aplicarea substitut, iei.
Ca s, i ı̂n cazul termenilor, vom folosi notat, ia
notat, ie notat, ie
σ [ (F ) = σ(F ) = F σ.
Substitut, ii acceptate

Definit, ie
Prin range(σ) notăm mult, imea de termeni

range(σ) = {σ(x) | x ∈ dom(σ)}.

Definit, ie
O formulă F acceptă o substituţie σ : X → T (sau, σ este permisă
pentru F ) dacă

bound(F ) ∩ var(range(σ)) = ∅.

N.B. Avem voie să calculăm formula F σ chiar dacă F nu acceptă


σ. Not, iunea de acceptare va fi folosită ı̂n câteva teoreme a căror
concluzie va fi adevărată doar dacă o anumită formulă acceptă o
anumită substitut, ie.
Substitut, ii acceptate - exemplu

Fie substitut, ia σ : X → T , astfel ı̂ncât:


1. σ(x) = h(x);
2. σ(y ) = f (h(x), a);
3. σ(z) = z, pentru orice variabilă z ∈ X \ {x, y }.
Substitut, ia σ este permisă pentru ∀y .P(x), dar nu este permisă
pentru ∀x.P(x).

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