Hatékony technikák modellellenőrzéshez: Szimbolikus technikák (ROBDD)

Hasonló dokumentumok
Hatékony technikák modellellenőrzéshez: Szimbolikus technikák (ROBDD)

Modellellenőrzés. dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Modellellenőrzés. dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Korlátos modellellenőrzés. dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Hatékony technikák modellellenőrzéshez: Korlátos modellellenőrzés. dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Gyakorló feladatok: Formális modellek, temporális logikák, modellellenőrzés. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Alapszintű formalizmusok

A modellellenőrzés érdekes alkalmazása: Tesztgenerálás modellellenőrzővel

A modellellenőrzés érdekes alkalmazása: Tesztgenerálás modellellenőrzővel

Formális módszerek GM_IN003_1 Program verifikálás, formalizmusok

Az UPPAAL egyes modellezési lehetőségeinek összefoglalása. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

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

Részletes szoftver tervek ellenőrzése

Követelmények formalizálása: Temporális logikák. dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Kiterjesztések sek szemantikája

Elérhetőségi probléma egyszerűsítése: Állapottér és struktúra redukció Petri-háló alosztályok

Zárthelyi mintapéldák. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Temporális logikák és modell ellenırzés

Elérhetőségi analízis Petri hálók dinamikus tulajdonságai

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

Sztochasztikus temporális logikák

Rendszermodellezés. Modellellenőrzés. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Valószínűségi modellellenőrzés Markov döntési folyamatokkal

Amortizációs költségelemzés

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t

Szoftver-modellellenőrzés absztrakciós módszerekkel

Alapszintű formalizmusok

Algoritmusok és adatszerkezetek gyakorlat 07

Alapszintű formalizmusok

... S n. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak.

A Formális nyelvek vizsga teljesítése. a) Normál A vizsgán 60 pont szerezhet, amely két 30 pontos részb l áll össze az alábbi módon:

Részletes tervek ellenőrzése

Algoritmuselmélet. 2-3 fák. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 8.

Adatszerkezetek 7a. Dr. IványiPéter

Gyakori elemhalmazok kinyerése

Időzített átmeneti rendszerek

Gráfok, definíciók. Gráfok ábrázolása. Az adott probléma megoldásához ténylegesen mely műveletek szükségesek. Ábrázolások. Példa:

Struktúra nélküli adatszerkezetek

Formális verifikáció Modellezés és modellellenőrzés

Adatszerkezetek és algoritmusok

Aszinkron rendszerek modellellenőrzése párhuzamos technikákkal

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

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

Új típusú döntési fa építés és annak alkalmazása többtényezős döntés területén

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

7. BINÁRIS FÁK 7.1. A bináris fa absztrakt adattípus 7.2. A bináris fa absztrakt adatszerkezet

Programok értelmezése

Megoldások a mintavizsga kérdések a VIMIAC04 tárgy ellenőrzési technikák részéhez kapcsolódóan (2017. május)

Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1]

A Formális nyelvek vizsga teljesítése. a) Normál A vizsgán 60 pont szerezhet, amely két 30 pontos részb l áll össze az alábbi módon:

2. Visszalépéses stratégia

Múlt és jövő: Új algoritmusok lineáris temporális tulajdonságok szaturáció-alapú modellellenőrzésére

Komputeralgebra Rendszerek

Aszinkron rendszerek heurisztikával támogatott modellellenőrzése

Szaturáció alapú modellellenőrzés lineáris idejű tulajdonságokhoz

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r

2. Visszalépéses keresés

Időt kezelő modellek és temporális logikák

Konjugált gradiens módszer

Korlátozás és szétválasztás elve. ADAGOLO adattípus

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

Algoritmuselmélet. Bonyolultságelmélet. Katona Gyula Y.

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

Java II. I A Java programozási nyelv alapelemei

Formális modellezés és verifikáció

A számítástudomány alapjai. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

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

Kifejezések. Kozsik Tamás. December 11, 2016

Adatszerkezetek I. 7. előadás. (Horváth Gyula anyagai felhasználásával)

Automatikus tesztgenerálás modell ellenőrző segítségével

Hierarchikus adatszerkezetek

Segédanyagok. Formális nyelvek a gyakorlatban. Szintaktikai helyesség. Fordítóprogramok. Formális nyelvek, 1. gyakorlat

