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

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

Post on 12-Jan-2016

28 views

Category:

Documents

2 download

Embed Size (px)

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,bnat; add(a,b) = add(b,a) add(a,zerus) = a - PowerPoint PPT Presentation

TRANSCRIPT

<ul><li><p>alphabet is a type specification =sorts: alphabetoprs: a: alphabet, . . . ,z: alphabetend alphabet;nat is a type specification =sorts:natoprs:zerus: natsucc: nat natadd: nat nat nateqns:a,bnat;add(a,b) = add(b,a)add(a,zerus) = aadd(a, succ(b)) = succ(add(a,b))end nat;</p></li><li><p>string(alphabet) is a type specification = alphabet +sorts:stringoprs:empty: stringmake: alphabet stringconcat: string string stringladd: alphabet string stringradd: string alphabet stringeqns:x alphabet, s,s1,s2,s3string;concat(s,empty) = sconcat(empty,s) = sladd(x,s)= concat(make(x),s)radd(s,n)= concat(s,make(n))end string;</p></li><li><p>string(alphabet, n: nat) is a type specification = parameters = alphabet + nat + exports = type sort:stringoprs:empty: stringmake: alphabet stringconcat: string string stringladd: alphabet string stringradd: string alphabet stringsize: string nateqns: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)) &gt; n ladd(n,s) = " undefined "end string;</p></li><li><p>Paramterek szerepei az algebrk specifikcijban:Objektum felptse;Korltozs;Objektum kirtkelse;Kirtkels.Pldul:alphabet = bool +sorts:alphabetopns : : alphabet alphabet bool [infix] eq : alphabet alphabet booleqns:x,y,z alphabet...end alphabet;</p></li><li><p>Adattpus univerzlis algebrai modellje.objInterfaceadattpusabsztrakt adattpusadattpus konkretizlsauniverzlis algebraalgebrk izomorfizmusra zrtosztlynak manifesztumaalgebrk kztti homomorfizmusInterface = formlis rsz + tartalmi rsz;da = ( , E);</p></li><li><p>Szignatra: = (S, OP), S: szortok halmaza; OP: konstans s opercis szimblumok halmaza; OP = Ks OPw,s ; s S;Ks konstans szimblumok halmaza;OPw,s opercis szimblumok halmaza; w argument szort, w S+; s eredmny szort s S; Ks ; OPw,s pronknt 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+;</p></li><li><p>Adott = (S,OP) szignatrhoz tartoz - algebra (totlis algebra).A = (SA,OPA); SA= (As )sS , As, A -algebra bzishalmazai -Minden NKs : N : s , sS konstans szimblumra A(N : s) : NA : As; -Minden N: s1...sn s OP; s1...sn S+; sS mveleti szimblumra: A(NA: s1...sn s): NA: As1,...,Asn As;Ha = (S1,...,Sn , N1,...,Nm); akkor A = (As1,...,Asn, NA1,...,NAm);Plda. Szignatra: = ({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});</p></li><li><p>Algebrai felrs formja:Plda:bintree-base =sorts:alphabetbintreeoprs:leaf: alphabet bintreeleft: bintree alphabet bintreeright: alphabet bintree bintreeboth: bintree alphabet bintree bintreeend bintree base;Zilles, S. N. MIT Report 1974.Szemantika felrsa: kifejezseket kell felrni!</p></li><li><p>Term: Term szintaktikai defincija.Adott = (S,OP); Xs a szignatrhoz tartoz vltoz. T(X) = (T(X),s)sS defincija: Bzis 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) ms jellsei: TOP(X) ; T(X) ; T(X) ; T ; TOP;</p></li><li><p>Vltoz: Adott SIG = (S,OP), Az s szorthoz tartoz vltozk halmaza: Xs, s S. A SIG szignatrhoz tartoz vltozk halmaza: X = Xs, sSDeklarci: x, y Xs;</p><p>Jellsnk: eqns: x, y s;Plda: = (S,OP); S= {nat, bool}; Deklarci: n, m Xnat ; a, b, c Xbool Jells: eqns: n,m nat; a,b,c bool;</p></li><li><p>Plda.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)) = nend nat0; 0 Tnat0 ; n Tnat0 ;succ(k) Tnat0 ; k = 0,1,2,...prec(k) Tnat0 ; k = 0,1,2,...Plda: bintree.Talph = {k1, . . . ,kn}; Minden a Talph : leaf(a) Tbin;Ha t1,t2 Tbin; akkorminden aalph : left(t1,a) Tbin; right(a,t1) Tbin; both(t1,a,t2) Tbin;</p></li><li><p>A term kirtkelse.Adott = (S,OP); s TOP; Legyen A egy -algebra.eval: TopA kirtkels rekurzv defincija: eval(N) = NA; minden NK esetn; eval(N(t1,...,tn)) = NA(eval(t1),...,eval(tn)), minden N(t1,...,tn)Topesetn.Kiterjesztett rtkads:Adott = (S,OP); a szignatrhoz tartoz X vltozkkal, Top ;Legyen A egy -algebra.Adott ass: XA, ahol ass(x) As, xXs, sS;ass: Top(x) A; kiterjesztett rtkads defincija: ass(x) = ass(x), minden x X vltozra; ass(N)= NA , minden N K konstans szimblumra; ass(N(t1,...,tn)) = NA(ass(t1),...,ass(tn)), minden N(t1,...,tn) Top(X)termre;</p></li><li><p>Plda:1.) Advanat1 = nat0 +oprs: add: nat nat natKirtkels a IN termszetes szmokkrben: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.Plda:Adva X={n,m}ass(n) = 1; ass(m) = 5.ass (add(succ(n)), m)) = ?</p><p>ass (add(succ(n)), m)) = ass (succ(n)) + ass (m) = (ass(n) + 1 ) + ass(m)) = (1 + 1) + 5 = 7.</p></li><li><p>Egyenletek.Adott = (S,OP); a szignatrhoz tartoz X vltozkkal.Egyenlet:Az e = (X,L,R) hrmast, L,RTOP, s(X), sS mellett egyenletneknevezzk.Helyes egyenlet.Az e = (X,L,R) egyenlet helyes a A -algebrban, ha mindenass : X A esetn:ass(L) = ass(R)Specifikci.SPEC = (S,OP,E);= (S, OP); E = {e(x,L,R)}; xX, L=R;X vltozk halmaza, L, R, termek a X-bl vett vltozkkal.</p></li><li><p>tpus neve( paramterek listja ) is a type specification =parameters = &lt; tvett aktulis tpusnv1 &gt; + . . . + &lt; tvett aktulis tpusnvk&gt; + sorts:&lt; formlis paramterek nevei &gt;; oprs:&lt; mveletek formi &gt;; eqns:&lt; mveletek jelentsnek lersa &gt;export = type sort:&lt; tpushalmaz neve &gt;; oprs:&lt; mveletek formi &gt;; eqns:&lt; mveletek jelentsnek lersa &gt;; ...end tpus neve;mveletek jelentsnek lersa =deklarci + szemantikt ler egyenletek</p></li><li><p>Szemantikt ler egyenletek (aximk):L = R ;L: baloldali term; R: jobboldali term.OP= {fc1,...,fck, fs1,...,fs/} ; fc1,...,fck : konstrukcis mveletek;Pl. halmaz: empty, insert;f0: A0; pl. empty: set; fc: A0A1...AnA0; pl. insert: setelem set; fs1,...,fs/ : nem konstrukcis mveletek;pl. has:set elem bool;Axima: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);</p></li><li><p>Korltozs: (A,F,E); A = A0,A1,...,An);A0 = {a | l(a)};Attribtum fggvny: 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), ...Korltozs aximja, az rtelmezsi tartomny meghatrozsa: 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" ;Korltozs formlis paramternek deklarcija: tpus neve( par list, korl. dekl. ) is a type specification = korl. dekl. vltoz : vltoz tpusnak neve Pl. set( elem, n:nat ) is a type specification = . . .</p></li><li><p>-algebrk kztti homomorfizmus.Adva = ( S, OP ), A = ( SA, OPA ) s B = ( SB, OPB ).A h : A B homomorfizmus egy fggvnycsald h = ( hs )s S,Itt: hs : SA SB,gy, hogy: minden N: s OP s sS konstans szimblumra:hs(NA) = NB ; minden N: s1 ... sn s OP s minden i = 1, ...,n -re s aiAsi esetn:hs( NA (a1, . . . , an)) = NB ( hs1(a1) , . . . , hsn(an) ).(homomorfikus felttel).</p></li><li><p>Az f: AB homomorfizmust izomorfizmusnak nevezzk,ha minden fs: AB fggvny minden sS-re bijektv.</p><p>Jells: f: A B.Az A s B -algebrkat izomorfikusnak nevezzk, ha ltezikf: A B, vagy g: B A izomorfizmus:Jells: A B.Megjegyzsek: Homomorfizmusok kompozcija szintn homomorfizmus. Ha hs izomorfizmus, akkor hs-1 is az.</p></li><li><p>Plda izomorfizmusra.=(S,OP); OP = { k1: S, k2: S, N1: S S; N2: S S S })</p><p>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 szignatrhoz tartoz absztrakt adattpus a -algebrk egy olyan osztlya, amely az izomorfizmusra zrt: azazC Alg ( ); A C; A B B C.</p></li></ul>