Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Alphabet is a type specification = sorts: alphabet oprs: a:  alphabet,...,z:  alphabet end alphabet; nat is a type specification = sorts:nat oprs:zerus:

Hasonló előadás


Az előadások a következő témára: "Alphabet is a type specification = sorts: alphabet oprs: a:  alphabet,...,z:  alphabet end alphabet; nat is a type specification = sorts:nat oprs:zerus:"— Előadás másolata:

1 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 add(a, succ(b)) = succ(add(a,b)) end nat;

2 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,s 1,s 2,s 3  string; concat(s,empty) = s concat(empty,s) = s ladd(x,s)= concat(make(x),s) radd(s,n)= concat(s,make(n)) end string;

3 string(alphabet, n: nat) is a type specification = parameters = alphabet + nat + exports = type sort:string oprs:empty:  string make: alphabet  string concat: string string  string ladd: alphabet string  string radd: string alphabet  string size: string  nat eqns:d  alphabet, s,s 1,s 2,s 3  string; concat(s,empty) = s concat(empty,s) = s ladd(n,s)= concat(make(n),s) radd(s,n)= concat(s,make(n)) size(empty) = zerus size(add(n,s)) = succ(size(s)) size(add(n,s)) > n  ladd(n,s) = " undefined " end string;

4 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;

5 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árt osztályának manifesztuma algebrák közötti homomorfizmus Interface = formális rész + tartalmi rész; d a = ( , E);

6 Szignatúra:  = (S, OP), S: szortok halmaza; OP: konstans és operációs szimbólumok halmaza; OP = K s  OP w,s ; s  S; K s konstans szimbólumok halmaza; OP w,s operációs szimbólumok halmaza; w argument szort, w  S + ; s eredmény szort s  S; K s ; OP w,s páronként diszjunktak. K =  K s ; s  S N  K s ; N:  S; OP+ =  OP w,s ; w  S +, s  S; N  OP w,s, w = s 1...s n ; N = s 1...s n  s; OP = = K  OP + ;

7 Adott  = (S,OP) szignatúrához tartozó  - algebra (totális algebra). A = (S A,OP A ); S A = (A s ) s  S, A s, A  -algebra bázishalmazai -Minden N  K s : N :  s, s  S konstans szimbólumra A(N :  s) : N A :  A s ; -Minden N: s 1...s n  s  OP; s 1...s n  S + ; s  S műveleti szimbólumra: A(N A : s 1...s n  s): N A : A s 1,...,A s n  A s ; Ha  = (S 1,...,S n, N 1,...,N m ); akkor A = (A s 1,...,A s n, N A 1,...,N A m ); 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});

8 Algebrai felírás formája: Példa: bintree-base = sorts:alphabet bintree oprs:leaf: alphabet  bintree left: bintree alphabet  bintree right: alphabet bintree  bintree both: bintree alphabet bintree  bintree end bintree base; Zilles, S. N. MIT Report 1974. Szemantika felírása: kifejezéseket kell felírni!

9 Term: Term szintaktikai definíciója. Adott  = (S,OP); X s a szignatúrához tartozó változó. T  (X) = (T  (X),s ) s  S definíciója: Bázis termek: - X s  T  (X),s ; - n :  s  OP; akkor n  T  (X),s ; Összetett termek: n : s 1...s k  s, k  1, n  OP, t i  T  (X),s, 1  i  k; n(t 1,...,t k )  T  (X),s ; T  (X) más jelölései: T OP(X) ; T  (X) ; T  (X) ; T  ; T OP ;

10 Változó: Adott SIG = (S,OP), Az s szorthoz tartozó változók halmaza: X s, s  S. A SIG szignatúrához tartozó változók halmaza: X =  X s, s  S Deklaráció: x, y  X s ; Jelölésünk: eqns: x, y  s; Példa:  = (S,OP); S= {nat, bool}; Deklaráció: n, m  X nat ; a, b, c  X bool Jelölés: eqns: n,m  nat; a,b,c  bool;

11 Példa. nat 0 is a type specification = sorts: nat 0 oprs: 0:  nat 0 succ: nat 0  nat 0 prec: nat 0  nat 0 eqns: n  nat 0 ; prec(succ(0)) = "undefined" prec(succ(n)) = n end nat 0 ; 0  T nat 0 ; n  T nat 0 ; succ(k)  T nat 0 ; k = 0,1,2,... prec(k)  T nat 0 ; k = 0,1,2,... Példa: bintree. T alph = {k 1,...,k n }; Minden a  T alph : leaf(a)  T bin ; Ha t 1,t 2  T bin ; akkor minden a  alph : left(t 1,a)  T bin ; right(a,t 1 )  T bin ; both(t 1,a,t 2 )  T bin ;