Adatszerkezetek és algoritmusok

Komputeralgebrai Algoritmusok

Adatszerkezetek 2. Dr. Iványi Péter

... fi. ... fk. 6. Fabejáró algoritmusok Rekurzív preorder bejárás (elsőfiú-testvér ábrázolásra)

Kupac adatszerkezet. 1. ábra.

INFORMATIKA javítókulcs 2016

7 7, ,22 13,22 13, ,28

Követelmények formalizálása: Temporális logikák. dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Programozási módszertan. Mohó algoritmusok

Intelligens Rendszerek Elmélete IRE 4/32/1

1. ábra. Egy rekurzív preorder bejárás. Egy másik rekurzív preorder bejárás

Adatszerkezetek 1. előadás

Ionogram releváns területeinek meghatározása és elemzésének automatikus megvalósítása

Absztrakt adatstruktúrák A bináris fák

A szemantikus elemzés elmélete. Szemantikus elemzés (attribútum fordítási grammatikák) A szemantikus elemzés elmélete. A szemantikus elemzés elmélete

5. A kiterjesztési elv, nyelvi változók

Algoritmusok és adatszerkezetek II.

ÍTÉLETKALKULUS (NULLADRENDŰ LOGIKA)

A programozás alapjai előadás. [<struktúra változó azonosítók>] ; Dinamikus adatszerkezetek:

Kifejezések. Kozsik Tamás. December 11, 2016

Algoritmuselmélet 2. előadás

Dinamikus modellek szerkezete, SDG modellek

10. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: január 28.

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

Gyakori elemhalmazok

Gráfelmélet. I. Előadás jegyzet (2010.szeptember 9.) 1.A gráf fogalma

Követelmények formalizálása: Temporális logikák

Átírás:

Hatékony technikák modellellenőrzéshez: Szimbolikus technikák (ROBDD) dr. Majzik István dr. Pataricza András dr. Bartha Tamás BME Méréstechnika és Információs Rendszerek Tanszék 1

Hol tartunk? Alacsony szintű formalizmusok (KS, LTS, KTS) Magasabb szintű formalizmusok Temporális logikák: PLTL, CTL, CTL* Rendszer modellje Követelmény megadása Alapszintű algoritmus i Automatikus modellellenőrző n OK Ellenpélda 2

Ismétlés: A modellellenőrzés tanult technikái PLTL modellellenőrzés: Tabló módszer: Kifejezések felbontása a modell mentén s - p U q s - q s - p, s - X(p U q) s s - p, s 1 - p U q s - p, s n - p U q s 1 s 2 s n Automata alapú megközelítés (kiegészítő anyag) CTL modellellenőrzés: Szemantika alapú módszer: Állapotok iteratív címkézése E(P U Q) E(P U Q) P P P {P,Q} E(P U Q) 3

Ismétlés: CTL modellellenőrzés állapot címkézéssel Állapotok címkézése részkifejezésekkel Sat(..) állapothalmaz számítása alapján: AF ( P E (Q U R)) Állapotok címkézése: Hol igaz egy adott kifejezés? Kiindulás: KS címkézve van atomi kijelentésekkel Továbblépés: Címkézés az összetettebb kifejezésekkel Ha p illetve q címkék már vannak, akkor megadható, hol lehet p, p q, EX p, AX p, E(p U q), A(p U q) címke Inkrementális címkézési algoritmus az operátorok szemantikája alapján 4

Ismétlés: Az E(P U Q) címkézés iterációja P P P P P P {P,Q} Első lépés: Q {P,Q} E(P U Q) Kripke struktúra a kezdő címkézéssel P E(P U Q) P P Kihasználható: E(P U Q) = Q (P EX E(P U Q)) Második lépés: P EX {P,Q} E(P U Q) Az iteráció addig tart, míg nő az állapothalmaz (fixpontot érünk el) Harmadik lépés: P EX E(P U Q) P E(P U Q) P P {P,Q} E(P U Q) 5

Problémák Nagy méretű állapottér bejárása szükséges Konkurens alkalmazások esetén nagy méretű állapottér adódik: Független állapotátmenetek végrehajtása sokféle (átlapolt) sorrendben történhet P1 P2 P3 Teljes állapottér Hogyan lehet nagy méretű modelleket ellenőrizni? Ígéret: CTL modellellenőrzés: 1 2, egyes esetekben 1 1 állapot Milyen technika tudja ezt biztosítani? 6

