Formalne metode u oblikovanju sustava Izraunavanje skupova stanja
Formalne metode u oblikovanju sustava Izračunavanje skupova stanja koji zadovoljavaju specifikaciju izraženu formulama CTL vremenske logike 1
FORMALNA VERIFIKACIJA SUSTAVA PROVJERA MODELA CTL VREMENSKOM LOGIKOM Za danu Kripke strukturu (usmjereni označeni graf) i određen skup početnih stanja S 0 , provjeri da je CTL formula zadovoljena za ta stanja: Formalno: M, S 0 , t. j. s 0 S 0 M, s 0 Uobičajen pristup: Potrebno je pronaći sva stanja koja zadovoljavaju CTL formulu , i ispitati da li je željeni podskup S 0 uključen. Problem: efikasan postupak izračunavanja stanja 2
Postupci izračunavanja skupova stanja u verifikaciji sustava provjerom modela 1. Eksplicitno predstavljanje i izračunavanje skupova stanja. • Kripke struktura (model sustava) predstavljena je u memoriji računala kao označeni usmjereni graf. Izračunavanje skupova stanja koji zadovoljavaju formulu vremenske logike izvodi se postupkom “čvrste točke”. 2. Simbolički postupci predstavljanja i izračunavanja skupova stanja. • Skupovi stanja i relacija zadane Kripke strukture predstavljeni su Booleovim (logičkim) formulama. Booleove formule se u drugom koraku predstavljaju Binarnim dijagramima odlučivanja (BDD). Izračunavanje skupova stanja koja zadovoljavaju formulu vremenske logike izvodi 3 se postupkom “čvrste točke”.
Eksplicitno predstavljanje i izračunavanje skupova stanja koji zadovoljavaju specifikaciju izraženu formulama CTL vremenske logike 4
5
Definicija: Svi podskupovi skupa V (engl. power set): To je skupova {S} takvih da je svaki S podskupa V. Osim oznake 2 V za sve podskupove skupa V, često se koristi i oznaka P(V) = vitičaste zagrade označuju skup "takvi da" 6
Relacija kao skup: Binarna relacija na skupu stanja S: R S S je Kartezijski produkt; daje skup uređenih parova elemenata skupa S. Totalna binarna relacija Kripke strukture i uređenost: Za svaki element s (u našem kontekstu “stanje sustava”) iz skupa S postoji barem jedan (može i više) element t (u našem kontekstu “stanje sustava”) takav da su elementi (stanja) s i t povezani relacijom R: s S { t S | (s, t) R} Kripke: svaki s S je obuhvaćen u R. "takvo da" Skup svih stanja {t} čine stanja dohvatljiva ili dosezljiva (engl. reachable) u jednom koraku iz skupa stanja {s}. Definicije: Skup {t} je slika (engl. IMAGE) skupa {s} pod relacijom R. Skup {s} je pred-slika (engl. PRE-IMAGE) skupa {t} pod relacijom R. Skup {s} je slika (engl. IMAGE) skupa {t} pod inverznom relacijom 7 R-1
Neka na skupu S postoji relacija R (A B), gdje je: A = {s}, B = {t}. S R(A) t s A A = slika (IMAGE) od B pod inverznom relacijom R-1. A = R-1 (B) B B = slika (IMAGE) od A pod relacijom R. B = R(A) 8
Za pojedinačna stanja: R(s) = {t S | (s, t) R} Primjena R na stanje s daje jedno ili više stanja t do kojih iz s dolazimo u jednom koraku. Rezultat su sljedbenici stanja s. R-1(t) = {s S | (s, t) R} Primjena R-1 na stanje t, daje jedno ili više stanja s iz kojih u jednom koraku dolazimo do stanja t. Rezultat su prethodnici stanja t. Za skupove stanja { }: R{ s } = s R(s) = { t } Primjena R na skup {s} daje skup {t} do kojih iz {s} dolazimo u jednom koraku. Rezultat su sljedbenici skupa {s}. R-1{ t } = t R-1 (t) = { s } Primjena R-1 na skup {t} daje skup {s} iz kojih u jednom koraku dolazimo do skupa {t}. Rezultat su prethodnici skupa {t}. Za Kripke strukturu: R-1 (S) = S prethodnici svih stanja su sva R-1 ( ) = stanja (R je totalna relacija). 9 nema prethodnika praznog skupa
Izračunavanje slike (engl. image computation) • Postupci izračunavanja slike ili predslike preko relacije R, ili preko inverzne relacije R-1, predstavljaju najznačajniji i najsloženiji dio analize dohvatljivih ili dosezljivih stanja (engl. reachability analysis) u sustavima s prijelazima (engl. transition systems). • Neki postupci temelje se na izravnom (eksplicitnom) izračunavanju stanja. • Neki drugi postupci uvode transformacije preko logičkog kodiranja, pa se slika računa u transformiranom prostoru i zatim dekodira. • Za sada pretpostavljamo da postoji algoritam izračuna R(s) i R-1(t). • U kasnijim nastavnim cjelinama pokazat će se simboličko predstavljanje relacije R Kripke strukture, te definirati algoritam izračuna skupa stanja dosezljivih u jednom koraku iz nekog zadanog skupa stanja. 10
Izračunavanje CTL formula – logičke rekurzije AG = AX AG EG = AF = EF = A[ U ] = E[ U ] = ; sada i na svim putovima ; počevši od slijedećeg EX EG ; sada i na jednom putu ; počevši od slijedećeg AX AF ; sada ili za svako slijedeće ; stanje vrijedi AF EX EF ; sada ili za jedno slijedeće ; stanje vrijedi EF ( AX A( U )) ; vrijedi sada ili vrijedi sada i za ; svako slijedeće stanje vrijedi ; A( U ) ( EX E( U )) ; slično kao AU, ali ; samo za jedan put Budući d a EX, EG, EU čine adekvatan skup, to njihovo izračunavanje omogućuje izračunavanje svih CTL formula. 11
CTL kao operacije sa skupovima (logičke operacije zamjenjujemo operacijama sa skupovima) Model M = ( S, R, L ) EX, EG, EU - adekvatan skup R( s ) = { t S | ( s, t ) R} daje sljedbenike stanja s (skup t-ova) Q( False ) = Q( True ) = S Q( p ) = { s | p L ( s ) } - skup stanja s u kojima vrijedi p = True Q( ¬ r ) = S - Q( r) - sva stanja u S osim onih u kojima r = True Q( f g ) = Q( f ) Q( g ) - skup dobiven presjekom skupova Q( EX f ) = { s | R ( s ) Q( f ) } to su stanja koja imaju sljedbenike u zadanom skupu Q(f) ( R(s) daje sve sljedbenike) Q( EG f ) = Q(f ) Q( EX EG f ) stanja Q(f) u kojima je f = True i stanja za koja vrijedi Q( EG f) nakon jednog koraka (EX) Q[ E( f U g)] = Q( g ) [Q( f ) Q( EX E( f U g))] stanja u kojima je g = True, ili stanja u kojima je f = True i nakon jednog koraka (EX) vrijedi E(f U 12 g)
Izračunavanje skupa stanja za CTL formulu EX: Zadan je skup stanja Q(f) u kojima je istinita formula vremenske logike f. Potrebno je pronaći skup stanja Q(EX f), dakle ona stanja iz kojih u jednom koraku dolazimo do nekog stanja iz Q(f). Prethodnici od Q(f) slika od Q(f) pod inverznom relacijom R(s) Q(EX f) si Q(f) ti tn zadano ! tk S 13
CTL operatori kao skupovi stanja (2) 1. Izračunavanje skupa Q(EX f) (pokazano ranije): Q(EX f) = R-1 (Q(f)) 2. Izračunavanje skupa Q(EG f) uz supstituciju za EX: Q( EG f ) = Q(f ) Q( EX EG f ) Q( EG f ) = Q(f ) R-1 (Q( EG f )) 3. Izračunavanje skupa Q(E (f U g)) uz supstituciju za EX: Q[ E( f U g)] = Q( g ) [Q( f ) Q( EX E( f U g))] Q[ E( f U g)] = Q( g ) [Q( f ) R-1 (Q( E( f U g))] Za izračunavanje 2. i 3. potrebna je teorija “čvrste točke”. 14
Fiksna (čvrsta) točka (engl. Fix-point, Fixed-point) - 1 Definicije: Neka je: S F: P(S) X, Y - skup stanja - funkcija F na svim podskupovima u S, P(S) = 2 S (svi podskupovi -"power set") - podskupovi od S (t. j. X S, Y S) 1. F je monotona akko X Y implicira (povlači) za sve podskupove X i Y u S. F(X) F(Y) 2. Podskup X od skupa S je fiksna točka funkcije F akko: F(X)=X 15
Fiksna (čvrsta) točka (engl. Fix-point, Fixed-point) - 2 Primjer 1: Neka je S = {s 0, s 1}, te neka je F(Y) = Y {s 0} za sve podskupove Y S. Test na monotonost: Neka je Y' također bilo koji podskup od S. Svaki Y' Y , implicira Y' {s 0} Y {s 0}, te je F monotona. Analiza fiksne točke (za sve podskupove Y S={s 0, s 1} ): Podskup { } nije fiksna točka jer F({ }) = { } {s 0} = {s 0}. Podskup {s 0} je najmanji fix-point, jer F({s 0})={s 0} {s 0}={s 0}. Podskup {s 1} nije fiksna točka jer F({s 1}) = {s 1} {s 0} = {s 0, s 1}. Skup {s 0, s 1} je najveći fix-point, jer F({s 0, s 1})={s 0, s 1} {s 0}={s 0, s 1}. Monotone funkcije uvijek imaju najmanji i najveći fix-point. Funkcije za izračunavanje skupova stanja u Kripke strukturi koje nas zanimaju su monotone te imaju najmanji i najveći fix-point: Q(EG f) = Q(f) Q( EX EG f ) Q(E(f U g)) = Q(g) [Q(f) Q( EX E( f U g))] 16
Fiksna (čvrsta) točka (engl. Fix-point, Fixed-point) - 3 Primjer 2: Funkcija: S = {s 0, s 1} G(Y) = ako [Y = {s 0}] tada {s 1} inače {s 0} Test na monotonost: Primjena funkcije G na Y = {s 0 , s 1} daje {s 0}. Primjena funkcije G na Y’ = {s 0} daje {s 1}. Y’ je podskup od Y , t. j. (Y’ Y), ali kako rezultat {s 1} nije podskup od {s 0} to G nije monotona. Analiza fiksne točke (za sve podskupove Y S={s 0, s 1} ): G({}) = {s 0 } G({s 0}) = {s 1} G({s 1 }) = {s 0 } G({s 0, s 1} = {s 0} G(Y) nema nijednu fiksnu točku. Nemonotone funkcije nemaju fixpoint (fiksnu, čvrstu točku). 17
Fiksna (čvrsta) točka (engl. Fix-point, Fixed-point) - 4 Postupak izračunavanja fix-pointa: Knaster-Tarski teorem Neka je S skup: S = {s 0, s 1, …, sn} sa n+1 elementom. Označimo Fi : t. j. funkc. F primijenjena i-puta, odnosno: F(F(… F(X))) Npr. Neka je F(Y)= F 1(Y)=Y {s 0} gdje je Y S F 2(Y) = F(F(Y)) = [Y {s 0}] {s 0} = Y {s 0} = F(Y), te je F 2 = F Za ovaj primjer vrijedi: Fi = F za za sve i 1 Teorem [P(S) su svi podskupovi - "power set"]: Ako je F: P(S) monotona, tada Fn+1( ) je najmanji fix-point od F. Fn+1(S) je najveći fix-point od F. 18
Dokaz da je Fn+1( ) najmanji fix-point od F Fix - 5 F je monotona (uvjet) pa vrijedi F( ), također F( ) F(F( )), odnosno F 1( ) F 2( ). Indukcijom slijedi: F 1( ) F 2( ) … Fi( ) za sve i 1 Definiramo: Tvrdimo: i = n + 1 (broj elemenata u skupu S, vidi raniju sliku). jedan od gornjih Fk( ) je fix-point, t. j. F(Fk( ))=Fk( ) Kad F 1( ) ne bi bio fix-point onda bi F 1( ) morao sadržavati najmanje jedan (1) element više od (jer tada F( )). F 2( ) bi morao sadržavati bar 2 elementa, morao bi biti veći od F 1( ). Svaki daljnji bi morao imati barem jedan element više od prethodnika. Kad Fn+1( ) ne bi bio fix-point, Fn+2( ) = F(Fn+1( )) bi morao imati n+1+1 element, što je nemoguće jer S ima samo n+1 elemenata. Dakle Fn+1( ) mora biti fix-point. Odnosno: F(Fn+1( )) = Fn+1( ) je fix-point 19
Još treba dokazati da je to najmanji fix-point. Fix - 6 Neka je X neki drugi fix-point od F, t. j. F(X) = X Moramo pokazati da je Fn+1( ) X. Kako je X, to slijedi F( ) F(X) = X (jer je funkcija monotona) Dakle: F( ) X. F 2( ) F(F(X)) =X (jer je X fix-point) Indukcijom Fi( ) X za sve i 0, pa i za i = n + 1, slijedi Fn+1( ) X Dokaz za najveći fix-point analogno uz zamjenu: sa , te sa S. Teorem daje ujedno i algoritam izračunavanja i garantira završetak: Najmanj. I fix-point: Najveći fix-point: iterativna primjena F na prazan skup , dok rezultat ne postane invarijantan na tu primjenu. iterativna primjena F na skup svih stanja S, dok rezultat ne postane invarijantan na tu primjenu. Najveća gornja granica broja iteracija: n+1 (za S sa n+1 elementom). 20
Izračunavanje EG (preko najvećeg fix-pointa): (1) Označimo Q(EG f) = ZEG kao podskup od S. Tražimo kada će taj podskup postati čvrsta točka, t. j. : ZEG = FEG (ZEG ) Najveća čvrsta točka slijedi primjenom FEG funkcije n+1 puta na skup svih stanja S dok rezultat ne postane invarijantan na daljnju primjenu. FEG 21
Izračunavanje EG preko najveće čvrste točke: Q(EG f): ZEG = FEG (ZEG) = Qf R-1(ZEG) 2 S QEG (Q(f)) { k : = 0; Zk : = S; do { Zk+1 : = Q(f) R-1 (Zk ); If Zk+1 = Zk return Zk ; k++ ; } forever; } (2) S Q(f) Fix Započinjemo sa skupom S, t. j. Z 0 = S, i prva iteracija daje: Z 1 = Q(f) R-1(S) = Q(f), dakle u prvoj iteraciji je Z 1 Z 0 te se ide dalje: Z 2 = Q(f) R-1(Q(f)) … itd. dok Zn+1 = Zn t. j dosegne fix-point Budući da R-1(S) = S, bolje je odmah započeti sa Zk = Q(f) 22
Zadatak: Odredi stanja za koja vrijedi: EG P: Q(P) = { 0, 1, 3, 4 }, tu je P=True Zk+1 = Q(P) R-1 (Zk ) Početno: Z 0 = S = { 0, 1, 2, 3, 4, 5 } R-1 ( Z 0 ) = R-1 (S) = S = { 0, 1, 2, 3, 4, 5 } Z 1 = { 0, 1, 3, 4 } R-1 ( { 0, 1, 2, 3, 4, 5 } ) = { 0, 1, 3, 4 } Z 0 R-1( Z 1 ) = R-1 ( { 0, 1, 3, 4 } ) = prethodnici = { 0, 1, 2, 3 } Z 2 = { 0, 1, 3, 4 } R-1( Z 1 ) = { 0, 1, 3 } Z 1 R-1( Z 2 ) = R-1( { 0, 1, 3 } ) = prethodnici = { 0, 1, 2 } Z 3 = { 0, 1, 3, 4 } R-1( Z 2 ) = { 0, 1 } Z 2 R-1( Z 3 ) = R-1( { 0, 1 } ) = prethodnici = { 0, 1, 2 } Z 4 = { 0, 1, 3, 4 } R-1( Z 3 ) = { 0, 1 } = Z 3 Daljnja primjena daje uvijek {0. 1} = čvrsta točka 23 Rješenje: stanja {0, 1} zadovoljavaju EG P.
Izračunavanje EU (preko najmanjeg fix-pointa): (1) Q[ E(f U g)] Označimo Q[E( f U g)] = ZEU kao podskup od S. Tražimo kada će taj podskup postati čvrsta točka, t. j. : ZEU = FEU (ZEU ) Najmanja čvrsta točka slijedi primjenom FEu funkcije n+1 puta na prazan skup dok rezultat ne postane invarijantan na daljnju primjenu. FEU 24
Izračunavanje EU preko najmanje čvrste točke: Q(f EU g): ZEU = FEU(ZEG) = (2) Qg [Qf R-1(ZEU)] 2 S QEU (Q(f), Q(g)) { k : = 0; Zk : = ; do { Zk+1 : = Q(g) [Q(f) R-1 (Zk )]; If Zk+1 = Zk return Zk ; k++ ; } forever; } Započinjemo s praznim skupom Z 0 = . Q(g) Budući da R-1( ) = , bolje odmah započeti sa Zk = Q(g) S Fix 25
- Slides: 25