12 A term kiértékelése. Adott  = (S,OP); és TOP; Legyen A egy  -algebra. eval: T op  A kiértékelés rekurzív definíciója: eval(N) = N A ; minden N  K esetén; eval(N(t 1,...,t n )) = N A (eval(t 1 ),...,eval(t n )), minden N(t 1,...,t n )  T op esetén. Kiterjesztett értékadás: Adott  = (S,OP); a szignatúrához tartozó X változókkal, T op ; Legyen A egy  -algebra. Adott ass: X  A, ahol ass(x)  A s, x  X s, s  S; ass: T op (x)  A; kiterjesztett értékadás definíciója: ass(x) = ass(x), minden x  X változóra; ass(N)= N A, minden N  K konstans szimbólumra; ass(N(t 1,...,t n )) = N A (ass(t 1 ),...,ass(t n )), minden N(t 1,...,t n )  T op (X) termre;

13 Példa: 1.) Adva nat1 = nat0 + oprs: add: nat nat  nat Kiértékelés a IN természetes számok kö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.

14 Egyenletek. Adott  = (S,OP); a szignatúrához tartozó X változókkal. Egyenlet: Az e = (X,L,R) hármast, L,R  TOP, s(X), s  S mellett egyenletnek nevezzük. Helyes egyenlet. Az e = (X,L,R) egyenlet helyes a A  -algebrában, ha minden ass : X  A esetén: ass(L) = ass(R) Specifikáció. SPEC = (S,OP,E);  = (S, OP); E = {e(x,L,R)};  x  X, L=R; X változók halmaza, L, R, termek a X-ből vett változókkal.

15  típus neve  (  paraméterek listája  ) is a type specification = parameters = +... + + sorts: ; oprs: ; eqns: export = type sort: ; oprs: ; eqns: ;... end  típus neve  ; műveletek jelentésének leírása = deklaráció + szemantikát leíró egyenletek

16 Szemantikát leíró egyenletek (axiómák): L = R ; L: baloldali term; R: jobboldali term. OP= {f c1,...,f ck, f s1,...,f s/ } ; f c1,...,f ck : konstrukciós műveletek; Pl. halmaz: empty, insert; f 0 :  A 0 ; pl. empty:  set; f c : A 0  A 1 ...  A n  A 0 ; pl. insert: set  elem  set; f s1,...,f s/ : nem konstrukciós műveletek; pl. has:set elem  bool; Axióma:f s (f c (a)) = h(a); Pl. has(insert(s,e),e) = "true"; has(insert(s,e 1 ),e 2 ) = if e 1 = e 2 then "true" else has(s,e 2 ) fi;  (a)  fs(fc(a)) = h(a);

17 Korlátozás: (A,F,E); A = A 0,A 1,...,A n );A 0 = {a | l(a)}; Attribútum függvény: attr(a), Pl. size(s); length(s); l(a) : 0  attr(a)  n; n  0; A 0 elemei: a 1 = f 0, a 2 = f c (a 1 ), a 3 = f c (a 2 ),... Korlátozás axiómája, az értelmezési tartomány meghatározása: a i  A 0  (0  attr(a i )  n);~(a i  A 0 )  attr(a i )  n; attr(f c (a))  n  f c (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 =...

18  -algebrák közötti homomorfizmus. Adva  = ( S, OP ), A = ( S A, OP A ) és B = ( S B, OP B ). A h : A  B homomorfizmus egy függvénycsalád h = ( h s ) s  S, Itt: hs : S A  S B, úgy, hogy: minden N:  s  OP és s  S konstans szimbólumra: h s (N A ) = N B ; minden N: s 1... s n  s  OP és minden i = 1,...,n -re és a i  A si esetén: h s ( N A (a 1,..., a n )) = N B ( h s1 (a 1 ),..., h sn (a n ) ). (homomorfikus feltétel).

19 Az f: A  B homomorfizmust izomorfizmusnak nevezzük, ha minden f s : A  B függvény minden s  S-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 h s izomorfizmus, akkor h s -1 is az.

20 Példa izomorfizmusra.  =(S,OP); OP = { k1 :  S, k 2 :  S, N 1 : S  S; N 2 : 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.


Letölteni ppt "Alphabet is a type specification = sorts: alphabet oprs: a:  alphabet,...,z:  alphabet end alphabet; nat is a type specification = sorts:nat oprs:zerus:"

Hasonló előadás


Google Hirdetések