Kitérő: Két automata együttes működése Automaták direkt szorzata, átlapolás, szinkronizáció 8

Példa: Aszinkron automaták működése Két (független) automatából álló rendszer (Direkt) szorzatautomata: a rendszer állapottere A m 1 m 2 m 1 s 1 m 2 s 1 C B s 1 s 2 m 1 s 2 m 2 s 2 Az automaták állapotai: A = {m 1, m 2 }, B = {s 1, s 2 } Az állapotok halmaza: C = A B C = {m 1 s 1, m 1 s 2, m 2 s 1, m 2 s 2 } 9

Átlapolás korlátozása: Szinkronizáció, feltétel Egyidejű állapotváltás: szinkronizáció Korlátozó feltételek: állapotátmenetek tiltása m 1 s 1 m 1 s 1 m 2 s 1 C C m 2 s 2 m 1 s 2 m 2 s 2 pl. A és B egyszerre vált állapotot az azonos indexű állapotokból pl. B csak akkor vált állapotot, ha A m 2 állapotban van 1

Példa: Gyalogos lámpa jelzőgombbal Szinkronizáció (valt!, valt?) P,NJ P,J Z,NJ Z,J Korlátozó feltétel (is_p == true) 11

T1 Példa: Különböző utak hatása T2 (,,) (x,y,g) x=1 y=1 x=1 y=1 (1,,) g=g+2 y=1 x=1 (,1,) g=g*2 g=g+2 g=g*2 (1,,2) (1,1,) (,1,) y=1 g=g+2 g=g*2 x=1 Lokális változók: x és y Globális változó: g (1,1,2) g=g*2 (1,1,) g=g+2 (1,1,4) (1,1,2) 12

Példa nagy állapottérre: Étkező filozófusok Konkurens rendszer Holtpont kialakulhat Livelock kialakulhat Állapottér mérete gyorsan nő Filozófusok száma Állapottér mérete 16 4,7 1 1 28 4,8 1 18 2 > 1 4 1 > 1 2 2 64 = 1,8 1 19 Kép: wikipedia Okos (de nem feladat-specifikus) állapottér tárolással: kb. 1 filozófus, azaz 1 629 állapottér is ellenőrizhető! 13

Áttekintés a megismerendő technikákról CTL modellellenőrzés: Szimbolikus technika Szemantika alapú technika Címkézett állapothalmazok Műveletek állapothalmazokon Szimbolikus technika Karakterisztikus függvények (Boole logikai függvények): ROBDD reprezentáció Hatékony műveletek ROBDD-ken Invariánsok modellellenőrzése: Korlátos modellellenőrzés Logikai függvények igazságának keresése SAT technikával Adott mélységig folytatható modellellenőrzés: Korlátos hosszúságú ellenpéldák keresése Egy megtalált ellenpélda mindenképpen érvényes ellenpélda Ha nincs ellenpélda, az nem végleges eredmény 14

Szimbolikus modellellenőrzés 15

Ismétlés: Iteráció halmazműveletekkel A címkézés bővítése halmazműveletekkel történik Kezdőhalmaz: Rész-kifejezésekkel már címkézett állapotok Címkézés bővítése: E(p U q) esetén: Legalább egy rákövetkező állapota már címkézett A(p U q) esetén: Minden rákövetkező állapota már címkézett Ez alapján a megelőző állapotok valamelyikére tehető az új címke Megelőző állapotok jelölése már címkézett Z halmazhoz: pre E (Z) = {s S létezik olyan s, hogy (s,s ) R és s Z} pre A (Z) = {s S minden s -re, ahol (s,s ) R: s Z} Példa: E(P U Q) iterációja: Kezdőhalmaz: Z = {s Q L(s)} Iteráció: Z i+1 = Z i (pre E (Z i ) {s P L(s)}) Eddig címkézettek plusz az eddig címkézettek olyan megelőző állapotai, amelyek...... P-vel címkézettek Iteráció vége: Ha Z i+1 = Z i, azaz nem bővül a halmaz 16

