Sunteți pe pagina 1din 28

Curs 5

2017-2018 Programare Logică


1 / 29
Logica de ordinul I - sintaxa

Limbaj de ordinul I L
unic determinat de τ = (R, F, C, ari)
Termenii lui L, notaţi TrmL , sunt definiţi inductiv astfel:
orice variabilă este un termen;
orice simbol de constantă este un termen;
dacă f ∈ F, ar (f ) = n şi t1 , . . . , tn sunt termeni, atunci f (t1 , . . . , tn ) este termen.
Formulele atomice ale lui L sunt definite astfel:
dacă R ∈ R, ar (R) = n şi t1 , . . . , tn sunt termeni, atunci R(t1 , . . . , tn ) este
formulă atomică.
Formulele lui L sunt definite astfel:
orice formulă atomică este o formulă
dacă ϕ este o formulă, atunci ¬ϕ este o formulă
dacă ϕ şi ψ sunt formule, atunci ϕ ∨ ψ, ϕ ∧ ψ, ϕ → ψ sunt formule
dacă ϕ este o formulă şi x este o variabilă, atunci ∀x ϕ, ∃x ϕ sunt formule

2 / 29
Logica de ordinul I - semantică

O structură este de forma A = (A, FA , RA , CA ), unde


A este o mulţime nevidă
FA = {f A | f ∈ F} este o mulţime de operaţii pe A;
dacă f are aritatea n, atunci f A : An → A.
RA = {R A | R ∈ R} este o mulţime de relaţii pe A;
dacă R are aritatea n, atunci R A ⊆ An .
CA = {c A ∈ A | c ∈ C}.
O interpretare a variabilelor lui L ı̂n A (A-interpretare) este o funcţie I : V → A.
Inductiv, definim interpretarea termenului t ı̂n A sub I notat tIA .
Inductiv, definim când o formulă este adevărată ı̂n A ı̂n interpretarea I notat A, I  ϕ.
În acest caz spunem că (A, I ) este model pentru ϕ.
O formulă ϕ este adevărată ı̂ntr-o structură A, notat A  ϕ, dacă este adevărată ı̂n A
sub orice interpretare. Spunem că A este model al lui ϕ.
O formulă ϕ este adevărată ı̂n logica de ordinul I, notat  ϕ, dacă este adevărată ı̂n
orice structură. O formulă ϕ este validă dacă  ϕ.
O formulă ϕ este satisfiabilă dacă există o structură A şi o A-interpretare I astfel
ı̂ncât A, I  ϕ.
3 / 29
Validitate şi satisfiabilitate

Propoziţie
Dacă ϕ este o formulă atunci

ϕ este validă dacă şi numai dacă ¬ϕ nu este satisfiabilă.

Demonstraţie
Exerciţiu!

Vom arăta că pentru a verifica validitatea/satisfiabilitatea este suficient


să ne uităm la o singură structură.

4 / 29
Cuprins

1 Variabile libere. Variabile legate. Enunţuri

2 Forma Skolem

5 / 29
Variabile libere. Variabile legate. Enunţuri

6 / 29
Variabile libere. Variabile legate. Enunţuri

Fie ϕ o formulă şi Var (ϕ) mulţimea variabilelor care apar ı̂n ϕ.
Variabilele libere ale unei formule ϕ sunt variabilele care nu sunt
cuantificate.
Mulţimea FV (ϕ) a variabilelor libere ale unei formule ϕ poate fi
definită prin inducţie după formule:
FV (ϕ) = Var (ϕ), dacă ϕ este formulă atomică
FV (¬ϕ) = FV (ϕ)
FV (ϕ ◦ ψ) = FV (ϕ) ∪ FV (ψ), dacă ◦ ∈ {→, ∨, ∧}
FV (∀x ϕ) = FV (ϕ) − {x}
FV (∃x ϕ) = FV (ϕ) − {x}
O variabilă v ∈ Var (ϕ) care nu este liberă se numeşte legată ı̂n ϕ.
Un enunţ este o formulă fără variabile libere.
Pentru orice structură A şi orice enunţ ϕ, o A-interpretare I nu
joacă niciun rol ı̂n a determina dacă A, I  ϕ.
7 / 29
Variabile libere. Varibile legate. Enunţuri

