alphabet is a type specification = sorts : alphabet oprs : a: alphabet, . . . ,z: alphabet

20
alphabet is a type specification = sorts: alphabet oprs: a: alphabet, . . . ,z: alphabet end alphabet; nat is a type specification = sorts: nat oprs: zerus: nat succ: nat nat add: nat nat nat eqns: a,bnat; add(a,b) = add(b,a) add(a,zerus) = a add(a, succ(b)) = succ(add(a,b)) end nat;

Upload: kanoa

Post on 12-Jan-2016

33 views

Category:

Documents


2 download

DESCRIPTION

alphabet is a type specification = sorts : alphabet oprs : a:  alphabet, . . . ,z:  alphabet end alphabet;. nat is a type specification = sorts :nat oprs :zerus:  nat succ: nat  nat add: nat nat  nat eqns :a,bnat; add(a,b) = add(b,a) add(a,zerus) = a - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: alphabet  is a type specification  = sorts : alphabet oprs : a:   alphabet, . . . ,z:  alphabet

alphabet is a type specification =

sorts: alphabet

oprs: a: alphabet, . . . ,z: alphabet

end alphabet;

nat is a type specification =

sorts: nat

oprs: zerus: nat

succ: nat nat

add: nat nat nat

eqns: a,bnat;

add(a,b) = add(b,a)

add(a,zerus) = a

add(a, succ(b)) = succ(add(a,b))

end nat;

Page 2: alphabet  is a type specification  = sorts : alphabet oprs : a:   alphabet, . . . ,z:  alphabet

string(alphabet) is a type specification = alphabet +

sorts: string

oprs:

empty: string

make: alphabet string

concat: string string string

ladd: alphabet string string

radd: string alphabet string

eqns: x alphabet, s,s1,s2,s3string;

concat(s,empty) = s

concat(empty,s) = s

ladd(x,s)= concat(make(x),s)

radd(s,n)= concat(s,make(n))

end string;

Page 3: alphabet  is a type specification  = sorts : alphabet oprs : a:   alphabet, . . . ,z:  alphabet

string(alphabet, n: nat) is a type specification = parameters = alphabet + nat + exports = type sort: string

oprs: empty: stringmake: alphabet stringconcat: string string stringladd: alphabet string stringradd: string alphabet stringsize: string nat

eqns: d alphabet, s,s1,s2,s3string;

concat(s,empty) = sconcat(empty,s) = sladd(n,s)= concat(make(n),s)radd(s,n)= concat(s,make(n))size(empty) = zerussize(add(n,s)) = succ(size(s))size(add(n,s)) > n ladd(n,s) = " undefined "

end string;

Page 4: alphabet  is a type specification  = sorts : alphabet oprs : a:   alphabet, . . . ,z:  alphabet

Paraméterek szerepei az algebrák specifikációjában:

Objektum felépítése;

Korlátozás;

Objektum kiértékelése;

Kiértékelés.

Például:

alphabet = bool +

sorts: alphabet

opns : : alphabet alphabet bool [infix]

eq : alphabet alphabet bool

eqns: x,y,z alphabet

...

end alphabet;

Page 5: alphabet  is a type specification  = sorts : alphabet oprs : a:   alphabet, . . . ,z:  alphabet

Adattípus univerzális algebrai modellje.

obj

Interface

adattípus

absztrakt adattípus

adattípus konkretizálása

univerzális algebra

algebrák izomorfizmusra zártosztályának manifesztuma

algebrák közötti homomorfizmus

Interface = formális rész + tartalmi rész;

da = ( , E);

Page 6: alphabet  is a type specification  = sorts : alphabet oprs : a:   alphabet, . . . ,z:  alphabet

Szignatúra: = (S, OP), S: szortok halmaza; OP: konstans és operációs szimbólumok halmaza;

OP = Ks OPw,s ; s S;

Ks konstans szimbólumok halmaza;

OPw,s operációs szimbólumok halmaza;

w argument szort, w S+; s eredmény szort s S;

Ks ; OPw,s páronként diszjunktak.

K = Ks ; s S N Ks ; N: S;

OP+ = OPw,s ; w S+ , s S;

N OPw,s, w = s1...sn; N = s1...sn s;

OP = = K OP+;

Page 7: alphabet  is a type specification  = sorts : alphabet oprs : a:   alphabet, . . . ,z:  alphabet

Adott = (S,OP) szignatúrához tartozó - algebra (totális algebra).

A = (SA,OPA);

SA= (As )sS , As, A -algebra bázishalmazai

- Minden NKs : N : s , sS konstans szimbólumra

A(N : s) : NA : As;

- Minden N: s1...sn s OP; s1...sn S+; sS műveleti

szimbólumra: A(NA: s1...sn s): NA: As1

,...,Asn As;

Ha = (S1,...,Sn , N1,...,Nm); akkor A = (As1,...,Asn

, NA1,...,NAm

);

