31.08.2013 Aufrufe

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 ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!