0% au considerat acest document util (0 voturi)
12 vizualizări4 pagini

Programare Logica

Documentul detaliază conceptele fundamentale ale programării logice, inclusiv logica Horn, algoritmul de unificare și rezoluția SLD. De asemenea, se discută despre algebre multisortate, morfisme și izomorfisme, precum și despre tipurile abstracte de date și algebrale de termeni. Aceste concepte sunt esențiale pentru înțelegerea programării logice și a structurii datelor în acest context.

Încărcat de

Alexandru Buculei
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
12 vizualizări4 pagini

Programare Logica

Documentul detaliază conceptele fundamentale ale programării logice, inclusiv logica Horn, algoritmul de unificare și rezoluția SLD. De asemenea, se discută despre algebre multisortate, morfisme și izomorfisme, precum și despre tipurile abstracte de date și algebrale de termeni. Aceste concepte sunt esențiale pentru înțelegerea programării logice și a structurii datelor în acest context.

Încărcat de

Alexandru Buculei
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd

SUPORT EXAMEN PROGRAMARE LOGICĂ

1. Programare Logică - cazul logicii Horn


Logica de ordinul I (calculul cu predicate).
• Un limbaj L de ordinul I este format dintr-o mulţime numărabilă de variabile V = {xn | n ∈ N}, conectorii ¬, →, ∧, ∨, paranteze, cuantifica-
torul universal ∀ şi cuantificatorul existenţial ∃, o mulţime P de simboluri de relaţii, o mulţime F de simboluri de funcţii, o mulţime C de
simboluri de constante, o funcţie aritate ar : F ∪ P → N∗ .
• Termenii lui L sunt definiţi inductiv asftel: 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. Mulţimea termenilor lui L este notată cu T rmL .
• Dacă R ∈ R, ar(R) = n şi t1 , . . . , tn sunt termeni, atunci R(t1 , . . . , tn ) este formulă atomică.
• Formulele lui L sunt definite asftel: orice formulă atomică este o formulă; dacă A este o formulă, atunci ¬A este o formulă; dacă A şi B sunt
formule, atunci A ∨ B, A ∧ B, A → B sunt formule; dacă A este o formulă şi xi este o variabilă, atunci (∀xi )A, (∃xi )A sunt formule.
• O structură este de forma S = (S, FS , PS , CS ), unde S este o mulţime nevidă, FS = {f S | f ∈ F} este o mulţime de operaţii pe A (dacă
f are aritatea n, atunci f S : S m → S), RS = {RS | R ∈ R} este o mulţime de relaţii pe A (dacă R are aritatea n, atunci RS ⊆ S m ), şi
CS = {cS ∈ S | c ∈ C}.
• O interpretare a variabilelor lui L ı̂n S este o funcţie I : V → S. Interpretarea termenului t ı̂n S sub I (tS I ) este definită inductiv prin:
– dacă t = xi ∈ V , atunci tS I := I(xi )
– dacă t = c ∈ C, atunci tS I := c
S

– dacă t = f (t1 , . . . , tn ), atunci tS S S S


