330 likes | 516 Views
FORMALNA VERIFIKACIJA PROGRAMSKE POTPORE METODOM PROVJERE MODELA (engl. Model Checking ). I = Implementacija ( model sustava koji se verificira ) . Izraženo povezanim strojevima s konačnim brojem stanja (FSM). DA = model sustava logički zadovoljava specifikaciju. Sustav za verifikaciju
E N D
FORMALNA VERIFIKACIJA PROGRAMSKE POTPORE METODOM PROVJERE MODELA (engl. Model Checking) I = Implementacija (modelsustava koji se verificira). Izraženo povezanim strojevima s konačnim brojem stanja (FSM). DA = model sustava logički zadovoljava specifikaciju Sustav za verifikaciju (npr. SMV) NE (+ ispis pogrešnog izvođenja programa) S = Specifikacija (željeno ponašanje). Izraženo u vremenskoj logici. Simbolički opisujemo: IS
Modalna i vremenska (temporalna) logika • Modalna logika - proširenje klasične logike "modalitetima" istinitosti • (subjektivnim konceptima), • kao što su npr. "što mora biti istinito" i "što može biti istinito. • Npr.: p = atomički propopzicijski simbol • Neka je: p = F (neisitinit) u sadašnjem svijetu (stanju stvari). • Tada: • (mogućep) = T ako postoji bar jedan drugi svijet (neka druga situacija, neki drugi scenarij, neka druga baza znanja) u kojoj je p = T. • (nužno p) = F jer (nužno p) = T samo akko je p istinit u svim • svjetovima (što ovdje nije slučaj). • U klasičnu propozicijsku i predikatnu logiku dodaju se modalni operatori.
Klasifikacija modalne logike Prema tipu modalnosti razlikujemo logike: Aletička logika potrebitost, mogućnost Deontička logika: obligatornost (nužnost), dozvoljivost Epistemička logika: znanje, vjerovanje Vremenska logika: uvijek, konačno, što_je_bilo, što_je_sad, što_će_biti . . . Vremenska logika (TL) - višestruki pogledi (1): TL propozicijska: Klasična propozicijska logika proširena vremenskim operatorima. Najviša razina apstrakcije u rasuđivanju. TL predikatna prvoga reda (varijable, funkcije, predikati, kvantifikatori): Različiti tipovi TL prvoga reda interpretirana-neinterpretirana (pretpostavlja ili ne strukturu), globalne i lokalne varijable, kvantifikacija preko vremenskih operatora ili ne.
Vremenska logika (TL) - višestruki pogledi (2): Globalna ili modularna: Endogena i egzogena. Rasuđivanje o kompletnom sustavu ili ne. TL linearnog vremena: U svakom trenutku postoji samo jedan budući trenutak (jedna vremenska crta). TL s grananjem vremena: U svakom trenutku može postojati više različitih budućih vremenskih crta. Diskretno ili kontinuirano vrijeme. U računarstvu uobičajeno diskretno vrijeme (sekvence stanja). Prošlo i buduće vrijeme. Izvorno TL obuhvaća oba vremena. U digitalnim sustavima uobičajeni su samo operatori budućeg vremena. Odabiremo: propozicijska, globalna, grananje, buduće vrijeme
Model dijela sustava koji želimo formalno provjeriti (verificirati) = model implementacije ( I ) = Kripke struktura M (Saul Kripke, 1971) I = M = ( S, R, L) gdje je : S : konačanskup stanja R S × S : totalna binarna relacija (svako stanje je obuhvaćeno; ima sljedbenika), t.j. sS ( tS | (s, t)R ) L : funkcija označavanja stanja: S 2AP AP: skup atomičkih propozicijskih simbola L:(engl. labeling) daje interpretaciju svih simbola iz skupa AP za stanje s. Analogno i formalno jednako modelu automata (stroju stanja).
si sk Neka definirana Kripke struktura može se promatrati kao beskonačno stablo izvođenja sustava (“odmota” se počevši od promatranog stanja s0 ). Prikazuju se svi mogući putovi izvođenja sustava. mogući prijelazi To je kontekst vremenske logike s grananjem Computation Tree Logic =CTL
Primjer modela: s0 t0 p, q p, q s0 s1 t1 s2 q, r r q, r r s2 s0 s2 t2 s1 s2 p, q r r s2 s1 t3 s2 q, r r r p, q, r - propozicijski simboli (istiniti u određenim stanjima). S0 - početno stanje ili stanje koje nas zanima.
CTL vremenski operatori (u kontekstu “odmotane” Kripke strukture): Operators: Quantifiers: PAZI: Uvijek u paru !!
s s Za model M (Kripke strukturu) i stanje S, uvijek se mora specificirati formula može imati slijedeću semantiku: p = true (EF p) = True (AF p) = True
s s p = true (EG p) = True (AG p) = True
s s p = true (EX p) = True (AX p) = True
s s [E(p U q)] = True p = true q = true [A(p U q)] = True Ovdjepmože i ne mora biti istinit
CTL sintaksa • AU, EU - binarni operatori • ostali - unarni operatori • Neke ispravno definirane CTL formule: • AG (q EG r) • EG p • E (p U q) • A (p U EFp) • AG (p A [p U (p A [p U q] ) ] ) • Neke krivo definirane formule CTL formule: • FG p ; Nema E ili A, t.j. F i G slijede iza E ili A • EF (r U q) ; U se može upariti samo sa A ili E • ; Npr. OK je: EF E(r U q), EF A(r U q) • A[ p U (q U r) ] ; Npr. OK je A[ p U E(q U r) ] • AF [(r U q) (p U r)] ; Ispravno je: A( U ) • ; Npr.: A [(p q) U (r q)] • ; ili AF [A(r U q) E(p U r)]
CTL semantika M = (S, R, L) - model sustava (Kripke struktura) M, s formula vrem. Logikeje istinita u modelu M za stanje s M, s formula vrem. logike nije istinita u modelu M za stanje s 1. M, s p istinita akko p L(s) (p je propozicijski atomički simbol) 2. M, s ( 12) akko M, s 1 i M, s 2 3. M, s ( 12 ) akko M, s 1 ili M, s 2 4. M, s ( 12 ) akko M, s 1 ili M, s 2(implikacija) 5. M, s AX akko za sve si takve da s si vrijedi M, si (u svakom slijedećem stanju)
6. M, s EX ako za neki si takav da s si ,vrijedi M, si • (u nekom slijedećem stanju) • 7. M, s AG akko za sve putove s1s2 s 3 …, • gdje s = s1 i svaki si duž puta , • vrijedi M, si • (za sve putove koji započinju u s, • obilježje vrijedi globalno duž puta) • 8. M, s EG akko postoji put s1s2 s 3 …, • gdje s = s1 i za svaki si duž puta, • vrijedi M, si • (postoji put koji započinje u s, takav da • obilježje vrijedi globalno duž puta) • 9. M, s AF akko za sve putove s1s2 s 3 …, • gdje s = s1 , postoji neki si duž puta • takav da vrijedi M, si • (za sve putove koji započinju u s, • postoji neko buduće stanje u kojem vrijedi • obilježje )
10. M, s EF akko postoji put s1s2 s 3 …, gdje s = s1, i za neki si duž puta vrijedi M, si (postoji put koji započinje u s takav da obilježje vrijedi u nekom budućem stanju) 11. M, s A(1 U 2) akko za sve putove s1s2 s 3 …, gdje s = s1, taj put zadovoljava (1 U 2). 1 je kontinuirano istinita dok se ne pojavi (2 = True) nekom stanju. Formula zahtijeva da bude (2 = True) u nekom budućem stanju. 12. M, s E(1 U 2) akko postoji put s1s2 s 3 …, gdje je s = s1, i taj put zadovoljava (1 U 2). 1 je kontinuirano istinita dok se ne pojavi (2 = true) u nekom stanju. Formula zahtijeva da bude (2 = True) u nekom budućem stanju.
11. i 12. : 1 može biti istinit ili ne u i nakon stanja u kojem 2 = True (semantika "until" je različita od prirodnog jezika). 2 može biti istinit i prije početnog stanja s. Za 7. do 12. : Skup budućih stanja uključuje i sadašnje stanje (konvencija) Posljedica: p EF p (ako p vrijedi sada, EF p također vrijedi) (AG p) p p A(q U p) Ove formule su istinite u svakom stanju svakog modela.
Primjer modela: s0 t0 p, q p, q s0 s1 t1 s2 q, r r q, r r s2 s0 s2 t2 s1 s2 p, q r r s2 s1 t3 s2 q, r r r p, q, r - propozicijski simboli S0 - početno stanje ili stanje koje nas zanima
Istinitevremenske formule za dani model (prethodna slika) i stanje s0 M, s0 (p q) ; atomi p i q su istiniti u stanju s0 M, s0r ; atom r nije istinit u stanju s0 M, s0 EX (q r) ; postoji put gdje je za slijedeće stanje vrijedi (q r) M, s0AX (q r) ; postoji jedan put na kojem ne vrijedi za slijdedeće stanje (q r) M, s0EF (p r) ; nema puta sa stanjem za koje vrijed (p r) M, s0 AF r ; duž svih putova možemo dosegnuti stanje za koje vrijedii r M, s0 E [(p q) U r] ; postoji put iz s0 na kojem u svim stanjima (p q) = True, dok r=True (Npr. do s2) M, s0 A [p U r] ; na svim putovima vrijedi [p U r]
Primjer formalne verifikacije (provjera modela, MC, engl. model checking) 2007 Turing Award Winners Announced for their groundbreaking work on Model Checking Edmund M. Clarke, E. Allen Emerson, and Joseph Sifakis are the recipients of the 2007 A.M. Turing Award for their work on an automated method for finding design errors in computer hardware and software. The method, called Model Checking, is the most widely used technique for detecting and diagnosing errors in complex hardware and software design. It has helped to improve the reliability of complex computer chips, systems and networks.
CTL ekvivalencije AF = EG ; de Morgan AF = EG EG = AF AG = EF ; de Morgan AG = EF AX = EX ; X je vlastiti dual AX = EX AF = A (True U ) = EG EF = E (True U ) EG = [ A [True U ]] EG i slično je nedjeljivo, t.j. E G nije ispravna CTL formula ! Često notacija: A[p U q] = [p AU q] E[p U q] = [ p EU q] Temeljem gornjih ekvivalencija, za izračun svih CTL formula dovoljno je imati postupke za izračun EX, EG, EU = adekvatni skup (adequate set). Postoji više adekvatnih skupova.
Primjeri preslikavanja prirodnog jezika u CTL • (specifikacija ponašanja - S) • 1. Moguće je doći u stanje gdje start=T i ready=F. • EF (start ready) • 2. Za svako stanje, ako se postavi zahtjev (npr. za nekim resursom) • biti će konačno prihvaćen (kad-tad). • AG ( zahtjev AF prihvaćen) • 3. U svakom slučaju, određeni proces će konačno biti stalno zaustavljen • AF (AG zaustavljen) • 4. Iz svakog stanja moguće je doći do stanja "restart”. • AG (EF restart) • 5. Na putu prema gore, dizalo na drugom katu nikada neće promijeniti smjer gibanja, ako postoji putnik koji želi na peti kat. • AG[ ( kat=2 smjer=gore pritisnuta_tipka_5) • A (smjer=gore U kat=5) ]
6. Dizalo uvijek može ostati stalno stajati na trećem katu • sa zatvorenim vratima. • AG [ (kat=3 stoji vrata=zatvoreno) • EG (kat=3 stoji vrata=zatvoreno) ] • 7. Kadgod in = 1, nakon dva takta uvijek out = 1 • AG (in AX AX out) • 8. Uvijek vrijedi: ako se pojavi "send" onda konačno "receive” • postaje istinit, te do tog trenutka "send" mora ostati istinit • AG (send A(send U receive))
CTL PROVJERA MODELA (engl. CTL model checking) Za danu Kripke strukturu (usmjereni označeni graf) i određen skup početnih stanja S0 , provjeri da CTL formula zadovoljava za ta stanja: Formalno: M, S0 , t.j. s0 S0M, s0 (za svako stanje iz S0) Postupak: Potrebno je pronaći sva stanja koja zadovoljavaju CTL formulu , i ispitati da li je željeni podskup S0 uključen. CTL provjera modela povlači manipulaciju skupovima stanja.
(G includes present state) NE NE NE
= AF ne zadovoljava krajnja stanja Odgovor: Sva zelena stanja.
Primjer 2: = specification = model (implementation)
on all paths OK Does not hold because of this path
(r AF a) r Possibly add states with r r = AG grey states with all paths to grey states
Formalna verifikacija – Zaključci • Pokazana je samo jedna od mnogih formalnih metoda. • Implementacija sustava modelira se Kripke strukturom. Sustavi za verifikaciju (npr. SMV, VIS, SPIN, …) traže opis Kripke strukture u posebnim programskim jezicima. • Specifikacija željenog ponašanja izražava se CTL vremenskom logikom (u nekim sustavima i drugim vremenskim logikama). • Sustav za verifikaciju prolazi kroz sva stanja modela i provjerava da li model implementacije logički zadovoljava specifikaciju (engl. model checking). • Poteškoće: • Precizno izraziti željeno ponašanje i modelirati strukturu. • Sustav za verifikaciju provjerava uvijek samo jedno željeno specificirano ponašanje. • Programski produkti imaju ogroman skup stanja, pa je moguća provjera samo manjih (kritičnih) dijelova.