dorel lucanu - profs.info.uaic.rodlucanu/cursuri/progalg/resurse/curs1.pdf · d. lucanu –...

24
D. Lucanu – Programare Algebrica Programare algebrica Dorel Lucanu

Upload: others

Post on 15-Oct-2019

15 views

Category:

Documents


0 download

TRANSCRIPT

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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