Alapötlet Állapothalmazok tárolása és műveletei: Az állapotok felsorolása helyett logikai függvényekkel Állapot kódolása bitvektorral S állapothalmaz kódolásához n= log 2 S bit elég, azaz válasszunk olyan n értéket, hogy legyen 2 n S Állapothalmaz kódolása n-változós logikai (Boole) függvénnyel: Karakterisztikus függvény A logikai függvény akkor legyen igaz egy-egy bitvektor behelyettesítésére, ha a bitvektor által kódolt állapot az adott állapothalmazban van Karakterisztikus függvény: C: {,1} n {,1} A karakterisztikus függvényekkel fogunk műveleteket végezni a halmazok helyett 17

Karakterisztikus függvények s állapotra: C s (x 1, x 2,, x n ) Legyen az s kódolása (u 1, u 2,, u n ) bitvektor, itt u i {,1} Cél: C s (x 1, x 2,, x n ) csak az (u 1, u 2,, u n ) esetén adjon 1 értéket C s (x 1, x 2,, x n ) konstruálása: operátorral x i szerepel, ha u i =1 x i szerepel, ha u i = Példa: (,1) kódolású s állapotra: C s (x 1, x 2 ) = x 1 x 2 Y S állapothalmazra: C Y (x 1, x 2,, x n ) Cél: C Y (x 1, x 2,, x n ) akkor legyen igaz egy (u 1, u 2,, u n ) behelyettesítésre, ha (u 1,u 2,, u n ) Y C Y (x 1, x 2,, x n ) konstruálása: C Y (x 1, x 2,, x n )= s Y C s (x 1, x 2,, x n ) Állapothalmazokra általában: C Y W = C Y C W, C Y W = C Y C W 18

Példa: Állapotok karakterisztikus függvénye (,) s1 s3 (1,1) Változók: x, y s2 (,1) Állapotok karakterisztikus függvényei: s1 állapot: C s1 (x,y) = ( x y) s2 állapot: C s2 (x,y) = ( x y) s3 állapot: C s3 (x,y) = ( x y) Állapothalmaz karakterisztikus függvénye: {s1,s2} állapothalmaz: C {s1,s2} = C s1 C s2 = ( x y) ( x y) 19

Karakterisztikus függvények (folytatás) Állapotátmenetekre: C r s r t (u 1, u 2,, u n ) (v 1, v 2,, v n ) r=(s,t) állapotátmenet, ahol s=(u 1, u 2,, u n ) és t=(v 1, v 2,, v n ) Karakterisztikus függvény C r (x 1, x 2,, x n, x 1, x 2,, x n ) alakban Vesszős változók jelzik a cél állapotot Cél: C r a.cs.a. legyen igaz, ha x i =u i és x i =v i a behelyettesítés C r konstruálása: C r = C s (x 1, x 2,, x n ) C t (x 1, x 2,, x n ) 2

Példa: Állapotátmenetek karakterisztikus függvénye s1 (,) s2 (,1) s1 állapot: s2 állapot: C s1 (x,y) = ( x y) C s2 (x,y) = ( x y) s3 (1,1) (s1,s2) R állapotátmenet: C (s1,s2) = ( x y) ( x y ) Állapotátmeneti reláció: R(x,y,x,y ) = ( x y x y ) ( x y x y ) ( x y x y ) ( x y x y ) 21

Karakterisztikus függvények (folytatás) pre E (Z) képzése: pre E (Z)={s t: (s,t) R és t Z} Z reprezentációja: C Z R reprezentációja: C R = r R C r pre E (Z): kikeresni a Z-beli állapotokra az előzőeket C C C ' Z x x x R Z pre E ( ) ' 1, ' 2,..., ' n ahol x C = C[1/x] C[/x] egzisztenciális absztrakció Modellellenőrzés állapothalmaz műveletekkel: visszavezetve logikai függvényeken végzett műveletekre! Halmazok uniója: Függvények kapcsolata Halmazok metszete: Függvények kapcsolata pre E (Z) képzése: Összetett művelet (egzisztenciális absztrakció) 22

Logikai függvények reprezentációja Kanonikus forma: ROBDD Reduced, Ordered Binary Decision Diagram Redukált, rendezett, bináris döntési diagram Lépések (áttekintés): Bináris döntési fa: bináris döntések ábrázolása BDD: azonos részfák összevonva OBDD: minden ágon azonos változósorrendezés ROBDD: szükségtelen csomópontok redukálása Ha mindkét ág ugyanahhoz a csomóponthoz vezet 23

Az ROBDD-ről részletesen 24

