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

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

31<br />

Folgerungsgraph ableitet. Dies ist ein gerichteter azyklischer Graph, dessen Knoten<br />

einer true – Zuweisung einer Variablen entsprechen. Eine Kante von v 1 zu v 2 besagt,<br />

dass durch die Annahme, dass v 1 erfüllt ist, aus einer Klausel folgt, dass v 2 auch<br />

erfüllt sein muss, um die Klausel erfüllen zu können.<br />

Zum Beispiel nehmen wir eine Klauselmenge {(a b), (b c d)} an. Des<br />

weiteren haben wir schon {a, c} als erfüllt angenommen. Daraus ergibt sich<br />

folgender möglicher Folgerungsgraph:<br />

a b<br />

c<br />

d<br />

Abbildung 1: Folgerungsgraph<br />

Das Symbol b wird impliziert von Knoten a und der Klausel (a b), während das<br />

Symbol d von den Konten b und c sowie der Klausel (b c d) impliziert wird.<br />

Eine Klausel ist in Konflikt mit dem Folgerungsgraph, wenn alle ihre Variablen als<br />

Negation in dem Graph vorkommen. Wenn nun so ein Konflikt bei einem SAT-<br />

Algorithmus auftaucht, generiert dieser eine Konfliktklausel, die von den vorhandenen<br />

Klauseln der Klauselmenge impliziert wird. Diese Konfliktklausel wird durch<br />

Vereinigung der in Konflikt stehenden Klausel mit Klauseln aus dem<br />

Folgerungsgraph generiert.<br />

Fügen wir zum Beispiel der Klauselmenge von oben die Klausel (b d) hinzu.<br />

Diese steht in Konflikt mit dem Folgerungsgraph. Die Variable d steht im Konflikt<br />

und wird von der Klausel (b c d) impliziert. Die Vereinigung von dieser Klausel<br />

und der Klausel im Konflikt lautet dann (b c), die auch im Konflikt mit dem<br />

Folgerungsgraph steht. Auch die Variable b vom Folgerungsgraph steht im Konflikt.<br />

Sie wird von der Klausel (a b) impliziert. Vereinigt man diese nun mit der vorhin<br />

erhaltenen Klausel (b c), so erhält man (a c) als eine weitere Konfliktklausel.<br />

Eine von diesen beiden implizierten Konfliktklauseln wird nun der Klauselmenge<br />

hinzugefügt.<br />

Um nun einen Beweis für den unerfüllbaren Fall zu finden muss man beobachten,<br />

welche Sequenzen von Klauseln zu den jeweiligen Konfliktklauseln vereinigt werden.<br />

Im unerfüllbaren Fall liefert ein modifizierter SAT-Algorithmus als Ergebnis eine<br />

leere Klausel, von der aus nun eine Tiefensuche gestartet wird, die nach den<br />

Bedingungen sucht, die ursprünglich diese Sequenz bedingt haben. Es ist im<br />

allgemeinen nicht nötig, alle vom SAT-Algorithmus generierten Konfliktklauseln zu<br />

durchsuchen, um eine leere Klausel ableiten zu können.<br />

3. Der Interpolationsalgorithmus<br />

Nehmen wir nun an, dass wir eine Partitionierung einer Klauselmenge C in eine<br />

indizierte Menge {C 1 ... C n } mit disjunkten Untermengen C i haben. Wir bezeichnen<br />

eine Variable in Beziehung auf als global, wenn sie in mehr als einem C i

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!