Zum Inhalt springen

KALKÜL · Technik im Detail

Regeln als Formeln.

Wie KALKÜL Regeln als Formeln mit einem SMT-Löser prüft: unerfüllbare Negation ist ein Nachweis, erfüllbare ein Gegenbeispiel, alles andere kein Ja.

Eine Regel ist für KALKÜL keine Beschreibung, sondern eine Formel über Zustände und Handlungen. Ob eine Handlung sie einhält, entscheidet keine Schätzung: Ein Löser sucht nach einem Zustand, der die Regel bricht. Zeigt er, dass es keinen gibt, ist das ein Nachweis. Findet er einen, ist das ein Gegenbeispiel. Reicht das Rechenbudget für keins von beiden, gibt es kein Ja.

Diese Seite beschreibt die Bauweise des Systems. Gebaut sind der Prototyp von Freigabe und Protokoll und der Demonstrator von KALKÜL; den ganzen Stand finden Sie unter Was heute steht.

Auf dieser Seite
  1. 01Von der Vorschrift zur Formel
  2. 02Prüfen mit einem SMT-Löser
  3. 03Nachweis heißt: die Negation ist unerfüllbar
  4. 04Gegenbeispiel heißt: eine erfüllende Belegung
  5. 05Abläufe, Nichtlinearität, Budget
  6. 06Eckdaten
  7. 07Weiter

Von der Vorschrift zur Formel

Eine Regel wird aus ihrem Wortlaut in eine formale Bedingung übersetzt: Variablen für die Größen von Zustand und Handlung, ihre Wertebereiche, Boolesche Verknüpfungen (und, oder, nicht, wenn dann) und lineare Ungleichungen über Zahlen. Aus dem Satz, eine Größe bleibe über ihrer Mindestgrenze, solange keine Freigabe vorliegt, wird etwa ¬f → x ≥ x_min.

Jede Regel trägt ihren Wortlaut, ihre Fundstelle in der Vorschrift und eine Version. Die Übersetzung prüfen Fachleute an Beispielen: Für eine Reihe von Zuständen, deren richtige Antwort feststeht, muss die Formel dasselbe sagen wie der Wortlaut. Erst dann geht die Version in Betrieb.

Prüfen mit einem SMT-Löser

KALKÜL übergibt Zustand, Handlung und Regeln an einen SMT-Löser (Satisfiability Modulo Theories), etwa Z3. Ein SMT-Löser entscheidet, ob eine Formel über Theorien wie lineare Arithmetik, Bitvektoren oder Arrays eine erfüllende Belegung hat. Für lineare Arithmetik über ganzen und über rationalen Zahlen ist diese Frage entscheidbar; der Löser antwortet erfüllbar (sat) oder unerfüllbar (unsat), sofern er im Rechenbudget fertig wird.

Eingabe ist SMT-LIB, das gemeinsame Format der Löser. Dieselbe Prüfung lässt sich darum mit einem zweiten, unabhängig entwickelten Löser wie cvc5 gegenrechnen. Stimmen beide überein, hängt das Ergebnis nicht an einem einzelnen Programm.

(set-option :produce-models true)
(set-logic QF_LRA)
(declare-const x Real)                       ; Größe des Zustands
(declare-const u Real)                       ; Stellgröße der Handlung
(declare-const f Bool)                       ; Freigabe liegt vor
(assert (and (>= x 0.0) (<= u 1.0)))         ; Zustand und Handlung
(assert (not (=> (not f) (>= (- x u) 0.0)))) ; Negation der Regel
(check-sat)                                  ; unsat: Nachweis, sat: Gegenbeispiel
(get-model)                                  ; nur nach sat
Eine Prüfung in SMT-LIB, schematisch: Voraussetzungen und die Negation der Regel. Namen und Grenzen sind Platzhalter.

Nachweis heißt: die Negation ist unerfüllbar

Um zu zeigen, dass eine Regel R für alle erlaubten Zustände gilt, fragt KALKÜL den Löser nach dem Gegenteil: Gibt es einen Zustand, der die Voraussetzungen S erfüllt und R verletzt, also eine Belegung für S ∧ ¬R? Antwortet der Löser unerfüllbar, gibt es keinen solchen Zustand. R gilt dann für jeden Zustand, den S zulässt, nicht nur für die ausprobierten.

Löser wie cvc5 können zum Ergebnis unsat einen Beweis ausgeben, etwa im Format Alethe, den ein kleines, eigenständiges Prüfprogramm nachrechnet. Vorgesehen ist, diesen Beweis dem Nachweis beizulegen. Für den Schritt von der Formel zum Ergebnis muss man dann weder KALKÜL noch dem Löser glauben, sondern nur dem Prüfprogramm; dass die Formel die Vorschrift richtig wiedergibt, bleibt Sache der fachlichen Prüfung.

