Dorel Lucanu - profs.info.uaic.rodlucanu/cursuri/progalg/resurse/curs1.pdf · D. Lucanu –...
Transcript of Dorel Lucanu - profs.info.uaic.rodlucanu/cursuri/progalg/resurse/curs1.pdf · D. Lucanu –...
![Page 1: Dorel Lucanu - profs.info.uaic.rodlucanu/cursuri/progalg/resurse/curs1.pdf · D. Lucanu – Programare Algebrica Limbaje de specificare algebrica •OBJ3 – bazat pe logica ecuationala](https://reader030.fdocuments.in/reader030/viewer/2022040123/5e153ab1aff6f55a9769cea3/html5/thumbnails/1.jpg)
D. Lucanu – Programare Algebrica
Programare algebrica
Dorel Lucanu
![Page 2: Dorel Lucanu - profs.info.uaic.rodlucanu/cursuri/progalg/resurse/curs1.pdf · D. Lucanu – Programare Algebrica Limbaje de specificare algebrica •OBJ3 – bazat pe logica ecuationala](https://reader030.fdocuments.in/reader030/viewer/2022040123/5e153ab1aff6f55a9769cea3/html5/thumbnails/2.jpg)
D. Lucanu – Programare Algebrica
BibliografieW. Wechler, Universal Algebra for Computer Scientists,
Springer Verlag,1992J. Goguen, G. Malcolm, Algebraic Semantics of
Imperative Programs, MIT Press, 1996J. Goguen, T. Winkler, J. Meseguer, K. Futatsugi, J. P.
Jouannaud, Introducing OBJ,Technical Report, SRI International
M. Clavel, F. Durán, S. Eker, P. Lincoln, N. Martí-Oliet, J. Meseguer, and J. Quesada. A Maude Tutorial. Manuscript, March 2000.
Pagina cursuluihttp://www.infoiasi.ro/~dlucanu/cursuri/progalg/progalg.htm
![Page 3: Dorel Lucanu - profs.info.uaic.rodlucanu/cursuri/progalg/resurse/curs1.pdf · D. Lucanu – Programare Algebrica Limbaje de specificare algebrica •OBJ3 – bazat pe logica ecuationala](https://reader030.fdocuments.in/reader030/viewer/2022040123/5e153ab1aff6f55a9769cea3/html5/thumbnails/3.jpg)
D. Lucanu – Programare Algebrica
Curs 1• Introducere in limbaje de specificare algebrica
– module • sintaxa• semantica
–denotationala–operationala
• exemple in Maude
![Page 4: Dorel Lucanu - profs.info.uaic.rodlucanu/cursuri/progalg/resurse/curs1.pdf · D. Lucanu – Programare Algebrica Limbaje de specificare algebrica •OBJ3 – bazat pe logica ecuationala](https://reader030.fdocuments.in/reader030/viewer/2022040123/5e153ab1aff6f55a9769cea3/html5/thumbnails/4.jpg)
D. Lucanu – Programare Algebrica
Limbaje de specificare algebrica• OBJ3
– bazat pe logica ecuationala cu sorturi ordonate (OSEL)– primul limbaj de specificare algebrica care a
implementat complet programarea parametrizata• BOBJ
– bazat pe logica comportamentala ("hidden logic", HL)– include OBJ3
• Maude– bazat logica ecuationala a apartenentei (MEL) si logica
rescrierii (RWL)– permite lucrul la nivelul meta (proprietatea de
reflectare)• CafeOBJ• CASL (CoFI)
![Page 5: Dorel Lucanu - profs.info.uaic.rodlucanu/cursuri/progalg/resurse/curs1.pdf · D. Lucanu – Programare Algebrica Limbaje de specificare algebrica •OBJ3 – bazat pe logica ecuationala](https://reader030.fdocuments.in/reader030/viewer/2022040123/5e153ab1aff6f55a9769cea3/html5/thumbnails/5.jpg)
D. Lucanu – Programare Algebrica
Module• modul = specificatie
– signatura• sorturi• simboluri operationale (functionale)
– proprietati ale operatiilor• ecuatii simple (MSEL, OSEL, HL)• ecuatii conditionale (MSEL, OSEL, HL)• asertiuni de apartenenta (MEL)• specificatii de tranzitii (reguli de rescriere) (RWL)
![Page 6: Dorel Lucanu - profs.info.uaic.rodlucanu/cursuri/progalg/resurse/curs1.pdf · D. Lucanu – Programare Algebrica Limbaje de specificare algebrica •OBJ3 – bazat pe logica ecuationala](https://reader030.fdocuments.in/reader030/viewer/2022040123/5e153ab1aff6f55a9769cea3/html5/thumbnails/6.jpg)
D. Lucanu – Programare Algebrica
Tipuri de module• module obiect (functionale)
– semantica initiala (stransa)– descriu tipuri de date abstracte
• teorii– semantica relaxata ("loose")– descriu "tipul" parametrilor
• module sistem (numai in Maude)– descriu sisteme bazate pe reguli de tranzitie (RWL)
• module orientate-obiect (numai in Maude)– descriu obiecte si comunicarea intre obiecte (RWL)
• module comportamentale (numai in BOBJ)– descriu comportamentul independent de modul de
reprezentare a starilor
![Page 7: Dorel Lucanu - profs.info.uaic.rodlucanu/cursuri/progalg/resurse/curs1.pdf · D. Lucanu – Programare Algebrica Limbaje de specificare algebrica •OBJ3 – bazat pe logica ecuationala](https://reader030.fdocuments.in/reader030/viewer/2022040123/5e153ab1aff6f55a9769cea3/html5/thumbnails/7.jpg)
D. Lucanu – Programare Algebrica
Specificarea numerelor naturale (Peano)
fmod NAT-PEANO is sort Nat .op 0 : -> Nat . op s_ : Nat -> Nat .
endfm
Maude
Reprezentarea numerelor naturale:0 ~ 01 ~ s 02 ~ s s 0etc
![Page 8: Dorel Lucanu - profs.info.uaic.rodlucanu/cursuri/progalg/resurse/curs1.pdf · D. Lucanu – Programare Algebrica Limbaje de specificare algebrica •OBJ3 – bazat pe logica ecuationala](https://reader030.fdocuments.in/reader030/viewer/2022040123/5e153ab1aff6f55a9769cea3/html5/thumbnails/8.jpg)
D. Lucanu – Programare Algebrica
Specificarea numerelor naturale (op de baza)
fmod NAT-BASIC is sort Nat .op 0 : -> Nat . op s_ : Nat -> Nat .op _+_ : Nat Nat -> Nat .op _*_ : Nat Nat -> Nat .vars M N : Nat .eq M + 0 = M .eq M + s N = s(M + N) .eq M * 0 = 0 .eq M * s N = (M * N) + M .
endfm
Maude
![Page 9: Dorel Lucanu - profs.info.uaic.rodlucanu/cursuri/progalg/resurse/curs1.pdf · D. Lucanu – Programare Algebrica Limbaje de specificare algebrica •OBJ3 – bazat pe logica ecuationala](https://reader030.fdocuments.in/reader030/viewer/2022040123/5e153ab1aff6f55a9769cea3/html5/thumbnails/9.jpg)
D. Lucanu – Programare Algebrica
Specificarea valorilor booleene
fmod BOOL issort Bool .op true : -> Bool .op false : -> Bool .op not_ : Bool -> Bool .op _or_ : Bool Bool -> Bool .op _and_ : Bool Bool -> Bool .vars X Y : Bool .eq not true = false .eq not false = true .eq X and true = X .eq X and false = false .eq X or Y = not((not X) and (not Y)) .
endfm
Maude
![Page 10: Dorel Lucanu - profs.info.uaic.rodlucanu/cursuri/progalg/resurse/curs1.pdf · D. Lucanu – Programare Algebrica Limbaje de specificare algebrica •OBJ3 – bazat pe logica ecuationala](https://reader030.fdocuments.in/reader030/viewer/2022040123/5e153ab1aff6f55a9769cea3/html5/thumbnails/10.jpg)
D. Lucanu – Programare Algebrica
Model• model = algebra
– sorturile desemneaza multimiModelul 1 (M1) Modelul 2 (M2)[[Nat]] = N [[Nat]] = {a,b}*
– simbolurile operationale desemneaza operatii[[0]] = 0 [[0]] = [][[s]] (x) = x + 1 [[s]](w) = wa[[+]](x,y) = x+y [[+]](w,w') = ww'
– ecuatiile sunt satisfacute[[+]](x,0) = x [[+]](w, []) = w[[+]](x, y+1) = (x+y)+1 [[+]](w, w'a) = (ww')a
![Page 11: Dorel Lucanu - profs.info.uaic.rodlucanu/cursuri/progalg/resurse/curs1.pdf · D. Lucanu – Programare Algebrica Limbaje de specificare algebrica •OBJ3 – bazat pe logica ecuationala](https://reader030.fdocuments.in/reader030/viewer/2022040123/5e153ab1aff6f55a9769cea3/html5/thumbnails/11.jpg)
D. Lucanu – Programare Algebrica
Semantica denotationala a modulelor obiect (funct.)
• fiecare modul obiect (functional) desemneaza modelulinitial al specificatiei descrise de el:
Module obiect (functionale)
fmod ⟨nume_modul⟩ is ⟨sorturi⟩⟨operatii⟩⟨proprietati⟩
endfm
Maude
![Page 12: Dorel Lucanu - profs.info.uaic.rodlucanu/cursuri/progalg/resurse/curs1.pdf · D. Lucanu – Programare Algebrica Limbaje de specificare algebrica •OBJ3 – bazat pe logica ecuationala](https://reader030.fdocuments.in/reader030/viewer/2022040123/5e153ab1aff6f55a9769cea3/html5/thumbnails/12.jpg)
D. Lucanu – Programare Algebrica
Semantica operationala• ecuatiile sunt de fapt reguli de rescriere
• relatia de rescriere
![Page 13: Dorel Lucanu - profs.info.uaic.rodlucanu/cursuri/progalg/resurse/curs1.pdf · D. Lucanu – Programare Algebrica Limbaje de specificare algebrica •OBJ3 – bazat pe logica ecuationala](https://reader030.fdocuments.in/reader030/viewer/2022040123/5e153ab1aff6f55a9769cea3/html5/thumbnails/13.jpg)
D. Lucanu – Programare Algebrica
Rescriere: exemplu
X or true ⇒not((not X) and (not true)) ⇒not((not X) and false) ⇒not false ⇒true
![Page 14: Dorel Lucanu - profs.info.uaic.rodlucanu/cursuri/progalg/resurse/curs1.pdf · D. Lucanu – Programare Algebrica Limbaje de specificare algebrica •OBJ3 – bazat pe logica ecuationala](https://reader030.fdocuments.in/reader030/viewer/2022040123/5e153ab1aff6f55a9769cea3/html5/thumbnails/14.jpg)
D. Lucanu – Programare Algebrica
Experimente cu numere naturale in MaudeMaude> select NAT-BASIC .Maude> red s s 0 + s s s 0 .reduce in NAT-BASIC : s s 0 + s s s 0 .rewrites: 4 in -10ms cpu (10ms real) (~ rewrites/second)result Nat: s s s s s 0Maude> red s s 0 * s s s 0 .reduce in NAT-BASIC : s s 0 * s s s 0 .rewrites: 13 in -10ms cpu (0ms real) (~ rewrites/second)result Nat: s s s s s s 0Maude>
![Page 15: Dorel Lucanu - profs.info.uaic.rodlucanu/cursuri/progalg/resurse/curs1.pdf · D. Lucanu – Programare Algebrica Limbaje de specificare algebrica •OBJ3 – bazat pe logica ecuationala](https://reader030.fdocuments.in/reader030/viewer/2022040123/5e153ab1aff6f55a9769cea3/html5/thumbnails/15.jpg)
D. Lucanu – Programare Algebrica
Rescriere: notatii
![Page 16: Dorel Lucanu - profs.info.uaic.rodlucanu/cursuri/progalg/resurse/curs1.pdf · D. Lucanu – Programare Algebrica Limbaje de specificare algebrica •OBJ3 – bazat pe logica ecuationala](https://reader030.fdocuments.in/reader030/viewer/2022040123/5e153ab1aff6f55a9769cea3/html5/thumbnails/16.jpg)
D. Lucanu – Programare Algebrica
Rescriere: forme normale
Exemplu: in NAT-BASIC0 este ireductibils s 0 este forma normala a lui s 0 + s 0
![Page 17: Dorel Lucanu - profs.info.uaic.rodlucanu/cursuri/progalg/resurse/curs1.pdf · D. Lucanu – Programare Algebrica Limbaje de specificare algebrica •OBJ3 – bazat pe logica ecuationala](https://reader030.fdocuments.in/reader030/viewer/2022040123/5e153ab1aff6f55a9769cea3/html5/thumbnails/17.jpg)
D. Lucanu – Programare Algebrica
Rescriere: corectitudine si completitudine
![Page 18: Dorel Lucanu - profs.info.uaic.rodlucanu/cursuri/progalg/resurse/curs1.pdf · D. Lucanu – Programare Algebrica Limbaje de specificare algebrica •OBJ3 – bazat pe logica ecuationala](https://reader030.fdocuments.in/reader030/viewer/2022040123/5e153ab1aff6f55a9769cea3/html5/thumbnails/18.jpg)
D. Lucanu – Programare Algebrica
Rescriere: terminare• Problema
• E are proprietatea de terminare (este Noetherian) daca nu exista secvente infinite de forma:
![Page 19: Dorel Lucanu - profs.info.uaic.rodlucanu/cursuri/progalg/resurse/curs1.pdf · D. Lucanu – Programare Algebrica Limbaje de specificare algebrica •OBJ3 – bazat pe logica ecuationala](https://reader030.fdocuments.in/reader030/viewer/2022040123/5e153ab1aff6f55a9769cea3/html5/thumbnails/19.jpg)
D. Lucanu – Programare Algebrica
Rescriere: confluenta• Problema:
![Page 20: Dorel Lucanu - profs.info.uaic.rodlucanu/cursuri/progalg/resurse/curs1.pdf · D. Lucanu – Programare Algebrica Limbaje de specificare algebrica •OBJ3 – bazat pe logica ecuationala](https://reader030.fdocuments.in/reader030/viewer/2022040123/5e153ab1aff6f55a9769cea3/html5/thumbnails/20.jpg)
D. Lucanu – Programare Algebrica
Rescriere: confluenta (continuare)
![Page 21: Dorel Lucanu - profs.info.uaic.rodlucanu/cursuri/progalg/resurse/curs1.pdf · D. Lucanu – Programare Algebrica Limbaje de specificare algebrica •OBJ3 – bazat pe logica ecuationala](https://reader030.fdocuments.in/reader030/viewer/2022040123/5e153ab1aff6f55a9769cea3/html5/thumbnails/21.jpg)
D. Lucanu – Programare Algebrica
Rescriere: local confluenta
![Page 22: Dorel Lucanu - profs.info.uaic.rodlucanu/cursuri/progalg/resurse/curs1.pdf · D. Lucanu – Programare Algebrica Limbaje de specificare algebrica •OBJ3 – bazat pe logica ecuationala](https://reader030.fdocuments.in/reader030/viewer/2022040123/5e153ab1aff6f55a9769cea3/html5/thumbnails/22.jpg)
D. Lucanu – Programare Algebrica
Rescriere: lema lui Newman (de diamant)• Lema
Daca E are proprietatea de terminare, atunci E este confluent daca si numai daca este local
confluent.
Exemplu
X+s(Y+0)
X+sY s(X+(Y+0))
s(X+Y)
![Page 23: Dorel Lucanu - profs.info.uaic.rodlucanu/cursuri/progalg/resurse/curs1.pdf · D. Lucanu – Programare Algebrica Limbaje de specificare algebrica •OBJ3 – bazat pe logica ecuationala](https://reader030.fdocuments.in/reader030/viewer/2022040123/5e153ab1aff6f55a9769cea3/html5/thumbnails/23.jpg)
D. Lucanu – Programare Algebrica
Rescriere canonica (convergenta)• E canonic ddaca are proprietatea de terminare si este
confluent– propritatea de terminare exista cel putin o forma
norma– confluenta exista cel mult o forma norma– canonic forma normala unica
![Page 24: Dorel Lucanu - profs.info.uaic.rodlucanu/cursuri/progalg/resurse/curs1.pdf · D. Lucanu – Programare Algebrica Limbaje de specificare algebrica •OBJ3 – bazat pe logica ecuationala](https://reader030.fdocuments.in/reader030/viewer/2022040123/5e153ab1aff6f55a9769cea3/html5/thumbnails/24.jpg)
D. Lucanu – Programare Algebrica
Predicatul == in OBJ3BOBJ> red s s 0 + s s 0 == s s 0 * s s 0 .==========================================reduce in NAT-BASIC : (s (s 0)) + (s (s 0)) == (s (s 0)) * (s (s 0))result Bool: truerewrite time: 156ms parse time: 62msBOBJ>
• algoritm de evaluare pentru t1 == t21. calculeaza t1' = fn(t1)2. calculeaza t2' = fn(t2)3. daca t1' coincide cu t2' atunci intoarce true4. altfel intoarce false
• == intoarce rezultat corect numai daca E este canonic• daca E nu este canonic atunci == intoarce rezultat corect
numai daca intoarce true