Absztrakt adattípus - algebrai specifikáció - Lists (paraméteres) module imports end exports parameters variables sorts operations equations

Hasonló dokumentumok
S0-02 Típusmodellek (Programozás elmélet)

Klasszikus algebra előadás. Waldhauser Tamás április 28.

1. előadás: Halmazelmélet, számfogalom, teljes

Komputeralgebra rendszerek

Alap fatranszformátorok II

Komputeralgebra rendszerek

A valós számok halmaza

Kiterjesztések sek szemantikája

Komputeralgebra Rendszerek

KOVÁCS BÉLA, MATEMATIKA I.

Formális szemantika. Kifejezések szemantikája. Horpácsi Dániel ELTE Informatikai Kar

Relációs algebra 1.rész alapok

Programozás alapjai. 5. előadás

Komputeralgebra Rendszerek

3. Lineáris differenciálegyenletek

Relációk Függvények. A diákon megjelenő szövegek és képek csak a szerző (Kocsis Imre, DE MFK) engedélyével használhatók fel!

Intergrált Intenzív Matematika Érettségi

BOOLE ALGEBRA Logika: A konjunkció és diszjunkció tulajdonságai

RE 1. Relációk Függvények. A diákon megjelenő szövegek és képek csak a szerző (Kocsis Imre, DE MFK) engedélyével használhatók fel!

Logika es sz am ıt aselm elet I. r esz Logika Negyedik el oad as 1/26

5. Végezd el a kijelölt műveleteket, és ahol lehet, vonj össze!

Halmaz: alapfogalom, bizonyos elemek (matematikai objektumok) Egy halmaz akkor adott, ha minden objektumról eldönthető, hogy

Diszkrét matematika 2. estis képzés

Algoritmizálás és adatmodellezés tanítása 1. előadás

8. Egyenletek, egyenlőtlenségek, egyenletrendszerek II.

Programok értelmezése

Térinformatikai algoritmusok Elemi algoritmusok

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje

Klasszikus algebra előadás. Waldhauser Tamás április 14.

Alap fatranszformátorok I. Oyamaguchi [3], Dauchet és társai [1] és Engelfriet [2] bebizonyították hogy egy tetszőleges alap

2016, Diszkrét matematika

Térinformatikai algoritmusok Elemi algoritmusok

A relációelmélet alapjai

Nagy Gábor compalg.inf.elte.hu/ nagy ősz

Itt és a továbbiakban a számhalmazokra az alábbi jelöléseket használjuk:

Informatika terméktervezőknek

Java II. I A Java programozási nyelv alapelemei

4. Fuzzy relációk. Gépi intelligencia I. Fodor János NIMGI1MIEM BMF NIK IMRI

BASH script programozás II. Vezérlési szerkezetek

NAGYPONTOSSÁGÚ EGÉSZ-ARITMETIKA TARTALOM

Komputeralgebra Rendszerek

Alapok. tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók

KOVÁCS BÉLA, MATEMATIKA I.

Matematikai alapismeretek. Huszti Andrea

Általános algebra. 1. Algebrai struktúra, izomorfizmus. 3. Kongruencia, faktoralgebra március Homomorfizmus, homomorfiatétel

Elsőrendű logika szintaktikája és szemantikája. Logika (3. gyakorlat) 0-adrendű szemantika 2009/10 II. félév 1 / 1

Számelmélet (2017. február 8.) Bogya Norbert, Kátai-Urbán Kamilla

5.3. Logika a relációkhoz

FUNKCIONÁLIS PROGRAMOZÁS

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

Kaposi Ambrus. University of Nottingham Functional Programming Lab. Hackerspace Budapest január 6.

Irodalom. (a) A T, B T, (b) A + B, C + D, D C, (c) 3A, (d) AD, DA, B T A, 1 2 B = 1 C = A = 1 0 D = (a) 1 1 3, B T = = ( ) ; A T = 1 0

1. A Hilbert féle axiómarendszer

I. A DIGITÁLIS ÁRAMKÖRÖK ELMÉLETI ALAPJAI

Java II. I A Java programozási nyelv alapelemei

OOP: Java 8.Gy: Abstract osztályok, interfészek

ködös határ (félreértés, hiba)

C++ programozási nyelv Konstruktorok-destruktorok

