Temporální Logiky Stefan Ratschan Katedra číslicového návrhu Fakulta informačních technologíı České vysoké učení technické v Praze 10. října 2011 Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti 1 / 19
Úvod Minulá přednáška: Modely na základě automatů I automaty, které mají jenom konečný počet stavů, můžou mít složité chování Složitější modely (např. nekonečný počet stavů) můžou mít ještě složitější chování Jak si můžeme si být jisti, že se daný model chová tak, jak chceme? 2 / 19
Specifikace chování systémů Specifikace chování klasických programů: Specifikace vstupů/výstupů (tj. dvoubodová specifikace) Ale tady: reaktivní systémy: nepřetržitá interakce s okoĺım: Reaktor se nebude přehřívat Pokud se volá výtah, časem se objeví Zítra bude hezké počasí Centrální zámek auta se otevře přímo po nehodě Airbag se otevře jen pokud se stane nehoda Potvrzení musí předcházet žádost Zkusíme to analyzovat! Vlastnosti (už v klasické specifikaci vstupů/výstupů) Temporální specifikace (táto přednáška) 3 / 19
Formalizace pojmu systém Definice z první přednášky: složité technické zařízení, jehož důležitou součást tvoří software/digitální elektronika Minulá přednáška: Automatové modely Dnes: Nejočesanější automatový model. Přechodový systém (transition system): Množina stavů S Množina I S počátečních stavů Přechodová relace R S S S může být nekonečnou množinou (např. N, R, seznam celých čísel). 4 / 19
Překlad programu do přechodového systému i, k N; r {prime, nonprime} 1 : r prime 2 : i 2 3 : while i < k and r = prime do 4 : if i divides k then r nonprime 5 : i i + 1 6 : done S : {1,..., 6} N N {prime, nonprime} I = {(1, i, k, r) i N, k N, r {prime, nonprime}} R = R 1,2 R 2,3 R 3,4 R 3,6 R 4,5 R 5,3 where R 1,2 = {((1, i, k, r), (2, i, k, r )) i = i k = k r = prime} R 2,3 = {((2, i, k, r), (3, i, k, r )) i = 2 k = k r = r} R 3,4 = {((3, i, k, r), (4, i, k, r )) i < k r = prime} R 3,6 = {((3, i, k, r), (6, i, k, r )) i = i k = k r = r (i < k r = prime)}... 5 / 19
Specifikace chování systémů Zítra bude hezké počasí Reaktor se nebude přehřívát Pokud se volá výtah, časem se objeví Centrální zámek auta se otevře přímo po nehodě Airbag se otevře jen pokud se stane nehoda Potvrzení musí předcházet žádost Vlastnosti Temporální specifikace 6 / 19
Specifying Properties Zatím ignorujeme čas. Jak můžeme specifikovat vlastnosti jednotlivého stavu? Příklady: přehřívání: {T S T > 800} hezké počasí: {(w, T ) S w = sunshine T 18 T 26} dělitelné: {x S p q N : p 2 p < x q 2 q < x pq = x} Tedy: podmnožiny množiny S Předpokládáme funkci I (interpretace), která každému názvu takové vlastnosti (tj. každé stavové vlastnosti) přirazuje množinu stavů. Stavová vlastnost g platí na stav s (s = g), pokud s I(g). 7 / 19
Specifikace temporálních vlastností systémů Zítra bude hezké počasí Reaktor se nebude přehřívát Pokud se volá výtah, časem se objeví Centrální zámek auta se otevře přímo po nehody Airbag se otevře jen pokud se stane nehoda Potvrzení musí předcházet žádost Vlastnosti Temporální specifikace Pro cestu π ve formě (s 0, s 1,... ), označujeme π i ( i-tý suffix cesty π), cestu (s i, s i+1,... ). π(i) i-tý prvek s i cesty π. 8 / 19
Vlastnosti a cesty Přídáme čas: Jak můžeme specifikovat vlastnosti celých cest? Je hezké počasí Stavová vlastnost g platí na cestě π (π = g), pokud platí na prvním elementu cesty: π(0) = g. Zítra bude hezké počasí Vlastnost g platí na dalším elementu: π 1 = g (π = Xg: next ). Vlak dosáhne časem plnou rychlost existuje k 0 tak, že π k = g (π = Fg: in the future ) 9 / 19
Vlastnosti a cesty Počet otáček motoru vždy zůstává v bezpečné oblasti pro každé k 0, π k = g (π = Gg: globally ) Vlak se časem zastaví a do té doby se dveře neotevírají existuje i tak, že π i = h, a pro každé j < i, π j = g (π = guh: until ) Pokud letadlo ještě neletí na normální výšce, znak fasten seat belts svítí pro každé j 0, pokud pro každé i < j, ne π i = g pak π j = h (π = grh: release ) 10 / 19
Kombinace operátorů Pokud se volá výtah, časem přijde (g Fh). Vlak nikdy nejede s otevřenými dveřmi G (g h) Booleová kombinace (,, ). Chceme také kombinovat temporální operátory. Například: FGg: Časem bude vlastnost g platit navždy. GFg: Vždy se lze vlastnosti g dočkat. At příjdu na stanici kdykoli, tak mi určitě dříve nebo později nějaký vlak přijede Výsledek: Linear Temporal Logic (LTL) Syntax: Každá stavová vlastnost je LTL formule Pokud g a h jsou LTL formule pak Xg, guh, grh, Fg, Gg i guh, g, g h, g h jsou také LTL formule. 11 / 19
Semantika Pro cestu π a LTL formule g, h, π = g právě když g je stavová vlastnost a π(0) = g π = Xg právě když π 1 = g π = Fg právě když existuje k 0 tak, že π k = g π = Gg právě když pro každé k 0, π k = g π = guh právě když existuje i tak, že π i = h a pro každé j < i, π j = g. π = grh právě když pro každé j 0, pokud pro každé i < j, ne π i = g pak π j = h π = g právě když ne π = g π = g h právě když π = g a π = h π = g h právě když π = g anebo π = h = g právě když pro každou cestu π přechodového systému, π = g 12 / 19
Redundance operátorů Theorem Pro každou LTL formuli existuje ekvivalentní formule, která obsahuje jen operátory,, X, U. Jak? f g ( f g) f Rg ( f U g) Ff True Uf Gf F f 13 / 19
Protipříklady Vzpomínáme: = g právě když pro každou cestu π přechodového systému T, π = g. Pokud neplatí = g, informace, která nám pomáhá najít chybu? π tak, že ne π = g (protipříklad, counter-example) Příklady: Gf : konečná cesta stačí ( safety property ) Ff : protipříklad s cyklem ( liveness property ) 14 / 19
Modelování času Tady: diskrétní čas Jednomu přechodu může odpovídat pevná časová jednotka (e.g., clock cycle, 1sec) akce (e.g., zmáčknutá klávesa) Pro mnoho aplikací potřebujeme flexibilnější model času (viz. další přednášky). 15 / 19
Závěrečné poznámky Další temporální logiky: CTL (computation tree logic): umí kvantifikovat přes všechny cesty z určitého vrcholu výpočetního stromu (CTL LTL, ale ani CTL LTL ani LTL CTL) CTL*: nadmnožina i LTL i CTL... Všechny ty logiky se definují na základě výrazů predikátové logiky na cesty. Proč nepoužíváme přímo tyto výrazy? Uživatel musí pochopit jen základní operátory a umí vyjádřit složité vlastnosti jako kombinace těchto základních operátorů. Účinné algoritmy a programy ( model checking ) pro prověřování temporální logiky na konečné přechodové systémy a částečně dokonce pro nekonečné přechodové systémy. 16 / 19
Poznámka ke literatuře My dáváme stavovým vlastnostem význam interpretací I. V literatuře (e.g.,[clarke et al., 1999]) se obvykle používá rozšířený přechodový systém, který každému stavu systému přiřazuje množinu všech stavových vlastností, které v něm platí. Výsledek se jmenuje Kripková struktura ( Kripke structure ) 17 / 19
Praktické využití LTL je základ pro různé specifikační jazyky, které se používají v hardwareovém průmyslu. Příklad: Property Specification Language (PSL) Demo 18 / 19
Literatura I Edmund M. Clarke, Orna Grumberg, and Doron A. Peled. Model Checking. MIT Press, 1999. Michael Huth and Mark Ryan. Logic in Computer Science. Cambridge University Press, 2004. 19 / 19