===== Zadání =====
Metoda ověřování modelu (MC) pro konečně stavové systémy a lineární temporální logiku. Princip překladu formulí LTL na automaty nad nekonečnými slovy. Základní symbolické a explicitní algoritmy pro MC a jejich teoretická složitost.
===== Vypracování =====
**Upozornění:** bez nároku na úplnost a korektnost. Podle hesla „lepší něco než nic“. Ale snaha byla o co nejlepší výsledek.
Model checking problem is the problem to decide whether a given model (or system) satisfies a given specification. Specification is a formal description of some property that should be satisfied by the system. Specification is typically given as a formula of some temporal logic.
==== LTL ====
φ ::= T | a | ¬φ | φ1 ∧ φ2 | Xφ | φ1 U φ2
Fφ := T U φ
Gφ := ¬F¬φ
φ R ψ := ¬(¬φ U ¬ψ) … release
The set of atomic propositions occurring in a formula φ is denoted by AP(φ).
We define the semantics of LTL in terms of languages over infinite words. An alphabet is a set Σ = 2AP , where AP ⊆ AP is a finite subset. A word over alphabet Σ is an infinite sequence w = w(0)w(1)w(2)... ∈ Σ^ω of letters from Σ. For every i ∈ N0, by wi we denote the suffix of w of the form w(i)w(i + 1)w(i + 2)...
Validity of an LTL formula φ for w ∈ Σ^ω, written w |= φ, is defined as follows:
w |= T
w |= a **iff** a ∈ w(0)
w |= ¬φ **iff** w |!= φ
w |= φ1 ∧ φ2 **iff** w |= φ1 ∧ w |= φ2
w |= Xφ **iff** w1 |= φ
w |= φ1 U φ2 **iff** ∃i ∈ N0 : wi |= φ2 ∧ ∀ 0 ≤ j < i : wj |= φ1
Given an alphabet Σ, an LTL formula φ defines the language L^Σ (φ) = {w ∈ Σ^ω | w |= φ}.
V action-based LTL: w |= a <=> a = w(0).
=== Model checking pro LTL ===
In general, it means that all behaviours of the system satisfy the specification. In state-based LTL setting, it means that a given model M and a given LTL formula φ satisfy L^AP(φ) (M) ⊆ L^2^AP(φ) (φ). (To druhé je jazyk všech běhů, které splňují φ.)
Similarly, in action-based LTL setting, it means that a given model M and a given LTL formula φ satisfy L(M) ⊆ L^Act (φ).
State-based LTL MC je rozhodnutelný pro menší třídu systémů – klade omezení na Petriho sítě i PDA (decidable where validity of atomic propositions depends only on control state and the topmost stack symbol).
Time and space complexity of this algorithm is O(|M| · 2^O(|φ|)), where |M| is the number of states and transitions in the Kripke structure M. The LTL model checking problem is PSPACE-complete.
==== Princip překladu LTL na automaty nad nekonečnými slovy ====
=== Překlad Kripkeho struktury ===
Pro každou Kripkeho strukturu M = (S, T, I, s0) lze sestrojit Büchi automat A_sys takový, že L_sys = L(A_sys).
Konstrukce Asys: Nechť AP je množina atomických propozic. Pak A_sys = (S, 2^AP, s0, δ, S), kde q ∈ δ(p, a) právě když (p, q) ∈ T ∧ I(p) = a.
=== Převod LTL na BA ===
1. Formule φ se převede do normální formy.
2. Vypočítá se přechodový graf budoucího automatu.
3. Graf se doplní na zobecněný Büchi automat.
4. Zobecněný BA se převede na standardní Büchi automat.
== Normální forma LTL ==
Řekneme, že LTL formule je v normální formě, pokud neobsahuje operátory F a G a všechny operátory unární negace jsou aplikovány na podformule tvořené pouze atomickou propozicí.
= Syntax =
φ ::= p | ¬p | φ ∨ φ | φ ∧ φ | X φ | φ U φ | φ R φ
= Pravidla pro převod do normální formy =
¬(φ ∨ ψ) ≡ (¬φ) ∧ (¬ψ)
¬(φ ∧ ψ) ≡ (¬φ) ∨ (¬ψ)
¬X φ ≡ X (¬φ)
¬(φ U ψ) ≡ (¬φ R ¬ψ)
¬(φ R ψ) ≡ (¬φ U ¬ψ)
= Zobecněný BA =
* //**F**// ⊆ 2^S je systém množin koncových stavů. [//**F**// by mělo být takové to kaligrafické F]
* Běh ρ je akceptující, pokud ∀Fi ∈ //**F**// platí inf (ρ) ∩ Fi != ∅.
* Dezobecnění:
* Nechť A = (Σ, S, s, δ, {F1, ..., Fn}).
* B = (Σ, S × {0, ..., n}, (s, 0), δ', S × {n}), kde (q, y) ∈ δ'((p, x), a) pokud q ∈ δ(p, a) a pro x a y platí
* jestliže q ∈ Fi a x = i − 1, tak y = i
* jestliže x = n, tak y = 0
* jinak x = y
* → tzn. inkrementuje se, jak se postupně prochází původně akceptujícími stavy z jednotlivých množin
= Další BA =
* slabý BA (WBA) – každá silně souvislá komponenta obsahuje buď pouze akceptující nebo neakceptující stavy
* terminální BA – každý akceptující cyklus má podobu smyčky nad akceptujícím stavem
== Konstrukce A × B ==
A × B = (SA × SB × {0, 1}, Σ, (sA, sB, 0), δ_{A×B}, FA × **SB** × {0})
(p', q', j) ∈ δ_{A×B} ((p, q, i), a) pro všechna:
* p' ∈ δA (p, a)
* q' ∈ δB (q, a)
* j = (i + 1) mod 2 //pokud// (i = 0 ∧ p ∈ FA) ∨ (i = 1 ∧ q ∈ FB)
* → projití akceptujícího stavu z A mě hodí do 1, musím projít ještě akceptujícím stavem z B, abych se dostal zpět na 0, aby se mi průchod přes akceptující stav z A opět započítal
* j = i v ostatních případech
Redukce M |= φ na problém prázdnosti L(A_sys × A¬φ) – původně chceme L(A_sys) ⊆ L(A_φ), což je totéž jako prázdný průnik s komplementem L(φ).
==== Algoritmy ====
state space enumeration, symbolic state space enumeration, abstract interpretation, symbolic simulation, symbolic trajectory evaluation, symbolic execution
=== Symbolic MC ===
* množina stavů = množina binárních vektorů → lze popsat booleovskou fcí
* represents system as a boolean function
* state space search as operations on boolean functions
* Binary Decision Diagrams (BDD; acyklický) are efficient (= deduplikované) ways of representing boolean functions + operations on them
== Symbolická exekuce ==
* namísto nad vstupními hodnotami se „počítá“ nad symboly
=== Explicitní algoritmy ===
* Nested DFS – Vnější procedura detekuje akceptující stavy, vnitřní procedura testuje, zda akceptující stav je dosažitelný ze sebe sama (leží na cyklu).
* OWCTY – vrcholy na akceptujícím cyklu jsou dosažitelné z akceptujícího vrcholu & mají 1+ předchůdce
* Obecně O(|V|^2 + |V||E|), na WBA O(|V| + |E|)
* Střídají se procedury Reachability (z akceptujících vrcholů) a Elimination (vyhazují nedosažitelné vrcholy + vrcholy bez dosažitelných předchůdců).
* MAP
* Obecně O(|V|^3 + |V||E|), na WBA O(|V| + |E|)
* Propagují se maximální akceptující předchůdci (akceptující vrcholy jsou nějak uspořádané) – pokud se propaguje akceptující vrchol do sebe, je na cyklu.
===== Předměty =====
* [[https://is.muni.cz/auth/predmet/fi/IA159|IA159 Formal Verification Methods]]
* [[https://is.muni.cz/auth/predmet/fi/IV113|IV113 Úvod do validace a verifikace]]
===== Související otázky =====
~~DISCUSSION~~