I := f ((t1 )I , . . . , (tn )I )
• O formulă este adevărată ı̂n S sub interpretarea I dacă:
– |= P (t1 , . . . , tn ) dacă P S (tS
S, I S
1 , . . . , tn )
– S, I
|= ¬B dacă S, I 6|= B
– S, I
|= B ∨ C dacă S, I |= B sau S, I |= C
– S, I
|= B ∧ C dacă S, I |= B si S, I |= C
– S, I
|= B → C dacă S, I 6|= B sau S, I |= C
– S, I
|= (∀x)B dacă pentru orice interpretare Ix←a avem S, Ixi ←a |= B
– S, I
|= (∃x)B dacă există o interpretare
( Ix←a astfel ı̂ncât S, Ixi ←a |= B
I(y) dacă y 6= x
unde pentru orice a ∈ S, Ix←a (y) =
a dacă y = x
• O formulă A este adevărată ı̂ntr-o structură S, notat S |= A, dacă este adevărată ı̂n S sub orice interpretare. Spunem că S este model al lui
A. O formulă A este adevărată ı̂n logica de ordinul I, notat |= A, dacă este adevărată ı̂n orice structură.
• O formulă G este o consecinţă logică a formulelor F1 , . . . , Fn , notat F1 , . . . , Fn |= G, dacă pentru orice structură S, dacă S |= Fi , i = 1, . . . , n,
atunci S |= G.
• Logica clauzelor definite/Logica Horn – un fragment al logicii de ordinul I ı̂n care singurele formule admise sunt clauze definite:
– formule atomice: P (t1 , . . . , tn )
– A1 ∧ . . . ∧ An → B, unde toate Ai , B sunt formule atomice.
• Problema programării logice: T |= A1 ∧ . . . ∧ An , unde T mulţime de clauze definite şi toate Ai sunt formule atomice.

Algoritmul de unificare.
• O subtituţie σ este o funcţie (parţială) de la variabile la termeni, adică σ : V → T rmL .
• Doi termeni t1 şi t2 se unifică dacă există o substituţie θ astfel ı̂ncât θ(t1 ) = θ(t2 ).
• Un unificator ν pentru U este un cel mai general unificator (cgu) dacă pentru orice alt unificator ν 0 pentru U , există o substituţie µ astfel
ı̂ncât ν 0 = ν; µ, unde ν; µ este compunerea substitutiilor ν şi µ.
Lista soluţie Lista de rezolvat
S R
· ·
Iniţial ∅ t1 = t01 , . . . , tn = t0n
0 ·
SCOATE S R,t=t
S R0
·
DESCOMPUNE S R , f (t1 , . . . , tn ) = f (t01 , . . . , t0n )
0
· 0 ·
S R , t1 = t1 , . . . tn = t0n
0
0 · ·
REZOLVĂ S R , x = t sau t = x, x nu apare ı̂n t
·
x = t, S[x ← t] R0 [x ← t]
Final S ∅

Rezoluţie SLD.
• O clauză definită P1 ∧ . . . ∧ Pn → Q poate fi gândită ca formula Q ∨ ¬P1 ∨ . . . ∨ ¬Pn .
• Pentru o mulţime de clauze definite T , regula rezolutiei SLD este
¬P1 ∨ · · · ∨ ¬Pi ∨ · · · ∨ ¬Pn
SLD
(¬P1 ∨ · · · ∨ ¬Q1 ∨ · · · ∨ ¬Qm ∨ · · · ∨ ¬Pn )θ
unde Q ∨ ¬Q1 ∨ · · · ∨ ¬Qm este o clauză definită din T (ı̂n care toate variabilele au fost redenumite) şi θ este c.g.u pentru Pi şi Q.
• Fie T o mulţime de clauze definite şi P1 ∧ . . . ∧ Pm o ţintă, unde Pi sunt formule atomice. O derivare din T prin rezoluţie SLD este o secvenţă
G0 := ¬P1 ∨ . . . ∨ ¬Pm , G1 , . . ., Gk , . . . ı̂n care Gi+1 se obţine din Gi prin regula SLD. Dacă există un k cu Gk =  (clauza vidă), atunci
derivarea se numeşte SLD-respingere.
Teoremă 1 (Completitudinea SLD-rezoluţiei). Sunt echivalente:
(1) există o SLD-respingere a lui P1 ∧ . . . ∧ Pm din T ,
(2) T |= P1 ∧ · · · ∧ Pm .

• Fie T o mulţime de clauze definite şi o ţintă G0 = ¬P1 ∨ . . . ∨ ¬Pm . Un arbore SLD este definit astfel:
– Fiecare nod al arborelui este o ţintă (posibil vidă)
– Rădăcina este G0
– Dacă arborele are un nod Gi , iar Gi+1 se obţine din Gi folosind regula SLD folosind o clauză Ci ∈ T , atunci nodul Gi are copilul Gi+1 .
Muchia dintre Gi şi Gi+1 este etichetată cu Ci .
• Dacă un arbore SLD cu rădăcina G0 are o frunză  (clauza vidă), atunci există o SLD-respingere a lui G0 din T .

2. Algebre multisortate
Signaturi multisortate. Mulţimi şi funcţii multisortate.
• O signatură multisortată este o pereche (S, Σ), unde S 6= ∅ este o mulţime de sorturi şi Σ este o mulţime de simboluri de operaţii σ :
s1 s2 . . . sn → s. Dacă n = 0, atunci σ :→ s este simbolul unei constante.
Fixăm o mulţime de sorturi S.
• O mulţime S-sortată este o familie de mulţimi A = {As }s∈S .
• O funcţie S-sortată f : A → B este o familie de funcţii f = {fs }s∈S , unde fs : As → Bs , pt. or. s ∈ S. Dacă f : A → B şi g : B → C,
definim compunerea f ; g : A → C, (f ; g)s (a) = gs (fs (a)), or. a ∈ As .
• O funcţie S-sortată f : A → B este injectivă, (surjectivă, bijectivă) dacă fs este injectivă, (surjectivă, bijectivă), or. s ∈ S. O funcţie
S-sortată f = {fs }s∈S : A → B este inversabilă dacă există g : B → A astfel ı̂ncât f ; g = 1A şi g; f = 1B .

Propoziţie 1. O funcţie S-sortată f : A → B este inversabilă ⇔ este bijectivă.

Algebre multisortate.
• O algebră multisortată de tip (S, Σ) este A = (AS , AΣ ) unde AS = {As }s∈S este o mulţime S-sortată şi AΣ = {Aσ }σ∈Σ este o familie de
operaţii astfel ı̂ncât
– dacă σ : s1 . . . sn → s ı̂n Σ, atunci Aσ : As1 × . . . × Asn → As .
– dacă σ : → s ı̂n Σ, atunci Aσ ∈ As .

Morfisme de algebre multisortate.


• Un morfism de (S, Σ)-algebre h : A → B este o funcţie S-sortată h = {hs }s∈S : {As }s∈S → {Bs }s∈S care verifică condiţia de compatibilitate:
– hs (Aσ ) = Bσ , or. σ :→ s ∈ Σ,
– hs (Aσ (a1 , . . . , an )) = Bσ (hs1 (a1 ), . . . , hsn (an )), or. σ : s1 . . . sn → s ∈ Σ şi or. a1 ∈ As1 , . . . , an ∈ Asn .

Propoziţie 2. Compunerea a două Σ-morfisme este un Σ-morfism.

Izomorfisme de algebre multisortate.


• Un Σ-morfism h : A → B se numeşte izomorfism dacă există un Σ-morfism g : B → A astfel ı̂ncât h; g = 1A şi g; h = 1B . Deoarece g este
unic, se notează cu h−1 .
• Două Σ-algebre A şi B sunt izomorfe (A ' B) dacă există un izomorfism f : A → B.

Propoziţie 3. Fie h : A → B un Σ-morfism. Atunci h este izomorfism ⇔ este funcţie S-sortată bijectivă.

Propoziţie 4. Compunerea a două izomorfisme f : A → B şi g : B → C este un izomorfism. Mai mult, (f ; g)−1 = g −1 ; f −1 .

Tipuri abstracte de date.


• Un tip abstract de date este o clasă C de (S, Σ)-algebre cu proprietatea că oricare două (S, Σ)-algebre din C sunt izomorfe.
• I(S,Σ) = {I | I (S, Σ)-algebră iniţială} este un tip abstract de date.

Termeni. Algebre de termeni.


• O mulţime de variabile este o mulţime S-sortată X = {Xs }s∈S astfel ı̂ncât Xs ∩ Xs0 = ∅, or. s, s0 ∈ S, s 6= s0 , Xs ∩ {σ}σ:s1 ...sn →s∈Σ = ∅ şi
Xs ∩ {σ}σ:→s∈Σ = ∅.
S
• Mulţimea S-sortată a termenilor cu variabile din X, TΣ (X), este cea mai mică mulţime de şiruri finite peste alfabetul L = s∈S Xs ∪
S
w,s Σw,s ∪ {(, )} ∪ {, } care verifică:
– X ⊆ TΣ (X),
– dacă σ :→ s ı̂n Σ, atunci σ ∈ TΣ (X)s ,
– dacă σ : s1 . . . sn → s ı̂n Σ şi ti ∈ TΣ (X)si , or. 1 ≤ i ≤ n, atunci σ(t1 , . . . , tn ) ∈ TΣ (X)s .
• Mulţimea S-sortată a termenilor TΣ (X) este o (S, Σ)-algebră, numită algebra termenilor cu variabile din X, cu operaţiile definite astfel:
pt. or. σ :→ s din Σ, operaţia corespunzătoare este Tσ := σ ∈ TΣ (X)s şi pt. or. σ : s1 . . . sn → s din Σ, operaţia corespunzătoare este
Tσ : TΣ (X)s1 ...sn → TΣ (X)s , Tσ (t1 , . . . , tn ) := σ(t1 , . . . , tn ), or. t1 ∈ TΣ (X)s1 , . . . , tn ∈ TΣ (X)sn . TΣ algebra termenilor fără variabile
(X = ∅).
• O substituţie a variabilelor din X cu termeni din TΣ (Y ) este o funcţie S-sortată τ : X → TΣ (Y ).
2
Ecuaţii. Relaţia de satisfacere.
·
• O (S, Σ)-ecuaţie (∀X)t =s t0 este formată dintr-o mulţime de variabile X şi doi termeni t, t0 ∈ TΣ (X)s .
·
• O (S, Σ)-algebră A = (AS , AΣ ) satisface o ecuaţie (∀X)t =s t0
– dacă pentru orice funcţie S-sortată e : X → AS , ẽs (t) = ẽs (t0 ).
– dacă pentru orice morfism f : TΣ (X) → A, fs (t) = fs (t0 ).
·
• O (S, Σ)-ecuaţie condiţionată (∀X)t =s t0 if H este formată dintr-o mulţime de variabile X, doi termeni de acelaşi sort t, t0 ∈ TΣ (X)s şi o
·
mulţime H de ecuaţii u =s0 v, cu u, v ∈ TΣ (X)s0 .
·
• O (S, Σ)-algebră A = (AS , AΣ ) satisface o ecuaţie condiţionată (∀X)t =s t0 if H
·
– dacă pentru orice funcţie S-sortată e : X → AS , ẽs0 (u) = ẽs0 (v), or. u =s0 v ∈ H ⇒ ẽs (t) = ẽs (t0 ).
·
– dacă pentru orice morfism f : TΣ (X) → A, fs0 (u) = fs0 (v), or. u =s0 v ∈ H ⇒ fs (t) = fs (t0 ).

3. Logica ecuaţională

Deducţie ecuaţională.
• E mulţime de ecuaţii necondiţionate
· · ·
(∀X)t1 =s t2 (∀X)t1 =s t2 , (∀X)t2 =s t3
R · S ·
T ·
(∀X)t =s t (∀X)t2 =s t1 (∀X)t1 =s t3

· ·
(∀X)t1 =s1 t01 , . . . , (∀X)tn =sn t0n
CΣ ·
, unde σ : s1 . . . sn → s ∈ Σ
(∀X)σ(t1 , . . . , tn ) =s σ(t01 , . . . , t0n )

·
SubE · , (∀Y )t =s t0 ∈ E şi θ : Y → TΣ (X)
(∀X)θ(t) =s θ(t0 )
·
• Ecuaţia  := (∀X)t =s t0 se deduce din E dacă ex. o secvenţă 1 , . . . , n a.ı̂. n =  şi pt. or. 1 ≤ i ≤ n:
– i ∈ E sau
– i se obţine din 1 , . . . , i−1 aplicând una din reg. R, S, T, CΣ, SubE .

Corectitudinea si completitudine logicii ecuaţionale.


1 , . . . , n
• O regulă de deducţie este corectă dacă Γ |= 1 , . . . , Γ |= n ⇒ Γ |= .


Propoziţie 5. Regulile de deducţie R, S, T, CΣ, SubΓ sunt corecte.


· ·
Teoremă 2 (Corectitudinea deducţiei). Γ ` (∀X)t =s t0 ⇒ Γ |= (∀X)t =s t0 .
· ·
Teoremă 3 (Completitudinea deducţiei). Γ |= (∀X)t =s t0 ⇒ Γ ` (∀X)t =s t0 .

4. Rescrierea termenilor
Contexte.
• nry (t) = numărul de apariţii ale lui y ı̂n t
• Fie z a.ı̂. z ∈
/ X. Un termen c ∈ TΣ (X ∪ {z}) se numeşte context dacă nrz (c) = 1. 
t0 , dacă x = z
• Dacă t0 ∈ TΣ (X) şi t0 are acelaşi sort cu z, definim substituţia {z ← t0 } : X ∪ {z} → TΣ (X), prin {z ← t0 }(x) = .
x, altfel
Pentru un context c ∈ TΣ (X ∪ {z}), notăm c[z ← t0 ] := {z ← t0 }(c).

Sistem de rescriere.
• O regulă de rescriere l →s r (peste Y ) este formată din l, r ∈ TΣ (Y )s astfel ı̂ncât l nu este variabilă şi V ar(r) ⊆ V ar(l).
• Un sistem de rescriere (TRS) este o mulţime finită de reguli de rescriere.
• Dacă R este un sistem de rescriere, pentru t, t0 ∈ TΣ (X)s definim relaţia t →R t0 astfel:

t →R t0 ⇔ t este c[z ← θs (l)] şi


t0 este c[z ← θs (r)], unde
c ∈ TΣ (X ∪ {z}) context,
l →s r ∈ R cu V ar(l) = Y ,
θ : Y → TΣ (X) substituţie

·
• Dacă E este o mulţime de ecuaţii astfel ı̂ncât, pt. or. (∀Y )l =s r ∈ E, l ∈
/ Y (nu este variabilă) şi V ar(r) ⊆ V ar(l), definim sistemul de
·
rescriere determinat de E RE := {l →s r | (∀Y )l =s r ∈ E}. Notăm relaţia de rescriere generată de RE prin →E := →RE .
· ∗
Teoremă 4. E ` (∀X)t =s t0 ⇔ t ↔E t0 .
3
Sisteme de rescriere abstracte.
• Un sistem de rescriere abstract este o pereche (T, →) unde T este o mulţime şi →⊆ T × T .
• t ∈ T este reductibil dacă există t0 ∈ T a.ı̂. t → t0 .
• t ∈ T este ı̂n formă normală (ireductibil) dacă nu este reductibil.

• t0 este o formă normală a lui t dacă t → t0 şi t0 este ı̂n formă normală.
∗ ∗
• t1 şi t2 se intâlnesc (t1 ↓ t2 ) dacă există t ∈ T a.ı̂. t1 → t ← t2 .
• (T, →) se numeşte
– noetherian: dacă nu există reduceri infinite t0 → t1 → t2 → . . ..
∗ ∗
– confluent: t1 ← t → t2 ⇒ t1 ↓ t2 .
– local confluent: t1 ← t → t2 ⇒ t1 ↓ t2 .

– Church-Rosser: t1 ↔ t2 ⇒ t1 ↓ t2 .
– normalizat: orice element are o formă normală.
– complet (convergent, canonic): confluent şi noetherian.

Propoziţie 6. Fie (T, →) sistem de rescriere. Dacă t ↓ t0 , atunci t ↔ t0 .
Propoziţie 7. Dacă (T, →) este un sistem de rescriere noetherian, atunci orice element are o formă normală.
Propoziţie 8. Dacă (T, →) este un sistem de rescriere complet, atunci orice element are o unică formă normală.
Propoziţie 9. Un sistem de rescriere este confluent ddacă este Church-Rosser.
Propoziţie 10. Dacă (T, →) este un sistem de rescriere confluent, atunci este local confluent.
Propoziţie 11. Dacă (T, →) este un sistem de rescriere noetherian şi local confluent, atunci este confluent.

Propoziţie 12. Fie (T, →) sistem de rescriere complet. Atunci t ↔ t0 ⇔ f n(t) = f n(t0 ).
· ∗
Corolar 1. Dacă sistemul de rescriere (TΣ (X), RE ) este complet, atunci E ` (∀X)t =s t0 ⇔ t ↔E t0 ⇔ fn(t) = fn(t’).

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