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.
147<br />
3.3 SAT Ansatz<br />
Bei SAT(=satisfiability) handelt es sich um das boolesche Erfüllbarkeitsproblem.<br />
Gegeben ist eine Formel in KNF, zum Beispiel (x 1 ∨ x 2 ) ∧ (x 3 ∨ x 4 ) und gesucht<br />
ist eine Belegung der Literale {x 1 , ··· ,x 4 }, welche diese Formel erfüllt. Dazu<br />
müssen die beiden Klauseln (x 1 ∨x 2 ) und (x 3 ∨x 4 )erfüllt werden. Eine Belegung,<br />
welche dieses Kriterium erfüllt, ist zum Beispiel {x 1 =1,x 2 =1,x 3 =0,x 4 =1}.<br />
Eine naive Vorgehensweise um eine solche Belegung zu finden wäre:<br />
1. Weise den Variablen schrittweise die Werte 0/1 zu und speichere die Entscheidung<br />
in einem Entscheidungsbaum<br />
2. Prüfe, ob die aktuelle Belegung der Variablen alle Klauseln erfüllt<br />
3. Ist dies nicht der Fall, gehe einen Schritt im Entscheidungsbaum zurück, und<br />
belege die Variable mit einem anderen Wert(Backtracking)<br />
4. Wiederhole, bis entweder eine Lösung gefunden, oder keine Variable mehr<br />
einen anderen Wert erhalten kann.<br />
Diesen Ansatz nennt man auch die Davis-Logemann-Loveland Procedure, ein<br />
einfacher Backtracking Algorithmus. In dieser Form ist er natürlich nicht effizient<br />
und führt zu exponentieller Laufzeit. Ausgehend von diesem Grundgerüst<br />
erweitert man diesen Ansatz mit neuen Regeln, um die Laufzeit zu verbessern.<br />
Einige Regeln, die angewendet werden, sind:<br />
unit clause rule Wenn die Zuweisung eines Wertes einer einzelnen Variable<br />
dazu führt, dass die Klausel zu einer Einheit wird, dann muss diese Variable<br />
den Wert 1 haben. Beispiel: (x 1 ∨¬x 2 ∨ x 3 ) und die aktuelle Zuweisung ist<br />
{x 1 =0,x 2 =1}, dann bildet diese Klausel eine Einheit und die verbleibende<br />
Variable x 3 muss den Wert 1 erhalten.<br />
boolean constraint propagation Die iterative Anwendung der unit clause<br />
rule nennt man auch boolean constraint propagation.<br />
pure literal rule Liegen für eine Variable x alle Literale in positiver oder negativer<br />
Form vor, so kann diese Variable einen Wert erhalten, welcher alle<br />
Klauseln erfüllt.<br />
Um nun SAT-Algorithmen benutzen zu können, müssen zwei Dinge geschehen.<br />
Alserstesbildetmanfür die Schaltungen die sogenannte Miter-Anordnung (siehe<br />
Abbildung 5). Die zusammengehörigen Eingänge und Ausgänge werden einzeln<br />
mit ⊕ verknüft, die Ausgänge führen dann in ein ∨-Gatter. Wenn die beiden<br />
Schaltkreise äquivalent sind, ergibt sich am Ausgang immer 0, da die ⊕-<br />
Gatter nur eine 1 ergeben, wenn einer der beiden Eingänge eine 1 war. Die<br />
∨-Verknüpfung prüft dann nur, ob einer der ⊕-Gatter eine logische 1 als Ergebnis<br />
ergab.<br />
Kann man eine Wertebelegung finden welche E = 1 erzeugt ist ein Testvektor<br />
für den Beweis der Nichtäquivalenz gefunden.