Ein Löser, drei Ausgänge

Die Regel wird verneint und mit Zustand und Handlung an den Löser gegeben. Unerfüllbar ergibt den Nachweis, erfüllbar ein Gegenbeispiel. Reicht das Rechenbudget nicht, endet die Prüfung ohne Ja.

Regeln in KALKÜL: Formel, Negation, SMT-Löser, Nachweis oder GegenbeispielDie Regel wird verneint und mit Zustand und Handlung an den Löser gegeben. Unerfüllbar ergibt den Nachweis, erfüllbar ein Gegenbeispiel. Reicht das Rechenbudget nicht, endet die Prüfung ohne Ja.unerfüllbarerfüllbarZUSTAND UND HANDLUNGPRÜFWERTBudget erschöpftFORMELNEGATIONSMT-LÖSERNACHWEISGEGENBEISPIEL
  • Ablauf von Zustand und Handlung bis Prüfwert: Formel, Negation, SMT-Löser, Nachweis, Gegenbeispiel.
  • Formel zu Negation.
  • Negation zu SMT-Löser.
  • SMT-Löser unerfüllbar Nachweis.
  • SMT-Löser erfüllbar Gegenbeispiel.
  • Von SMT-Löser gesperrt: Budget erschöpft.
ABLAUF · WEGE OHNE MENGEN

Gegenbeispiel heißt: eine erfüllende Belegung

Antwortet der Löser erfüllbar, liefert er eine erfüllende Belegung aller Variablen, die S erfüllt und R bricht. Das ist ein Zustand, den die Voraussetzungen zulassen; für ein Nein reicht das. KALKÜL übersetzt ihn zurück in die Begriffe der Ontologie: welche Regel, welche Größen mit welchen Werten, zu welchem Zeitpunkt.

Ein Gegenbeispiel lässt sich ohne Löser nachprüfen: Man setzt die Werte in Voraussetzungen und Regel ein und rechnet. Das macht es zum stärksten Grund für ein Nein, und zum genauesten Hinweis, was an der Handlung zu ändern wäre.

Abläufe, Nichtlinearität, Budget

Regeln über Abläufe, die für jeden Zeitpunkt gelten sollen, übersetzt KALKÜL in eine Folge von Zuständen über einem Zeitraster mit fester Schrittweite. Die Variablen gibt es je Schritt, und die Dynamik verknüpft Schritt mit Schritt. Für einen begrenzten Horizont ist das wieder eine gewöhnliche SMT-Formel; das Verfahren heißt beschränkte Modellprüfung. Ein Nachweis gilt dann für die Rasterpunkte bis zum Horizont. Für die Zeit dazwischen braucht es eine Schranke der Änderung je Schritt, die in die Grenze eingerechnet wird, für unbegrenzte Zeit eine Invariante, gezeigt per Induktion (k-Induktion).

Nicht jede Regel ist linear. Produkte von Variablen, Exponentialfunktionen oder Wurzeln führen in nichtlineare Arithmetik, in der Löser langsam werden oder keine Antwort finden. Solche Bedingungen rechnet KALKÜL mit Intervallen.

Jede Prüfung hat ein Rechenbudget. Wird es überschritten, lautet das Ergebnis unentschieden, und unentschieden ist kein Ja: Die Handlung wird nicht freigegeben, solange die Rechnung kein Ergebnis hat. Der Demonstrator auf der Seite von KALKÜL rechnet nach dem Muster der Intervalle, nicht mit einem SMT-Löser.

Eckdaten

Regel
Formel aus Booleschen Verknüpfungen und linearen Ungleichungen; Wortlaut, Fundstelle, Version
Format
SMT-LIB 2
Löser
SMT-Löser wie Z3, Gegenrechnung mit einem zweiten wie cvc5
Theorien
lineare Arithmetik über ganzen und rationalen Zahlen, Bitvektoren, Arrays
Nachweis
S ∧ ¬R unerfüllbar (unsat); Beweis im Format Alethe beizulegen ist vorgesehen
Gegenbeispiel
erfüllende Belegung für S ∧ ¬R (sat), nachrechenbar durch Einsetzen
Abläufe
Zeitraster mit fester Schrittweite, beschränkte Modellprüfung
Ergebnis
Nachweis, Gegenbeispiel oder unentschieden; unentschieden gibt nicht frei

Weiter

Bringen Sie eine Regel aus Ihrer Vorschrift mit. Wir schreiben sie mit Ihnen als Formel und prüfen sie an Beispielen.