-
Die vorliegende Erfindung betrifft ein Verfahren zum Prüfen eines Regelwerks, das für eine automatisierte Überwachung eines technischen Systems auf das Vorhandensein eines Problems verwendet wird, eine Verwendung des Verfahrens und eine Vorrichtung zum Prüfen eines Regelwerks, das für eine automatisierte Überwachung eines technischen Systems verwendet wird, auf das Vorhandensein eines Problems.
-
Systeme, die auf großen Sätzen zeitlicher Regeln beruhen (wie Rulebase von E S SF), werden zum Überwachen technischer Systeme, wie z. B. Gasturbinen verwendet, die auf Sensordaten beruhen. Diese Regelbasen sind so umfangreich und die Interaktion zwischen derart vielen Regeln ist so komplex, dass es schwierig ist, diese Systeme von Fehlern zu befreien oder zu warten. Infolgedessen ist ein automatisierter Reasoning-Support in dem Prozess für eine Wartung des Systems und eine Fehlerbeseitigung im System notwendig. Konkret können die folgenden drei Probleme festgestellt werden:
- (1) Häufig werden Kombinationen von Regeln erstellt, die (unabsichtlich) niemals zu einem sinnvollen Ausgang führen können. Ein automatisches Erfassen solcher widersprüchlicher Regeln ist erforderlich, um solche Fehler im System zu beheben.
- (2) Häufig wird eine Regel erstellt, um ein bestimmtes Problem zu lösen, während bereits eine andere Regel existiert, die diesem Zweck dient. Es ist ein automatischer Nachweis solcher äquivalenter Regeln erforderlich, um das System frei von Duplikaten und somit effizienter wartungsfähig zu halten.
- (3) In vielen Fällen werden Regeln für einen speziellen Zweck erstellt, während eine andere (allgemeinere) bereits bestehende Regel für diesen Zweck verwendet werden kann. Ein automatischer Nachweis solcher Subsumptionsbeziehungen zwischen Regeln trägt ebenso dazu bei, das System frei von redundanten Regeln zu halten.
-
Bisher wurden diese Probleme durch menschliche (fachmännische) Erfahrung gelöst. Techniker, die jahrelang mit den Regelbasen gearbeitet haben, nutzen ihre Erfahrung mit den besonderen Regeln, um widersprüchliche, subsummierende und gleichwertige Regeln zu finden, was sehr zeitaufwändig ist. Es wurde keine automatisierte Unterstützung zur Lösung dieser Probleme entwickelt.
-
Es ist eine Zielsetzung der vorliegenden Erfindung, ein Verfahren, das automatisiert sein kann, zum Prüfen eines Regelwerks bereitzustellen, das für eine automatisierte Überwachung eines technischen Systems auf das Vorhandensein eines Problems verwendet wird. Es ist eine weitere Zielsetzung der vorliegenden Erfindung eine Vorrichtung bereitzustellen, die ein automatisches Prüfen eines Regelwerks ermöglicht, das für eine automatisierte Überwachung eines technischen Systems auf das Vorhandensein eines Problems verwendet wird.
-
Die erste Zielsetzung wird durch ein Verfahren zum Prüfen eines Regelwerks, das für eine automatisierte Überwachung eines technischen Systems auf das Vorhandensein eines Problems verwendet wird, wie in Anspruch 1 beansprucht, gelöst, und die weitere Zielsetzung wird durch eine Vorrichtung zum Prüfen eines Regelwerks, das für eine automatisierte Überwachung eines technischen Systems auf das Vorhandensein eines Problems verwendet wird, wie in Anspruch 10 beansprucht, gelöst. Die abhängigen Ansprüche enthalten Weiterentwicklungen der Erfindung.
-
Das erfindungsgemäße Verfahren zum Prüfen eines Regelwerks, das für eine automatisierte Überwachung eines technischen Systems, insbesondere wenn die Überwachung auf Sensordaten beruht, auf das Vorhandensein eines Problems verwendet wird, umfasst die Schritte:
- – Auswählen eines gewissen Problems, angesichts dessen das Regelwerk geprüft werden soll;
- – Übersetzen der zu prüfenden Regeln in eine Wissensbasis formaler logischer Aussagen;
- – Übersetzen des Problems in eine formale logische Problemaussage;
- – Anwenden eines Computeralgorithmus um festzustellen, ob die Wissensbasis logischer Aussagen gemeinsam mit der logischen Problemaussage erfüllbar ist;
- – Markieren des Problems als nicht vorhanden, wenn die Wissensbasis logischer Aussagen gemeinsam mit der logischen Problemaussage erfüllbar ist.
-
Das erfindungsgemäße Verfahren kann insbesondere für eine Fehlerbeseitigung in dem Regelwerk verwendet werden.
-
Regeln, die für eine automatisierte Überwachung eines technischen Systems verwendet werden, können als imperative Programme angesehen werden, d. h., als Programme, die durch eine Reihe von Befehlen gebildet werden, die bestimmen, welche Aufgaben von einem Computer ausgeführt werden und in welcher Reihenfolge der Computer die Aufgaben ausführt. Die Regeln solcher Programme können, z. B. als reine Textdateien bereitgestellt werden, in welchen jede Textzeile eine Regel darstellt. In dem erfindungsgemäßen Verfahren können solche Textdateien dann automatisch durch eine Software, die formale Übersetzungsregeln ausführt, in eine Wissensbasis formaler logischer Aussagen übersetzt werden. Ebenso kann das Problem, angesichts dessen das Regelwerk geprüft werden soll, automatisch in eine formale logische Aussage übersetzt werden, in dieser Beschreibung auch als logische Problemaussage bezeichnet. Nach dem Übersetzen des zu prüfenden Regelwerks und des Problems, angesichts dessen das Regelwerk geprüft werden soll, in die Wissensbasis formaler logischer Aussagen bzw. die logische Problemaussage kann ein Computeralgorithmus zur Lösung von Erfüllbarkeitsproblemen bei dem Satz angewendet werden, der durch die Wissensbasis formaler logischer Aussagen und die logische Problemaussage gebildet wird. Wenn das Ergebnis einer Ausführung des Algorithmus ist, dass die Wissensbasis formaler logischer Aussagen gemeinsam mit der logischen Problemaussage erfüllbar ist, ist das Problem in den Eigenschaften des ursprünglichen Regelwerks nicht vorhanden.
-
In dem erfindungsgemäßen Verfahren ermöglicht die Übersetzung des zu prüfenden Regelwerks und des Problems, angesichts dessen das Regelwerk geprüft werden soll, in die Wissensbasis formaler logischer Aussagen bzw. die logische Problemaussage ein Anwenden bereits bestehender computerimplementierter Algorithmen zur Lösung der Erfüllbarkeitsprobleme. Da auch die Übersetzung von einem Computer ausgeführt werden kann, auf dem ein Computerprogramm läuft, das Befehle enthält, die die Übersetzungsregeln implementieren, kann das erfindungsgemäße Verfahren vollständig automatisiert sein und somit ein automatisches Prüfen von Eigenschaften eines Regelwerks, das für eine automatisierte Überwachung eines technischen Systems auf das Vorhandensein eines Problems verwendet wird, ermöglichen.
-
Probleme, die zur Prüfung auf ihr Vorhandensein in einem Regelwerk gewählt werden können, das von dem erfindungsgemäßen Verfahren für eine automatisierte Überwachung eines technischen Systems verwendet wird, sind zum Beispiel das Bestehen einer Widersprüchlichkeit zwischen zwei oder mehr Regeln im Regelwerk, das Bestehen von zumindest zwei gleichwertigen Regeln im Regelwerk, und das Bestehen von zumindest einer speziellen Regel, die einem Anliegen dient, das bereits von einer allgemeineren Regel gelöst wurde.
-
Als formale Logik kann eine Beschreibungslogik, z. B. ALC(D) verwendet wird. Im Falle schleifenfreier Fragmente imperativer Programmierungssprachen ist es jedoch nicht notwendig, die Ausdrucksstärke einer Beschreibungslogik zu verwenden. In diesem Fall ist es ausreichend, die formalen logischen Aussagen der Wissensbasis und der logischen Problemaussage in einem Erfüllbarkeitsmodul-Theorie-Format bereitzustellen, zum Beispiel in der Form einer erweiterten Bool'schen Logik mit konkreten (numerischen) Domänen.
-
Eine erfindungsgemäße Vorrichtung zum Prüfen eines Regelwerks, das für eine automatisierte Überwachung eines technischen Systems, insbesondere wenn die Überwachung auf Sensordaten beruht, auf das Vorhandensein eines Problems verwendet wird, enthält:
- – einen Eingang zum Eingeben des zu prüfenden Regelwerks und eines gewissen Problems, angesichts dessen das Regelwerk geprüft werden soll, und zum Erzeugen von Eingangssignalen, die das zu prüfende Regelwerk und das gewisse Problem darstellen;
- – einen Codierer, der an den Eingang zum Empfangen der Eingangssignale und zum Erzeugen codierter Signale aus den Eingangssignalen, die eine Übersetzung der zu prüfenden Regeln einer Wissensbasis formaler logischer Aussagen und eine Übersetzung des Problems einer formalen logischen Problemaussage darstellen, angeschlossen ist;
- – eine Rechnervorrichtung, die an den Codierer zum Empfangen der codierten Signale angeschlossen ist und zum Ausführen eines Algorithmus gestaltet ist um festzustellen, ob die Wissensbasis logischer Aussagen gemeinsam mit der logischen Problemaussage erfüllbar ist, und zum Erzeugen einer Ausgangsvariablen, deren Wert angibt, ob die Wissensbasis logischer Aussagen gemeinsam mit der logischen Problemaussage erfüllbar ist oder nicht;
- – einen Signalgenerator, der an die Rechnervorrichtung zum Empfangen der Ausgangsvariable angeschlossen ist und zum Erzeugen, anhand des Wertes der Ausgangsvariable, eines Ausgangssignals gestaltet ist, das das Problem als nicht vorhanden beschreibt, wenn der Wert der Ausgangsvariable angibt, dass die Wissensbasis logischer Aussagen gemeinsam mit der logischen Problemaussage erfüllbar ist; und
- – einen Ausgang, der an den Signalgenerator zum Ausgeben des Ausgangssignals angeschlossen ist.
-
Die erfindungsgemäße Vorrichtung ist dazu ausgebildet, das erfindungsgemäße Verfahren auszuführen, und ermöglicht somit dieselben Zielsetzungen zu erreichen, wie das erfindungsgemäße Verfahren.
-
Das wesentliche Merkmal der Erfindung zur Lösung der Probleme ist die Übersetzung von Regeln in ihrem Originalformat in eine formale logische Sprache. Diese Übersetzung ermöglicht, dass bestehende, implementierte und optimierte Algorithmen die Probleme automatisch lösen.
-
Konkret:
- • Die Erfindung verwendet als Eingang die Regeln in ihrem Originalformat.
- • Sie übersetzt diese Regeln in eine Wissensbasis logischer Aussagen, z. B. im Erfüllbarkeitsmodul-Theorie-(SMT)Format. SMT ist ein logischer Formalismus, der sowohl (abstrakte) logische Beziehungen wie auch konkrete numerische Einschränkungen angeben kann. Es gibt viele verfügbare Algorithmen zur Prüfung, ob eine SMT Wissensbasis erfüllbar ist.
- • Gemeinsam mit der Wahl der Aufgabe (Ermitteln einer Widersprüchlichkeit, Gleichwertigkeit oder Subsumption von Regeln) besteht die gesamte Aufgabe dann aus SMT Erfüllbarkeitsproblemen. Jedes der drei Probleme (1), (2) und (3) wird durch zusätzliche logische Aussagen codiert, die gemeinsam mit der Übersetzung der Regeln ein SMT-Erfüllbarkeitsproblem darstellen.
- • Die Übersetzung ist derart, dass die Lösung des SMT-Erfüllbarkeitsproblems direkt zu einer Lösung des Problems führt, das codiert wird. Zum Beispiel ist im Fall einer Gleichwertigkeit die SMT Wissensbasis erfüllbar, wenn und nur wenn die zwei geprüften Regeln nicht gleichwertig sind.
- • Mit Hilfe bestehender Implementierungen von Algorithmen zur Lösung der SMT Erfüllbarkeitsprobleme löst die Erfindung dann automatisch die in Frage 1 angegebenen Probleme (1), (2) und (3). Mit anderen Worten, der automatisierte Reasoning-Support wird mit Hilfe der SMT Erfüllbarkeitsalgorithmen bereitgestellt.
-
Der erfindungsgemäße Schritt liegt u. a. in der exakten Art der Übersetzung von den Originalregeln in die logischen SMT Aussagen. Diese Übersetzung wird derart durchgeführt, dass die Lösung für die Probleme (1), (2) und (3) durch Ermitteln der Lösung für das entsprechende resultierende SMT Erfüllbarkeitsproblem gefunden werden kann.
-
Weitere Merkmale, Eigenschaften und Vorteile der vorliegenden Erfindung gehen aus der folgenden Beschreibung von Ausführungsformen in Verbindung mit den beiliegenden Zeichnungen hervor.
-
1 zeigt schematisch eine Vorrichtung zum Überprüfen eines Regelwerks, das für ein automatisiertes Überwachen eines technischen Systems auf das Vorhandensein eines Problems verwendet wird.
-
2 zeigt eine Darstellung, die das erfindungsgemäße Verfahren zum Prüfen eines Regelwerks zeigt, das für ein automatisiertes Überwachen eines technischen Systems auf das Vorhandensein eines Problems verwendet wird.
-
Eine Vorrichtung zum Prüfen eines Regelwerks, das für eine automatisierte Überwachung eines technischen Systems auf das Vorhandensein eines Problems verwendet wird, wird nun unter Bezugnahme auf 1 beschrieben, wobei die Figur die Vorrichtung schematisch in Form eines Blockdiagramms zeigt. Die Vorrichtung 1 enthält einen Eingang 3 zum Eingeben eines zu prüfenden Regelwerks und einer Definition eines gewissen Problems, angesichts dessen das Regelwerk geprüft werden soll. Zusätzlich erzeugt der Eingang 3 Eingangssignale, die das zu prüfende Regelwerk und das gewisse Problem darstellen.
-
Ein Codierer 5 ist an den Eingang 5 zum Empfangen der Eingangssignale angeschlossen. Zusätzlich ist eine Speichervorrichtung 7 an den Codierer 5 angeschlossen. Die Speichervorrichtung 7 speichert ein Übersetzungsregelwerk, das definiert, wie die Signale, die das zu prüfenden Regelwerk und das gewisse Problem darstellen, in codierte Signale umgewandelt werden sollen, die eine Übersetzung der zu prüfenden Regeln in eine Wissensbasis formaler logischer Aussagen und eine Übersetzung des Problems in eine formale logische Problemaussage darstellen. Anhand der Übersetzungsregeln, die vom Speicher 7 empfangen werden, erzeugt der Codierer 5 aus den Eingangssignalen codierte Signale, die eine Übersetzung der zu prüfenden Regeln in eine Wissensbasis formaler logischer Aussagen darstellen. Zusätzlich erzeugt er eine Übersetzung des Problems, angesichts dessen das Regelwerk geprüft werden soll, in eine formale logische Problemaussage.
-
Die codierten Signale werden zu einer Rechnervorrichtung 9 geleitet, die an den Codierer 5 angeschlossen ist. Auf der Rechnervorrichtung 9 läuft ein Algorithmus auf den codierten Signalen um festzustellen, ob die Wissensbasis logischer Aussagen gemeinsam mit der logischen Problemaussage, die in den codierten Signalen codiert sind, erfüllbar ist. Anhand des Ergebnisses des Algorithmus erzeugt die Rechnervorrichtung 9 eine Ausgangsvariable, deren Wert angibt, ob die Wissensbasis logischer Aussagen gemeinsam mit der logischen Problemaussage, die durch die codierten Signale dargestellt ist, erfüllbar ist.
-
Die Ausgangsvariable wird zu einem Signalgenerator 11 geleitet, der an die Rechnervorrichtung 9 angeschlossen ist. Der Signalgenerator 11 erzeugt anhand des Wertes der Ausgangsvariable ein Ausgangssignal, das das Problem als nicht vorhanden markiert, wenn der Wert der Ausgangsvariable angibt, dass die Wissensbasis logischer Aussagen gemeinsam mit der logischen Problemaussage erfüllbar ist. Ein Ausgang 13, der an den Signalgenerator 11 angeschlossen ist, gibt das Ausgangssignal aus der Vorrichtung 1 aus.
-
Das erfindungsgemäße Verfahren, das mit Hilfe der erfindungsgemäßen Vorrichtung 1 ausgeführt werden kann, wird nun unter Bezugnahme auf 2 beschrieben. In einem ersten Schritt 100 des Verfahrens wird ein Regelwerk, das für ein automatisiertes Überwachen eines technischen Systems verwendet wird, in die Vorrichtung 1 durch den Eingang 3 eingegeben. In Schritt 102 wird eine Definition eines gewissen Problems, angesichts dessen das Regelwerk zu prüfen ist, durch den Eingang 3 der Vorrichtung 1 eingegeben. Die Eingabe des Regelwerks und die Definition des Problems können parallel erfolgen, wie durch 2 angegeben ist. Es ist jedoch auch möglich, die Definition des Problems einzugeben, nachdem das Regelwerk eingegeben wurde, oder umgekehrt. In der vorliegenden Ausführungsform ist das Eingangsformat des Regelwerks eine reine Textdatei, in der jede Textzeile eine Regel des Werks darstellt. Ebenso wird die Definition des Problems als reine Textdatei eingegeben. Aus diesen Textdateien erzeugt der Eingang 3 Signale, die das Regelwerk und die Definition des Problems darstellen.
-
Sowohl das Regelwerk wie auch die Definition des Problems, angesichts dessen das Regelwerk zu prüfen ist, werden in Schritt 104 in eine Wissensbasis formaler logischer Aussagen bzw. eine formale logische Problemaussage übersetzt. Insbesondere werden in Schritt 104 die Signale, die ein Regelwerk und die Definition des Problems darstellen, vom Codierer 5 codiert, um codierte Signale zu bilden, die die Übersetzung der zu prüfenden Regeln für die Wissensbasis formaler logischer Aussagen und die Übersetzung des Problems für die formale logische Problemaussage darstellen.
-
In Schritt 106 wird ein Algorithmus zum Prüfen, ob die Wissensbasis logischer Aussagen gemeinsam mit der logischen Problemaussage erfüllbar ist, an der Wissensbasis und der Problemaussage angewendet. In der Praxis erfolgt dies, indem eine computerimplementierte Version des Algorithmus auf den codierten Signalen mit Hilfe der Rechnervorrichtung 9 laufen gelassen wird. Der computerimplementierte Algorithmus erzeugt eine Ausgangsvariable, deren Wert anzeigt, ob das Ergebnis des Algorithmus ist, dass die Wissensbasis logischer Aussagen gemeinsam mit der logischen Problemaussage erfüllbar ist. Diese Ausgangsvariable wird in ein Ausgangssignal umgewandelt, das z. B. an einen Monitor, einen Drucker, einen Sprachgenerator usw. ausgegeben werden kann und das eine Marke enthält, ob das Problem in dem geprüften Regelwerk vorhanden ist oder nicht. Mit anderen Worten, das Ausgangssignal gibt an, dass das Problem im geprüften Regelwerk nicht vorhanden ist, wenn die Wissensbasis logischer Aussagen gemeinsam mit der logischen Problemaussage erfüllbar ist. Andernfalls gibt es das Vorhandensein des Problems an, angesichts dessen das Regelwerk geprüft wurde. Das Ausgangssignal wird in Schritt 108 erzeugt und ausgegeben.
-
In der Folge sind Einzelheiten der Übersetzung des zu prüfenden Regelwerks und des Problems, angesichts dessen das Regelwerk zu prüfen ist, beschrieben. Insbesondere sind der Eingang und die Codierung der zu prüfenden Regeln ausführlich anhand von Beispielen beschrieben.
-
Eingangsformat
-
Die Regeln sind als Eingabe in die Software in reinen Textdateien gegeben, wobei jede Textzeile eine Regel darstellt. Eine Regel besteht aus sieben, mit Tabulator getrennten Zeichenketten s1, ..., s7, wobei:
- • s1 ein Regelname (eine willkürliche Zeichenkette) ist;
- • s7 ein Variablenname (eine Zeichenkette, beginnend mit 'v' oder mit 't' oder mit 'c') ist; und
- • s2, ..., s6 Terme der folgenden Form sind:
- • T, BAD;
- • eine Fließkommazahl, wie 0,95 oder 100;
- • (+ t1 t2), (– t1 t2), (* t1 t2), oder (/ t1 t2), wobei t1 und t2 auch Terme sind;
- • (< t1 t2), (> t1 t2), wobei t1 und t2 auch Terme sind;
- • (&& t1 t2), (|| t1 t2), wobei t1 und t2 auch Terme sind;
- • (! t1), wobei t1 auch ein Term ist;
- • ein Variablenname, der eine Zeichenkette, beginnend mit v ist;
- • (tvar var num), (tmin var num), (tmax var num), (tsum var num); wobei var ein Variablenname, und num entweder ein Variablenname oder eine positive ganze Zahl ist;
- • (dead_band_break var), wobei var ein Variablenname ist;
- • FREEZE;
- • (bad_status t1), wobei t1 auch ein Term ist (t1 könnte jeder Term sein).
-
Zusätzliche Zeilen in der Eingabe
-
Die Eingangsdateien enthalten zusätzliche Textzeilen neben der Spezifikation der Regeln. Einige dieser Zeilen, aber nicht alle von ihnen, beginnen mit #. Es scheint keine strenge Struktur bei den Dateien zu geben (siehe auch die Beispieldatei RuleFilel.txt). Vor und nach der Spezifikation der Regeln sind unstrukturierte Textzeilen vorhanden.
-
Die einfachste Lösung zum Analysieren solcher Dateien scheint folgende zu sein. Bei der Analyse von Eingangsdateien sollten sämtliche Zeilen, die zu Analysefehlern führen, ignoriert werden und nur Zeilen, die korrekt analysiert werden, sollten in der Übersetzung verwendet werden. In der GUI sollte eine Taste vorhanden sein, die, wenn sie gedrückt wird, eine Nachricht mit allen Zeilen zeigt, die ignoriert wurden.
-
Eingangsvorverarbeitung
-
Ein einfacher Vorverarbeitungsschritt ist am Eingang erforderlich. Für jedes Auftreten eines Subterms (tempop var1 var2) (wobei tempop einer der Operatoren tval, tmax, tmin, tsum ist und var1 und var2 Variablennamen sind) geschieht Folgendes.
- • Wenn es eine andere Regel der Form rname T num 1 1 0 var2 gibt (wobei var2 dasselbe wie im Subterm ist und num eine positive ganze Zahl ist), wird (tempop var1 var2) durch (tempop var1 num) ersetzt.
- • Wenn es keine derartige Regel gibt, wird der gesamte Prozess mit einer Fehlernachricht beendet.
-
Beispiel
-
Wenn wir Regeln:
rvar1 T 5 1 1 0 var1
rvar2 var3 6 1 1 (tval var4 var1) var2
haben, sollten sie verarbeitet werden zu:
rvar1 T 5 1 1 0 var1
rvar2 var3 6 1 1 (tval var4 5) var2
-
Handhabung zeitlicher Operatoren
-
Wir unterstützen die zeitlichen Operatoren tval, tmax, tmin und tsum. Da sich diese Operatoren auf Werte zu verschiedenen Zeitpunkten beziehen, müssen wir auch in der Umwandlung zu Z3 verschiedene Zeitpunkte hinzufügen. Daher ersetzen wir die Variablen t_val und t_def (für Terme t) mit einer Anzahl von Kopien t_val_1, t_def_1, t_val_2, t_def_2, usw. und verändern die Umwandlung der Regeln entsprechend. Dies bedeutet, dass wir die Umwandlung für die (oben spezifizierten) nicht zeitlichen Beziehungen durch Kopien für jeden einzelnen Zeitpunkt ersetzen und dann Umwandlungen für die zeitlichen Beziehungen hinzufügen, die Beziehungen zwischen Variablen zu verschiedenen Zeitpunkten spezifizieren.
-
Damit eine Handhabung zeitlicher Operatoren möglich ist, müssen wir die Werte von Termen zu verschiedenen Zeitpunkten berücksichtigen. Wir verwenden dazu Indizes. Wenn wir zum Beispiel (Z3) Terme t1_def und t1_val haben und 3 Zeitpunkte berücksichtigen, haben wir t1_def_1, t1_val_1, t1_def_2, t1_val_2, t1_def_3 und t1_val_3.
-
Für einige zeitliche Operatoren (tmin, tmax, tsum) müssen wir zusätzlich (interne) Indizes einführen, so dass wir Z3 Regeln erstellen können, die die Werte der Variablen bestimmen. Wir führen zusätzliche Regeln, die die Z3 Variablennamen mit extra Indizes verbinden, zu Z3 Variablennamen mit nur einem Index hinzu (diese Regeln wählen im Grunde einen Wert des zusätzlichen Index zur Verwendung als Version mit nur einem Index).
-
Berechnung der Anzahl von Zeitpunkten
-
Beim Lesen der Eingangsdateien nach der Vorverarbeitung müssen wir die Maximalanzahl m von Zeitpunkten bestimmen, die in unserer Übersetzung erforderlich ist. Dies geschieht wie folgt.
-
Wie speichern die Maximalanzahl n für jede Variable var, so dass ein Subterm (tempop var n) irgendwo in den Eingangsregeln auftritt (wo tempop einer der Operatoren tval, tmax, tmin, tsum ist). Wenn für eine Variable var kein derartiger Term erscheint, stellen wir das Maximum für diese var auf 0. Dann lassen wir das globale Maximum m die Summe aller Maxima n für jede Variable var sein.
-
Dann muss jede Z3-Regel in der Übersetzung m + 1 Mal kopiert werden: einmal für jede Zahl von 1 bis m + 1. In jeder Kopie erhalten alle Variablennamen für eine Zahl i das Suffix _i.
-
Codierung
-
Wir erstellen eine SMT-LIB Spezifikation (in der Form einer Zeichenkette, die aus mehreren Zeilen besteht) anhand der eingegebenen Regeln und des eingegebenen Argumentationsproblems. Diese Zeichenkette besteht aus den folgenden Zeilen.
-
Für jeden Variablennamen v, der irgendwo in den Regeln auftritt, sollte eine Variable mit dem Namen v für jedes i von 1 bis m + 1, unter Verwendung der Zeile:
erstellt werden. Für jeden (Sub)Term t, der als einer der Terme in irgendeiner Regel (einschließlich Variablen) auftritt, sollten zwei Variablen t_def und t_val für jedes i von 1 bis m + 1 unter Verwendung der Zeilen:
erstellt werden. Für jeden solchen Subterm t fügen wir die folgenden Zeilen durch Fallunterscheidung hinzu.
-
Wenn t eine numerische Konstante c ist, fügen wir die Zeilen für jedes i von 1 bis m + 1 hinzu:
-
Wenn t die Form BAD aufweist, fügen wir die Zeile für i von 1 bis m + 1 hinzu:
-
Wenn t die Form T aufweist, fügen wir die Zeilen für i von 1 bis m + 1 hinzu:
-
Wenn t die Form (+ t1 t2), für einige Subterme t1 und t2, aufweist, fügen wir die Zeilen für jedes i von 1 bis m + 1 hinzu:
-
Ebenso für –, * und / (Ersetzen von + in der Subzeichenkette und in den Zeilen durch –, * bzw. /).
-
Wenn t die Form (> t1 t2), für einige Subterme t1 und t2, aufweist, fügen wir die Zeilen für jedes i von 1 bis m + 1 hinzu:
-
Wenn t die Form (< t1 t2) für einige Subterme t1 und t2 aufweist, fügen wir die Zeilen für jedes i von 1 bis m + 1 hinzu:
-
Wenn t die Form (>= t1 t2), für einige Subterme t1 und t2, aufweist, fügen wir die Zeilen für jedes i von 1 bis m + 1 hinzu:
-
Wenn t die Form (<= t1 t2), für einige Subterme t1 und t2, aufweist, fügen wir die Zeilen für jedes i von 1 bis m + 1 hinzu:
-
Wenn t die Form (&& t1 t2), für einige Subterme t1 und t2, aufweist, fügen wir die Zeilen für jedes i von 1 bis m + 1 hinzu:
-
Wenn t die Form (|| t1 t2), für einige Subterme t1 und t2, aufweist, fügen wir die Zeilen für jedes i von 1 bis m + 1 hinzu:
-
Für Subterme t der Form (tval t1 int) sollten die folgenden Zeilen hinzugefügt werden.
- Für jedes i von 1 bis m + 1:
wenn i – int ≤ 0, Hinzufügen der Zeile:
- • wenn i – int ≥ 1, dann sei j = i – int, und Hinzufügen der Zeilen:
-
Für Subterme t der Form (tsum t1 int) sollten die folgenden Zeilen hinzugefügt werden.
-
Für jedes i von 1 bis m + 1 und für jedes k von 1 bis int, Hinzufügen der Zeilen:
-
Für jedes i von 1 bis m + 1, und für jedes k von 1 bis int:
wenn i – int ≤ 0, Hinzufügen der Zeile:
wenn i – int ≥ 1, dann sei j = i – int, dann:
* wenn k = 1, Hinzufügen der Zeilen:
* wenn 1 < k <= int, dann sei l = j + k – 1, und Hinzufügen der Zeilen:
-
In diesem Fall gibt es zwei Indizes. Einer von ihnen dient nur zur Hilfe. Damit wir nur mit einem Index arbeiten können, machen wir Folgendes. Für jedes i von 1 bis m + 1, Hinzufügen der Zeilen:
-
Für Subterme t der Form (tmin t1 int) sollten die folgenden Zeilen hinzugefügt werden.
- Für jedes i von 1 bis m + 1, und für jedes k von 1 bis int, Hinzufügen der Zeilen:
- Für jedes i von 1 bis m + 1, und für jedes k von 1 bis int:
- 0. wenn i – int ≤ 0, Hinzufügen der Zeile:
- 0. wenn i – int ≤ 1, dann sei j = i – int, dann:
- * wenn k = 1, Hinzufügen der Zeilen:
- * wenn 1 < k <= int, dann sei l = j + k – 1, und Hinzufügen der Zeilen:
- 0. In diesem Fall gibt es zwei Indizes. Einer dient nur als Hilfe. Damit wir nur mit einem Index arbeiten können, machen wir Folgendes. Für jedes i von 1 bis m + 1, Hinzufügen der Zeilen:
-
Für Subterme t der Form (tmax t1 int) sollten die folgenden Zeilen hinzugefügt werden.
- 0. Für jedes i von 1 bis m + 1 und für jedes k von 1 bis int:
- 0. wenn i – int ≤ 0, Hinzufügen der Zeile:
- 1. wenn i – int ≥ 1, dann sei j = i – int, dann:
- * wenn k = 1, Hinzufügen der Zeilen:
- * wenn 1 < k <= int, dann sei 1 = j + k – 1, und Hinzufügen der Zeilen:
- 0. In diesem Fall gibt es zwei Indizes. Einer von ihnen dient nur als Hilfe. Damit wir nur mit einem Index arbeiten können, machen wir Folgendes. Für jedes i von 1 bis m + 1, Hinzufügen der Zeilen:
-
Es ist zu beachten, dass zuvor, wo auch immer k – 1 im Inneren einer Zeichenkette geschrieben ist und k einen Wert (von zum Beispiel 5) hat, dieses k – 1 als der Wert von k minus 1 interpretiert werden wollte (wie in dem Beispiel 4).
-
Für Subterme t der Form (dead_band_break var) sollten die folgenden Zeilen hinzugefügt werden. (Die interne Funktionsweise solcher Terme ist so komplex, dass es unklar ist, wie sie in der Übersetzung zu handhaben sind, so dass wir eine konservative Schätzung verwenden und nur Variablen angeben, ohne ihnen zusätzliche Einschränkungen aufzuerlegen).
- • Für jedes i von 1 bis m + 1, Hinzufügen der Zeilen:
-
Für Subterme t der Form FREEZE sollten die folgenden Zeilen hinzugefügt werden. (Die interne Funktionsweise solcher Terme ist so komplex, dass es unklar ist, wie sie in der Übersetzung zu handhaben sind, so dass wir eine konservative Schätzung verwenden und nur Variablen angeben, ohne ihnen zusätzliche Einschränkungen aufzuerlegen).
- • Für jedes i von 1 bis m + 1, Hinzufügen der Zeilen:
-
Für Subterme t der Form (bad_status t1) sollten die folgenden Zeilen hinzugefügt werden.
- 0. Für jedes i von 1 bis m + 1, Hinzufügen der Zeilen:
- 1. Für jedes i von 1 bis m + 1, Hinzufügen der Zeilen:
-
Argumentationsprobleme
-
Das Argumentationsproblem einer Regelsubsumption, die vom Benutzer durch eine Subsummier-Variable s1 und eine subsummierte Variable s2 angegeben wird, ist mit den folgenden Zeilen codiert.
-
-
Das Argumentationsproblem einer Regelgleichwertigkeit, die vom Benutzer durch eine Variable s1 und eine andere Variable s2 angegeben wird, ist mit den folgenden Zeilen codiert.
-
-
Das Argumentationsproblem einer Regelerfüllbarkeit, die vom Benutzer durch eine Variable s angegeben wird, ist mit den folgenden Zeilen codiert.
-
-
Beispiele
-
Die Erfindung funktioniert wie oben angegeben. Hier beschreiben wir einige Beispiele, in welchen die Erfindung konkret angewendet werden kann, um Widersprüchlichkeiten, Gleichwertigkeiten und Subsumptionen nachzuweisen.
-
Widersprüchlichkeitsregeln
-
-
Im vorangehenden Beispiel sind die Variablen 'var7' und 'var11' widersprüchlich (d. h., sie erhalten für keine Variablenzuordnung einen definierten Wert).
-
Die Codierung des obenstehenden Beispiels in das SMT-LIB Format (ohne Codierung eines der Widersprüchlichkeitsprobleme):
-
Das Problem, ob 'var7' folgerichtig ist, wird in die SMT-LIB codiert als:
-
Ebenso wird das Problem, ob 'var11' folgerichtig ist, in die SMT-LIB codiert als:
-
Gleichwertigkeitsregeln
-
Beispielhafte Regeln:
rvar1a | T | (tval var3 2) | 1 | 1 | 0 | var1a |
rvar2a | T | (tmin var1a 3) | 1 | 1 | 0 | var2a |
rvar1b | T | (tmin var3 3) | 1 | 1 | 0 | var1b |
rvar2b | T | (tval var1b 2) | 1 | 1 | 0 | var2b |
-
In dem obenstehenden Beispiel sind die Variablen 'var2a' und 'var2b' gleichwertig (d. h., für jede Zuordnung einer Variable erhalten sie denselben Wert).
-
Die Codierung des obenstehenden Beispiels in das SMT-LIB Format (ohne die Codierung des Gleichwertigkeitsproblems):
-
Das Problem, ob Variablen 'var2a' und 'var2b' gleichwertig sind, ist in SMT-LIB codiert als:
-
Subsummierungsregeln
-
-
In dem obenstehenden Beispiel ist die Variable 'var14' durch die Variable 'var15' subsummiert (d. h., für jede Zuordnung einer Variable, wenn 'var15' ein definierter Wert wird, wird auch 'var14' dieser definierte Wert, aber nicht unbedingt umgekehrt).
-
Die Codierung des obengenannten Beispiels im SMT-LIB Format (ohne die Codierung des Subsumptionsproblems):
-
Das Problem, ob var1 var2 subsummiert, ist in SMT-LIB codiert als:
-
Weitere Einzelheiten des erfindungsgemäßen Verfahrens sind im folgenden Teil der Patentschrift beschrieben.