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.

30<br />

in linearer Zeit eine Interpolierende P der Teilmengen A und B zu generieren, die<br />

folgende Eigenschaften hat:<br />

A impliziert P,<br />

P B ist nicht erfüllbar und<br />

P verwendet nur die gemeinsamen Variablen von A und B.<br />

Dies ermöglicht es, die Finalzustände auf Erreichbarkeit zu überprüfen und<br />

darausfolgend eine unbegrenzte Modellprüfung durchzuführen.<br />

Im nächsten Kapitel wird gezeigt, wie man mit einem SAT-Algorithmus den<br />

benötigten Wiederspruchsbeweis erhält. In Kapitel 4 wird dann eine einfache<br />

Methode vorgestellt, die mit Hilfe von Interpolation eine unbegrenzte Modellprüfung<br />

durchführt. Ein Test dieser Methode in der Praxis an Hand von einigen Eigenschaften<br />

von kommerziellen Mikroprozessoren folgt in Kapitel 5.<br />

2. Extraktion von Beweisen aus SAT – Algorithmen<br />

Eine Klausel ist eine Disjunktion von beliebig vielen booleschen Variablen oder ihrer<br />

Negation. Wir nehmen an, dass die Klauseln nicht allgemeingültig sind, d.h. dass sie<br />

nicht gleichzeitig eine Variable und deren Negation enthalten. Eine Menge von<br />

Klauseln ist erfüllbar, wenn eine Variablenbelegung existiert, bei der alle Klauseln<br />

der Menge den Wert true liefern.<br />

Haben wir nun zwei Klauseln der Form c 1 = v A und c 2 = v B, dann<br />

definieren wir die Vereinigung der beiden Klauseln als A B, unter der<br />

Vorraussetzung, dass A B nicht allgemeingütig sind. Ist A B jedoch<br />

allgemeingütig, so existiert keine Vereinigung. Existiert eine Vereinigung von c 1 und<br />

c 2 , dann wird diese impliziert von c 1 c 2 .<br />

Definition Beweis der Unerfüllbarkeit:<br />

Für eine Menge von Klauseln C ist ein Beweis der Unerfüllbarkeit P ein<br />

gerichteter azyklischer Graph (V P ,E P ), bei dem V P eine Menge von<br />

Klauseln darstellt, so dass:<br />

Für jeden Knoten c V P gilt entweder<br />

o c C und c eine Wurzel oder<br />

o c hat genau zwei Vorgänger c 1 und c 2 , wobei c die<br />

Vereinigung von c 1 und c 2 ist<br />

Die leere Klausel ist das einzige Blatt.<br />

Existiert nun ein Beweis für eine Klauselmenge C, der besagt dass die Klauselmenge<br />

unerfüllbar ist, dann ist auch C unerfüllbar. Dies lässt sich durch Induktion über die<br />

Tiefe des Graphen und mit Hilfe der Transitivität der impliziten Verknüpfung leicht<br />

zeigen.<br />

Zum Erzeugen der Unerfüllbarkeitsbeweise wird ein DPLL – SAT-Algorithmus<br />

verwendet, was aber nicht zwingend erforderlich ist. Während der DPLL -<br />

Algorithmus nach einer erfüllenden Belegung sucht, muss er Entscheidungen treffen,<br />

bei denen er beliebigen Variablen den Wert true zuweist und daraus einen

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!