Effizientes Model-Checking für CTL - Institut für Theoretische ...
Effizientes Model-Checking für CTL - Institut für Theoretische ...
Effizientes Model-Checking für CTL - Institut für Theoretische ...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
3 <strong>Model</strong>-<strong>Checking</strong> <strong>für</strong> <strong>CTL</strong><br />
1. φ ∈ AP: φ wird akzeptiert, falls φ ∈ label(w).<br />
In diesem Fall wird keine Markierung vorgenommen, da label(w) mit η(w) initialisiert<br />
wird;<br />
2. φ = ¬γ: markiert werden die Zustände, die mit γ nicht markiert sind.<br />
∀v ∈ W, γ ∉ label(v): label(v) = label(v) ∪ φ.<br />
3. φ = γ ∨ λ: betroffen sind diejenigen Zustände, die mit γ oder mit λ markiert sind.<br />
∀v, u ∈ W, γ ∈ label(v), λ ∈ label(u): label(v) = label(v)∪φ, label(u) = label(u)∪φ.<br />
4. φ = EXγ: markiert werden direkte Vorfahren der mit γ markierten Zustände.<br />
∀v, u ∈ W, γ ∈ label(v), (u, v) ∈ R: label(u) = label(u) ∪ φ<br />
5. φ = E(γUλ): markiert werden die Zustände, von denen aus ein Pfad existiert,<br />
der aus den mit γ markierten Zuständen besteht und mit dem mit λ markierten<br />
Zustand endet. Die Pfade werden rückwärts von den mit λ markierten Zuständen<br />
konstruiert. Dieser Fall wird in Algorithmus 1 behandelt.<br />
Algorithmus 1 Procedure CheckEU K, w0 ⊧ ϕ<br />
Eingabe: eine Kripke-Struktur K = (W, R, η), w0 ∈ W , ϕ = E(αUβ)<br />
1: T ← {s ∣ β ∈ label(s)}<br />
2: for all s ∈ T do<br />
3: label(s) ← label(s) ∪ {E(αUβ)}<br />
4: end for<br />
5: while T is not empty do<br />
6: choose s ∈ T<br />
7: T ← T /{s}<br />
8: for all t such that (t, s) ∈ R do<br />
9: if ϕ ∉ label(t) and α ∈ label(t) then<br />
10: label(t) ← label(t) ∪ {E(αUβ)}<br />
11: T ← T ∪ {t}<br />
12: end if<br />
13: end for<br />
14: end while<br />
6. φ = EGγ: hier werden diejenigen Zustände markiert, von denen aus ein Pfad<br />
existiert, entlang dessen nur die mit γ markierten Zustände vorkommen. Um solche<br />
Pfade zu finden, wird aus der Kripke-Struktur eine reduzierte Kripke-Struktur<br />
K ′ = (W ′ , R ′ , η ′ ) konstruiert, in die nur die mit γ markierten Zustände aus W und<br />
zugehörige Relationen aufgenommen werden. Formal: W ′ = {w ∈ W, γ ∈ label(w)},<br />
R ′ = R∣W ′ ×W ′ und η′ = η∣W ′. K′ wird mit Hilfe des Algorithmus von Tarjan<br />
[AHU74] in nicht triviale Zusammenhangskomponenten zerlegt. Eine Zusammenhangskomponente<br />
(strong connected component) C ist ein maximaler Teilgraph,<br />
in dem jeder Knoten in C von jedem anderen Knoten aus C über einen gerichteten<br />
16