25.11.2014 Aufrufe

Verifikation reaktiver Systeme - Universität Kaiserslautern

Verifikation reaktiver Systeme - Universität Kaiserslautern

Verifikation reaktiver Systeme - Universität Kaiserslautern

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.

200<br />

∃x.ϕ =[ϕ] 1 x ∨ [ϕ]0 x<br />

∀x.ϕ =[ϕ] 1 x ∧ [ϕ]0 x<br />

[ϕ] 1 x und [ϕ]0 x<br />

werden auch als positiver und negativer Kofaktor von ϕ und x<br />

bezeichnet.<br />

Bei der Quantifizierung über einer Menge E von Variablen kann E wieder als<br />

ROBDD repräsentiert werden (als Verundung der einzelnen Zustände). Daraus<br />

resultiert der Algorithmus exists(e, r), welcher als Eingabe den E repräsentierenden<br />

ROBDD und den ”eigentlichen“ ROBDD, welcher die zu quantifizierende<br />

Formel darstellt, erhält.<br />

Die Ausgabe ist ein BddNode, der die erfüllende Belegung (falls diese existiert)<br />

beschreibt. Der Algorithmus soll an dieser Stelle jedoch nicht näher erläutert<br />

werden. Für nähere Informationen sei hiermit auf [VRS03] verwiesen.<br />

Das Finden dieser erfüllenden Belegung kann jedoch signifikant durch relationale<br />

Produktbildung mit einem ROBDD–Durchlauf optimiert werden. Ein<br />

für diese Operation angegebener Algorithmus in Pseudo-Code stammt aus der<br />

Vorlesung [VRS03]:<br />

function RelProd(BddNode e, r, q)<br />

int m; BddNode h, l;<br />

if r.isLeaf(0) ∨ q.isLeaf(0) then return Leaf(0);<br />

elseif r.isLeaf(1) then return exists(e, q);<br />

elseif q.isLeaf(1) then return exists(e, r);<br />

else<br />

m = min{r.label, q.label};<br />

(r 0 ,r 1 ) := cf(r, m);<br />

(q 0 ,q 1 ) := cf(q, m);<br />

h := RelProd(e, r 1 ,q 1 );<br />

l := RelProd(e, r 0 ,q 0 );<br />

if m ∈ e then return apply(∨,h,l);<br />

else return new BddNode(m, h, l);<br />

endif;<br />

endif;<br />

end function<br />

Abbildung 6. Algorithmus zur Berechnung des relationalen Produkts<br />

Ein BddNode sei hier definiert durch BddNode(Label, neg. Unterbaum, pos.<br />

Unterbaum). Die Funktion cf(BddNode x, int i) liefere hierbei das Paar mit den<br />

Kofaktoren der Knoten mit dem Label i. Der Algorithmus apply(f, x, y) liefere

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!