A bináris döntési fa Egy cél elérését több döntés befolyásolja Csomópontokban bináris döntések Igen/Nem ágak Eredmény: Válasz a cél elérésére egy döntéssorozat után: Igen (1) / nem () Többértékű kiterjesztés is létezik Otthon maradok Van-e biciklim? Van-e autóm? 1 Megyek Otthon maradok Van-e benzin? Otthon maradok Jó-e az akku? 1 Megyek 25

Boole függvények bináris döntési fa alakban Mindegyik változó behelyettesítése egy-egy döntés Jelölés bevezetése: Az if-then-else szerkezet x f 1, f = (x f 1 ) ( x f ) f 1 értéket veszi fel a kifejezés ha x igaz (true, 1) f értéket veszi fel a kifejezés ha x nem igaz (false, ) x szokásos neve tesztváltozó, értékének vizsgálata a teszt Boole függvények Shannon felbontása: f = x f [1/x], f [/x] legyen f x = f [1/x] ; f x = f [/x] Tehát a függvényt az if-then-else alapján felbonthatjuk A then-else ágakban ezzel egy változóját eltüntettük, redukáltuk Ciklikusan ismételjük, amíg van változó f = x f x, f x 26

Döntési fák típusai Példa: f x f(x,y) Ekkor a fán a négyzetekben határozhatók meg f(x,y) lehetséges értékei f [ x = 1 ] f [ x = ] y y / 1 / 1 / 1 / 1 f [ x = 1, y = 1 ] f [ x = 1, y = ] f [ x =, y = 1 ] f [ x =, y = ] Bináris döntési diagramot (BDD) kapunk, ha az azonos részfákat összevonjuk Rendezett bináris döntési diagramot (OBDD) kapunk, ha a felbontás során minden ágon azonos sorrendben vesszük fel a teszt változókat Redukált rendezett bináris döntési diagramot (ROBDD) kapunk, ha a szükségtelen csomópontokat töröljük 27

Példa: Egy bináris döntési fa átalakítása Bináris Bináris döntési döntési Bináris Bináris fa fa döntési döntési fa fa b b b b a a a a b b b Redukált Redukált döntési döntési Redukált Redukált fa fa döntési döntési fa fa b a a a a b b b b b b b b c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 BDD BDD BDD a a a ROBDD ROBDD ROBDD a a a b b b b b b b c c c c c cc cc c c 1 1 1 1 1 1 28

ROBDD tulajdonságok Irányított, aciklikus gráf, egy gyökérrel és két levéllel A két levél értéke 1 vagy (true vagy false) Minden csomópontban egy-egy teszt változó van Minden csomópontból két él indul ki Egyik a behelyettesítésre Másik az 1 behelyettesítésre (jelölés: szaggatott él) (jelölés: folytonos él) Minden útvonalon a teszt változók azonos sorrendben Az izomorf részfák egyetlen részfává összevonva Azon csomópontok, ahonnan kimenő él ugyanahhoz a csomóponthoz vezet, redukálva vannak Egy adott függvény esetén két, azonos változósorrendezésű ROBDD izomorf 29

ROBDD mérete ROBDD változók sorrendezése Egyes függvények (pl. páros paritás) esetén nagyon kompakt Más függvények esetén (pl. XOR) exponenciális méret A méret szempontjából nagyon fontos a változók sorrendjének megválasztása! Más sorrend nagyságrendbeli különbséget is jelenthet Optimális sorrend megtalálása NP-teljes probléma ( heurisztika) Tárigény: Ha folyamatosan építjük a ROBDD-t, akkor az építés közben ideiglenes csomópontokat kell tárolnunk, amiket le lehet redukálni ROBDD méret Építés lépései 3

Példa: ROBDD kézi előállítása Legyen az f = ( a b ) ( c d ) Sorrend legyen: a, b, c, d f a b f a b f a f = a f a, f a f a =(1 b) (c d), f a =( b) (c d) f a = b f a,b, f a,b f a,b = (1 1) (c d) = (c d) f a,b =(1 ) (c d) = f a = b f a,b, f a,b f a,b = ( 1) (c d) = f a,b = ( ) (c d) = (c d) f a,b c f a,b = c f a,b,c, f a,b,c f a,b,c = (1 d), f a,b,c =( d) f a,b és f a,b izomorf! f a,b,c d f a,b,c d f a,b,c = d f a,b,c,d, f a,b,c,d f a,b,c,d = (1 1) = 1, f a,b,c,d = (1 ) = 1 f a,b,c = d f a,b,c,d, f a,b,c,d f a,b,c,d = ( 1)=,, f a,b,c,d =( )=1 31