Exemplu
Fie limbajul Lr cu un singur simbol de relaţie R de aritate 2.
Fie următoarea formulă

∀y (∀y (R(y , x) ∨ R(y , z)) → ∀x R(x, y ))

Prima aparitie a lui x este liberă,


dar a doua apariţie a lui x este legată de apariţia lui ∀x.
Primele două apariţii ale lui y sunt legate de a doua apariţie a lui ∀y ,
iar a treia apariţie a lui y este legată de prima apariţie a lui ∀y .
z este liberă.

8 / 29
Variabile libere. Varibile legate. Enunţuri

Exemplu
Fie limbajul Lr cu un singur simbol de relaţie R de aritate 2.
Care din următoarele formule sunt enunţuri?
1 ∀x ∀y R(x, y ) - enunţ
2 ∀x ∀y (R(x, y ) ∨ R(x, z))
3 ∀x ∀y (R(x, y ) ∨ ∀z R(x, z)) - enunţ
4 ∀x R(x, y )

9 / 29
Enunţuri

Fie ϕ o formulă şi FV (ϕ) = {x1 , . . . , xn }.

Propozitie
Pentru orice structură A avem
A  ϕ dacă şi numai dacă A  ∀x1 · · · ∀xn ϕ.

Demonstraţie
Exerciţiu!

A verifica validitatea unei formule revine la


a verifica validitatea enunţului asociat.

10 / 29
Substituţii

Substituţiile ı̂nlocuiesc variabilele libere cu termeni.


O substituţie aplicată unui termen ı̂ntoarce un alt termen.
Ce se ı̂ntâmpla când aplicăm o substituţie unei formule?
{x ← f (y ), y ← a}P(x, y ) = P(f (y ), a)
{x ← f (y )}∀y P(x, y ) = ∀y P(f (y ), y )

Atenţie! ı̂n al doilea caz am schimbat satisfiabilitatea formulei.


Nu putem substitui variabila x ı̂n ϕ cu un termen t care conţine o
variabilă legată ı̂n ϕ.

Fie ϕ o formulă şi t1 , . . . , tn termeni care nu conţin variabile din ϕ.


Notăm ϕ[x1 /t1 , . . . , xn /tn ] formula obţinută din ϕ substituind toate
apariţiile libere ale lui x1 , . . . , xn cu t1 , . . . , tn .
ϕ[x1 /t1 , . . . , xn /tn ] = {x1 ← t1 , . . . , xn ← tn }ϕ

11 / 29
Formule echivalente

Fie ϕ şi ψ două formule. Notăm prin

ϕψ

faptul că  ϕ ↔ ψ, adică ϕ şi ψ au aceleaşi modele.

Exemplu
Dacă P este un simbol de relaţie de aritate 1 şi x şi y sunt variabile
distincte, atunci

∀x P(x)  ∀y P(y ) şi P(x)  P(y )

12 / 29
Forma rectificată

O formulă ϕ este ı̂n formă rectificată dacă:


1 nici o variabilă nu apare şi liberă şi legată
2 cuantificatori distincţi leagă variabile distincte

Pentru orice formulă ϕ există o formulă ϕr ı̂n formă rectificată astfel


ı̂ncât ϕ  ϕr .
Intuitiv, forma rectificată a unei formule se obţine prin redenumirea
variabilelor astfel ı̂ncât să nu apară conflicte.

Exemplu

∀x P(x) ∧ ∃x ∀y R(x, y ) ∧ S(x)  ∀x P(x) ∧ ∃x1 ∀y R(x1 , y ) ∧ S(x2 )

În continuare vom presupune că


toate formulele sunt ı̂n formă rectificată.

13 / 29
Forma prenex

O formulă prenex este o formulă de forma

