Unbounded Model Checking Stefan Ratschan Katedra číslicového návrhu Fakulta informačních technologíı České vysoké učení technické v Praze 25. října 2011 Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti 1 / 15
Kde jsme v přednášce Už známe: Metody formální specifikace na základě temporální logiky Modely systémů na základě přechodových systémů/automatů Jak ověřit že určitý model splňuje specifikaci (tj. model checking)? Bounded model checking: Pro LTL formuli φ, pro každé n, = φ implikuje BMC(φ, n) BMC(φ, n) nemůže dokázat = φ ale může počítat protipříklad pokud = φ neplatí. Dnes: Algoritmy které umí dokázat = φ Gs, množina stavů může být nekonečná 2 / 15
Model Checking = Gs Verifikace bezpečnosti (Safety verification) = Gs právě když pro každou cestu π, pro každé k 0, π(k) s BMC(Gs, n) pro každý n-prefix π cesty, pro každé k tak, že 0 k n, π(k) s Theorem ([Biere et al., 2003]) pro každý konečný přechodový systém, pro každou LTL formule φ existuje n tak, že pro každé n n, BMC(φ, n ) právě když = φ Zejména: = Gs právě když BMC(Gs, S ) 3 / 15
Důkaz Předpokládáme BMC(Gs, S ), = Gs, odvodíme rozpor. not (pro každou cestu π, pro každé k 0, π(k) s) existuje cesta π (tj. protipříklad), existuje k 0, π(k) s Necht π je taková cesta, a k 0 tak, že π(k) s Dokážeme že existuje cesta π, existuje k, tak, že 0 k S, π (k ) s což je v rozporu s BMC(Gs, S ). Pokud k S, π už je hledána cesta. Pokud k > S, pak π musí mít cyklus před k. Takové cykly můžeme odstranit až k S. Tedy: Pro ověřování = Gs stačí ověřit BMC(Gs, S ). Opravdu stačí? S může být obrovské! případ nekonečného počtu stavů? 4 / 15
Nekonečný počet stavů Příklad: Počítačové programy bez procedur, množina stavů {1,..., loc} N k, přičemž k je počet proměnných. Tento případ, a hodně dalších: verifikace bezpečnosti nerozhodnutelná Ale: v praxi často funguje Lépe než modelování problému s proměnnými s (konečným) rozsahem {0,..., 2 64 1} Do konce semestru budeme diskutovat další příklady 5 / 15
Induktivní verifikace bezpečnosti Chceme dokázat že pro každou cestu π, pro každé k 0, π(k) s Můžeme to ekvivalentním způsobem psát na základě množin: {π(k) π cesta, k N 0 } s Takovou množinu s také nazýváme invariantem Cf.: invariant cyklu Množinu na levé straně nazýváme dosažitelnou množinou (reach set) a píšeme R Jak ověřit R s? Indukce (Strukturální indukce přes výpočetní strom): Důkaz že pro každou cestu π, π(0) s, tj. {π(0) π cesta} s Důkaz že pro každou transici (x, x ) tak, že x s, také x s, t.j. {x (x, x ) T, x s} s 6 / 15
Induktivní verifikace bezpečnosti Příklad neinduktivního invariantu Sice je invariant, ale nemůžeme tu skutečnost přímo dokázat indukcí Zkusíme najít jinou množinu V tak, že V s, a navíc V splňuje uvedené podmínky induktivity Občas už máme návrh pro V : expert může hádat určitý V, anebo může být součást dokumentace (viz. assert) Jak ověřit že takový návrh opravdu splňuje podmínky induktivity? 7 / 15
Příklad: Jak hádat induktivní invariant 1: r false 2: for i l; i u; i i + 1 do 3: if a[i] = 7 then r true 4: S = {(pc, i, l, u, r, a) pc {1, 2, 3, 4}, i, l, u, Z, r B, a {1,..., n} Z} = G{(pc, i, l, u, r, a) φ} přičemž φ je pc = 4 (r ( k. l k u a[k] = 7)) Je to invariant, ale není induktivní. Proč? {(pc, i, l, u, r, a) r ( k. l k i a[k] = 7)} Ted? 8 / 15
Ověřování podmínky induktivity x. x I x V x x. [(x, x ) T x V ] x V Chtěli bychom používat příslušný řešič: Konečný případ: SAT N, lineární rovnice a nerovnice: MILP Řešič pro teorie poĺı, seznamů atd. Jak zacházet s univerzálním kvantifikátorem? Pokud takové V ještě neznáme? 9 / 15
Výpočet induktivní množiny Intuice: V musí splňovat dva podmínky induktivity: V musí obsahovat množinu počátečních stavů I, tudíž začínáme s tím že V I Žádný krok nesmí opustit V. Pokud to dělá, přidáme příslušné stavy let V be a superset of I while there is a transition (x, x ) such that x V, x V and V s do let V be a superset of V {x (x, x ) T, x V } return V s Pozorování: Pokud algoritmus skončí a V s, pak V je induktivní V k-tém cyklu, V je nad-množinou všech stavů které jsou dosažitelné po k krocích. Pokud bereme = místo, a algoritmus skončí, pak V = R. 10 / 15
Výpočet induktivní množiny let V be a superset of I while there is a transition (x, x ) such that x V, x V and V s do let V be a superset of V {x (x, x ) T, x V } return V s Terminace: konečný počet stavů? nekonečný počet? Jak velká nad-aproximace? Příliš velká: V sice je invariant, ale ne V s Příliš malá: algoritmus neskončí (v případě nekonečného počtu stavů), anebo representace množiny příliš složitá Obecně: Dosažitelná množina R vždy je induktivní: I R {x (x, x ) T, x R} R 11 / 15
Zpětný výpočet Pro všechny algoritmy jsou verze které pracují opačným směrem: zpátky od množiny nebezpečných stavů do množiny iniciálních stavů. Reimplementace není potřeba: I. = S \ s T. = {(x, x) (x, x ) T } Check = G(S \ I ) 12 / 15
Libovolné LTL formule V případě konečného počtu stavů jsou metody pro ověřování libovolných LTL (CTL) formuĺı. Nástroje: SPIN, SAL, NuSMV 13 / 15
Závěr Indukce je k něčemu! Pomoci indukce můžeme ověřit nekonečný počet cest nekonečné délky! 14 / 15
Literature I Armin Biere, Alessandro Cimatti, Edmund M. Clarke, Ofer Strichman, and Yunshan Zhu. Bounded model checking. volume 58 of Advances in Computers, pages 117 148. Elsevier, 2003. doi: DOI:10.1016/S0065-2458(03)58003-2. K.L. McMillan. Interpolation and SAT-based model checking. In Computer Aided Verification, number 2725 in LNCS, pages 1 13, 2003. 15 / 15