ROBDD gépi tárolása A ROBDD csomópontjait indexekkel azonosítjuk A ROBDD-t egy T: u (i,l,h) táblázatban tároljuk: u: csomópont indexe i: a változó indexe (x i, i=1 n) l: a behelyettesítési ágon elérhető csomópont indexe h: az 1 behelyettesítési ágon elérhető csomópont indexe u i l h 1 2 4 1 3 4 1 4 3 2 3 5 2 4 h u x i l 6 2 4 7 1 5 6 32

ROBDD gépi tárolása 3 x x 4 4 f a,b 4 x x 3 3 f a f 6 x 2 x 2 x 4 x x 1 1 7 5 x 2 x 2 x 4 1 1 2 f a u i l h 1 2 4 1 3 4 1 4 3 2 3 5 2 4 6 2 4 7 1 5 6 33

ROBDD gépi előállítása 1. Értelmezett műveletek: init(t) T kezdeti állapotát állítja be csak a és 1 csomópontok vannak a táblázatban add(t,i,l,h):u egy új csomópontot készít T-ben az adott paraméterekkel ennek u indexét adja vissza var(t,u):i visszaadja T-ből az u csomópont változójának i indexét low(t,u):l és high(t,u):h T-ben az u két behelyettesítési ágán levő csomópont l illetve h indexét adja vissza 34

ROBDD gépi előállítása 2. ROBDD csomópontjainak visszakereséséhez egy H: (i,l,h) u táblázatot is nyilvántartunk Műveletei: init(h) egy üres H táblázatot állít elő member(h,i,l,h):t ellenőrzi, hogy az (i,l,h) hármas szerepel-e H-ban; t Boole érték lookup(h,i,l,h):u kikeresi az (i,l,h) hármast a H táblázatban visszaadja a hozzá tartozó u csomópont indexét insert(h,i,l,h,u) beilleszt egy új sort a táblázatba 35

ROBDD gépi előállítása 3. Csomópont építése: Mk(i,l,h) Itt i a változó index, l és h az ágak Ha l=h, azaz azonos csomópontba vezetne a két él akkor nem kell csomópontot létrehozni bármelyik ágat vissza lehet adni Ha H-ban már van egy (i,l,h) hármas akkor sem kell újat létrehozni létezik izomorf részfa, ennek indexét kell visszaadni Ha nincsen H-ban ilyen (i,l,h) akkor létre kell hozni, és visszaadni indexét Mk(i,l,h){ if l=h then return l; else if member(h,i,l,h) then return lookup(h,i,l,h); else { u=add(t,i,l,h); insert(h,i,l,h,u); return u; } } 36

ROBDD gépi előállítása 4. ROBDD építése: Build(f) és a Build (t,i) rekurzív segédfüggvény Build(f) { init(t); init(h); return Build (f,1); } Build (t,i){ if i>n then } Rekurzívan végigmegy majd a változókon Terminális csomóponthoz értünk (minden változó behelyettesítve) if t==false then return else return 1 else {v = Build (t[/x i ],i+1); v1 = Build (t[1/x i ],i+1); return Mk(i,v,v1)} Rekurzív építés; Mk() ellenőrzi az izomorf részfákat 37

Műveletek ROBDD-ken Boole operátorokat közvetlenül ROBDD-ken hajtjuk végre A két függvény változói azonosak legyenek, azonos sorrendben Alap azonosság f, t függvényekre (itt op Boole operátor): 1. f op t = (x f x,f x ) op (x t x,t x ) = x (f x op t x ), (f x op t x ) f x op t x = f op t x f x y y f x t x y y t x f x op t x y y f x op t x. 38