Q1 x1 Q2 x2 . . . Qn xn ϕ

unde Qi ∈ {∀, ∃} pentru orice i ∈ {1, . . . , n}, x1 , . . . , xn sunt variabile


distincte şi ϕ nu conţine cuantificatori.

Exemplu
Fie R este un simbol de relaţie de aritate 2. Formula

∀x ∃y ∀z((R(x, y ) ∨ ¬R(x, z)) ∧ R(x, x))

este ı̂n formă prenex.

14 / 29
Cum calculăm forma prenex?

Se ı̂nlocuiesc → şi ↔ :
ϕ→ψ  ¬ϕ ∨ ψ
ϕ↔ψ  (¬ϕ ∨ ψ) ∧ (¬ψ ∨ ϕ)

Se aplică următoarele echivalenţe:

¬∃x ¬ϕ  ∀x ϕ ∀x ϕ ∧ ∀x ψ  ∀x (ϕ ∧ ψ)
¬∀x ¬ϕ  ∃x ϕ ∃x ϕ ∨ ∃x ψ  ∃x (ϕ ∨ ψ)

¬∃x ϕ  ∀x ¬ϕ ∀x ∀y ϕ  ∀y ∀x ϕ
¬∀x ϕ  ∃x ¬ϕ ∃x ∃y ϕ  ∃y ∃x ϕ

∀x ϕ ∨ ψ  ∀x (ϕ ∨ ψ) dacă x 6∈ FV (ψ)
∀x ϕ ∧ ψ  ∀x (ϕ ∧ ψ) dacă x 6∈ FV (ψ)
∃x ϕ ∨ ψ  ∃x (ϕ ∨ ψ) dacă x 6∈ FV (ψ)
∃x ϕ ∧ ψ  ∃x (ϕ ∧ ψ) dacă x 6∈ FV (ψ)
15 / 29
Forma prenex

Exemplu
Fie R un simbol de relaţie de aritate 2.

ϕ = ∀x ¬(∃y R(x, y ) → ∃x R(x, y ))


 ∀x ¬(∃v R(x, v ) → ∃z R(z, y ))
 ∀x ¬(¬∃v R(x, v ) ∨ ∃z R(z, y ))
 ∀x (∃v R(x, v ) ∧ ¬∃z R(z, y ))
 ∀x ∃v (R(x, v ) ∧ ¬∃z R(z, y ))
 ∀x ∃v (R(x, v ) ∧ ∀z ¬R(z, y ))
 ∀x ∃v ∀z (R(x, v ) ∧ ¬R(z, y ))

16 / 29
Forma prenex

Teorema de formă prenex


Pentru orice formulă ϕ există o formulă ϕ∗ ı̂n formă prenex astfel ı̂ncât
ϕ  ϕ∗ şi FV (ϕ) = FV (ϕ∗ ).

Demonstraţie
Demonstrăm prin inducţie după structura formulei ϕ.
ϕ este formulă atomică.
Atunci ϕ este ı̂n formă prenex, deci ϕ∗ := ϕ.
ϕ = ∀xψ.
Conform ipotezei de inducţie, există o formulă ψ ∗ ı̂n formă prenex
astfel ı̂ncât ψ  ψ ∗ şi FV (ψ) = FV (ψ ∗ ).
Definim ϕ∗ := ∀xψ ∗ .

17 / 29
Forma prenex

Demonstraţie (cont.)
ϕ = ¬ψ.
Conform ipotezei de inducţie, există o formulă
ψ ∗ = Q1 x1 . . . Qn xn ψ0 ı̂n formă prenex astfel ı̂ncât ψ  ψ ∗ şi
FV (ψ) = FV (ψ ∗ ). Notăm ∀c = ∃, ∃c = ∀ şi definim

ϕ∗ := Q1c x1 . . . Qnc xn ¬ψ0 .

Atunci ϕ∗ este ı̂n formă prenex, ϕ∗  ¬ψ ∗  ¬ψ = ϕ şi