KOVÁCS BÉLA, MATEMATIKA I.

2019/02/11 10:01 1/10 Logika

HALMAZOK. A racionális számok halmazát olyan számok alkotják, amelyek felírhatók b. jele:. A racionális számok halmazának végtelen sok eleme van.

Tulajdonságalapú tesztelés

First Prev Next Last Go Back Full Screen Close Quit. Matematika I

Kongruenciák. Waldhauser Tamás

Matematika III. 2. Eseményalgebra Prof. Dr. Závoti, József

2018, Diszkre t matematika. 8. elo ada s

Állapot minimalizálás

SZÁMÍTÁSTUDOMÁNY ALAPJAI

Szkriptnyelvek. 1. UNIX shell

Az R halmazt a valós számok halmazának nevezzük, ha teljesíti az alábbi 3 axiómacsoport axiómáit.

Bevezetés a programozásba. 8. Előadás: Függvények 2.

5. SOR. Üres: S Sorba: S E S Sorból: S S E Első: S E

A félév során előkerülő témakörök

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé.

2019, Funkcionális programozás. 4. el adás. MÁRTON Gyöngyvér

Hardver és szoftver rendszerek verifikációja Röviden megválaszolható kérdések

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Előfeldolgozó rendszer Tömbök. Dr. Bécsi Tamás 4. Előadás

ADATBÁZIS-KEZELÉS. Relációalgebra, 5NF

Chomsky-féle hierarchia

Nagy Gábor compalg.inf.elte.hu/ nagy

1. Interpoláció. Egyértelműség Ha f és g ilyen polinomok, akkor n helyen megegyeznek, így a polinomok azonossági tétele miatt egyenlők.

Programozás II. 2. Dr. Iványi Péter

Formális nyelvek - 9.

Karakterkészlet. A kis- és nagybetűk nem különböznek, a sztringliterálok belsejét leszámítva!

1.1. Definíció. Azt mondjuk, hogy a oszója b-nek, vagy más szóval, b osztható a-val, ha létezik olyan x Z, hogy b = ax. Ennek jelölése a b.

Python tanfolyam Python bevezető I. rész

Relációs algebra áttekintés és egy táblára vonatkozó lekérdezések

Programozási nyelvek (ADA)

Gy ur uk aprilis 11.

Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) Halmazok 1

Az F# nyelv erőforrásanalízise

Analízis I. Vizsgatételsor

Nagy Gábor compalg.inf.elte.hu/ nagy

Elemi algebrai eszközökkel megoldható versenyfeladatok Ábrahám Gábor, Szeged

Bevezetés az algebrába az egész számok 2

FUNKCIONÁLIS PROGRAMOZÁS ELŐADÁS JEGYZET

Számelmélet. 1. Oszthatóság Prímszámok

2016, Funkcionális programozás

Analízis I. beugró vizsgakérdések

Átírás:

Absztrakt adattípus -algebrai specifikáció -Lists (paraméteres) module Lists imports Booleans, Naturals parameters Items sorts Item operations erroritem : Item eq? : Item, Item Boolean variables a, b, c : Item equations eq? (a,a) = true when a erroritem eq? (a,b) = eq? (b,a) implies (and (eq? (a,b), eq? (b,c)), eq? (a,c)) = true when a erroritem, b erroritem, c erroritem end Items exports sorts List operations null : List errorlist: List cons( _, _ ) : Item, List List concat( _, _ ) : List, List List equal? ( _, _ ) : List, List Boolean length( _ ) : List Natural mklist( _ ) : Item List end exports variables i, i1, i2 : Item s, s1, s2 : List equations [S1] concat(null, s) = s [S2] concat(cons(i, s1), s2) = cons(i, concat(s1, s2)) [S3] equal? (null, null) = true [S4] equal? (null, cons (i, s)) = false when s errorlist, i erroritem [S5] equal? (cons (i, s), null) = false when s errorlist, i erroritem [S6] equal? (cons(i1, s1), cons(i2, s2)) = and (eq? (i1, i2), equal? (s1, s2)) [S7] length(null) = 0 [S8] length (cons (i, s)) = succ(length (s)) when i erroritem [S9] mklist(i) = cons (i, null) end Lists 1

