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

Slides:



Advertisements
Hasonló előadás
Deduktív adatbázisok.
Advertisements

Algebrai struktúrák.
Adatbázisrendszerek elméleti alapjai 2. előadás
Probléma formálisan specifikált: valós világ (domai) (hibás eredmény) ködös határ (félreértés, hiba) formális világ (megoldás) A specifikáció csak nagyvonalakban.
Függvények Egyenlőre csak valós-valós függvényekkel foglalkozunk.
Lambda kalkulus.
Determinisztikus programok. Szintaxis: X : Pvalt program változók E : Kifkifejezések B : Lkiflogikai kifejezések C : Utsutasítások.
Kötelező alapkérdések
1. A KVANTUMMECHANIKA AXIÓMÁI
1.) A programfejlesztés hagyományos életciklus modellje és adattípus.
Csoport részcsoport invariáns faktorcsoport részcsoport
JavaScript.
Programozás alapjai.
Programozás alapjai.
Bevezetés a Java programozásba
Algebra a matematika egy ága
5. előadás (2005. március 22.) Függvények definíciója, deklarációja, hívása Enumerációs adattípus 1.
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
Programozáselmélet Logikák és módszerek a programhelyesség bizonyításához.
Másodfokú egyenletek.
Java programozási nyelv 3. rész – Osztályok I.
Determinisztikus véges automaták csukva nyitva m s kbsm csukva nyitva csukva nyitva csukvanyitva 1. Példa: Fotocellás ajtó s b m m= mindkét helyen k= kint.
Differenciál számítás
1.3 Relációk Def. (rendezett pár) (a1 , a2 ) := {{a1} , {a1 , a2 }} .
Reprezentációs függvény. Adva egy adattípus absztrakt és konkrét specifikációja: d a = ( A, F, E a ); d c = ( C, G, E c ); A = {A 0,..., A n };C = {C 0,...,
1. előadás. 1.) Szoftverfejlesztés, mint mérnöki tevékenység. Számítási eszközfejlődés. Számítási eszközfejlődés: hazai viszonyok. Mérföldkő: Simula 67.Klasszikus.
1. előadás. 1.) Szoftverfejlesztés, mint mérnöki tevékenység. Számítási eszközfejlődés. Számítási eszközfejlődés: hazai viszonyok. Mérföldkő: Simula 67.Klasszikus.
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Nem determinisztikusság és párhuzamosság. A nem determinisztikusság a párhuzamosságban gyökeredzik. Példa: S par  parbegin x:=0   x:=1   x:=2 parend;
Operációs rendszerek gyakorlat Reguláris kifejezések.
Az UML kiterjesztési lehetőségei
Operációs rendszerek gyakorlat 4. Gyakorlat Vakulya Gergely.
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
Karakterláncok Páll Boglárka.
Karakterláncok Páll Boglárka. Karakterláncok Karakterlánc olyan karakterek sorozata amelyek az ASCII táblázatban találhatók. Maximális hossza rögzített,
Karakterláncok Páll Éva Boglárka. Ismétlés Deklaráció var s:string; Length(karlánc) Concat(karlánc1,...,karláncn) Copy(miből,honnan,hányat) Delete(miből,honnan,hányat)
Klasszikus Programozás a FoxPro-ban
Az abszolút értékes függvények ábrázolása
Rendezések és szövegkezelő függvények
Operátorok Értékadások
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Scala KOVÁCS VINCENT. Gyűjtemények – Collections  Scala több féle gyűjteménnyel rendelkezik:  Listák (Lists)  Halmazok (Sets)  Maps  Tuple  A gyűjtemények.
Turbo Pascal Indítás: C:\LANGS\Turbo Pascal Turbo Pascal.
1 Példa. 2 Észrevételek 1. G i következő tulajdonságai invariánsak a direkt szorzat képzésre: asszociativitás, kommutativitás, egységelem létezése, invertálhatóság.
Termelő-fogysztó modell. A probléma absztrakt megfogalmazása: informális leírás. Adott egy N elemű közösen használt tároló, N  1. Adott a folyamatoknak.
Koncepció: Specifikáció: e par exp i = eb imp bod ib Specifikáció elemzése: tulajdonságok felírása a koncepció alapján + tulajdonságok bizonyítása.
Egyenesvonalú (lineáris) adatszerkezetek
1. MATEMATIKA ELŐADÁS Halmazok, Függvények.
Adatbázis rendszerek II
1 Mivel foglalkoz(t)unk a laborokon? 1.hét: Word dokumentumok 1.hét: Word dokumentumok tagolása, tartalomjegyzék, ábrák számozása, hivatkozások, egyenlet-szerkesztő.
File- típus-konstrukciók Szlávi Péter ELTE Informatika Szakmódszertani Csoport
MI 2003/6 - 1 Elsőrendű predikátumkalkulus (elsőrendű logika) - alapvető különbség a kijelentéslogikához képest: alaphalmaz. Objektumok, relációk, tulajdonságok,
előadások, konzultációk
1 Mivel foglalkoz(t)unk a laborokon? 1.Labor: Word alapok Excel alapok: Excel alapok: Cellahivatkozás, munkalapfüggvény, diagram varázsló, trendvonal 2.
Adva S  parbegin S 1 ...  S n parend; Párhuzamos programszerkezet két vagy több olyan folyamatot tartalmaz, amelyek egymással közös változó segítségével.
Kiterjesztések szemantikája: Szemantikai tartomány : Adatoknak, vagy értékeknek egy nem üres halmazát szemantikai tartománynak nevezzük. Jelölése: D. Egy.
Függvények aszimptotikus viselkedése: A Θ jelölés
Paraméter továbbítás. (parameter passing) Paraméteres specifikációk: Pl.: string(spec) : hasonló specifikációk családja; string(nat); string(data); string(integer);
1 Relációs kalkulusok Tartománykalkulus (DRC) Sorkalkulus (TRC) - deklaratív lekérdezőnyelvek - elsőrendű logikát használnak - relációs algebra kifejezhető.
Algebrai logika Leibniz folytatói a 18. században: Lambert, Segner és mások. 19. sz., Nagy-Britannia: Aritmetikai és szimbolikus algebra. Szimbolikus algebra:
Félcsoport (semigroup) = ({s},{ *: s s  s [infix]}. semigroup is a type specification = sorts: s oprs: *: s s  s [infix] eqns: m 1, m 2, m 3  s (m 1.
Paraméterátadó-morfizmus diagramja: p: tartalmazás SPEC SPEC 1 h : SPEC  SPEC' h 1 : SPEC 1  SPEC 1 ' SPEC' SPEC 1 ' p': tartalmazás SPEC: paraméter.
Példa. Az ábrázolás szemléltetése.  = ({stack, elem },{ create :  stack; push : stack elem  stack}),  = ( {vector, nat, elem}, { create c :  vector.
Alkalmazásfejlesztés F#-ban Dunaújvárosi Főiskola Kiss Gyula mérnökinformatikus hallgató Nemzeti Tehetség Program Tehetségútlevél Program „NTP-TÚP ”
a programegységek között
Compiler illetve interpreter nyelvek
A CLIPS keretrendszer
Példa: Dinteger = {..., -1,0,1,...}; Dboolean = {true, false};
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
1.3 Relációk Def. (rendezett pár) (a1 , a2) := {{a1} , {a1 , a2 }} .
Előadás másolata:

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;

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;

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;

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;

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

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

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});

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 Szemantika felírása: kifejezéseket kell felírni!

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 ;

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;

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 ;

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;

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.

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.

 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

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

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 =...

 -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).

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.

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.