FV (ϕ∗ ) = FV (ψ ∗ ) = FV (ψ) = FV (ϕ).

18 / 29
Forma prenex

Demonstraţie (cont.)
ϕ = ψ ∨ χ şi, conform ipotezei de inducţie, există formulele ı̂n formă
prenex
ψ ∗ = Q1 x1 . . . Qn xn ψ0 , χ∗ = S1 z1 . . . Sm zm χ0
astfel ı̂ncât ψ  ψ ∗ , FV (ψ) = FV (ψ ∗ ), χ  χ∗ şi FV (χ) = FV (χ∗ ).
Definim
ϕ∗ := Q1 x1 . . . Qn xn S1 z1 . . . Sm zm ψ0 ∨ χ0 .
Atunci ϕ∗ este ı̂n formă prenex, FV (ϕ∗ ) = FV (ϕ) şi

ϕ∗  ψ ∗ ∨ χ∗  ψ ∨ χ = ϕ.

Deoarece ϕ a fost ı̂n formă rectificată, echivalenţa  este justificată


de următoarele proprietăţi:
∀xϕ ∨ ψ  ∀x(ϕ ∨ ψ) dacă x ∈
6 FV (ψ)
∃xϕ ∨ ψ  ∃x(ϕ ∨ ψ) dacă x ∈6 FV (ψ)
 19 / 29
Forma Skolem

20 / 29
Forma Skolem

Fie L un limbaj de ordinul.


Skolemizarea este o procedură prin care se elimină cuantificatorii
existenţiali din formule de ordinul ı̂ntâi ı̂n formă normală prenex, prin
introducere de noi simboluri de funcţii/constante, numite simboluri de
funcţii/constante Skolem.

În continuare ϕ este un enunţ ı̂n formă prenex:


ϕ = Q1 x1 Q2 x2 . . . Qn xn θ,
unde n ∈ N, Q1 , . . . , Qn ∈ {∀, ∃}, x1 , . . . , xn sunt variabile distincte două
câte două şi θ este formulă liberă de cuantificatori.

Vom asocia lui ϕ un enunţ universal ϕsk ı̂ntr-un limbaj extins Lsk (ϕ).
Un enunţ se numeşte universal dacă conţine doar cuantificatori universali.

21 / 29
Forma Skolem

Fie ϕ enunţ ı̂n formă prenex. Definim ϕsk şi Lsk (ϕ) astfel:
dacă ϕ este liberă de cuantificatori, atunci ϕsk = ϕ şi Lsk (ϕ) = L,
dacă ϕ este universală, atunci ϕsk = ϕ şi Lsk (ϕ) = L,
dacă ϕ = ∃x ψ atunci introducem un nou simbol de constantă c şi
considerăm ϕ1 = ψ[x/c], L1 = L ∪ {c}.
dacă ϕ = ∀x1 . . . ∀xk ∃x ψ atunci introducem un nou simbol de
funcţie f de aritate k şi considerăm L1 = L ∪ {f },
ϕ1 = ∀x1 . . . ∀xk ψ[x/f (x1 . . . xk )]
În ambele cazuri, ϕ1 are cu un cuantificator existenţial mai puţin decât
ϕ. Dacă ϕ1 este liberă de cuantificatori sau universală, atunci ϕsk = ϕ1 .
Dacă ϕ1 nu este universală, atunci formăm ϕ2 , ϕ3 , . . ., până ajungem la o
formulă universală şi aceasta este ϕsk .

Definiţie
ϕsk este o formă Skolem a lui ϕ.
22 / 29
Forma Skolem

Exemplu
Fie P un simbol de relaţie de aritate 1 şi ϕ = ∃x P(x).
Atunci
ϕ1 = (P(x))[x/c] = P(c),

unde c este un nou simbol de constantă. Deoarece ϕ1 este un enunţ liber


de cuantificatori, rezultă că ϕsk = ϕ1 = P(c).