module Lists imports Booleans, Naturals parameters Items sorts Item operations erroritem: Item eq? : Item, Item Boolean variables a, b, c : Item equations eq? (a,a) = true when a erroritem eq? (a,b) = eq? (b,a) implies (and (eq? (a,b), eq? (b,c)), eq? (a,c)) = true end Items exports sorts List operations null : List errorlist: List when a erroritem, b erroritem, c erroritem cons( _, _ ) : Item, List List a listába fűzhető elemek egyelőre ismeretlen halmazát Item-nekhívják, ennek lennie kell egy erroritemértékének és egy eq? egyenlőség műveletének az eq? egyenlőség művelet igazi egyenlőség az axiómák alapján 2

implies (and (eq? (a,b), eq? (b,c)), eq? (a,c)) = true end Items exports sorts List operations null : List errorlist: List when a erroritem, b erroritem, c erroritem cons( _, _ ) : Item, List List concat( _, _ ) : List, List List equal? ( _, _ ) : List, List Boolean length ( _ ) : List Natural mklist( _ ) : Item List end exports variables i, i1, i2 : Item s, s1, s2 : List equations [S1] concat(null, s) = s [S2] concat(cons(i, s1), s2) = cons(i, concat(s1, s2)) [S3] equal? (null, null) = true kívülről látható a most definiált List szortés annak összes művelete a List szortelemeit a null és a consműveletekkel lehet előállítani, az ezen műveletekkel előállított struktúrák alkotják a List szort értékeit a mklist kényelmi művelet, mert cons(item,null) művelettel is meg lehet oldani 3

end exports variables i, i1, i2 : Item s, s1, s2 : List equations [S1] concat(null, s) = s [S2] concat(cons(i, s1), s2) = cons(i, concat(s1, s2)) [S3] equal? (null, null) = true [S4] equal? (null, cons (i, s)) = false when s errorlist, i erroritem [S5] equal? (cons (i, s), null) = false when s errorlist, i erroritem [S6] equal? (cons(i1, s1), cons(i2, s2)) = [S7] length(null) = 0 and (eq? (i1, i2), equal? (s1, s2)) [S8] length (cons (i, s)) = succ(length (s)) when i erroritem [S9] mklist(i) = cons (i, null) end Lists cons műveletnek nincs axiómája, a cons művelettel előállított struktúrák a List szortelemei, ezért a cons (char-a, cons (char-b, nullstring)) reprezentálja az ab stringet rekurzív definíció 4

Absztrakt adattípus -algebrai specifikáció -Lists használata module Files imports Booleans, Naturals, instantiation of Lists bind Items using Natural for Item using errornatural for erroritem using eq? foreq? rename using File for List using emptyfile for null using mkfile for mklist using errorfile for errorlist exports sorts File operations empty? ( _ ) : File Boolean end exports variables f : File equations [F1] empty? (f) = equal? (f, emptyfile) end Files a Filesmodul a Lists felhasználásával modellezi a file inputoutput kezelést 5

module Files imports Booleans, Naturals, instantiation of Lists bind Items using Natural for Item using errornatural for erroritem usingeq? foreq? rename using File for List using emptyfile for null using mkfile for mklist using errorfile for errorlist exports sorts File operations empty? (_): File Boolean end exports variables f : File equations [F1] empty? (f) = equal? (f, emptyfile) end Files ez az a specifikáció morfizmus, ami a paraméterek specifikációját az export specifikációjára képezi le szortokés műveletek átnevezése, a többi művelet változatlan, ezért a File konstruktora a cons a Files exportálja az átnevezetteket és a Lists export szekcióját új exportált művelet bevezetése 6

Absztrakt adattípus -algebrai specifikáció -modulok most már tudjuk, hogy mi az algebrai specifikáció mi a modulokra bontott specifikáció, import, export, paraméterek, rejtett rész mi a paraméter felhasználása 7

Típusmodellek 6. Algebrai specifikáció jelentése 8

Algebrai specifikáció jelentése volt absztrakt adattípus, absztrakt algebrai specifikáció, modulokra bontás (paraméter, import, export, rejtett rész), példa modulok, paraméteres példa, C most jön absztrakt algebrai specifikáció jelentése (mi tartozik a specifikált adatok közé) specifikált adatok egyenlősége specifikáció teljessége és konzisztens volta C 9