Műveletek ROBDD-ken (folytatás) Boole operátorokat közvetlenül ROBDD-ken hajtjuk végre A két függvény változói azonosak legyenek, azonos sorrendben Alap azonosság f, t függvényekre (itt op Boole operátor): 1. f op t = (x f x,f x ) op (x t x,t x ) = x (f x op t x ), (f x op t x ) További szabályok (redukálás miatt hiányzó változó): 2. f op t = (x f x,f x ) op t = x (f x op t), (f x op t) 3. f op t = f op (x t x,t x ) = x (f op t x ), (f op t x ) Ezen szabályok alapján definiálható App(op,i,j) rekurzívan ahol i, j: a művelet operandusainak ROBDD-jében a csomópontok Hátrány: lassú worst-case 2 n exponenciális 4

Gyorsított műveletvégzés Legyen G(op,i,j) egy gyorsítótáblázat, amely App(op,i,j) eredményét tartalmazza (csomópont) Az algoritmus négy esete: Mindkét csomópont terminális: ekkor egy új terminális hozható létre az operátorral végzett eredmény alapján Ha a csomópontokhoz tartozó változó indexe azonos, akkor a és az 1 behelyettesítésű ágak párosíthatóak az App(op,i,j) alkalmazásából, az 1. azonosság szerint Ha az egyik csomóponthoz tartozó változó indexe nagyobb, akkor ezt párosítjuk a kisebb változó-indexű csomópont és 1 ágaival a 2. vagy 3. azonosság szerint 41

A műveletvégzés pszeudo-kódja Apply(op,f,t){ init(g); return App(op,f,t); } App(op,u1,u2) { if (G(op,u1,u2) <> empty) then return G(op,u1,u2); else if (u1 in {,1} and u2 in {,1}) then u = op(u1,u2); else if (var(u1) = var(u2)) then u=mk(var(u1), App(op,low(u1),low(u2)), App(op,high(u1),high(u2))); else if (var(u1) < var(u2)) then u=mk(var(u1), App(op,low(u1),u2),App(op,high(u1),u2)); else (* if (var(u1) > var(u2)) then *) u=mk(var(u2), App(op,u1,low(u2)),App(op,u1,high(u2))); G(op,u1,u2)=u; return u; } 42

Példa: Művelet elvégzése (f t) f 8 x 1 t 5 6 7 x 2 5 x 3 3 4 3 4 x 4 2 x 5 2 1 1 43

f 8 6 7 5 Példa: Művelet elvégzése (f t) f t 8 5 6 3 7 4 t 5 3 4 3 4 2 5 3 3 4 5 4 2 1 3 2 4 3 4 2 1 2 2 2 2 2 2 1 1 1 1 1 1 44

f 8 6 7 5 3 4 Példa: Művelet elvégzése (f t) f t 8 5 6 3 7 4 3 4 5 3 5 4 4 3 3 2 4 2 t 5 3 4 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 45

Példa: Művelet eredménye (f t) f t x 1 8 x 1 5 x 2 x 2 6 7 x 2 5 x 3 3 4 = x 3 x 3 3 4 x 4 x 4 x 4 2 x 5 2 1 1 x 5 1 46

Behelyettesítés ROBDD alakjának előállítása Változók konstans behelyettesítése (ld. pre E (Z) is): Itt az u alatti ROBDD-ben az x j változó értéke b legyen Restrict(u,j,b) { return Res(u,j,b); } Res(u,j,b) { if var(u) > j then return u; else if var(u) < j then return Mk(var(u), Res(low(u),j,b), Res(high(u),j,b)); else if b= then return Res(low(u),j,b) else return Res(high(u),j,b); } Ha lejjebb vagyok a behelyettesítendő változónál, marad az eredeti részfa Ha feljebb vagyok a behelyettesítendő változónál, rekurzív építés kell Ha ott vagyok a behelyettesítendő változónál, behelyettesítés kell 47

Összefoglalás: Modellellenőrzés ROBDD-vel A modellellenőrzés megvalósítása: Modellellenőrzés algoritmusa: Műveletek állapothalmazokon (címkézés) Szimbolikus technika: Állapothalmazok helyett logikai függvények Hatékony megvalósítás: Logikai függvények ROBDD alakban kezelve Előnyök A ROBDD kanonikus alak (függvények ekvivalenciája jól vizsgálható) Algoritmusok hatékonyan gyorsíthatók Tárigény csökken (változósorrend megválasztásától függ!) Étkező filozófusok problémája: Filozófusok száma Állapottér mérete 16 4,7 1 1 747 28 4,8 1 18 1347 ROBDD csomópontok 1 18 méretű állapottér tárolása helyett kb. 21kB elég! 48