Exemplu
Fie R un simbol de relaţie de aritate 3 şi ϕ = ∃x ∀y ∀z R(x, y , z). Atunci
ϕ1 = (∀y ∀z R(x, y , z))[x/c] = ∀y ∀z R(c, y , z),
unde c este un nou simbol de constantă. Deoarece ϕ1 este un enunţ
universal, rezultă că ϕsk = ϕ1 = ∀y ∀z R(c, y , z).

23 / 29
Forma Skolem

Exemplu
Fie P un simbol de relatie de aritate 2 şi ϕ = ∀y ∃z P(y , z). Atunci

ϕ1 = (∀y P(y , z))[z/f (y )] = ∀y P(y , f (y ))

unde f este un simbol nou de funcţie unară. Deoarece ϕ1 este un enunţ


universal, rezultă că ϕsk = ϕ1 = ∀y P(y , f (y )).

24 / 29
Forma Skolem

Exemplu
Fie L un limbaj şi P, R ∈ R, f ∈ F, ari(P) = ari(R) = 2 şi ari(f ) = 1.
Determinaţi forma Skolem pentru:
ϕ := ∀y ∃z ∀u ∃v (R(y , z) ∧ P(f (u), v )).

ϕ1 = ∀y (∀u ∃v (R(y , z) ∧ P(f (u), v )))[z/g (y )])


= ∀y ∀u ∃v (R(y , g (y )) ∧ P(f (u), v )),
unde g este un nou simbol de funcţie unară
ϕ2 = ∀y ∀u (R(y , g (y )) ∧ P(f (u), v ))[v /h(y , u)]
= ∀y ∀u (R(y , g (y )) ∧ P(f (u), h(y , u))),
unde h este un nou simbol de funcţie binară.

Deoarece ϕ2 este un enunţ universal, rezultă că


ϕsk = ϕ2 = ∀y ∀u (R(y , g (y )) ∧ P(f (u), h(y , u))).

25 / 29
Forma Skolem

Teorema de formă Skolem


Fie ϕ un enunţ ı̂n formă prenex.
1  ϕsk → ϕ, deci ϕsk  ϕ ı̂n Lsk (ϕ).
2 ϕ este satisfiabilă dacă şi numai dacă ϕsk este satisfiabilă.

Demonstraţie [schiţă]
1 Folosind următoarele proprietăţi
 ϕx (t) → ∃x ϕ
 ϕ implică  ∀x ϕ şi
 ∀x (ϕ → ψ) → (∀x ϕ → ∀x ψ)
putem demonstra că  ϕ1 → ϕ,  ϕ2 → ϕ1 , etc.
2 ”⇐” Se aplică (i).
”⇒” exerciţiu.

26 / 29
Forma Skolem

Observaţie
În general, ϕ şi ϕsk nu sunt logic echivalente ca enunţuri ı̂n Lsk (ϕ).

Exemplu
Fie L = {R} unde R este simbol de relaţie de aritate 2 şi
ϕ = ∀v1 ∃v2 R(v1 , v2 ).
Atunci ϕsk = ∀v1 R(v1 , f (v1 )) (unde f este un nou simbol de funcţie
unară) şi Lsk (ϕ) = {f , R}.
Fie Lsk (ϕ)-structura A = (Z, <, f A ), unde f A (n) = n − 1 pentru orice
n ∈ Z. Atunci A  ϕ, deoarece pentru orice număr ı̂ntreg m există un
6 ϕsk , deoarece
număr ı̂ntreg n astfel ı̂ncât m < n. Pe de altă parte, A 
A
pentru orice n ∈ Z, avem că n ≥ f (n) = n − 1.

27 / 29
Logica de ordinul I

Cercetarea validităţii poate fi redusă la cercetarea satisfiabilităţii.

Cercetarea satisfiabilităţii unei formule poate fi redusă la cercetarea


satisfiabilităţii unui enunţ ı̂n forma Skolem.

Vom arăta că pentru a verifica validitatea/satisfiabilitatea este


suficient să ne uităm la o singură structură.

28 / 29

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