Verifikation reaktiver Systeme - Universität Kaiserslautern
Verifikation reaktiver Systeme - Universität Kaiserslautern
Verifikation reaktiver Systeme - Universität Kaiserslautern
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