Példa. Szignatúra: = ({S1, S2}, {N1: S1 S2, N2: S2 S1 S2,

N3: S1 S2 S2, N4: S2 S1 S2 S2});

-algebra: A = ({alphabet, bintree}; {leaf : alphabet bintree,

left : bintree alphabet bintree, right : alphabet bintree bintree,

both : bintree alphabet bintree bintree});

Page 8: alphabet  is a type specification  = sorts : alphabet oprs : a:   alphabet, . . . ,z:  alphabet

Algebrai felírás formája:

Példa:bintree-base =

sorts: alphabetbintree

oprs: leaf: alphabet bintreeleft: bintree alphabet bintreeright: alphabet bintree bintreeboth: bintree alphabet bintree bintree

end bintree base;

Zilles, S. N. MIT Report 1974.

Szemantika felírása: kifejezéseket kell felírni!

Page 9: alphabet  is a type specification  = sorts : alphabet oprs : a:   alphabet, . . . ,z:  alphabet

Term:

Term szintaktikai definíciója.

Adott = (S,OP); Xs a szignatúrához tartozó változó.

T(X) = (T(X),s)sS definíciója:

Bázis termek:

- Xs T(X),s;

- n : s OP; akkor n T(X),s ;

Összetett termek:

n : s1...sk s, k1, n OP, ti T(X),s , 1ik;

n(t1,...,tk) T(X),s ;

T(X) más jelölései: TOP(X) ; T(X) ; T(X) ; T ; TOP;

Page 10: alphabet  is a type specification  = sorts : alphabet oprs : a:   alphabet, . . . ,z:  alphabet

Változó: Adott SIG = (S,OP), Az s szorthoz tartozó változók halmaza: Xs, s S.

A SIG szignatúrához tartozó változók halmaza: X = Xs,

sS

Deklaráció: x, y Xs;

Jelölésünk: eqns: x, y s;

Példa:

= (S,OP); S= {nat, bool};

Deklaráció:

n, m Xnat ; a, b, c Xbool

Jelölés:

eqns: n,m nat; a,b,c bool;

Page 11: alphabet  is a type specification  = sorts : alphabet oprs : a:   alphabet, . . . ,z:  alphabet

Példa.

nat0 is a type specification =

sorts: nat0

oprs: 0: nat0

succ: nat0 nat0

prec: nat0 nat0

eqns: nnat0;

prec(succ(0)) = "undefined"

prec(succ(n)) = n

end nat0;

0 Tnat0 ; n Tnat0

;

succ(k) Tnat0 ; k = 0,1,2,...

prec(k) Tnat0 ; k = 0,1,2,...

Példa: bintree.

Talph = {k1, . . . ,kn}; Minden a Talph : leaf(a) Tbin;

Ha t1,t2 Tbin; akkor

minden aalph : left(t1,a) Tbin; right(a,t1) Tbin; both(t1,a,t2) Tbin;

Page 12: alphabet  is a type specification  = sorts : alphabet oprs : a:   alphabet, . . . ,z:  alphabet

A term kiértékelése.Adott = (S,OP); és TOP; Legyen A egy -algebra.

eval: TopA kiértékelés rekurzív definíciója:

• eval(N) = NA; minden NK esetén;

• eval(N(t1,...,tn)) = NA(eval(t1),...,eval(tn)), minden N(t1,...,tn)Top

esetén.

Kiterjesztett értékadás:Adott = (S,OP); a szignatúrához tartozó X változókkal, Top ;

Legyen A egy -algebra.Adott ass: XA, ahol ass(x) As, xXs, sS;

ass: Top(x) A; kiterjesztett értékadás definíciója:• ass(x) = ass(x), minden x X változóra;• ass(N)= NA , minden N K konstans szimbólumra;

• ass(N(t1,...,tn)) = NA(ass(t1),...,ass(tn)), minden N(t1,...,tn) Top(X)

termre;

Page 13: alphabet  is a type specification  = sorts : alphabet oprs : a:   alphabet, . . . ,z:  alphabet

Példa:

1.) Advanat1 = nat0 +oprs: add: nat nat nat

Kiértékelés a IN természetes számokkörében:

eval(add(succ(0),succ(0))) =

eval(succ(0)) + eval(succ(0)) =

(eval(0) + 1) + (eval(0) +1) =

(0+1) + (0+1) = 1+ 1 = 2.

Példa:

Adva X={n,m}

ass(n) = 1; ass(m) = 5.

ass (add(succ(n)), m)) = ?

ass (add(succ(n)), m)) = ass (succ(n)) + ass (m) =

(ass(n) + 1 ) + ass(m)) = (1 + 1) + 5 = 7.

Page 14: alphabet  is a type specification  = sorts : alphabet oprs : a:   alphabet, . . . ,z:  alphabet

Egyenletek.

Adott = (S,OP); a szignatúrához tartozó X változókkal.