Algebrai specifikáció jelentése megjegyzés: amikről most szó lesz, azt a könyvben a következő részeknél kell keresni: típusosztály specifikációjának elemzése, egyenlőség axióma, C 10

Algebrai specifikáció jelentése - termek a korábbi specifikációkban mondtuk, hogy a specifikált adattípus elemeit a műveletek ismétlésével nyert kifejezések (termek) reprezentálják a Naturalszort hordozó halmazának elemei például: 0, succ(0), succ(succ(0), succ(succ(succ(0))),... és errornatural ezek olyan kifejezések, amikben nincsenek változók (bázis termek, ground terms) 11

bázis termek a Σ= (S, OP) szignatúra s szortjához tartozó bázis termek halmaza legyen T Σ, aminek induktív definíciója: az s szort konstans műveletei az s szortbázis termei f:s 1,C,s n s OP esetén, ahol s 1,C,s n s S, ha t 1,C,t n a megfelelő s 1,C,s n szortokbázis termei, akkor f(t 1,C,t n ) az s szortbázis terme 12

bázis termek a korábbi Booleans modul Boolean szortjának bázis termei például a true és falsekonstansok, true, not(true), not(not(true)), not(not(not(true))),... false, not(false), not(not(false)), not(not(not(false))), C. végtelen sokan vannak a specifikáció egyenlőségei nélkül mindet különbözőnek tekintjük, ezért a specifikáció egyenlőségei nélkül nem tudjuk, hogy not(true) ugyanaz, mint false 13

bázis termek a korábbi Naturals modul Natural szortjának bázis termei például 0, succ(0), succ(succ(0)), succ(succ(succ(0))), C add(0,0), add(0,succ(0)), add(0,succ(succ((0))),... add(succ(0),0), add(succ(succ(0)),0), C. végtelen sokan vannak a specifikáció egyenlőségei nélkül nem tudjuk, hogy például add(succ(0),succ(0)) ugyanaz, mint succ(succ(0)) 14

termalgebra szignatúrához tartozik a szignatúra algebra: hordozó halmaz + műveletek értelmezése, ezért most a szignatúrához konstruálunk egy szignatúra algebrát a szignatúrához tartozó bázis termekből, amit term algebrának hívunk, jelölése szintén T Σ 15

termalgebra -hordozó halmaz a Σ= (S, OP) szignatúra s szortjához tartozó hordozó halmazt az (s) jelöli, ahol (s) induktív Σ Σ definíciója: az s szort c konstans műveletéhez a c konstans tartozik az (s) hordozó halmazban Σ f:s 1,C,s n s OP esetén, ahol s 1,C,s n s S, ha t 1 (s 1 ),C,t n (s n ), akkor f(t 1,C,t n ) az Σ Σ (s) hordozó halmaz eleme Σ 16

termalgebra -művelet a Σ= (S, OP) szignatúra OP művelet halmazához tartozó művelet halmazt az OP jelöli, ahol OP elemei: Σ f:s 1,C,s n s OP esetén, ahol s 1,C,s n s Sés t 1 (s 1 ),C,t n (s n ) Σ az f művelethez tartozó f művelet Σ értelmezése f (t 1,C,t n )= f(t 1,C,t n ) Σ, Σ Σ 17

termalgebra -szimbolikus vagyis a T Σ term algebra hordozó halmazainak elemei a konstans és művelet szimbólumokból, valamint a (, a ) és a, karakterekből összeállított stringek, amik bázis termek a T Σ term algebra műveletei ezen bázis termeket reprezentáló stringekközötti leképzések az eredeti műveleteknek megfelelően 18

termalgebra -szimbolikus a Booleans modul Boolean szortjához a term algebrában (Boolean) hordozó halmaz Σ tartozik, amiben például a következő stringek vannak: true, not(true), not(not(true)),... false, not(false), not(not(false)),... a not művelethez tartozó not művelet a Σ true stringeta not(true) stringreképezi le, amit a not(not(true)) stringreképezi le, stb. 19

termalgebra ez a T Σ term algebra nyilvánvalóan nem a Booleanszándékolt jelentését tükrözi, mert a hordozó halmaz végtelen és a benne lévő stringekre false not(true) ez azért van, mert a term algebrában még nem vettük figyelembe a specifikáció egyenleteit, és hogy azok milyen megkötéseket tesznek az eredeti szignatúra algebrára 20

termalgebra -kiértékelő függv. a Σ= (S, OP) szignatúrához tartozó A szignatúra algebra és T Σ term algebra eval A :T Σ A kiértékelő függvénye a bázis termekhez A beli értékeket rendel a következők szerint: eval A ( c )=c A a konstansokra, és eval A ( f(t 1,C,t n ) )=f A (eval A (t 1 ),C,eval A (t n )), ahol f:s 1,C,s n s OP művelet és t i s i 21

termalgebra -kongruencia a kiértékelő függvény megmutatta, hogy egy bázis term milyen A beli értékhez tartozik az azonos A beliértékhez tartozó termek helyettesíthetők egymással, egyenértékűek, azaz kongruensek a kongruencia relációt a specifikáció egyenletei határozzák meg a következőekben definiáltak szerint 22

termalgebra -kongruencia adott a (Σ,E) specifikáció, az E egyenletek által a T Σ term algebrán meghatározott E kongruencia reláció a legszűkebb olyan reláció, ami teljesíti a következőket: változó helyettesítés: ha az E specifikáció lhs=rhs egyenlete tartalmazza a v 1,C,v n változókat és t 1,C,t n T Σ ugyanazon indexű változók szortjába tartozó bázis termek, akkor lhs[t 1 v 1,C,t n v n ] E rhs[t 1 v 1,C,t n v n ] ahol t i v i jelöli, hogy v i helyére t i termet helyettesítjük (ha feltételes, akkor a feltételekben is) reflexivitás: t T Σ bázis termekre: t E t 23

változó helyettesítés: ha az E specifikáció lhs=rhs egyenlete tartalmazza a v 1,C,v n változókat és t 1,C,t n T Σ ugyanazon szortokbatartozó bázis termek, akkor lhs[t 1 v 1,C,t n v n ] E rhs[t 1 v 1,C,t n v n ] ahol t i v i jelöli, hogy v i helyére t i termet helyettesítjük (ha feltételes, akkor a feltételekben is) reflexivitás: t T Σ bázis termekre: t E t szimmetria: t 1,t 2 T Σ bázis termekre: t 1 E t 2 t 2 E t 1 tranzitivitás: t 1,t 2,t 3 T Σ bázis termekre: (t 1 E t 2 t 2 E t 3 ) t 1 E t 3 helyettesíthetőség: ha t 1 E t 1,C,t n E t n és f:s 1,C,s n s OP művelet, akkor f(t 1,C,t n ) E f(t 1,C,t n ) 24

termalgebra -kongruencia a kongruencia osztályok generálásának módja: változó nélküli egyenletekből, majd deriválás a reflexív, szimmetrikus és tranzitív tulajdonságokkal, majd kihasználva, hogy a művelet szimbólumok megőrzik a kongruenciát, ha bázis termekké alakítjuk őket 25

termalgebra -kongruencia nézzük például a Booleansmodul következő egyszerűsített specifikációját: module Bools exports sorts Boolean operations true: Boolean false: Boolean not( _): Boolean Boolean end exports equations [B1] not(true) = false [B2] not(false) = true end Bools 26

termalgebra -kongruencia az egyszerűsített Bools modul Boolean szortjábana következő bázis termek kongruensek a true és false értékekkel: true E not(false) E not(not(true)) E not(not(not(false))) E... false E not(true) E not(not(false)) E not(not(not(true))) E... ezeket könnyű belátni, mert az egyenletek nem tartalmaznak változókat 27

termalgebra -kongruencia a korábbi Naturals modul Natural szortjában a bázis termek kongruensek az errornaturals, 0, succ(0), succ(succ(0)) stb. értékekkel például a következő négy bázis term kongruens: succ(succ(0)) E add(0,succ(succ(0)) E add(succ(succ(0)),0) E add(succ(0),succ(0)) ezeket bizonyítani kell, mert az egyenletek változókat tartalmaznak 28

termalgebra -kongruencia bebizonyítjuk, hogy add(succ(0),succ(0)) E succ(succ(0)) add(succ(0),succ(0)) E succ(add(succ(0),0)) mert [N4] add (m, succ (n)) = succ (add (m, n))szabályban [m succ(0),n 0] változó helyettesítést alkalmazunk succ(add(succ(0),0)) E succ(succ(0)) mert [N3] add (m, 0) = mszabályban [m succ(0)] változó helyettesítést alkalmazunk 29

specifikáció modellje a (Σ,E) specifikációnak az A szignatúra algebra a modellje, ha t 1,t 2 T Σ bázis termekre t 1 E t 2 eval A (t 1 ) = eval A (t 2 ) vagyis az egy kongruencia osztályba tartozó bázis termek az A szignatúra algebrának ugyanarra az elemére értékelődnek ki 30

specifikáció modellje nézzük például a Booleansmodul következő egyszerűsített specifikációját: module Bools exports sorts Boolean operations true: Boolean false: Boolean not( _): Boolean Boolean end exports equations [B1] not(true) = false [B2] not(false) = true end Bools ezt a Bools-tmodellezi a következő A szignatúra algebra: A = <{off, on}, {off, on, switch}>szignatúra switch(off) = on és switch(on) = off egyenletek 31

specifikáció modellje a modell megfeleltetései: a Boolean = {false, true} szortnak megfelelő hordozó halmaz a Boolean A = {off, on} S műveletei true : Boolean false : Boolean not : Boolean Boolean A műveletei true A = on : Boolean A false A = off : Boolean A not A = switch : Boolean A Boolean A 32

specifikáció modellje egy esetben bizonyítjuk, hogy ez a megfeleltetés teljesíti a modell definícióját: t 1,t 2 T Σ amire t 1 E t 2 : Bools esetén not(true) E false be kell látni, hogy eval A (t 1 ) = eval A (t 2 ): eval A (not(true)) = not A (eval A (true)) = not A (true A ) = switch(on) = off eval A (false) = off tehát eval A (not(true)) = eval A (false) eval definíciójából: eval A ( f(t 1,C,t n ) )= f A (eval A (t 1 ),C,eval A (t n )) eval definíciójából konstans behelyetesítés 33

specifikáció modellje egy specifikációnak sok modellje lehet a bázis termekből álló T Σ initial(kezdeti) algebra egy modell, ami biztosan létezik a kezdeti algebrából megkonstruálható a faktor algebra, ami a modellek azonosságra lezárt osztálya (lásd következő lapon) a specifikáció jelentésének a faktor algebrát tekintjük 34

specifikáció modellje Megjegyzés: ahogy az absztrakt algebra a szignatúra algebrák izomorfizmusra zárt osztálya, ugyanúgy a specifikáció jelentése a modellek azonosságra zárt osztálya 35

faktor algebra (Q, quotient) legyen (Σ,E) specifikáció, Σ = (S, OP), a t T Σ bázis term kongruencia osztálya [t]={t t E t }, vagyis [t]=[t ] t E t, ekkor a faktor algebra így áll elő: a faktor algebra szortjaia bázis termek kongruencia osztályai: {(s) s S} a c konstans művelet megfelelője a faktor algebrában a [c] kongruencia osztály a faktor algebra f Q műveleteinek előállítása: f Q ([t 1 ],C,[t n ])=[f(t 1,C,t n )], ahol f:s 1,C,s n s OP és t i bázis termaz s i hordozó halmazból Σ 36

faktor algebra a faktor algebra f Q műveletei jól definiáltak, mert a kongruencia definíciójában szereplő helyettesítési tulajdonság miatt ha t 1 E t 1,C,t n E t n, akkor f Q (t 1,C,t n ) E f Q (t 1,C,t n ) vagyis a kongruens termek ugyanolyan paraméterként viselkednek és az f Q művelet ugyanarra a kongruens osztályra képezi le őket 37

faktor algebra -példa nézzük újra a Booleansmodul egyszerűsített specifikációját: module Bools exports sorts Boolean operations true: Boolean false: Boolean not( _): Boolean Boolean end exports equations [B1] not(true) = false [B2] not(false) = true end Bools 38

faktor algebra -példa két kongruencia osztály van [true], aminek elemei true, not(false), not(not(true)), not(not(not(false))),... [false], aminek elemei false, not(true), not(not(false)), not(not(not(true))),... a not Q művelet a következő: not Q ([false]) = [not(false)] = [true] és not Q ([true]) = [not(true)] = [false] 39