proglog2011-2012

Upload: cristi-popa

Post on 01-Jun-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/9/2019 ProgLog2011-2012

    1/94

    Programare Logică

    Ioana Leustean

    http://moodle.fmi.unibuc.ro/course/view.php?id=186

    1

    Cont ̧inutul cursului 

      Introducere in MAUDE

      Signaturi şi algebre multisortate. Termeni

     Morfisme. Tipuri abstracte de date. Algebre iniţial̆e   Subalgebre. Algebre libere

      Semantica termenilor

      Ecuaţii. Relaţia de satisfacere

      Specificaţii algebrice

      Γ-algebra iniţială

      Teorema constantelor. Demonstraţii prin inducţie

      Logica ecuaţională: sintaxa   Logica ecuaţională: corectitudine şi completitudine

      Regula ”Subterm Replacement”

      Rescrierea termenilor

      Substituţii. Algoritmul de unificare

     Sisteme de rescriere abstracte

      Rescrierea termenilor: terminare, confluenţă, completare   Logica ecuaţională  şi rescriere local̆a

      Deducţie şi rescriere modulo axiome

      Semantica algebrei iniţiale

     Clauze Horn. Rezoluţie

    http://fmi.unibuc.ro/ro/departamente/funinf/leustean_ioana/http://moodle.fmi.unibuc.ro/course/view.php?id=186http://fmi.unibuc.ro/ro/departamente/funinf/leustean_ioana/http://moodle.fmi.unibuc.ro/course/view.php?id=186http://moodle.fmi.unibuc.ro/course/view.php?id=186http://moodle.fmi.unibuc.ro/course/view.php?id=186http://fmi.unibuc.ro/ro/departamente/funinf/leustean_ioana/http://fmi.unibuc.ro/ro/departamente/funinf/leustean_ioana/http://moodle.fmi.unibuc.ro/course/view.php?id=186http://fmi.unibuc.ro/ro/departamente/funinf/leustean_ioana/

  • 8/9/2019 ProgLog2011-2012

    2/94

  • 8/9/2019 ProgLog2011-2012

    3/94

    Comenzi sistem

    in  ../nume-fisier.mod show module  nume-modul  .select  nume-modul  .show  sorts  .

    show  ops  .reduce  termen .reduce  termen1 == termen2  .parse term .set trace on .set trace off .quit

    Manual de Maude (html)

    Maude> in PL/Exemple-Curs1.maude

    ==========================================

    fmod MYNAT

    Maude> show module MYNAT .

    fmod MYNAT is

    sorts Nat .op 0 : -> Nat .

    op s_ : Nat -> Nat .

    endfm

    Maude> select MYNAT .

    10 

    Maude> reduce s s s s s 0 .

    reduce in MYNAT : s s s s s 0 .

    rewrites: 0 in 6641663802ms cpu (0ms real) (0 rew/sec)

    result Nat: s s s s s 0

    Maude> parse s s s s s 0 .

    N a t : s s s s s 0

    Maude> reduce s s s 0 = = s s 0 .

    reduce in MYNAT : s s s 0 == s s 0 .

    rewrites: 1 in 10534570934ms cpu (0ms real) (0 rew/sec)

    result Bool: false

    11

    Exemplul 1

    fmod MYNAT is

    sorts Nat .

    op 0 : -> Nat .op s_ : Nat -> Nat .

    endfm

    Acest modul introduce tipul de date Nat.Datele de tip Nat sunt:

    0, s 0, s s 0 , s s s 0 , s s s s 0, s s s s s 0, ...

    Reprezentarea matematica:S  = {Nat }, Σ =  {0 :→ Nat , s  :  Nat  →  Nat }

    (S , Σ) este o signatură şi  defineşte o clasă de algebre (structuri,structuri algebrice). Algebra (N, 0, succesor ) este un obiect”privilegiat” al acestei clase.

    12 

    http://maude.cs.uiuc.edu/maude2-manual/html/maude-manual.htmlhttp://maude.cs.uiuc.edu/maude2-manual/html/maude-manual.htmlhttp://maude.cs.uiuc.edu/maude2-manual/html/maude-manual.htmlhttp://maude.cs.uiuc.edu/maude2-manual/html/maude-manual.htmlhttp://maude.cs.uiuc.edu/maude2-manual/html/maude-manual.htmlhttp://maude.cs.uiuc.edu/maude2-manual/html/maude-manual.html

  • 8/9/2019 ProgLog2011-2012

    4/94

    fmod ... endfm

    fmod MYNATLIST is

    protecting MYNAT .

    sort ListNat .

    subsort Nat < ListNat .

    op nil : -> ListNat .

    op _;_ : ListNat ListNat -> ListNat [ assoc ] .var L : ListNat .

    eq nil ; L = L .

    e q L ; n i l = L .

    endfm

    Structura generală a unui modul:•  importuri (protecting, extending, including),• declararea sorturilor si a subsorturilor,•  declararea operaţiilor,• declararea variabilelor,

    • ecuaţii.13 

    Importuri 

    Exista trei modalitati de importare a modulelor

      protectingse foloseste atunci cand datele definite in modulul importantnu sunt afectate de operatiile dau ecuatiile noului modul: nu

    se construiesc date noi pe sorturi vechi (”no junk”) si nu suntidentificate date care in modulul initial erau diferite (”noconfusion”)

     extendingpermite aparitia unor date noi pe sorturile vechi (”junk”) darnu p ermite identificarea datelor care in modulul initial eraudiferite (”no confusion”)

      includingnu are restrictii

    14 

    [assoc] 

    op _;_ : ListNat ListNat -> ListNat [ assoc ] .

    Atributul [assoc] inlocuieste ecuatiile:

    eq (L;P);Q = L;(P;Q) .

    eq L;(P;Q) = (L;P);Q .

    Ecuatiile definite cu  eq  sunt transformate in reguli de rescriere.Cele doua ecuatii care definesc asociativitatea duc la neterminarearescrierii, deci ele nu pot fi adaugate in sectiunea  eq. Efectulatributului [assoc]  este faptul ca rescrierea se face pe clase determeni ”modulo asociativitate”. In mod asemanator, atributul[comm] se foloseste pentru a indica faptul ca o operatie estecomutativa.

    15 

    Exemplul 2 

    fmod MYNATLIST is

    protecting MYNAT .

    sort ListNat .

    subsort Nat < ListNat .

    op nil : -> ListNat .

    op _;_ : ListNat ListNat -> ListNat [ assoc ] .

    var L : ListNat .

    eq nil ; L = L .

    e q L ; n i l = L .

    endfm

    16 

  • 8/9/2019 ProgLog2011-2012

    5/94

    Exemplul 2 

    Reprezentarea matematica:

    sort Nat ListNat .

    subsort Nat < ListNat .

    op 0 : -> Nat .op s_ : Nat -> Nat .

    op nil : -> ListNat .

    op _;_ : ListNat ListNat -> ListNat .

    Signatura (ordonat-sortată):   ((S , ≤), Σ)S  = {Nat , ListNat },  ≤⊆  S  × S , ≤= {(Nat , ListNat )}Σ = {0 :→ Nat , s   : Nat  →  Nat , nil  :→ ListNat ,

    ; : ListNat ListNat  →  ListNat }

    17 

    Exemplul 2 

    Reprezentarea matematica:

    op _;_ : ListNat ListNat -> ListNat [ assoc ] .

    var L : ListNat .

    eq nil ; L = L .

    e q L ; n i l = L .

    Prezentare (multime de ecuatii):(γ 1)∀L.ListNat (nil ; L =  L)(γ 2)∀L.ListNat (L; nil  = L)(γ 3)∀L.ListNat ∀P .ListNat ∀Q .ListNat ((L; P ); Q  =  L; (P ; Q ))Γ = {γ 1, γ 2, γ 3}

    18 

    Exemplul 2 

    fmod MYNATLIST is

    protecting MYNAT .

    sort ListNat .subsort Nat < ListNat .

    op nil : -> ListNat .

    op _;_ : ListNat ListNat -> ListNat [ assoc ] .

    var L : ListNat .

    eq nil ; L = L .

    e q L ; n i l = L .

    endfm

    Reprezentarea matematica a unui modul este o

    specificatie algebrica ordonat-sortată((S , ≤), Σ, Γ)

    19 

    Exemplul 2 

    Date de tipul ListNat sunt:

    n i l ; s 0

    s s 0 ; s 0 ; 0( n i l ; s 0 ) ; s s 0 ; n i l ; 0

    Aceste date le numim expresii  sau  termeni.Un program este un modul, adică o specificaţie; modelulmatematic al unei specificaţii este o algebră de termeni; oexecuţie este o rescriere ı̂n algebra de termeni asociată.

    Maude> select MYNATLIST .

    Maude> reduce (nil ; s 0) ; s s 0 ; nil ; 0 .

    reduce in MYNATLIST : (nil ; s 0) ; s s 0 ; nil ; 0 .

    rewrites: 2 in 2753904389ms cpu (0ms real)

    result ListNat: s 0 ; s s 0 ; 0

    20 

  • 8/9/2019 ProgLog2011-2012

    6/94

    Exemplul 2 

    Maude> set trace on .

    Maude> reduce (nil ; s 0) ; s s 0 ; nil ; 0 .

    reduce in MYNATLIST : (nil ; s 0) ; s s 0 ; nil ; 0 .

    *********** equation

    e q n i l ; L = L .

    L - - > s 0

    nil ; s 0 ---> s 0

    *********** equation

    e q n i l ; L = L .

    L --> 0

    nil ; 0 ---> 0

    rewrites: 2 in 2753904388ms cpu (12ms real)

    result ListNat: s 0 ; s s 0 ; 0

    21

    Exemplul 2 

    fmod MYNATLIST is

    protecting MYNAT .

    sort ListNat .

    subsort Nat < ListNat .op nil : -> ListNat .

    op _;_ : ListNat ListNat -> ListNat [ assoc ] .

    var L : ListNat .

    eq nil ; L = L .

    e q L ; n i l = L .

    endfm

    Ce date defineste MYNATLIST?

    22 

    Exemplul 2 

    fmod MYNATLIST is

    protecting MYNAT .

    sort ListNat .

    subsort Nat < ListNat .

    op nil : -> ListNat .

    op _;_ : ListNat ListNat -> ListNat [ assoc ] .

    var L : ListNat .

    eq nil ; L = L .

    e q L ; n i l = L .

    endfm

    Modulul MYNATLIST defineşte 

    k ≥0Nk 

    (secvenţele ordonate finite de numere naturale ).

    Maude> reduce (0 ; s 0 ) == (0 ; s 0 ; 0) .

    ...

    result Bool: false   23 

    Exemplul 3 

    fmod MYNATLIST1 is

    protecting MYNAT .

    sort ListNat .

    subsort Nat < ListNat .

    op nil : -> ListNat .

    op _;_ : ListNat ListNat -> ListNat [ assoc comm ] .

    var L : ListNat .

    var I : Nat .

    eq nil ; L = L .

    e q L ; n i l = L .

    eq I ; I = I .

    endfm

    Maude> reduce (0 ; s 0) == (0 ; s 0 ; 0) ....

    result Bool: true

    Ce defineste MYNATLIST1 ?24 

  • 8/9/2019 ProgLog2011-2012

    7/94

    Exemplul 4 

    fmod COMPLEXINT is

    protecting INT .

    sort ComplexInt .

    subsort Int < ComplexInt .

    op _+i_ : Int Int -> ComplexInt .op i_ : Int -> ComplexInt .

    op _+_ : ComplexInt ComplexInt -> ComplexInt [ditto] .

    var z : Int .

    e q 0 + i z = i z .

    eq z +i 0 = z .

    ...

    endfm

    Observaţi supraı̂ncărcarea operaţiei + si atributul [ditto]+ :   Int Int − >  Int 

    + :   ComplexInt ComplexInt − >  ComplexInt 25 

    Exemplul 5 

    fmod GRUP is

    sort Element .

    op e : -> Element .

    op _+_ : Element Element -> Element [ assoc ] .

    op -_ : Element -> Element .vars x y : Element .

    eq e + x = x .

    eq x + e = x .

    e q ( - x ) + x = e .

    eq x + (- x) = e .

    eq - - x = x .

    eq - e = e .

    e q - ( x + y ) = ( - y ) + ( - x ) .

    endfm

    26 

    TRS canonic 

    O ecuaţie l  = r   se transformă, prin orientare de la stânga la

    dreapta, ı̂ntr-o regulă de rescriere  l  →  r . Ecuaţiile modululuiGRUP determină astfel un sistem de rescriere  canonic:

      orice şir de rescrieri se termină,

      ordinea de aplicare regulilor de rescriere nu schimbă rezultatulfinal.

    O ecuaţie t 1  =  t 2  din teoria de ordinul I a grupurilor este verificatăı̂n orice grup dacă şi numai dacă există un termen   t  astfel ı̂nĉatt 1

    ∗→ t   şi   t 2

    ∗→ t .

    Maude-ul poate fi utilizat ca demonstrator.

    27 

    Exemplul 5 

    Maude> select GRUP .

    Maude> reduce x + (-( - y + x)) == y .reduce in GRUP : x + - (- y + x) == y .

    *********** equation

    e q - ( x + y ) = - y + - x .

    x - - > - y

    y --> x

    - ( - y + x ) - - - > - x + - - y

    *********** equation

    eq - - x = x .

    x --> y

    - - y - - - > y

    28 

  • 8/9/2019 ProgLog2011-2012

    8/94

    Exemplul 5 

    *********** equation

    eq x + - x = e .

    x --> x

    x + - x + y ---> e + y

    *********** equation

    eq e + x = x .

    x --> y

    e + y - - - > y

    *********** equation

    (built-in equation for symbol _==_)

    y == y --->   true

    rewrites: 5 in 179156223ms cpu (23ms real)

    result Bool: true

    29 

    Exemplul 6 

    fmod MYNATLIST is

    protecting MYNAT .

    sort ListNat .

    subsort Nat < ListNat .

    op nil : -> ListNat .

    op _;_ : ListNat ListNat -> ListNat [ assoc ] .

    var L : ListNat .

    eq nil ; L = L .

    e q L ; n i l = L .

    endfm

    fmod MYNATLIST2 is

    protecting MYNATLIST .

    op _ Bool .

    ...

    endfm30 

    Exemplul 6 

    fmod MYNATLIST2 is

    protecting MYNATLIST .

    op _ Bool .vars I J : Nat .

    eq s I < s J = I < J .

    eq 0 < s I = true .

    eq I < 0 = f alse .

    c e q I ; J = J ; I i f ( J < I ) .

    endfm

    Observati  ecuatia conditionala

    c e q I ; J = J ; I i f ( J < I ) .

    Ce tip de date defineste modulul MYNATLIST2 ?31

    Exemplul 6 

    Maude> select MYNATLIST2 .Maude> r educe s s s 0 ; s s 0 ; s s s 0 ; 0 .

    ...

    r e s u l t L i s t N a t : 0 ; s s 0 ; s s s 0 ; s s s 0

    Modulul MYNATLIST2 defineste liste de numere naturale ordonatecrescator.

    A se vedea si D. Dragulici, Revista de logica

    32 

    http://egovbus.net/rdl/articole/No1Art94.pdfhttp://egovbus.net/rdl/articole/No1Art94.pdfhttp://egovbus.net/rdl/articole/No1Art94.pdfhttp://egovbus.net/rdl/articole/No1Art94.pdfhttp://egovbus.net/rdl/articole/No1Art94.pdf

  • 8/9/2019 ProgLog2011-2012

    9/94

    Exemplul 7 

    fmod STACK{X :: TRIV} is

    sorts EmptyStack{X} NonEmptyStack{X} Stack{X} .

    subsorts EmptyStack{X} NonEmptyStack{X} < Stack{X} .

    op empty : -> EmptyStack{X} .

    op push : X$Elt Stack{X} -> NonEmptyStack{X} .

    op pop_ : NonEmptyStack{X} -> Stack{X} .

    op top_ : NonEmptyStack{X} -> X$Elt .

    var E : X$Elt .

    var S : Stack{X} .

    eq top push (E , S) = E .

    eq pop push (E , S) = S .

    endfm

    Modulul STACK{X } creaz̆a o stivă generică.Parametrul formal X este descris de teoria TRIV

    fth TRIV is sort Elt. endfh   33 

    Exemplul 8 

    fth TRIV is

    sort Elt.

    endfh

    fmod STACK{X :: TRIV} is ... endfm

    Instanţiind modulul parametru X cu modulul predefinit NATdefinim stivele de numere naturale.

    view Inst from TRIV to NAT is

    sort Elt to Nat .

    endv

    fmod STACKNAT is

    protecting STACK{Inst} .

    endfm34 

    Exemplul 8 

    Maude> select STACKNAT .

    Maude> show sorts .sort Bool .

    sort Zero . subsort Zero < Nat .

    sort NzNat . subsort NzNat < Nat .

    sort Nat . subsorts NzNat Zero < Nat .

    sort EmptyStack{Inst} .

    subsort EmptyStack{Inst} < Stack{Inst} .

    sort NonEmptyStack{Inst} .

    subsort NonEmptyStack{Inst} < Stack{Inst} .

    sort Stack{Inst} .

    subsorts NonEmptyStack{Inst} EmptyStack{Inst} < Stack{Inst} .

    35 

    Limbajul Maude este un limbaj de specificaţie bazat pe logicaecuaţională. Un program este o colecţ ie de module. Execuţia esteo rescriere. Câteva din caracteristicile acestui limbaj sunt:

      modularizare si parametrizare,

      definirea tipurilor de date este independentă de implementare,

      extensibilitate,

      permite tratarea erorilor şi supraı̂ncărcarea operaţ iilor,

     poate fi folosit ca demonstrator.

    36 

  • 8/9/2019 ProgLog2011-2012

    10/94

    Programare logic˘ a

    Signaturi. Algebre. Termeni

    37 

    Mult ̧imi S-sortate 

    S  = ∅

      O mulţime   S - sortată   A  este o familie  A  =  {As }s ∈S .

      Dacă  A  =  {As }s ∈S   şi  B  =  {B s }s ∈S   atunci ∅ =  {∅s }s ∈S , ∅s  =  ∅  or.   s  ∈  S , A ⊆  B   ⇔  As  ⊆  B s   or.   s  ∈  S , A ∪ B  =  {As  ∪ B s }s ∈S , A ∩ B  =  {As  ∩ B s }s ∈S , A × B  =  {As  × B s }s ∈S .

    Exemplu:   S  = {nat , bool },  A  =  {Anat , Abool },Anat  =  N,  Abool   = {T , F }

    sorturi=tipuri, elemente de sort  s = date de tip  s 

    38 

    Funct ¸ii S -sortate 

    A =  {As }s ∈S , B  = {B s }s ∈S ,  C  = {C s }s ∈S 

      O funcţie   S - sortată   f   : A  → B  este o familie de funcţiif   = {f s }s ∈S , unde f s   : As  →  B s  oricare s  ∈  S .

      Dacă  f   : A  → B   şi  g   : B  →  C , definimf  ; g   : A  → C , f  ; g  = {f s ; g s }s ∈S 

      f s ; g s   : As  →  C s ,f s ; g s (a) :=  g s (f s (a)) or.   s  ∈  S , a  ∈  As 

      1A :  A  → A, 1A =  {1As }s ∈S    (f  ; g ); h =  f  ; (g ; h) (compunerea este asociativă)

      f  ; 1B  = f  , 1A; f   = f   or.   f   : A  → B 

    39 

    Funct ¸ii S -sortate 

    A =  {As }s ∈S , B  = {B s }s ∈S ,   O funcţie S -sortat̆a  f   : A  → B   se numeşte

    injectivă, (surjectivă, bijectivă)dacă  f s   este injectivă, (surjectivă, bijectivă) oricare s  ∈  S .

      O funcţie S -sortat̆a  f   : A  → B   se numeşte  inversabil̆a dacăexist̆a g   : B  →  A  a.̂ı.   f  ; g  = 1A  şi  g ; f   = 1B .

    Propoziţie.  O funcţie S -sortat̆a  f   : A  → B   este inversabilă dac̆a şinumai dacă este bijectivă (f s  este bijectivă oricare  s  ∈  S ).

    40 

  • 8/9/2019 ProgLog2011-2012

    11/94

  • 8/9/2019 ProgLog2011-2012

    12/94

  • 8/9/2019 ProgLog2011-2012

    13/94

    Exemple 

      BOOL = (S  = {bool }, Σ)Σ =  {T   :→ bool , F   :→ bool , ¬ :  bool  →  bool ,

    ∨ :  bool bool  →  bool , ∧ :  bool bool  →  bool }

      BOOL-algebra A:Abool   := {0, 1}AT   := 1, AF  := 0,  A¬(x ) := 1 − x ,A∨(x , y ) := max (x , y ),  A∧(x , y ) := min(x , y )

      BOOL-algebra B :B bool   := P (N)B T   :=  N,  B F   := ∅,  B ¬(X ) :=  N \ X ,B ∨(X , Y ) := X  ∪ Y , B ∧(X , Y ) := X  ∩ Y 

    49 

    Exemple 

      NAT   = (S  = {nat }, Σ)Σ = {0 :→ nat , succ  :  nat  →  nat }

      NAT -algebra A:

    Anat   :=  NA0 := 0,  Asucc (x ) := x  + 1

      NAT -algebra B :B nat   := {0, 1}B 0 := 0,  B succ (x ) := 1 − x 

      NAT -algebra C :C nat   := {2n|n ∈  N}C 0 := 1,  C succ (2

    n) := 2n+1

    50 

    Exemple 

      STIVA = (S  = {elem, stiva}, Σ)Σ =  {0 :→ elem, empty   :→ stiva, pop  :  stiva → stiva,

    push :  elem stiva → stiva, top  :  stiva → elem}

      STIVA-algebra A:   Aelem :=  N,  Astiva :=  N∗

    A0 := 0,  Aempty   := λ, Apush(n, n1 · · · nk ) :=  n n1 · · · nk ,Apop (λ) = Apop (n) := λ,Apop (n1n2 · · · nk ) := n2 · · · nk   pt.   k  ≥  2,Atop (λ) := 0,  Atop (n1 · · · nk ) := n1  pt.   k  ≥  1.

      STIVA-algebra B :   B elem :=  {0}, B stiva :=  NB 0 := 0,  B empty  := 0,  B push(0, n) := n  + 1 or.   n,B pop (0) := 0,  B pop (n) :=  n − 1 pt.   n ≥  1,

    B top (n) := 0 or.   n.

    51

    Exemple 

      AUTOMAT   = (S  =  {intrare , stare , iesire }, Σ)

    Σ = {s 0 :→ stare , f   :  intrare stare  →  stare ,g   : stare  →  iesire }

      AUTOMAT -algebra A:Aintrare  = {x , y }, Astare  = {s 0, s 1}, A iesire   := {T , F }As 0 :=  s 0, Ag (s 0) := F , Ag (s 1) := T ,Af   (x , s 0) := s 0, A f   (y , s 0) := s 1,Af   (x , s 1) := s 0, A f   (y , s 1) := s 1

      AUTOMAT -algebra B :B intrare  = B stare  = B iesire   :=  NB s 0 := 0,  B f   (m, n) :=  m + n,  B g (n) := n  + 1

    52 

  • 8/9/2019 ProgLog2011-2012

    14/94

    Algebre ordonat-sortate 

    (S , ≤, Σ) signatură ordonat-sortatăO algebră ordonat-sortată de tipul (S , ≤, Σ) este o (S , Σ)-algebră

    (AS , AΣ) care satisface următoarele proprietăţi:   s 1 ≤  s 2  ⇒  As 1  ⊆  As 2   σ ∈  Σw 1,s 1 ∩ Σw 2,s 2 ,  w 1 ≤  w 2  ⇒

    Aw 2,s 2σ   (x) = Aw 1,s 1σ   (x) oricare x  ∈  Aw 1 .

      Semantica unui modul functional in  Maude este o algebrăordonat-sortată.

    53 

    Mult ̧ime de variabile 

    (S , Σ) signatură multisortată

    |Σ| := 

    w ,s  Σw ,s 

    |X | := s ∈S  X s   dacă  X   mulţime S -sortat̆aO mulţime de variabile este o mulţime  S -sortată  X   a.̂ ı.:

      X s  ∩ X s   =  ∅  or.   s  = s 

      |X | ∩ |Σ| = ∅

    simbolurile de variabile sunt distincte ı̂ntre ele şi sunt distincte desimbolurile de operaţii din Σ

    54 

    Termeni (expresii, cuvinte)

    (S , Σ) signatură,  X   mulţime de variabile

    Mulţimea  S -sortat̆a termenilor cu variabile din  X ,  T Σ(X ), este  ceamai mică mulţime de  şiruri finite   peste alfabetul

    L = 

    s ∈S  X s  ∪

    w ,s  Σw ,s  ∪ {(, )} ∪ {,}care verifică următoarele proprietăţ i:

      (T1) X s  ⊆  T Σ(X )s    (T2) dc.   σ :→ s , at.   σ ∈  T Σ(X )s ,

      (T3) dc.   σ :  s 1 · · · s n →  s   şi  t i  ∈ T Σ(X )s i   or.   i  = 1, . . . , nat.   σ(t1, . . . , tn) ∈  T Σ(X )s .

    • Var (t ) := mulţimea variabilelor care apar ı̂n  t  ∈  T Σ

    55 

    Termeni fără variabile (ground terms)

    (S , Σ) signatură multisortată

    Mulţimea  S -sortat̆a  termenilor fără variabile,  T Σ, este  cea mai mică  mulţime de  şiruri finite  peste alfabetul

    L = 

    w ,s  Σw ,s  ∪ {(, )} ∪ {,}care verifică următoarele proprietăţ i:

      (T2) dc.   σ :→ s , at.   σ ∈  T Σ,s ,

      (T3) dc.   σ :  s 1 · · · s n →  s   şi  t i  ∈ T Σ,s i   or.   i  = 1, . . . , nat.   σ(t1, . . . , tn) ∈  T Σ,s .

    • T Σ  =  T Σ(∅)

    56 

  • 8/9/2019 ProgLog2011-2012

    15/94

    Exemple 

      STIVA = (S , Σ)S  = {elem, stiva}, X elem =  {x , y }, X stiva =  ∅,Σ =  {0 :→ elem, empty   :→ stiva,

    push :  elem stiva →  stiva,pop  :  stiva → stiva,top  :  stiva → elem}

      T Σ(X )elem =  {0, x , y , top(pop(empty)),top(push(x , empty)), . . .}

    T Σ(X )stiva =  {empty, push(y , empty), pop(empty),push(top(empty), empty), . . .}

      şiruri care nu sunt termenipop (0), (pop )top (empty ),  empty (y ),  . . .

    57 

    Exemple 

      NATBOOL = (S , Σ)S  = {bool , nat }Σ = {T   :→ bool , F   :→ bool , 0 :→ nat ,

    s  :  nat  →  nat ,≤: nat nat  →  bool }

      T NATBOOL,nat  = {0, s(0), s(s(0)), . . .}T NATBOOL,bool   = {T, F,≤ (0, 0),≤ (0, s(0)), . . .}

      şiruri care nu sunt termeni≤ (T , F ),  s  ≤  (0),  Ts (0),  . . .

    58 

    Exemple 

      AUTOMAT   = (S , Σ),  S  = {

    intrare , stare , iesire }

    ,Σ =  {s 0 :→ stare ,

    f   :  intrare stare  →  stare ,g   : stare  →  iesire }

    T AUTOMAT ,stare  = {s0},  T AUTOMAT ,intrare  = ∅,T AUTOMAT ,iesire  = {g(s0)}

      GRAF   = (S , Σ),  S  = {arc , nod }Σ =  {v 0 :  arc  →  nod ,   v 1 :  arc  →  nod }T GRAF ,arc   = T GRAF ,nod  = ∅

    59 

    Expresii aritmetice 

      NATEXP  = (S  = {nat }, Σ)   Σ = {0 :→ nat , s  :  nat  →  nat ,

    + :  nat nat  →  nat , ∗ :  nat nat  →  nat }

      T NATEXP   = {0, s(0), s(s(0)), . . .+(0, 0),∗(0, +(s(0), 0)),∗(s(0), s(s(0))), . . .}

      şiruri care nu sunt termeni+(0), 0(s )s (0), ∗(0),  . . .

      T NATEXP   este mulţimea expresiilor aritmetice peste  N.

    60 

  • 8/9/2019 ProgLog2011-2012

    16/94

    Induct ̧ia pe termeni 

    (S , Σ) signatură multisortată,  X   mulţime de variabileFie P  o proprietate a.̂ı. următoarele condiţii sunt satisfăcute:

      pasul iniţial:

    P(x ) =  true  or.   x  ∈  X ,  P(σ) = true   or.   σ :→ s ,  pasul de inducţie:

    dacă  t 1 ∈  T Σ(X )s 1 ,  . . ., t n  ∈  T Σ(X )s n   şiP(t 1) = · · · =  P(t n) =  true  atunciP(σ(t1, . . . , tn)) =  true  or.   σ :  s 1 . . . s n →  s .

    Atunci  P(t ) = true  oricare t  ∈  T Σ(X ).

    61

    Algebra termenilor 

    Algebra termenilor 

    (S , Σ) signatură,  X   mulţime de variabileMulţimea termenilor  T Σ(X ) =  {T Σ(X )s }s ∈S  este (S , Σ)-algebră

    cu operaţiile definite astfel:   pt.   σ :→ s , operaţia corespunzătoare este T σ  :=  σ

      pt.   σ :  s 1 · · · s n →  s , operaţia corespunzătoare esteT σ :  T Σ(X )s 1 × · · · × T Σ(X )s n  →  T Σ(X )s T σ(t 1, . . . , t n) :=  σ(t1, . . . , tn)or.   t 1 ∈  T Σ(X )s 1 ,  . . ., t n  ∈  T Σ(X )s n

    T Σ(X ) algebra termenilor cu variabile din  X T Σ   algebra termenilor fără variabile (X   = ∅)

    62 

    Algebra expresiilor aritmetice 

      NATEXP  = (S  = {nat }, Σ)

      Σ =  {0 :→ nat , s  :  nat  →  nat ,+ :  nat nat  →  nat , ∗ :  nat nat  →  nat }

      T 0 :=  0,

      T s (t ) := s(t),

      T +(t 1, t 2) :=  +(t1, t2)

      T ∗(t 1, t 2) := ∗(t1, t2)

     Semantica unui modul ı̂n  Maude  (care conţine numaideclaraţii de sorturi, operaţii şi variabile) este o algebră de

    termeni.

    63 64

  • 8/9/2019 ProgLog2011-2012

    17/94

    Programare logic˘ a

    Morfisme.Tipuri abstracte de date.Algebre iniţiale

    65 

    Morfisme 

    Exemplu.   SignaturaMONOID  = (S  = {s }, Σ = {e  :→ s , ∗ :  ss  →  s })Fie (A, 1, ) şi (B , 0, +) monoizi(Ae  := 1,  A∗ :=  ,  B e  := 0, B ∗  := +)

    O funcţie f   : A  → B  este morfism de monoizi dacă:   f  (1) = 0  ⇔  f  (Ae ) =  B e    f  (x   y ) =  f  (x ) + f  (y ) ⇔  f  (A∗(x , y )) = B ∗(f  (x ), f  (y ))

    or.   x , y  ∈  A.

    A   ×   A  A∗→   A

    f ↓   f ↓   f ↓

    B    ×   B   B ∗→   B 

    66 

    Morfisme 

    (AS , AΣ), (B S , B Σ) (S , Σ)-algebre

    Un morfism de (S , Σ)-algebre ((S , Σ)-morfism) este o funcţieS -sortată  f   : A  → B  care verifică condiţ iile de compatibilitate:

      f s (Aσ) = (B σ) oricare  σ  :→ s ,

      f s (Aσ(a1, . . . , an)) = B σ(f s 1(a1), . . . , f s n (an))or.   σ :  s 1 · · · s n  →  s , or. (a1, . . . , an) ∈ As 1 × · · · × As n .

    As 1   × · · · ×   As nAσ→   As 

    f s 1↓   . . .   f s n ↓   f s ↓

    B s 1   × · · · ×   B s nB σ→   B s 

    Observat ̧ie 1A :  A  → A  este morfism or.   A  (S , Σ)-algebră.

    67 

    Exemplu 

      NAT   = (S  = {nat }, Σ = {0 :→ nat , succ  :  nat  →  nat })

      NAT -algebra A:Anat   :=  N, A0  := 0, Asucc (x ) :=  x  + 1

      NAT -algebra B :B nat   := {0, 1},  B 0 := 0,  B succ (x ) := 1 − x 

      f   : A  → B ,  f   = {f nat },  f nat (n) = n(mod   2)este morfism de  NAT -algebre

      Nu există morfism de  NAT -algebre g   : B  →  A.

    68 

  • 8/9/2019 ProgLog2011-2012

    18/94

    Exemple 

      STIVA = (S  = {elem, stiva}, Σ)Σ =  {0 :→ elem, empty   :→ stiva, pop  :  stiva → stiva,

    push :  elem stiva → stiva, top  :  stiva → elem}

      STIVA-algebra A:   Aelem :=  N,  Astiva :=  N∗

    A0 := 0,  Aempty   := λ, Apush(n, n1 · · · nk ) :=  n n1 · · · nk ,Apop (λ) = Apop (n) := λ,Apop (n1n2 · · · nk ) := n2 · · · nk   pt.   k  ≥  2,Atop (λ) := 0,  Atop (n1 · · · nk ) := n1  pt.   k  ≥  1.

      STIVA-algebra B :   B elem :=  {0}, B stiva :=  NB 0 := 0,  B empty  := 0,  B push(0, n) := n  + 1 or.   n,B pop (0) := 0,  Apop (n) :=  n − 1 pt.   n ≥  1,B top (n) := 0 or.   n.

    69 

    Exemple 

      STIVA-algebra A  = (Aelem =  N, Astiva =  N∗, . . .)

      STIVA-algebra B  = (B elem =  {0}, B stiva :=  N, . . .)

      f   : A  → B ,  f   = (f elem

     :  N  → {0}, f stiva

     :  N∗ →  N)f elem(n) := 0 or.   n,f stiva(λ) := 0,  f stiva(n1 · · · nk ) :=  k   pt.   k  ≥  1

      g   : B  →  A, g   = (g elem :  {0} →  N, g stiva :  N  →  N∗)

    g elem(0) := 0,g stiva(0) := λ, g stiva(k ) := 0 · · · 0   

    pt.   k  ≥  1

    f   şi  g  sunt morfisme de  STIVA-algebre

    70 

    Morfisme de mpo 

    Observat ̧ie.

    Mulţimile parţial ordonate se pot reprezenta ca (S , Σ)-algebre,

    S   := {elem, bool },Σ := {≤: elem elem → bool , T   :→ bool , F   :→ bool }.

      Mpo (A, ≤) este reprezentată ca (S , Σ)-algebră prin(A, {0, 1} ≤, T , F ), undeAelem :=  A, Abool   := {0, 1},  AT  := 1,  AF  := 0,A≤(x , y ) = T   ⇔ x  ≤  y 

     Ce relaţiile este ı̂ntre funcţ ii crescătoare şi morfisme de(S , Σ)-algebre?

      Orice (S , Σ)-morfism este funcţie crescătoare dar invers nueste adevărat!

    71

    Proprietăt ̧i 

    (S , Σ) signatură multisortată

    Propozit ̧ia 1.

    Fie  A, B , C  algebre şi  f   : A  → B , g   : B  →  C   morfisme. Atuncif  ; g   : A  → C   este morfism.

    Dem.

      σ :→ s  ∈  Σ(f  ; g )s (Aσ) =  g s (f s (Aσ)) = g s (B σ) = C σ,

      σ :  s 1 · · · s n →  s  ∈  Σ, (a1, . . . , an) ∈  As 1 × · · · × As n(f  ; g )s (Aσ(a1, . . . , an)) = g s (f s (Aσ(a1, . . . , an))) =

    g s (B σ(f s 1(a1), . . . , f s n (an))) =C σ(g s 1(f s 1(a1)), . . . , g s n (f s n (an)))

    = C σ((g ; f  )s 1(a1), . . . , (g ; f  )s n (an)).   qed 

    72 

  • 8/9/2019 ProgLog2011-2012

    19/94

    Proprietăt ̧i 

    Teorema 2.

    Exista un unic morfism  f   : T Σ →  B   or.   B   (S , Σ)-algebr̆a.

    Dem.   Fie  B   (S , Σ)-algebră.

    Existent ̧a.   Definim f   : T Σ →  B  prin inducţie pe termeni(P(t ) = ”  f  (t ) este definită”).

      pasul iniţial:   dc.   σ :→ s  ∈  Σ, at.   f s (σ) := B σ,

     pasul de inducţie:   dc.   σ :  s 1 . . . s n →  s  ∈  Σ şit 1 ∈  T Σs 1 , . . ., t n ∈  T Σs n   a.̂ı   f s 1(t 1),  · · · , f s n (t n) definite at.

    f s (σ(t1, . . . , tn)) := B σ(f s 1(t 1), · · ·  , f s n (t n))

    Conform principiului inductiei pe termeni,f s (t ) este definită or.   t  ∈  T Σ.

    73 

    Continuare 

    Demonstrăm c  ̆a f este morfism.

      dc.   σ :→ s  ∈  Σ, at.   f s (T Σσ) =  f s (σ) = B σ,   dc.   σ :  s 1 . . . s n →  s  ∈  Σ şi

    t 1 ∈  T Σs 1 , . . ., t n ∈  T Σs n   at.

    f s (T Σσ(t 1, . . . , t n)) = f s (σ(t1, . . . , tn))= B σ(f s 1(t 1), · · ·  , f s n (t n))

    74 

    Continuare 

    Unicitatea.   Fie g   : T Σ →  B   un morfism.Demonstram că  g   = f   prin inducţie pe termeni

    (P(t ) = ” dc.   t  ∈  T Σs   at.   g s (t ) şi  f s (t ) sunt egale”).

      pasul iniţial:   dc.   σ :→ s  ∈  Σ, at.   g s (σ) = B σ  =  f s (σ),

     pasul de inducţie:   dc.   σ :  s 1 . . . s n →  s  ∈  Σ şit 1 ∈  T Σs 1 , . . ., t n ∈  T Σs n   a.̂ı

    g s 1(t 1) = f s 1(t 1),  · · · , g s n (t n) = f s n (t n) at.

    g s (σ(t1, . . . , tn)) = B σ(g s 1(t 1), · · · , g s n (t n)) =B σ(f s 1(t 1), · · ·  , f s n (t n)) = f s (σ(t1, . . . , tn))

    Conform principiului inductiei pe termeni,g s (t ) =  f s (t ) or.   t  ∈  T Σs , adică g  = f  .   qed 

    75 

    Exemplu 

    (S , Σ) signatură multisortată

      D  = (D S , D Σ), D s   :=  N  or.   s  ∈  S dacă  σ  :→ s   atunci  D σ := 0,dacă  σ  :  s 1 . . . s n  →  s ,  k 1, . . ., k n ∈  N

    D σ(k 1, . . . , k n) := 1 + max (k 1, . . . , k n)

      f D   : T Σ →  D  unicul morfism

    Ce reprezintă valoarea  f D (t ) pentru un termen  t ?

    76 

  • 8/9/2019 ProgLog2011-2012

    20/94

    Termeni ca arbori 

    Un termen  t  poat fi reprezentat ca un arbore  arb (t ) astfel:

      σ ∈  T Σs   ⇒   arb (σ) :=   σ

      t  =  σ(t1, . . . , tn) ⇒

    arb (t ) :=   σ

           arb (t 1)   · · ·   arb (t n)

    Pentru orice t  valoarea f D (t ) este adâncimea arborelui  arb (t ).

    77 

    Izomorfisme 

    Un (S , Σ)-morfism f   : A  → B   este izomorfism dacă exist̆a unmorfism g   : B  →  A  a.̂ı.   f  ; g   = 1A   şi  g ; f   = 1B .

    Propozit ̧ia 3 Un morfism f   : A  → B  este izomorfism dacă şi numai dacă estefuncţie bijectivă, adică  f s   : As  →  B s   este bijecţie oricare  s  ∈  S .

    Dem.  Revine la a demonstra că implicaţia:

    f   morfism şi bijecţ ie ⇒  f  −1 morfism.

    78 

    Continuare 

    Demonstrăm c  ̆a f  −1 : B  →  A este morfism.

      dc.   σ :→ s  ∈  Σ, at.   f s (Aσ) = B σ, deci  f  −1s    (B σ) = Aσ,

      dc.   σ :  s 1 . . . s n →  s  ∈  Σ şib 1 ∈  B s 1 ,  . . ., b n  ∈  B s n   at.ex.   a1 ∈  As 1 ,  . . ., an ∈  As n   a.̂ı.f s 1(a1) =  b 1, . . ., f s n (an) = b n   şi

    f s (Aσ(a1, . . . , an)) = B σ(f s 1(a1), . . . , f s n (an)) = B σ(b 1, . . . , b n)

    Atunci  f s −1(B σ(b 1, . . . , b n)) = Aσ(a1, . . . , an) =

    Aσ(f s 1−1(b 1), . . . , f s n

    −1(b n)).   qed 

    79 

    Izomorfisme de mpo 

      (A = {x 1, x 2, x 3, x 4}, ≤), unde x 1 ≤  x 2 ≤  x 3  ≤  x 4   (B  = {0, 1}2, ≤), unde ≤  ordinea pe componente

      A  şi  B  sunt (S , Σ)-algebre, undeS   := {elem, bool },Σ := {≤: elem elem → bool , T   :→ bool , F   :→ bool }

      f   : A  → B f  (00) = x 1,  f  (01) = x 2,  f  (10) = x 3, f  (11) = x 4este funcţie bijectivă şi crescătoare

      A  B 

    80 

  • 8/9/2019 ProgLog2011-2012

    21/94

    Izomorfisme 

    Spunem că algebrele  A  = (AS , AΣ) şi  B  = (B S , B Σ) sunt izomorfedacă există un izomorfism  f   : A  → B .  În acest caz notăm  A   B .

      A  A  (1A  este izomorfism)

      A  B   ⇒ B    A   A  B , B    C   ⇒ A   C 

    Relaţia de izomorfism este o relaţie de echivalenţă (reflexivă,simetrică şi tranzitivă).

    Observat ̧ie.

    A  B  ⇒ As    B s   oricare  s  ∈  S 

    81

    Exemple 

      NAT   = (S  = {nat }, Σ = {0 :→ nat , succ  :  nat  →  nat })

      NAT -algebra A:   Anat  =  N,  A0 := 0,  Asucc (x ) := x  + 1

      NAT -algebra B :   B nat  := {0, 1},  B 0 := 0,  B succ (x ) := 1 − x    NAT -algebra C :   C nat   := {2

    n|n ∈  N}C 0 := 1,  C succ (2

    n) := 2n+1

      A  B 

      A  C f   : A  → C , f  (n) := 2n este un  NAT -izomorfism.

    82 

    Exemple 

      BOOL = (S  = {bool }, Σ)

    Σ =  {T   :→ bool , F   :→ bool , ¬ :  bool  →  bool ,∨ :  bool bool  →  bool , ∧ :  bool bool  →  bool }

      Abool   := {0, 1}AT   := 1, AF  := 0,  A¬(x ) := 1 − x ,A∨(x , y ) := max (x , y ),  A∧(x , y ) := min(x , y )

      B bool   := P (N)B T   :=  N,  B F   := ∅,  B ¬(X ) :=  N \ X ,B ∨(X , Y ) := X  ∪ Y , B ∧(X , Y ) := X  ∩ Y 

      A  B 

    83 

    Exemple 

      BOOL-algebra C :

    C bool   := {t  :  N  → {0, 1}|   t   funcţie}C T (n) := 1,  C F (n) := 0 or.   n ∈  NC ¬(t )(n) := 1 − t (n) or.   t  ∈  C bool , n  ∈  NC ∨(t 1, t 2)(n) := max (t 1(n), t 2(n)) or.   t 1,  t 2 ∈  C bool ,  n  ∈  NC ∧(t 1, t 2)(n) := min(t 1(n), t 2(n)) or.   t 1,  t 2 ∈  C bool ,  n  ∈  N

      B    C f   : B  →  C ,  f  (Y ) :=  χY   oricare  Y   ∈ P (N)f  (Y )(n) = 1 dacă  n  ∈  Y , f  (Y )(n) = 0 dacă n  ∈ Y f   este BOOL-izomorfism

    84 

  • 8/9/2019 ProgLog2011-2012

    22/94

    Exemple 

      STIVA-algebra A  = (Aelem =  N, Astiva =  N∗

    , . . .)   STIVA-algebra B  = (B elem =  {0}, B stiva :=  N, . . .)

      A  B 

    85 

    Exemple 

      STIVA-algebra A:   Aelem :=  N,  Astiva :=  N∗ A0 := 0,

    Aempty   := λ, Apush(n, n1 · · · nk ) :=  n n1 · · · nk ,Apop (λ) = Apop (n) := λ,

    Apop (n1n2 · · · nk ) := n2 · · · nk   pt.   k  ≥  2,Atop (λ) := 0,  Atop (n1 · · · nk ) := n1  pt.   k  ≥  1.

      STIVA-algebra C :   C elem :=  Z, C stiva :=  Z∗

    C 0 := 0,  C empty   := λ,  C push(x , x 1 · · · x k ) := x 1 · · · x k x ,C pop (λ) =  C pop (x ) := λ,C pop (x 1 · · · x k −1x k ) := x 1 · · · x k −1  pt.   k  ≥  2,C top (λ) := 0,  C top (x 1 · · · x k ) := x k   pt.   k  ≥  1.

    86 

    Exemple 

      STIVA-algebra A:   Aelem :=  N,  Astiva :=  N∗

      STIVA-algebra C :   C elem :=  Z, C stiva :=  Z∗

      f   : A  → C , f   = (f elem :  N  →  Z, f stiva :  N∗ →  Z∗)

    f elem(2k ) := k , f elem(2k  + 1) := −k  − 1 pt.   k  ∈  N,

    f stiva(n1 · · · nk ) := f elem(nk ) · · · f elem(n1) pt.   n1 · · · nk  ∈  N∗.

    f   este STIVA-izomorfism

      Algebrele izomorfe sunt ”identice” (modulo redenumire).

    87 

    ADT 

      Un  tip abstract de date  este o mulţime de date (  valori) şioperaţii asociate lor, a căror descriere (specificare) esteindependentă de implementare.abstract=disassociated from any specific instance 

      O algebră este formată dintr-o mulţime de elemente şi omulţime de operaţii. Algebrele pot modela tipuri de date.

      Două algebre izomorfe au acelaşi comportament, deci trebuiesa fie modele ale acelaşi tip de date. Aceasta asigurăindependenţa de implementare.

    88 

  • 8/9/2019 ProgLog2011-2012

    23/94

    ADT 

      O signatură (S , Σ) este interfaţa sintactică a unui tip abstractde date.

      O algebră  A  = (AS , AΣ) este o posibilă implementare.   Dacă A    B , atunci A   şi  B   implementează acelaşi t ip de date.

      Un tip abstract de date  este o clasă C  de (S , Σ)-algebre cuproprietatea că oricare două algebre sunt izomorfe:

    A, B  ∈ C  ⇒ A   B .

      [A] :=  {B   (S , Σ) algebr̆a|  A   B } este tip abstract de date.

    89 

    Algebra init ̧ială

    K  clasă de (S , Σ)-algebre

      O (S , Σ)-algebr̆a I   este iniţială  ı̂n   K dacă I  ∈ K  şi pentru

    orice B  ∈ K  exist̆a un  unic morfism f   : I  → B .

    Propozit ̧ia 4 

      (a)  I   iniţială ı̂n   K,  A  ∈ K,  A   I   ⇒ A  iniţială ı̂n   K

      (b)  A1   şi  A2   iniţiale ı̂n   K ⇒ A1   A2.

    90 

    Continuare 

    Dem.   (a)  I   iniţială ı̂n  K, A  ∈ K   şi  ϕA :  A  → I   izomorfism

    Fie  B  ∈ K  şi  f B 

      : I  → B  unicul morfism. Demonstrăm că există ununic morfism h  :  A  → B .

      Existent ̧a. h :=  ϕA; f B   : A  → B   mofism

      Unicitatea.   dacă  g   : A  → B  morfism, atunci  ϕA−1; g   : I  → B 

    morfism,deci ϕA−1; g  = f B ; rezultă  g  = ϕA; f B  = h.

    (b)  A1   şi  A2   iniţiale ı̂n   K

    Există un unic morfism  f   : A1 →  A2   şi un unic morfismg   : A2 →  A1. Atunci f  ; g   : A1 →  A1   şi 1A1  :  A1 →  A1, deci

    f  ; g  = 1A1 . Analog  g ; f   = 1A2 , deci  A1   A2.   qed 

    91

    (S , Σ)  -algebra init ̧ială

    (S , Σ) signatură multisortată

      K  clasa tuturor (S , Σ)-algebrelor.   I  este (S , Σ)-algebră iniţial̆a dacă oricare  B   (S , Σ)-algebră

    există un unic morfism  f   : I  → B .

    Teorema 2.   T Σ  este (S , Σ)-algebră iniţ ială.

      I (S ,Σ) =  {I  |   I   (S , Σ) -algebră iniţială}este un tip abstract de date şi  T Σ ∈ I (S ,Σ).

    Un modul funcţional ı̂n  Maude   (care conţine numai declaraţiide sorturi şi operaţii) defineşte un astfel de tip abstract de

    date şi construieşte efectiv algebra  T Σ.

    92 

  • 8/9/2019 ProgLog2011-2012

    24/94

    Programare logic˘ a

    Subalgebre. Algebre libere

    93 

    Subalgebre 

    (S , Σ) - signatură multisortată,  A  (S , Σ)-algebr̆a

    B  ⊆  A  este  parte stabil ă a lui  A  dacă

      Aσ ∈  B s   or.   σ :→ s ,

      Aσ(b 1, . . . , b n) ∈  B s   or.   σ :  s 1 · · · s n  →  s ,or. (b 1, . . . , b n) ∈  B s 1 × · · · × B s n .

    Daca  B  este parte stabila a lui  A  atunci(B S  = B , B Σ) este (S , Σ)-subalgebră a lui (AS , AΣ), unde

      B σ  :=  Aσ   or.   σ :→ s ,

      B σ(b 1, . . . , b n) := Aσ(b 1, . . . , b n) or.   σ :  s 1 · · · s n →  s ,or. (b 1, . . . , b n) ∈  B s 1 × · · · × B s n .

    94 

    Exemple 

      BOOL-algebra B :B bool   := P (N)B T   :=  N,  B F   := ∅,  B ¬(X ) :=  N \ X ,B ∨(X , Y ) := X  ∪ Y , B ∧(X , Y ) := X  ∩ Y 

      B 1 =  {∅,N} ∪ { {n}|n ∈  N}nu este subalgebră.

      B 2 =  {∅,N} ∪ { {n},N \ {n}}este subalgebr̆a (n ∈  N  fixat).

    95 

    Exemple 

      AUTOMAT -algebra AAintrare  = {x , y }, Astare  = {s 0, s 1}, A iesire   := {T , F }As 0 :=  s 0, Ag (s 0) := F , Ag (s 1) := T ,Af   (x , s 0) := s 0, A f   (y , s 0) := s 1,Af   (x , s 1) := s 0, A f   (y , s 1) := s 1

      P  =  {P intrare  := {x }, P stare   := {s 0}, P iesire   := {F }}este subalgebră A

    96 

  • 8/9/2019 ProgLog2011-2012

    25/94

    Mult ̧imi de generatori 

    (S , Σ) signatură multisortată,A-algebr̆a,  X   mulţime,  X   ⊆ A

      Algebra generat̆a de  X   ı̂n A  este  cea mai mică  (⊆) subalgebră

    B  a lui A  cu  X   ⊆ B . Vom nota  B  = X    F   := {B  ⊆  A  |B  subalgebr̆a,   X  ⊆ B }

    A ∈ F , deci F = ∅ {B i }i ∈I   ⊆ F   implică

     i ∈I  B i  ∈ F 

    X  = 

    {B   | B  ∈ F}

      Spunem că A  este generat̆a de  X   dacă  X  ⊆ A   şi  X   = A.   Înacest caz X   este mulţime de generatori  pentru  A.

    97 

    Construct ̧ia algebrei generate 

    (S , Σ) signatură multisortată,A-algebr̆a,  X   mulţime,  X   ⊆ A

     Construim un şir de mulţimi  S -sortate (X n)n   astfel: X 0 :=  X , X n+1,s  :=  X n,s  ∪ {Aσ | σ  :→ s } ∪ {Aσ(a1, . . . , an) |

    σ  :  s 1 . . . s n  →  s , (a1, . . . , an) ∈  X n,s 1  × · · · × X n,s n }.

      Propoziţia 5.   X   = 

    n X n.Dem:  va fi adăugat̆a!

    98 

    Proprietăt ̧i 

    h :  A  → B   funcţieh−1 : P (B ) → P (A),  h−1(Y ) :=  {a ∈  A|h(a) ∈  Y }

    imaginea inversă

    Propozit ̧ia 6.

    Fie  h  :  A  → B  morfism.

      (a) dc.   C  ⊆ A  subalgebră at.   h(C ) ⊆ B   subalgebră,

      (b) dc.   D  ⊆  B  subalgebră at.   h−1(D ) ⊆  B  subalgebră,

      (c)  h( X  ) = h(X ) pentru  X   ⊆ A,

      (d)  h−1(Y ) ⊆  h−1( Y  ) pentru  Y   ⊆ B .

    Dem.  (a), (b), (d) exercitii.

    99 

    Continuare 

    (c)  h( X  ) = h(X ) pentru  X  ⊆ A,.

    X  ⊆ A  subalgebr̆a  ⇒  h( X  )  ⊆ B  subalgebră

    h( X  )  ⊆ B   subalgebră,  h(X ) ⊆ h( X  )  ⇒  h(X ) ⊆  h( X  )

    h−1(h(X )) ⊆  A  subalgebr̆a,  X  ⊆ h−1(h(X ))⇒ X  ⊆ h−1(h(X ))  ⇒h(X ) ⊆ h(h−1(h(X ))) ⊆ h(X )

    h(X ) ⊆ h( X  ) csi  h(X ) ⊆  h(X )  ⇒  h(X ) = h(X )

    100 

  • 8/9/2019 ProgLog2011-2012

    26/94

    Algebre libere 

    (S , Σ) signatură multisortată,  X   mulţime de variabile

    O algebră  A  este  liber generată de X   dacă

    •   X   ⊆ A,

    •   oricare ar fi B  o algebră şi  f   : X  → B  o funcţie există un unicmorfism  f̃   : A  → B   cu  f̃ s (x ) = f s (x ) oricare x  ∈  X s , s  ∈  S .

    Observat ̧ii ∗ Dacă  A1   şi  A2  sunt liber generate de  X , atunci  A1   A2.∗ Dacă  X   ⊆ A   şi  A  este liber generată de  X , atunci  X   = A.

    Invers nu este ı̂ntotdeauna a adevă rat.

      T Σ  este liber generată de mulţimea  ∅.

    101

    Mult ̧imi de generatori liberi 

    (S , Σ) signatură multisortată,A-algebr̆a,  X   mulţime de variabile,  X  ⊆ A

    Dacă  A  este liber generată de X , atunci  X   = A.

    Spunem că  X   este mulţime de generatori liberi pentru  A.

      NAT   = (S  = {s }, Σ), Σ = {0 :→ nat , succ  :  nat  →  nat }Anat   :=  N, A0  := 0, Asucc (x ) :=  x  + 1• A  este liber generată de  ∅• {1} este mulţime de generatori pentru  A• {1} nu  este mulţime de generatori liberi pentru  A

    102 

    Exemple 

      STIVA = (S  = {elem, stiva}, Σ)Σ =  {0 :→ elem, empty   :→ stiva, pop  :  stiva → stiva,

    push :  elem stiva → stiva, top  :  stiva → elem}

      STIVA-algebra A:   Aelem :=  N,  Astiva :=  N∗

    A0 := 0,  Aempty   := λ, Apush(n, n1 · · · nk ) :=  n n1 · · · nk ,Apop (λ) = Apop (n) := λ,Apop (n1n2 · · · nk ) := n2 · · · nk   pt.   k  ≥  2,Atop (λ) := 0,  Atop (n1 · · · nk ) := n1  pt.   k  ≥  1.

      Dacă  P  := ∅  atunci  P elem =  {0}  şi  P stiva =  {0}∗.

      A  este liber generată de  X , unde X elem :=  N   şi  X stiva :=  ∅.

    103 104

  • 8/9/2019 ProgLog2011-2012

    27/94

    Programare logic˘ a

    Semantica termenilor

    105 

    Mult ̧ime de variabile 

    (S , Σ) signatură multisortată

    |Σ| := 

    w ,s  Σw ,s 

    |X | := s ∈S  X s   dacă  X   mulţime S -sortat̆aO mulţime de variabile este o mulţime  S -sortată  X   a.̂ ı.:

      X s  ∩ X s   =  ∅  or.   s  = s 

      |X | ∩ |Σ| = ∅

    simbolurile de variabile sunt distincte ı̂ntre ele şi sunt distincte desimbolurile de operaţii din Σ

    106 

    Termeni cu variabile din X 

    (S , Σ) signatură,  X   mulţime de variabile

    Mulţimea  S -sortat̆a termenilor cu variabile din  X ,  T Σ(X ), este  ceamai mică mulţime de  şiruri finite   peste alfabetul

    L = 

    s ∈S  X s  ∪

    w ,s  Σw ,s  ∪ {(, )} ∪ {,}care verifică următoarele proprietăţ i:

      (T1) X s  ⊆  T Σ(X )s    (T2) dc.   σ :→ s , at.   σ ∈  T Σ(X )s ,

      (T3) dc.   σ :  s 1 · · · s n →  s   şi  t i  ∈ T Σ(X )s i   or.   i  = 1, . . . , nat.   σ(t1, . . . , tn) ∈  T Σ(X )s .

    107 

    Algebra de termeni T Σ(X )

    (S , Σ) signatură,  X   mulţime de variabile

    Mulţimea termenilor  T Σ(X ) =  {T Σ(X )s }s ∈S  este (S , Σ)-algebrăastfel:

      pt.   σ :→ s , operaţia corespunzătoare este T σ  :=  σ

      pt.   σ :  s 1 · · · s n →  s , operaţia corespunzătoare esteT σ :  T Σ(X )s 1 × · · · × T Σ(X )s n  →  T Σ(X )s T σ(t 1, . . . , t n) :=  σ(t1, . . . , tn)or.   t 1 ∈  T Σ(X )s 1 ,  . . ., t n  ∈  T Σ(X )s n

    • T Σ(X ) algebra termenilor cu variabile din  X • vom nota  σ(t1, . . . , tn)   :=   σ(t 1, . . . , t n)

    108 

  • 8/9/2019 ProgLog2011-2012

    28/94

    Semantica termenilor 

    (S , Σ) signatură,  X   mulţime de variabile

    Teorema 7 (Evaluarea termenilor ı̂n algebre).

    Fie  A  o (S , Σ)-algebră. Orice funcţie e  :  X  → A  (evaluare,atribuire, interpretare)se extinde la un unic (S , Σ)-morfism

    ẽ :  T Σ(X ) → A.

    Dem.

      Definim  ẽ(t ) prin inducţie pe termeni: or.   x  ∈  X s , ẽs (x ) :=  es (x ), or.   σ :→ s , ẽs (σ) :=  Aσ or.   σ :  s 1 · · · s n  →  s , or.   t 1 ∈  T Σ(X )s 1 ,  . . .,  t n ∈  T Σ(X )s n

    ẽs (σ(t 1, . . . , t n)) := Aσ(ẽs 1(t 1), . . . , ẽs n (t n))

     Demonstrăm că  ẽ :  T Σ(X ) → A  este morfism.   Dacă  f   : T Σ(X ) → A  morfism şi  f  |X   = e  atunci se

    demonstrează prin inducţie pe termeni că  f   = ẽ. 109 

    Semantica expresiilor aritmetice 

      NATEXP  = (S  = {nat }, Σ),  X   = {x , y }

      Σ = {0 :→ nat , s  :  nat  →  nat ,+ :  nat nat  →  nat , ∗ :  nat nat  →  nat }

      T NATEXP (X ) = {0, x , y , s (0), s (x ), s (y ), s (s (0)), . . .+(0, 0), +(0, x ), +(x , y ), ∗(0, +(s (0), x )), ∗(s (y ), s (s (x ))), . . .}

      A = (Z4, 0, s , +, ∗) cu operaţiile obişnuite

      e :  {x , y } →  Z4, e(x ) := 1,  e(y ) := 3

      ẽ(+(x, y)) =  A+(e(x ), e(y )) = 1 + 3 = 0 (mod   4)ẽ(∗(s(x), s(s(0)))) = A∗(As (e(x )), As (As (A0))) =(1 + 1) ∗ (0 + 1 + 1) = 2 ∗ 2 = 0 (mod   4)

    110 

    Exemple 

      STIVA = (S  = {elem, stiva}, Σ)Σ =  {0 :→ elem, empty   :→ stiva, pop  :  stiva → stiva,

    push :  elem stiva → stiva, top  :  stiva → elem}   STIVA-algebra A:   Aelem :=  N,  Astiva :=  N

    A0 := 0,  Aempty   := λ, Apush(n, n1 · · · nk ) :=  n n1 · · · nk ,Apop (λ) = Apop (n) := λ,Apop (n1n2 · · · nk ) := n2 · · · nk   pt.   k  ≥  2,Atop (λ) := 0,  Atop (n1 · · · nk ) := n1  pt.   k  ≥  1.

      STIVA-algebra B :   B elem :=  {0}, B stiva :=  NB 0 := 0,  B empty  := 0,  B push(0, n) := n  + 1 or.   n,B pop (0) := 0,  B pop (n) :=  n − 1 pt.   n ≥  1,

    B top (n) := 0 or.   n.

    111

    Exemplu 

    X elem :=  {x , y },  X stiva :=  {s },

    t  :=  push(x, push(y, s)) ∈  T Σ(X )stiva

      e :  X   → Ae(x ) := 5,  e(y ) := 3,  e(s ) := 6 7

    ẽ(t ) = Apush(e(x ), Apush(e(y ), e(s ))) = 5 3 6 7

      e :  X   → B e(x ) := 0,  e(y ) := 0,  e(s ) := 10

    ẽ(t ) = B push(e(x ), B push(e(y ), e(s ))) =(10 + 1) + 1 = 12

    112 

  • 8/9/2019 ProgLog2011-2012

    29/94

    Consecint ̧e 

      T Σ(X ) este (S , Σ)-algebră liber generată de  X   ı̂n clasa tuturor(S , Σ)-algebrelor.

    o expresie este un element al unei algebre libere

      X   = ∅T Σ  este (S , Σ)-algebră iniţial̆a.

      A =  T Σ(Y )O substituţie este o atribuire  ν  :  X  → T Σ(Y ).

    Orice substituţie ν  :  X  → T Σ(Y ) se extinde la un unicmorfism de (S , Σ)-algebre ν̃  :  T Σ(X ) → T Σ(Y ).

    113 

    Proprietăt ̧i 

    Propozit ̧ia 8.

    Fie  A  o (S , Σ)-algebră. Dacă  f   : T Σ(X ) → A   şi  g   : T Σ(X ) → A

    sunt morfisme, atunci   g  = f   ⇔ g |X   = f |X 

    Dem.  Presupunem că  g s (x ) = f s (x ) or.   s  ∈  S , x  ∈  X s .

    Demonstram că  g   = f   prin inducţie pe termeni   pasul iniţial:   dc.   s  ∈  S   şi  x  ∈  X s   at.   g s (x ) = f s (x ) (ipoteză),

    dc.   σ :→ s  ∈  Σ, at.   g s (σ) =  Aσ  =  f s (σ),  pasul de inducţie:   dc.   σ :  s 1 . . . s n →  s  ∈  Σ şi

    t 1 ∈  T Σ(X )s 1 , . . .,  t n ∈  T Σ(X )s n   a.̂ıg s 1(t 1) = f s 1(t 1),  · · · , g s n (t n) = f s n (t n) at.

    g s (σ(t1, . . . , tn)) = Aσ(g s 1(t 1), · · · , g s n (t n)) =Aσ(f s 1(t 1), · · ·  , f s n (t n)) = f s (σ(t1, . . . , tn))

    Conform principiului inductiei pe termeni,

    g s (t ) =  f s (t ) or.   t  ∈  T Σ(X )s , adică  g  = f  . 114 

    Proprietăt ̧i 

    Propozit ̧ia 9.

    X   Y   ⇔ T Σ

    (X )   T Σ

    (Y )

    Dem.   Fie u  :  X  → Y   o functie bijectiva. Din Teorema 7 rezult̆a că

      există un unic morfism  f   : T Σ(X ) → T Σ(Y ) âı.f s (x ) =  us (x ) or.   s  ∈  S , x  ∈  X s ,

      există un unic morfism  g   : T Σ(Y ) → T Σ(X ) âı.g s (y ) =  u

    −1s    (y ) or.   s  ∈  S , y  ∈  X s .

    Observ̆am c̆a (f  ; g )s (x ) = g s (f s (x )) = x   or.   s  ∈  S , x  ∈  X .Aplicand Propozitia 6, obţinem că f  ; g  = 1T Σ(X ).

    Similar, g ; f   = 1T Σ(Y ), deci  T Σ(X )  T Σ(Y ).

    115 

    Proprietăt ̧i 

    Propozit ̧ia 10.

    Fie h  :  A  → B  morfism surjectiv .Or.   f   : T Σ(X ) → B  morfism,ex.   g   : T Σ(X ) → A  a. ı̂.   g ; h =  f 

    A   h        B 

    T Σ(X )

      

      

    Dem.   Dacă  f   : T Σ(X ) → B   morfism, atuncior.   s  ∈  S ,  x  ∈  X s   ex.   a ∈  As   a.̂ı.   hs (a) =  f s (x ).Oricare s  ∈  S , x  ∈  X s , alegem  a  ∈  As   a.̂ı.   hs (a) =  f s (x ) şi definimes (x ) := a. Atunci  e  :  X   → A  este o evaluare şi .(ẽ; h)s (x ) = f s (x ) r.   s  ∈  S , x  ∈  X s .

    Din Teorema 7,  ẽ; h =  f  , deci  g   := ẽ.

    116 

  • 8/9/2019 ProgLog2011-2012

    30/94

    Definirea operat ̧iilor derivate 

    A  o Σ-algebră,  t  ∈  T Σ(X )

    Definim funcţia termen  At   : An → A  prin

    At (a1, . . . , an) :=  ẽ(t ), unde  e(x i ) := ai   or.   i  = 1, . . . , nAt   este operaţie derivată pe  A

      Σ =  {0, 1, ∨, ∧,− }  signatura algebrelor Boole,X   = {x , y },  t  =  x  ∨ y  ∈  T Σ(X )Dacă  B  este o algebră Boole, atunciB t (b 1, b 2) = b 1 →  b 2  oricare b 1, b 2  ∈  B .

    117 

    Semantica instruct ̧iunii de atribuire x:=e 

      X   este mulţimea variabilelor, x  ∈  X ,  t  ∈  T Σ(X )

      D   este Σ-algebra datelor

     o stare a memoriei este o funcţie e  :  X  → D    semantica unei instrucţiuni descrie modul ı̂n care instrucţiunea

    modifică starile memoriei

      Mem :=  {e :  X  → D | e  funcţie}Sem(x  := t ) :   Mem   →   Mem

    Sem(x  := t )(e)(y ) :=

      ẽ(t ) dacă  y  = x ,e(y ) dacă  y  = x .

    118 

    119 120

  • 8/9/2019 ProgLog2011-2012

    31/94

    Programare logic˘ a

    Ecuaţii. Relaţia de satisfacere.

    121

    Ecuat ̧iile şi semantica lor 

    (S , Σ) signatură multisortată

      O (S , Σ)-ecuaţie  este formată dintr-o  mulţime de variabile  X şi din doi termeni  t   şi  t  de acelaşi sort din  T Σ(X ).Vom nota o ecuaţie prin

    (∀X )t   ·

    =s   t .

     Spunem că o (S , Σ)-algebră  A  satisface o ecuaţie (∀X )t   ·=s   t 

    (A este model al ecuaţiei) dacă  ẽs (t ) =   ẽs (t ) pentru orice

    e :  X   → A.  În acest caz, vom nota

    A   |= (∀X )t   ·=s   t 

    .

    ·= egalitate formală, = egalitate efectivă

    122 

    Necesitatea cuantificării 

      S  = {s , bool }, Σ := {T   :→ bool , F   :→ bool , g   : s  →  bool }

      T Σ,s  = ∅,  T Σ,bool  = {T , F }

      T Σ |= (∀∅)T   ·=bool  F 

      T Σ |= (∀X )T   ·=bool  F ,

    unde X s   := {x }, X bool   := ∅

    123 

    Ecuat ̧iile condit ̧ionate 

    O (S , Σ)-ecuaţie condiţionată este notată prin

    (∀X )t   ·=s  t 

    if H .

    şi este formată din:

      o mulţime de variabile  X ,

      doi termeni de acelaşi sort  t ,  t  ∈ T Σ(X )s .

      o mulţime  H  de ecuaţii u   ·=s   v , cu  u ,v  ∈  T Σ(X )s .

    În practică  H  este finită H  = {u 1·

    =s 1  v 1, . . . , u n·

    =s n  v n}.Ecuaţiile din  H  sunt cuantificate cu  X .

    O ecuaţie (∀X )t   ·=s   t 

    este ecuaţie condiţionată ı̂n care mulţimea

    condiţiilor H   este vidă (∀X )t   ·=s   t  if   ∅.

    124 

  • 8/9/2019 ProgLog2011-2012

    32/94

    Ecuat ̧iile condit ̧ionate 

    A  (S , Σ)-algebră  A, γ  := (∀X )t   ·=s   t 

    if H 

    A  satisface γ   (A este model al lui  γ ) dacă,

    ẽs (u ) =   ẽs (v ) or.   u   ·=s   v  ∈ H  ⇒  ẽs (t ) =   ẽs (t 

    ).

    pentru orice  e  :  X   → A.

    Vom nota A   |= (∀X )t   ·=s   t 

    if H .

      A   |= (∀X )t   ·=s   t 

    ⇔ A   |= (∀X )t   ·=s   t 

    if   ∅

    125 

    Exemplu 

      STIVA = (S , Σ),  X elem :=  {E },  X stiva :=  {S , Q }

    γ  := (∀X )top (S )  ·=elem E if   {S 

      ·=stiva push(E , Q )}

      STIVA-algebra A:   Aelem :=  N,  Astiva :=  N∗

    A0 := 0,  Aempty   := λ, Apush(n, n1 · · · nk ) :=  n n1 · · · nk ,Apop (λ) = Apop (n) := λ,Apop (n1n2 · · · nk ) := n2 · · · nk   pt.   k  ≥  2,Atop (λ) := 0,  Atop (n1 · · · nk ) := n1  pt.   k  ≥  1.

      STIVA-algebra B :   B elem :=  {0}, B stiva :=  NB 0 := 0,  B empty   := 0,  B push(0, n) := n  + 1 or.   n,B pop (0) := 0,  B pop (n) :=  n − 1 pt.   n ≥  1,  B top (n) := 0 or.   n.

      A |= γ   şi  B  |= γ 

    126 

    Exemplu 

    X elem :=  {E }, X stiva :=  {S , Q }

    A |= (∀X )top (S )  ·=elem E if   {S 

      ·=stiva push(E , Q )}

    Fie e  :  X  → A  evaluare a. ı̂.   ẽstiva(S ) = ẽstiva(push(E , Q )).

    Rezultă  ẽstiva(S ) =  Apush(ẽelem(E ), ẽstiva(Q ))

    Notam  n  =  ẽelem(E ),  w   := ẽstiva(S ),  w  := ẽstiva(Q ).

    Rezulta  w  = nw  şi

    ẽelem(top (S )) = Atop (ẽstiva(S )) = Atop (w ) =Atop (nw 

    ) = n  =  ẽelem(E )

    127 

    Exemplu 

      STIVA = (S , Σ),  X elem :=  {E },  X stiva :=  {S , Q }

    γ  := (∀X )top (S )  ·=elem E if   {S 

      ·=stiva push(E , Q )}

      STIVA-algebra C :   C elem :=  N,  C stiva :=  N∗C 0 := 0,  C empty   := λ,  C push(n, n1 · · · nk ) := n1 · · · nk  n,C pop (λ) =  C pop (n) :=  λ,C pop (n1n2 · · · nk ) := n2 · · · nk   pt.   k  ≥  2,C top (λ) := 0,  C top (n1 · · · nk ) :=  n1  pt.   k  ≥  1.

      C  |= γ e :  X   → C   evaluarea definită prin

    eelem(E ) = 2,  estiva(Q ) = 3 4,  estiva(S ) = 3 4 2

    Atunci   ẽstiva(S ) = ẽstiva(push(E , Q )),dar  ẽelem(E ) = 2 = 3 = ẽelem(top (S )).

    128 

  • 8/9/2019 ProgLog2011-2012

    33/94

    Programare logic˘ a

    Specificaţii algebrice

    129 

    Γ-algebre 

    Γ mulţime de ecuaţii condiţionate

    O algebră  A  este Γ-algebr̆a (A  este model pentru Γ)dacă A  |= γ  oricare γ  ∈  Γ.

    În acest caz, vom nota  A  |= Γ.

    Vom nota cu  Alg (S , Σ, Γ) clasa Γ-algebrelor

    Alg (S , Σ, Γ) := {A ∈  Alg (S , Σ) | A |= Γ}

    130 

    Γ-algebre 

    Teorema 11.

    Fie  A   B   (S , Σ)-algebre, γ  := (∀X )t   ·=s   t 

    if H .

    A |= γ  ⇔ B  |= γ 

    Dem.   Notăm  ϕ  :  B  →  A  un izomorfism.”⇒”Fie e  :  X  → B   a.̂ı.   ẽs (u ) =   ẽs (v ) or.   u 

      ·=s   v  ∈ H .

    Definim f  :  X  → A  prin  f  := e; ϕAtunci   f̃  =  ẽ; ϕ, deoarece  f̃ |X   = ( ẽ; ϕ)|X .

    f̃ s (u ) = ϕs (ẽs (u )) = ϕs (ẽs (v )) = f̃ s (v ) or.   u   ·=s   v  ∈ H 

    Din ipoteză rezultă  f̃ s (t ) = f̃ s (t ), i.e.

    ϕs (ẽs (t )) = ϕs (ẽs (t )).

    ϕ este injectiv, deci  ẽs (t ) =  ẽs (t ).

    131

    Specificat ̧ii 

      O specificaţie este un triplet (S , Σ, Γ), unde (S , Σ) este osignatură multisortată şi Γ este o mulţ ime de ecuaţiicondiţionate. Specificaţia (S , Σ, Γ) defineşte clasa modelelorAlg (S , Σ, Γ), care reprezint̆a semantica ei.

      În  Maude teoriile

    fth ... endfth

    au ca semantică  Alg (S , Σ, Γ), unde S  este mulţimeasorturilor, Σ este mulţimea simbolurilor de operaţii, Γ estemulţimea ecuaţiilor definite ı̂n modul, iar fiecare ecuaţiee q t = t ’   şi   ceq t = t’ if Heste cuantificată de variabilele care apar ı̂n  t   şi  t’.

    132 

  • 8/9/2019 ProgLog2011-2012

    34/94

    Specificat ̧ii echivalente 

    fth GROUP is

    sort Element .

    op e : -> Element.

    op _+_ : Element Element -> Element [assoc] .op -_ : Element -> Element .

    vars x y : Element .

    eq e + x = x .

    eq x + e = x .

    e q ( - x ) + x = e .

    eq x + (- x) = e .

    endfth

    133 

    Consecint ̧e semantice 

    (S , Σ, Γ) specificaţie,  θ  ecuaţie, Θ mulţime de ecuaţii

    Ecuaţia θ  este o consecinţă semantică a lui Γ dacă

    A |= Γ implică A  |= θ

    pentru orice algebră  A.   În acest caz, vom nota  Γ  |= θ.

    Γ |= Θ  ⇔  Γ  |= θ  or.   θ ∈  Θ

    134 

    Teoria grupurilor 

    (S  =  {Element }, Σ :=  {e , −, +}, Γ)

    Γ := (∀{x , y , z })(x  +  y ) + z   ·= x  + (y  +  z ),

    (∀{x })e  +  x    ·= x ,

    (∀{x })x  +  e   ·= x ,

    (∀{x })(−x ) + x   ·= e ,

    (∀{x })x  + (−x )  ·= e 

      θ1 := (∀{x , y , z })x   ·= y if   {x  +  z 

      ·= y  +  z },

      θ2 := (∀{x , y })x  +  y   ·= y  +  x 

    Γ |= θ1, Γ |= θ2

    135 

    Specificat ̧ii echivalente 

    Două specificaţii (S , Σ, Γ1) şi (S , Σ, Γ2) sunt echivalente dacădefinesc aceeaşi clasă de modele:

    A |= Γ1  ⇔  A  |= Γ2

    Observat ̧ie 

    Fie Γ şi Θ mulţ imi de ecuaţii. Dacă Γ |= Θ atunci (S , Σ, Γ) şi(S , Σ, Γ ∪ Θ) sunt specificaţii echivalente.

    136 

  • 8/9/2019 ProgLog2011-2012

    35/94

    Γ-algebra init ̧ială

    (S , Σ, Γ) specificaţie

     I Σ,Γ :=  {A  |  A  iniţială ı̂n  Alg (S , Σ, Γ)}

    este un tip abstract de date.

     I Σ,Γ  reprezintă semantica unui modul funcţional ı̂n  Maude

    fmod ... endfm

    unde S  este mulţimea sorturilor, Σ este mulţimea simbolurilor deoperaţ ii, Γ este mulţimea ecuaţiilor definite ı̂n modul.Fiecare ecuaţiee q t = t ’   şi   ceq t = t’ if Heste cuantificată de variabilele care apar ı̂n  t   şi  t’ .

    137 

    Specificat ̧ie corecta

    (S , Σ) o signatură multisortată,  A  (S , Σ)-algebr̆a

    O specificaţie (S , Σ, Γ) este adecvată pentru  A  dacă  A  este

    Γ-algebră iniţ ială, i.e.   A ∈ I Σ,Γ.

    Exemplu 

    Determinaţi o specificaţie adecvată pentru  A  = (Z4, 0, succ ), undesucc (x ) := x  + 1 (mod 4).

    138 

    Continuare 

    fmod Z4 is

    sort s .

    o p 0 : - > s .op succ : s -> s .

    v a r s x : s .

    eq succ(succ(succ(succ(x)))) = x .

    endfm

    S   := {s }, Σ := {0 :→ s , succ  :  s  →  s },

    Γ := {(∀x )succ (succ (succ (succ (x ))))  ·= x }

    A   este Γ-algebră iniţială dacă:

      (a)  A  |= γ   or.   γ  ∈  Γ,   (b) or.   B  |= Γ ex. unic  f   : A  → B  morfism.

    139 

    Continuare 

    A = (Z4, 0, succ ), unde succ (x ) :=  x  + 1

    (a)  A  |= (∀x )succ (succ (succ (succ (x ))))  ·= x 

    Dacă  X   := {x }  şi  e  :  X  → A, atunci

    ẽ(succ (succ (succ (succ (x ))))) =Asucc (Asucc (Asucc (Asucc (e(x ))))) = e(x ) + 4 (mod 4)

    = e(x ) = ẽ(x )

    (b) Fie B   o Γ-algebră.Existenţa:   definim  f   : A  → B   prinf  (0) := B 0,  f  (x  + 1) := B succ (f  (x )) pt. 0  ≤ x  ≤  2 .

    f   morfism:   f  (Asucc (x )) = f  (x  + 1) =  B succ (f  (x )) pt. 0 ≤  x  ≤  2.

    Ramâne de demontrat  f  (Asucc (3)) = B succ (f  (3)).

    140 

  • 8/9/2019 ProgLog2011-2012

    36/94

    Continuare 

    (1)  f  (Asucc (3)) = f  (0) = B 0

    (2)  B succ (f  (3)) = B succ (B succ (f  (2))) =B succ (B succ (B succ (B succ (B 0)))

    Deoarece B  |= (∀x )succ (succ (succ (succ (x ))))  ·= x ,

    pentru  e

    : X  → B ,  e

    (x ) := B 0  obţinemB succ (B succ (B succ (B succ (B 0)))) = ẽ

    (succ (succ (succ (succ (x ))))) =ẽ(x ) =  B 0

    Din (1) şi (2) rezultă  f  (Asucc (3)) = B succ (f  (3)).

    Unicitatea:   fie g   : A  → B   un morfism;dem. că  g (x ) = f  (x ) prin inductie pt.   i  ∈ {0, 1, 2, 3}

    g (0) = g (A0) = B 0  =  f  (0),g (x  + 1) =  g (Asucc (x )) = B succ (g (x )) = B succ (f  (x )) =

    f  (Asucc (x )) = f  (x  + 1).141

    Exercit ̧iu 

    Determinaţi un model inţial pentru specificaţia:

    fmod NSET is

    sorts nat nset .

    op 0 : -> nat .op s : n at -> n at .

    op vid : -> nset .

    op ins : nat nset -> nset .

    vars x y : nat .

    var A : nset .

    eq ins(x,ins(x,A)) = ins(x,A) .

    eq ins(x,ins(y,A)) = ins(y,ins(x,A)) .

    endfm

    142 

    143 144

  • 8/9/2019 ProgLog2011-2012

    37/94

    Programare logic˘ a

    Congruenţe.   Γ-algebra iniţială

    145 

    Congruent ̧e 

    (S , Σ) signatură,  A  (S , Σ) algebră

      O relaţie S -sortat̆a ≡= {≡s }s ∈S  ⊆ A × A  este congruenţadacă:

    ≡s ⊆ As  × As  echivalenţă or.   s  ∈  S , ≡ este compatibilă cu operaţiile

    ai  ≡s i   b i   or.   i  = 1, . . . , n  ⇒  Aσ(a1, . . . , an) ≡s   Aσ(b 1, . . . , b n)or.   σ :  s 1 . . . s n  →  s 

    146 

    Exemple 

    (S , Σ) signatură,  A  (S , Σ) algebră

      NAT -algebra A:Anat   :=  N, A0  := 0, Asucc (x ) :=  x  + 1n1 ≡k  n2  ⇔  k |(n1 − n2) pentru  k  ∈  N  fixat• n1  ≡k  n2  ⇒  Asucc (n1) ≡k  Asucc (n2)

      AUTOMAT -algebra B :B intrare  = B stare  = B iesire   :=  NB s 0 := 0,  B f   (m, n) := m + n,  B g (n) := n  + 1≡ este congruenţă pe  B , unde  ≡intrare =≡stare =≡iesire :=≡k 

    147 

    Algebra cât 

    (S , Σ) signatură,  A  algebr̆a,  ≡  congruenţ̆a pe A

      [a]≡s   := {a ∈ As  | a ≡s  a} (clasa lui  a)   As /≡s   := {[a]≡s  | a ∈  As } or.   s  ∈  S    A/≡  :=  {As /≡s }s ∈S  este (S , Σ)-algebră

    (A/≡)σ  := [Aσ] or.   σ :→ s , (A/≡)σ([a1]≡s 1 , . . . , [an]≡s n ) := [Aσ(a1, . . . , an)]≡s 

    or.   σ :  s 1 . . . s n  →  s   şi (a1, . . . , an) ∈  As 1 × · · · × As n   [·]≡  :  A  → A/≡,  a  → [a]≡s   or.   a ∈  As   este morfism.

    [a]≡s   = [b ]≡s    ⇔   a ≡s  b 

    148 

  • 8/9/2019 ProgLog2011-2012

    38/94

    Exemple 

      STIVA-algebra A:   Aelem :=  N,  Astiva :=  N∗

    A0 := 0,  Aempty   := λ, Apush(n, n1 · · · nk ) :=  n n1 · · · nk ,Apop (λ) = Apop (n) := λ,Apop (n1n2 · · · nk ) := n2 · · · nk   pt.   k  ≥  2,

    Atop (λ) := 0,  Atop (n1 · · · nk ) := n1  pt.   k  ≥  1.   ≡elem:=  N × N,

    ≡stiva:= {(w , w ) | (w , w ) ∈  N∗ × N∗, |w | =  |w |}

    ≡= {≡elem, ≡stiva} congruenţă

      A/≡    B , undeSTIVA-algebra B :   B elem :=  {0}, B stiva :=  NB 0 := 0,  B empty  := 0,  B push(0, n) := n  + 1 or.   n,B pop (0) := 0,  B pop (n) :=  n − 1 pt.   n ≥  1,  B top (n) := 0 or.   n.

    149 

    Ker (f  )

    (S , Σ) signatură,  A   şi  B  algebre,  f   : A  → B  morfism

    Ker (f  ) = {Ker (f s )}s ∈S , unde

    Ker (f s ) := {(a, a

    ) ∈  As  × As  | f s (a) = f s (a

    )} or.   s  ∈  S 

    Propozit ̧ia 12 

      (a)  Ker (f  ) este congruenţă pe  A.

      (b) Dacă  ≡  congruenţ̆a pe A, atunci  Ker ([·]≡) =≡.

    Dem.   exerciţiu

    150 

    Proprietatea de universalitate 

    (S , Σ) signatură,  A  algebr̆a,  ≡  congruenţ̆a pe A

    Teorema 13 ( Proprietatea de universalitate a algebrei cˆ at)

    Oricare ar fi  B  o algebră şi  h  :  A  → B  un morfism a.ı̂.   ≡⊆ Ker (h)există un unic morfism  h  :  A/≡  →  B   a.̂ ı. [·]≡; h =  h.

    Dem.   h :  A  → B , ≡⊆  Ker (h)

    Existenţa:  definim h s ([a]≡s ) := hs (a)or.   a ∈  As 

    A  [·]≡      

    h  

    A/≡

    h  B 

    151

    Continuare 

    h   este bine definit:   [a1]≡s   = [a2]≡s  ⇒ hs (a1) =  hs (a2)

    [a1]≡s   = [a2]≡s  ⇒ (a1, a2) ∈≡s ⊆ Ker (hs ) ⇒ hs (a1) = hs (a2)

    h  morfism:   dc.   σ :→ s  ∈  Σ, at.

    hs (A/e quiv σ) = hs ([Aσ]≡) =  hs (Aσ) = B σ,

      dc.   σ :  s 1 . . . s n →  s  ∈  Σ şia1 ∈  As 1 , . . .,  an ∈  As n   at.

    hs (A≡σ([a1]≡, . . . , [an]≡)) = hs ([Aσ(a1, . . . , an)]≡) =hs (Aσ(a1, . . . , an)) == B σ(hs 1(a1), · · ·  , hs n (an)) =

    B σ(hs 1([a1]≡), · · · , hs n ([an]≡))

    Unicitatea:   fie g   : A/≡  →  B   a.̂ ı. [·]≡; g  = h

    g s ([a]s ) =  hs (a) =  hs ([a]≡s ) or.   a ∈  As .

    152 

  • 8/9/2019 ProgLog2011-2012

    39/94

    Consecint ̧e 

    Teorema 14 (Teoremă I de izomorfism)

    Oricare f   : A  → B  morfism,  A/Ker (f   )   f  (A).

    Dem.   exerciţiu

    Propozit ̧ia 15 Fie K  o clasă de (S , Σ)-algebre. Dacă

    ≡K:= 

    {Ker (h) | h :  T Σ →  B  ∈ K,   h  morfism},

    atunci următoarele proprietăţi sunt adevărate:

      ≡K   este congruenţ̆a pe T Σ,

      or.   B  ∈ K  ex. unic morfism  h  :  T Σ/≡K  →  B .

    Dem.   Intersecţia unei familii arbitrare de congruenţe este

    congruenţă (exerciţiu). 153 

    Continuare 

    Fie  B  ∈ K  si  h  :  T Σ →  B  unicul morfism.

    Existenţa:  deoarece ≡K⊆ Ker (h), din

    Proprietatea de universalitate aalgebrei cât ex. unic morfismh :  T Σ/≡K  →  B   a.̂ ı. [·]≡K; h =  h.

    T Σ[·]≡K      

    h  

    T Σ/≡K

    h  B 

    Unicitatea:   fie g   : T Σ/≡K  →  B   un morfism; atunci[·]≡K; g   : T Σ →  B , deci [·]≡K; g  = h, deci  g   verifică proprietateacare-l defineşte ı̂n mod unic pe  h ; rezult̆a g  = h.

    154 

    Γ-algebre 

    (S , Σ, Γ) specificaţie,A  algebră şi  ≡  o congruenţ̆a pe  A

    Spunem că ≡  este este ı̂nchisă la substituţie  dacă:CS(Γ,A)

    or. (∀X )t   ·=s   t 

    if H  ∈  Γ, or.   e :  X   → A

    ẽs (u ) ≡s   ẽs (v ) or.   u   ·=s   v  ∈  H  ⇒  ẽs (t ) ≡s   ẽs (t 

    ).

    Propozit ̧ia 16 

    Dacă  ≡  este o congruenţă pe A ı̂nchisă la substituţie atunciA/≡ |= Γ.

    155 

    Continuare 

    Dem.  Fie (∀X )t   ·=s   t 

    if H  ∈  Γ şi  f   : T Σ(X ) → A/≡  a.̂ı.

    f s (u ) = f s (v ) or.   u   ·

    =s   v  ∈  H .[·]≡ :  A  → A/≡  morfism surjectiv ,f   : T Σ(X ) → A/≡  morfism

    Din Propoziţia 10, ex.   ẽ :  T Σ(X ) → Aa. ı̂.   ẽ; [·]≡ =  f 

    A[·]≡       A/≡

    T Σ(X )

      

      

    Atunci   ẽs (u ) ≡s    ẽs (v ) or.   u   ·=s   v  ∈ H   şi, deoarece ≡  este

    ı̂nchisă la substituţie, obţinem  ẽs (t ) ≡s   ẽs (t ), adică  f s (t ) = f s (t 

    ).

    156 

    C

  • 8/9/2019 ProgLog2011-2012

    40/94

    Echivalent ̧a semantică

    (S , Σ, Γ) specificaţie,  A  o (S , Σ)-algebr̆a

    ≡Γ,A:= 

    {Ker (h)  |  h  :  A  → B  morfism   B  |= Γ}echivalena̧ semantică pe  A

      A =  T Σ   notăm  ≡Γ:=≡Γ,T Σ.

    Propozit ̧ia 17 

    ≡Γ,A  este o congruenţă pe  A ı̂nchisă la substituţie.

    157 

    Continuare 

    Dem.   Notăm  ≡:=≡Γ,A

    Fie (∀X )t   ·=s   t 

    if H  ∈  Γ şi e  :  X   → A  a.̂ı.

    ẽs 

    (u ) ≡s 

      ẽs 

    (v ) or.   u 

      ·

    =s 

     v  ∈  H .Rezultă (ẽs (u ), ẽs (v )) ∈≡⊆ Ker (h) or.   h :  A  → B  |= Γ, deci

    h(ẽs (u )) = h(ẽs (v )) or.   u   ·=s   v  ∈ H .

    Fie  B  |= Γ i̧  h  :  A  → B . Atunci   ẽ; h :  T Σ(X ) → B   şi

    h(ẽs (u )) = h(ẽs (v )) or.   u   ·=s   v  ∈ H , deci  h(ẽs (t )) = h(ẽs (t 

    )).Rezultă (ẽs (t ), ẽs (t 

    )) ∈  Ker (h) or.   h :  A  → B  |= Γ, deci(ẽs (t ), ẽs (t 

    )) ∈≡, i.e.   ẽs (t ) ≡s   ẽs (t ).

    158 

    Γ-algebra init ̧ială

    (S , Σ, Γ) specificaţie

     Definim pe  T Σ  congruenţa semantică≡Γ:= 

    {Ker (f  )  |  f   : T Σ →  A,   A |= Γ},care este ı̂nchisă la substituţie cf. Propoziţiei 17.

      T Σ/≡Γ  |= Γ cf. Propoziţiei 16.

      ≡Γ=≡K, unde K  =  Alg (S , Σ, Γ)or.   B  |= Γ ex. unic morfism f   : T Σ/≡Γ  →  B  cf. Propoziţiei 15.

    Teoremă 18.

    T Σ/≡Γ   este Γ-algebră iniţial̆a.

    159 

    ADT 

    (S , Σ, Γ) specificaţie

     I Σ,Γ :=  {A  |  A  iniţială ı̂n  Alg (S , Σ, Γ)}este un tip abstract de date.

    Un modul funcţional  fmod ... endfm ı̂n  Maude  defineşte tipulabstract de date  I Σ,Γ   şi construieţ e efectiv algebra  T Σ/≡Γ ,unde S  este mulţimea sorturilor, Σ este mulţimea simbolurilor deoperaţ ii, Γ este mulţimea ecuaţiilor definite ı̂n modul. Fiecareecuaţiee q t = t ’   şi   ceq t = t’ if Heste cuantificată de variabilele care apar ı̂n  t   şi  t’ .

    160 

    C i

  • 8/9/2019 ProgLog2011-2012

    41/94

    Consecint ̧e 

    (S , Σ, Γ) specificaţie,  A  algebr̆a,  hA :  T Σ →  A  unicul morfism

    Teoremă

    Sunt echivalente:   A   este Γ-algebră iniţială   A  verifică următoarele proprietăţ i:

    No Junk:   hA  este surjectiv No Confusion:   hAs (t 1) =  hAs (t 2) ⇔  Γ  |= (∀∅)t 1

    ·=s   t 2

    or.   t 1,  t 2 ∈  T Σ,s 

    161 162

    163 164

    P l i ˘ D di i

  • 8/9/2019 ProgLog2011-2012

    42/94

    Programare logic˘ a

    Teorema constantelorDemonstraţii prin inducţie

    165 

    Demonstrarea ec. condit ̧ionate 

    (S , Σ) signatura,  X   mulţime de variabileΓ mulţime de ecuaţii condiţionate

    Γ?

    |= (∀X )t   ·=s   t 

    if H 

    Propozit ̧ia 19 

      (a) Dacă Γ  |= (∀X )t   ·=s   t 

    if H   atunci

    Γ

    {(∀X )u   ·=s   v   |  u 

      ·=s   v  ∈ H } |= (∀X )t 

      ·=s   t 

    .

      (b) Implicaţia inversă nu este adevărtă ı̂n general .

      (c) Dacă Γ

    {(∀∅)u   ·=s   v   |  u 

      ·=s   v  ∈ H } |= (∀∅)t 

      ·=s   t 

    atunci Γ |= (∀∅)t   ·=s   t 

    if H .

    166 

    Continuare 

    Dem.   (a) Fie  A  |= Γ

    {(∀X )u   ·=s   v   |  u 

      ·=s   v  ∈ H }  şi  e  :  X   → A

    o evaluare. Dar  A  |= (∀X )u   ·=s   v   or.   u 

      ·=s   v  ∈ H , deci

    ẽs (u ) =  ẽs (v ) or.   u   ·=s   v  ∈  H . Deoarece A  |= Γ, din ipoteză,

    A |= (∀X )t   ·

    =s   t  if H . Deoarec e  :  X  → A  este o evaluare a.̂ı.ẽs (u ) =  ẽs (v ) or.   u 

      ·=s   v  ∈  H , rezultă  ẽs (t ) =  ẽs (t 

    ).

    (b) Implicaţia inversă nu este ı̂n general adevărată.S  = {s }, Σ = {0 :→ s }, X   = {x , y }

    {(∀X )x   ·= 0} |= (∀X )y 

      ·= 0 este adevărată, dar

    |= (∀X )y   ·= 0  if   {x 

      ·= 0}.

    (b) Fie A  |= Γ,  ẽ :  T Σ →  A  unicul morfism. Dacă  ẽs (u ) =  ẽs (v )

    or.   u   ·=s   v  ∈  H , atunci  A  |= Γ

    {(∀∅)u 

      ·=s   v   |  u 

      ·=s   v  ∈  H }. Din

    ipoteză, obţinem  A  |= (∀∅)t   ·=s   t 

    , deci  ẽs (t ) = ẽs (t ). Am

    demonstrat ca dacă unicul morfism   ẽ :  T Σ →  A  verificăẽs (u ) =  ẽs (v ) or.   u 

      ·=s   v  ∈  H , atunci  ẽs (t ) =  ẽs (t 

    ).167 

    Σ(X )

    (S , Σ) signatură,  X   mulţime de variabile

      mulţimea  X  poate fi privită ca o signatură care are numaioperaţii constante:variabila x  ∈  X s  devine operaţia constantă  c x   :→ s 

      Σ(X ) := (Σ(X )w ,s )w ∈S ∗,s ∈S  Σ(X )w ,s  = Σw ,s   pentru w  = λ Σ(X )λ,s  = Σλ,s  ∪ {c x |x  ∈  X s }

    168 

  • 8/9/2019 ProgLog2011-2012

    43/94

    D t tii i i d ti ( + ) ( ) + ( )

  • 8/9/2019 ProgLog2011-2012

    44/94

    Demonstrat ̧ii prin induct ̧ie 

    fmod MYNAT is

    sort MyNat .

    op 0 : -> MyNat .

    op s_ : MyNat -> MyNat .

    op _+_ : MyNat MyNat -> MyNat [comm assoc prec 50 ] .

    op _*_ : MyNat MyNat -> MyNat [ comm assoc prec 49 ] .

    vars x y : MyNat .

    eq x + 0 = x .

    e q x + s y = s ( x + y ) .

    eq x * 0 = 0 .

    e q x * s y = ( x * y ) + x .

    endfm

    173 

    cx  ∗ (cy  +  cz ) = (cx  ∗ cy ) + (cx  ∗ cz )

    fmod IND0 is

    including MYNAT .

    ops cy cz : -> MyNat .

    endfm

    *** pasul initial

    r e d 0 * ( c y + c z ) = = 0 * c y + 0 * c z .

    fmod IND is

    including IND0 .

    op cx : -> MyNat .

    *** ipoteza inductie

    e q c x * ( c y + c z ) = c x * c y + c x * c z .

    endfm

    *** pasul de inductie

    r e d s c x * ( c y + c z ) = = s c x * c y + s c x * c z .

    174 

    Demonstrat ̧ii prin induct ̧ie 

    ==========================================

    fmod MYNAT

    ==========================================fmod IND0

    ==========================================

    reduce in IND0 : 0 * (cy + cz) == 0 * cy + 0 * cz .

    rewrites: 5 in 10534559934ms cpu (0ms real)

    result Bool: true

    ==========================================

    fmod IND

    ==========================================

    reduce in IND : s cx * (cy + cz) == cy * s cx + cz * s cx .

    rewrites: 5 in 10534543934ms cpu (0ms real)

    result Bool: true

    175 

    Constructori S  = {s }

    .   În exemplul anterior,Σ = {0 :→ MyNat , s  :  MyNat  →  MyNat ,

    + :  MyNat MyNat  →  MyNat , ∗ :  MyNat MyNat  →  MyNat }dar ı̂n inductıa sructurală am folosit numaiΣc  = {0 :→ MyNat , s  :  MyNat  →  MyNat }.

    Fie Σ o signatură (monosortată) şi  A  o Σ-algebră . O subsignaturăCons Σ ⊆ Σ se numeşte  signatură de constructori p entru  A  dacăunicul morfism h  :  T Cons Σ →  A   este surjectiv.

    Dacă  P  = (Σ, Γ) este o prezentare, notăm  T P  = T Σ/≡Γ . AtunciCons Σ se numeşte  signatură de constructori pentru P   dacă estesignatură de constructori pentru  T 

    P .

    176 

    Constructori S {s}

  • 8/9/2019 ProgLog2011-2012

    45/94

    Constructori S  = {s }

    .P  = (Σ, Γ) o prezentare, Cons Σ signatură de constructoriT P   := T Σ/≡Γt  ∈  T Σ, [t ] := [t ]≡Γ

    Teorema (Demonstrat ̧ii prin induct ̧ie)∗

    Fie Q  o proprietate a elementelor lui  T P  a .̂ı. următoarele condiţ iisunt satisfăcute:

      pasul iniţial:Q([σ]) =  true  or.   σ ∈  Cons Σλ,s 

     pasul de inducţie:dacă  t 1, . . ., t n  ∈  T Σs   şi  Q([t 1]) = · · · =  Q([t n]) =  true  atunciQ([σ(t1, . . . , tn)]) =  true  or.   σ ∈  Cons Σs n,s .

    Atunci  Q([t ]) = true  oricare [t ] ∈  T P .

    177 178

    179 180

    Programare logică Regulile deductiei ecuationale

  • 8/9/2019 ProgLog2011-2012

    46/94

    Programare logic  a

    Sintaxa logicii ecuaţionale

    181

    Regulile deduct ̧iei ecuat ̧ionale 

    (S , Σ) signatură,  X ̧si  Y   mulţimi de variabileΓ mulţime de ecuaţii (necondiţionate)

    R(∀X )t 

      ·=s   t 

    S  (∀X )t 1

    ·=s   t 2

    (∀X )t 2 ·=s   t 1

    T  (∀X )t 1

    ·=s   t 2,   (∀X )t 2

    ·=s   t 3

    (∀X )t 1·

    =s   t 3

    CΣ(∀X )t 1

    ·=s 1  t 

    1, . . . , (∀X )t n

    ·=s n   t 

    n

    (∀X )σ(t 1, . . . , t n)  ·=s  σ(t 1, . . . , t 

    n)

    σ :  s 1 · · · s n →  s 

    SubΓ(∀X )θ̃(t )

      ·=s  θ̃(t )

    unde

    (∀Y )t   ·=s   t 

    ∈ Γ ,  θ  :  Y   → T Σ(X )

    182 

    Deduct ̧ia sintactică

    Fie Γ  o mulţime de ecuaţii, numite axiome sau   ipoteze. Spunem că

    ecuaţia  := (∀X )t 

      ·

    =s   t 

    se deduce sintactic din Γ  dac̆a exist̆a osecvenţă de ecuaţii 1, . . .,  n  a. ı̂.

      n =     şi

      pentru orice  i  ∈ {1, . . . , n}   i ∈  Γ  sau  i  se obţine din ecuaţiile1, . . .,  i−1  aplicând una din regulile R, S, T, CΣ, SubΓ.

    În acest caz scriem Γ       şi spunem c̆a    este  deductibil ă(sintactic), demonstrabilă, derivabil ă din Γ. Secvenţa1,  . . .,  n =    este o demonstraţie pentru     din ipotezele Γ.

    183 

    Exemplu 

    Γ = {x  + 0  ·= x , x  +  succ (y )

      ·= succ (x  +  y )}

    E    0 +  succ (0)  ·= succ (0)

    (1)  x  +  succ (y )  ·= succ (x  +  y ) ∈  E 

    (2) 0 +