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.
118<br />
Schemata von Implementierungen<br />
Relsat-Schema In Abbildung 10 ist ein Relsat-Schnitt gemäß dem Algorithmus<br />
von Bayardo und Schrag [18] dargestellt. Dabei werden alle Entscheidungsvariablen<br />
und die Implikationsvariablen früherer Entscheidungsebenen auf<br />
die Ursachenseite gesetzt. Die Implikationsvariablen der aktuellen Entscheidungsebene<br />
befinden sich auf der Konfliktseite. Im Beispiel der Abbildung<br />
wird die Konfliktklausel ω κ = ¬x 4 + ¬x 8 + x 12 + ¬x 16 gelernt.<br />
GRASP-Schema Das GRASP-Schema (siehe Abschnitt B.1) verwendet verschiedene<br />
Untervarianten.<br />
Rekonvergenz von UIPs Kantenpfade, die von einem UIP der aktuellen<br />
Entscheidungsebene ausgehen, laufen bei einem anderen UIP wieder zusammen.<br />
Diese Rekonvergenz (reconvergence) kann für einen Schnitt verwendet<br />
werden, wobei sich innerhalb des Schnitts kein Konflikt befindet.<br />
Im Beispiel in Abbildung 11 ist ein solcher Schnitt mit A gekennzeichnet<br />
und verläuft zwischen x 12 (Entscheidungsvariable) und ¬x 10 (UIP). Die<br />
gelernte Klausel ist ω κA = x 10 + x 12 + ¬x 16 .<br />
Ab erstem UIP Eine weitere Konfliktklausel erstellt GRASP aus einem<br />
Schnitt auf der aktuellen Entscheidungsebene zwischen dem ersten UIP<br />
(vom Konflikt aus gesehen) und allen Knoten näher am Konflikt. Die<br />
Art von Schnitt wird auch von GRASP (s. o.) angewandt. Abbildung 11<br />
zeigt diesen Fall als Schnitt B. Die gerlernte Klausel ist hier ω κB = x 10 .<br />
Backtracking Führt auch die alternative Belegung der Entscheidungsvariablen<br />
der aktuellen Ebene zum Widerspruch, kann der Konflikt auf dieser<br />
Entscheidungsebene nicht aufgelöst werden. Ein neuer Schnitt wird<br />
vorgenommen, der alle Knoten der aktuellen Entscheidungsebene auf<br />
die Konfliktseite stellt und Knoten früherer Entscheidungsebenen auf<br />
die Ursachenseite. Um diesen Konflikt aufzulösen, muss der Algorithmus<br />
auf eine frühere Entscheidungsebene springen. Dieser Sprung basiert<br />
auf dem Schnitt und ist Basis für den nicht-chronologischen Rücksprung<br />
(Abschnitt 5.5).<br />
Dieser Schnitt entspricht Schnitt C in Abbildung 11. Die durch den<br />
Schnitt gewonnene Klausel ist ω κC = ¬x 4 + x 12 .<br />
Die Bestimmung eines Schnitts erfordert die Traversierung des Implikationsgraphen.<br />
Die Komplexität hängt somit von der Anzahl der Kanten und Knoten<br />
ab (O(V + E)).<br />
5.4 Einfache Fehler<br />
In der gelernten Konfliktklausel ist zu jedem Literal dessen Entscheidungsebene<br />
bekannt. Ist die höchste vorkommende Entscheidungsebene gleich der aktuellen<br />
Entscheidungsebene, kann der Konflikt ohne Rücksprung (Backtracking) gelöst<br />
werden.<br />
Falls für die Entscheidungsvariable der aktuellen Ebene noch nicht beide Belegungen<br />
ausprobiert wurden, kann der Konflikt durch Invertieren der Belegung