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