Egyenlet:Az e = (X,L,R) hármast, L,RTOP, s(X), sS mellett egyenletneknevezzük.

Helyes egyenlet.Az e = (X,L,R) egyenlet helyes a A -algebrában, ha mindenass : X A esetén:

ass(L) = ass(R)

Specifikáció.SPEC = (S,OP,E);= (S, OP); E = {e(x,L,R)}; xX, L=R;X változók halmaza, L, R, termek a X-ből vett változókkal.

Page 15: alphabet  is a type specification  = sorts : alphabet oprs : a:   alphabet, . . . ,z:  alphabet

típus neve( paraméterek listája ) is a type specification =

parameters = < átvett aktuális típusnév1 > + . . . +

< átvett aktuális típusnévk> +

sorts: < formális paraméterek nevei >;

oprs: < műveletek formái >;

eqns: < műveletek jelentésének leírása >

export =

type sort: < típushalmaz neve >;

oprs: < műveletek formái >;

eqns: < műveletek jelentésének leírása >; ...

end típus neve;

műveletek jelentésének leírása =deklaráció + szemantikát leíró egyenletek

Page 16: alphabet  is a type specification  = sorts : alphabet oprs : a:   alphabet, . . . ,z:  alphabet

Szemantikát leíró egyenletek (axiómák):

L = R ;

L: baloldali term; R: jobboldali term.

OP= {fc1,...,fck, fs1,...,fs/} ;

• fc1,...,fck : konstrukciós műveletek;

Pl. halmaz: empty, insert;

f0: A0; pl. empty: set; fc: A0A1...AnA0;

pl. insert: setelem set;

• fs1,...,fs/ : nem konstrukciós műveletek;

pl. has:set elem bool;

Axióma: fs(fc(a)) = h(a); Pl. has(insert(s,e),e) = "true";

has(insert(s,e1),e2) = if e1= e2 then "true" else has(s,e2) fi;

(a) fs(fc(a)) = h(a);

Page 17: alphabet  is a type specification  = sorts : alphabet oprs : a:   alphabet, . . . ,z:  alphabet

Korlátozás: (A,F,E); A = A0,A1,...,An); A0 = {a | l(a)};

Attribútum függvény: attr(a), Pl. size(s); length(s);

l(a) : 0 attr(a) n; n 0;

A0 elemei: a1= f0, a2= fc(a1), a3= fc(a2), ...

Korlátozás axiómája, az értelmezési tartomány meghatározása:

ai A0 (0 attr(ai ) n); ~(ai A0) attr(ai ) n;

attr(fc(a)) n fc(a) = "undefined" ;

Pl.: size(insert(s,e)) n insert(s,e) = "undefined" ;

Korlátozás formális paraméterének deklarációja:

típus neve( par list, korl. dekl. ) is a type specification =

korl. dekl. változó : változó típusának neve Pl. set( elem, n:nat ) is a type specification = . . .

Page 18: alphabet  is a type specification  = sorts : alphabet oprs : a:   alphabet, . . . ,z:  alphabet

-algebrák közötti homomorfizmus.

Adva = ( S, OP ), A = ( SA, OPA ) és B = ( SB, OPB ).

A h : A B homomorfizmus egy függvénycsalád

h = ( hs )s S,

Itt: hs : SA SB,

úgy, hogy:

• minden N: s OP és sS konstans szimbólumra:

hs(NA) = NB ;

• minden N: s1 ... sn s OP

és minden i = 1, ...,n -re és aiAsi esetén:

hs( NA (a1, . . . , an)) = NB ( hs1(a1) , . . . , hsn(an) ).

(homomorfikus feltétel).

Page 19: alphabet  is a type specification  = sorts : alphabet oprs : a:   alphabet, . . . ,z:  alphabet

Az f: AB homomorfizmust izomorfizmusnak nevezzük,

ha minden fs: AB függvény minden sS-re bijektív.

Jelölés: f: A B.

Az A és B -algebrákat izomorfikusnak nevezzük, ha létezik

f: A B, vagy g: B A izomorfizmus:

Jelölés: A B.

Megjegyzések:

• Homomorfizmusok kompozíciója szintén homomorfizmus.

• Ha hs izomorfizmus, akkor hs-1 is az.

Page 20: alphabet  is a type specification  = sorts : alphabet oprs : a:   alphabet, . . . ,z:  alphabet

Példa izomorfizmusra.

=(S,OP); OP = { k1: S, k2: S, N1: S S; N2: S S S })

A = (bool, {T: bool, F: bool, ~_ : bool bool,

: bool bool bool [infix]});

B = (bit, {1: bit, 0: bit, ch : bit bit, : bit bit bit [infix]});

Egy adott szignatúrához tartozó absztrakt adattípus

a -algebrák egy olyan osztálya, amely

az izomorfizmusra zárt:

azaz

C Alg ( );

A C;

A B B C.