Integration von Entscheidungsverfahren in den

Werbung
Integration von Entscheidungsverfahren in den
induktiven Theorembeweiser QuodLibet
René Rondot
Oktober 2004
Diplomarbeit
Technische Universität Kaiserslautern
Betreuer:
Prof. Dr. Jürgen Avenhaus
Dipl.-Inform. Tobias Schmidt-Samoa
Inhaltsverzeichnis
0. Motivation und Zielsetzung
1
1. Grundlagen
1.1. Theoretische Grundlagen und Schreibweisen . . . . . . . . .
1.1.1. Syntax von Spezifikationen mit Konstruktoren . . .
1.1.2. Semantik von Spezifikationen mit Konstruktoren . .
1.2. Der Theorembeweiser QuodLibet . . . . . . . . . . . . . .
1.2.1. Anwendbarkeitsbereich und generelle Funktionsweise
1.2.2. Inferenzsystem . . . . . . . . . . . . . . . . . . . . .
1.2.3. Beweiszustandsgraphen . . . . . . . . . . . . . . . .
1.2.4. Taktiken . . . . . . . . . . . . . . . . . . . . . . . . .
1.3. Entscheidungsverfahren . . . . . . . . . . . . . . . . . . . .
1.4. Lineare Arithmetik . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
3
3
4
6
6
7
10
12
12
13
2. Integration der linearen Arithmetik in QuodLibet
2.1. Die Darstellung natürlicher Zahlen . . . . . . . . .
2.2. Operatoren und Prädikate der linearen Arithmetik
2.3. Terme in Polynomdarstellung . . . . . . . . . . . .
2.4. Literale in Polynomdarstellung . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
17
17
18
21
28
3. Integration eines Entscheidungsverfahrens für lineare Arithmetik
3.1. Das Entscheidungsverfahren . . . . . . . . . . . . . . . . . . .
3.2. Inferenzregeln für das Entscheidungsverfahren . . . . . . . . .
3.2.1. Vorbemerkungen . . . . . . . . . . . . . . . . . . . . .
3.2.2. Normalisierung . . . . . . . . . . . . . . . . . . . . . .
3.2.3. Tautologien . . . . . . . . . . . . . . . . . . . . . . . .
3.2.4. Redundanz-Elimination . . . . . . . . . . . . . . . . .
3.2.5. Variablen-Elimination . . . . . . . . . . . . . . . . . .
3.2.6. Benutzen negativer Literale . . . . . . . . . . . . . . .
3.3. Taktiken für das Entscheidungsverfahren . . . . . . . . . . . .
3.3.1. Erweiterung des Moduls Simplification . . . . . . . . .
3.3.2. Möglichkeiten zur Verbesserung der Taktiken . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
35
35
38
38
43
46
48
51
59
61
61
64
4. Auswertung
4.1. Auswirkung der Integration des
spezifikationen . . . . . . . . .
4.1.1. Das Beispiel √
ggT . . . .
4.1.2. Das Beispiel 2 . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
67
Entscheidungsverfahrens
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
i
in Beispiel. . . . . . .
. . . . . . .
. . . . . . .
67
68
69
Inhaltsverzeichnis
4.1.3. Das Beispiel 91er-Funktion . . . . . . . . . . . . . . . . . . .
4.2. Grundtendenzen in den Auswertungen der Beispiele . . . . . . . . .
70
71
5. Zusammenfassung und Ausblick
73
A. Beweise der verwendeten Lemmata
75
B. Beispielspezifikationen
B.1. Das Beispiel √
ggT . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
B.2. Das Beispiel 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
B.3. Das Beispiel 91er-Funktion . . . . . . . . . . . . . . . . . . . . . . .
93
93
94
94
Literaturverzeichnis
97
ii
0. Motivation und Zielsetzung
Theorembeweiser für die induktive Theorie haben bei der Beweisfindung einen sehr
großen Suchraum zu untersuchen. Dies liegt daran, dass im Vergleich zu deduktiven
Systemen Induktionsordnungen bestimmt und Lemmata spekuliert werden müssen.
Zudem ist das Problem, ob eine Aussage induktiv gültig ist, nicht rekursiv aufzählbar. Derzeit existierende Systeme sind daher in der Regel nur interaktiv einsetzbar
und benötigen einen sehr hohen Rechenaufwand. Dies führt dazu, dass ihre Bedienung kompliziert und zeitaufwändig ist.
Für viele spezielle Anwendungsgebiete existieren jedoch Verfahren, die es ermöglichen, deutlich schneller und vollkommen automatisch zu entscheiden, ob eine Aussage gültig ist oder nicht. Solche sogenannten Entscheidungsverfahren existieren beispielsweise für Teile der Arithmetik der natürlichen Zahlen und die Theorie der
Listen. Es scheint daher sinnvoll, solche Entscheidungsverfahren für häufig auftretende Theorien mit einem induktiven Theorembeweiser zu kombinieren. Das Entscheidungsverfahren kann immer dann genutzt werden, wenn während eines Beweises
Probleme der entsprechenden Theorie auftreten. Dadurch sollte es möglich sein, die
Komplexität eines allgemeinen induktiven Theorembeweisers für diese Probleme zu
vermeiden und durch die Verwendung eines spezialisierten Verfahrens schneller zum
Ziel zu kommen.
Ziel dieser Arbeit ist es, die Integration von Entscheidungsverfahren in einen induktiven Theorembeweiser am Beispiel der linearen Arithmetik über den natürlichen Zahlen zu untersuchen. Für diese Theorie sind bereits seit längerer Zeit einige
Entscheidungsverfahren bekannt. Ein solches Entscheidungsverfahren soll in den induktiven Theorembeweiser QuodLibet integriert werden, der an der Universität
Kaiserslautern entwickelt wurde [Küh00]. Dabei wird untersucht, wie diese Integration möglich ist und welche Vorteile und Nachteile sie bringt. Der erhoffte positive
Effekt sollte vor allem eine deutliche Reduzierung der Beweiskomplexität sowie der
notwendigen manuellen Eingriffe in den Beweisvorgang sein. Dabei ist insbesondere
zu erwarten, dass die Zahl der Lemmata, die für einen Beweis zu einer Spezifikation
mit natürlichen Zahlen benötigt werden, stark verringert werden kann. Als Nachteil
ist ein relativ hoher Aufwand für die Zusammenarbeit des Entscheidungsverfahrens
mit dem restlichen System zu erwarten. Diese Zusammenarbeit ist notwendig, da
das Entscheidungsverfahren auch für eine erweiterte Theorie mit definierten Operatoren verwendet werden soll. Zudem wird das Gesamtsystem durch die Integration
des Entscheidungsverfahrens größer und somit für den Benutzer unübersichtlicher.
Kann der Beweisvorgang wie erhofft durch die Integration des Entscheidungsverfahrens jedoch stärker automatisiert werden, fällt dieser Nachteil weniger ins Gewicht.
Im ersten Kapitel dieser Arbeit werden zunächst die Grundlagen erläutert. Dazu
gehören die theoretischen Grundlagen über die Syntax und Semantik der verwen-
1
Kapitel 0. Motivation und Zielsetzung
deten Spezifikationen. Außerdem wird der induktive Theorembeweiser QuodLibet
in seiner bisherigen Form beschrieben. In diesen Theorembeweiser soll ein Entscheidungsverfahren für lineare Arithmetik integriert werden, weshalb die beiden letzten
Abschnitte des ersten Kapitels allgemeine Grundlagen zu Entscheidungsverfahren
und eine Beschreibung der linearen Arithmetik enthalten.
Wie die lineare Arithmetik in den Theorembeweiser QuodLibet integriert werden kann, ist Thema des zweiten Kapitels. Da QuodLibet bisher keine Strukturen
für natürliche Zahlen enthielt, wird zunächst beschrieben, wie diese in das System
integriert werden können. Anschließend wird erläutert, wie die Operatoren und Prädikate definiert sind und wie diese in das System integriert werden. Die beiden
letzten Abschnitte des zweiten Kapitels sind der Polynomdarstellung von Termen
und Literalen gewidmet. Hier wird beschrieben, wie Terme und Literale der linearen
Arithmetik in eine Polynom-Normalform überführt werden können, mit der dann
effizient ein Entscheidungsverfahren ausgeführt werden kann.
Die Integration des Entscheidungsverfahrens selbst wird dann im dritten Kapitel
behandelt. Hier wird zunächst eine Menge neuer Inferenzregeln vorgestellt, mit deren
Hilfe die einzelnen Schritte des Entscheidungsverfahrens realisiert werden. Um diese
Inferenzregeln so in den formalen Rahmen des Systems QuodLibet integrieren zu
können, dass zentrale Ergebnisse über Eigenschaften des Systems gültig bleiben, wird
die Korrektheit und Sicherheit dieser Inferenzregeln bewiesen. Im Anschluss wird
beschrieben, wie diese neuen Inferenzregeln in die Taktiken des Theorembeweisers
eingearbeitet werden können.
Das vierte Kapitel ist schließlich der Auswertung der Ergebnisse der in den beiden vorhergehenden Kapitel beschriebenen Änderungen gewidmet. Hier wird aufgrund von empirisch erhobenen Daten ausgewertet, wie sich die Integration des Entscheidungsverfahrens bemerkbar macht und wie stark die erhofften positiven Effekte
durch die negativen Effekte beeinträchtigt werden.
Zuletzt werden im fünften Kapitel die Ergebnisse der Arbeit zusammengefasst
und ein Ausblick auf weitere Entwicklungsmöglichkeiten gegeben, die sich basierend
auf den erreichten Ergebnissen aufzeigen.
2
1. Grundlagen
1.1. Theoretische Grundlagen und Schreibweisen
Die dieser Arbeit zugrunde liegenden theoretischen Konzepte und Schreibweisen basieren auf [Küh00] und [Ave95]. Hier wird nur eine kurze Übersicht über die für diese
Arbeit wichtigen Konzepte gegeben, weitere Details und Beweise einiger Aussagen
können in den beiden angegebenen Werken nachgelesen werden.
1.1.1. Syntax von Spezifikationen mit Konstruktoren
Eine Signatur sig = (S, F, α) besteht aus einer Menge von Sortensymbolen S, einer
Menge von Funktionssymbolen F und einer Stelligkeitsfunktion α, die F auf S +
abbildet. Zu jeder Signatur sig = (S, F, α) wird für jede Sorte s ∈ S eine Menge von
Variablensymbolen Vs definiert. Diese Mengen sind paarweise disjunkt und zudem
disjunkt zu F . Die Menge aller Variablensymbole ist V = (Vs )s∈S . Zusammen mit
diesen Variablenmengen beschreibt die Signatur wie üblich die Menge der korrekten
Terme T (sig, V )s einer Sorte s sowie die Menge aller korrekten Terme T (sig, V ) =
(T (sig, V )s )s∈S . Die Menge aller variablenfreien Grundterme wird mit GT (sig) =
(GT (sig)s )s∈S bezeichnet.
Eine Position p in einem Term t ist eine Folge von natürlichen Zahlen. Mit t/p
wird der Teilterm von t an der Position p bezeichnet und t[u]p bezeichnet den Term,
der aus t durch Ersetzen des Teilterms t/p durch u entsteht. Mit P os(t) wird die
Menge aller Positionen in t bezeichnet.
Ein Gewicht über einer Signatur sig und einer Variablenmenge V ist eine Folge
von Termen (t1 , . . . , tk ), so dass 0 ≤ k ≤ k0 für einen festen Wert k0 und t1 , . . . , tk ∈
T (sig, V ).
Eine Gleichung ist ein Term-Paar t1 = t2 , so dass t1 , t2 ∈ T (sig, V )s für eine
Sorte s ∈ S. Ein Ordungsatom ist ein Ausdruck der Form w1 < w2 , wobei w1
und w2 Gewichte sind. Ein Definiertheitsatom ist ein Ausdruck der Form def (t),
wobei t ein Term ist. Ein Atom ist eine Gleichung, ein Ordnungsatom oder ein
Definiertheitsatom. Ein positives Literal ist ein Atom und ein negatives Literal ein
negiertes Atom in der Form ¬A, wobei A ein Atom ist. Ein Literal λ ist ein positives
oder negatives Literal. Das Komplement λ eines positiven Literals λ ist ¬λ und das
.
Komplement ¬λ eines negativen Literals ¬λ ist λ. Die Schreibweise t1 = t2 steht für
˙ t2 für t1 6= t2 oder t2 6= t1 .
t1 = t2 oder t2 = t1 und analog steht t1 6=
Eine Klausel ist eine (möglicherweise leere) Folge von Literalen λ1 . . . λn , zur besseren Lesbarkeit und um den disjunktiven Charakter der Klauseln hervorzuheben
3
Kapitel 1. Grundlagen
meist geschrieben als λ1 ∨ . . . ∨ λn . Die leere Klausel wird als geschrieben. Eine
bedingte Gleichung ist ein Ausdruck der Form l = r ← ∆ wobei ∆ eine (möglicherweise leere) Folge von Literalen, den sogenannten Bedingungsliteralen, ist. Die
Klauseldarstellung der bedingten Gleichung l = r ← λ1 . . . λn ist (l = r)λ1 . . . λn .
Für Ausdrücke (das heißt Terme, Literale, Klauseln oder bedingte Gleichungen)
e1 , . . . , en bezeichnet Var(e1 , . . . , en ) die Vereinigung der Mengen der Variablen, die
in den Ausdrücken e1 , . . . , en vorkommen. Die Definition von Positionen wird auf
Literale fortgesetzt, indem bei Definiertheitsliteralen die Positionen des Terms verwendet werden und bei Literalen der Form l op r die erste Stelle der Position
bezeichnet, ob die restliche Position auf den linken Term (1) oder auf den rechten
Term (2) bezogen ist. Dementsprechend werden für ein Literal analog zu Termen die
Bezeichnungen λ/p, λ[u]p und Pos(λ) verwendet.
Eine Spezifikation mit Konstruktoren spec = (sig, C, E) besteht aus einer Signatur
sig, einer Menge der aus den Funktionssymbolen F ausgezeichneten Konstruktorsymbole C und einer Menge von bedingten Gleichungen E, den sogenannten definierenden Gleichungen. Die Konstruktoren C heißen frei, wenn jede definierende Gleichung mindestens ein Nicht-Konstruktorsymbol außerhalb der Bedingungsliterale enthält. Entsprechend der Unterteilung der Funktionssymbole in die Konstruktorsymbole C und die Symbole für definierte Operatoren D = F \ C wird
auch die Menge der Variablensymbole V disjunkt in sogenannte Konstruktorvariablen V C = (VsC )s∈S und generelle Variablen V G = (VsG )s∈S unterteilt, so dass gilt
V = V C ∪ V G und V C ∩ V G = ∅.
Eine Substitution σ : V −→ T (sig, V ) wird Konstruktorsubstitution genannt, falls
σ(V C ) ⊆ T (sig C , V C ) und σ wird induktive Substitution genannt, falls σ(V C ) ⊆
GT (sig C , V C ) und σ(V G ) ⊆ T (sig, V G ).
Die Intention dieser Definitionen ist es, durch eine Spezifikation mit Konstruktoren
einen Datentyp zu spezifizieren, dessen Daten die Konstruktorgrundterme sind und
auf dem durch die Gleichungen E Operatoren definiert werden. Dies wird durch die
folgende Semantik formalisiert.
1.1.2. Semantik von Spezifikationen mit Konstruktoren
Eine sig-Algebra A ist ein Tupel (A, F A ), wobei A = (As )s∈S eine (nicht-leere) Trägermenge für die Sorten der Signatur und F A = (f A )f ∈F eine Menge von Funktionen
passender Stelligkeit ist, die die Funktionssymbole der Signatur interpretieren.
Ein sig-Homomorphismus h : A −→ B zwischen zwei sig-Algebren A und B ist
eine Familie h = (hs )s∈S von Funktionen hs : As −→ Bs , so dass für alle ai ∈ Asi
gilt:
hs (f A (a1 , . . . , an )) = f B (hs1 (a1 ), . . . , hsn (an ))
Mit evalA wird der eindeutige sig-Homomorphismus von GT (sig) auf eine sigAlgebra A bezeichnet, der durch
evalA (f (t1 , . . . , tn )) = f A (evalA (t1 ), . . . , evalA (tn ))
4
1.1. Theoretische Grundlagen und Schreibweisen
für alle f ∈ F und ti ∈ GT (sig)si definiert ist. Statt evalA (t) wird üblicherweise tA
geschrieben.
Definition 1.1 Das Datenredukt einer sig-Algebra A = (A, F A ) ist die sig C -AlC
gebra A = (AC , C A ), die folgende Bedigungen erfüllt:
A
C
• Für jedes s ∈ S ist AC
s = {t ∈ As | t ∈ GT (sig )s }.
C
A (a , . . . , a ) = cA (a , . . . , a ), wobei
• Für jedes c ∈ C und jedes ai ∈ AC
1
n
1
n
si gilt c
α(c) = s1 . . . sn s.
Zur Auswertung von Ordnungsliteralen wird die Ordnung <lex
A verwendet, die die
strikte Komponente der lexikographischen Erweiterung ≤lex
der
wie folgt definierten
A
Ordnung ist:
Definition 1.2 Sei sig = (S, F, α) eine Signatur, so dass C ⊆ F eine Konstruktormenge für sig ist und sei A = (A, F A ) eine sig-Algebra. Die mit A assoziierte
Relation ≤A ist definiert auf A durch a1 ≤A a2 genau dann, wenn
• a1 = a2 oder
• es gibt t1 , t2 ∈ GT (sig C ), so dass tA
i = ai für i = 1, 2 und |t1 | < |t2 |.
Die Modellsemantik einer Spezifikation mit Konstruktoren kann dann wie folgt
definiert werden:
Definition 1.3 Sei sig eine Signatur und A = (A, F A ) eine sig-Algebra.
• Sei X ⊆ V . Ein Belegung von X in A ist eine Funktion ϕ : X −→ A, so
C
G
dass ϕ(x) ∈ AC
s für jedes x ∈ X ∩ Vs und ϕ(x) ∈ As für jedes x ∈ X ∩ Vs .
Mit evalϕA wird der eindeutige sig-Homomorphismus von T (sig, X) nach A
bezeichnet, der ϕ erweitert. Weiterhin wird evalϕA so erweitert, dass für ein
Gewicht w = (t1 , . . . , tk ) gilt: evalϕA (w) = (evalϕA (t1 ), . . . , evalϕA (tk )).
• Sei ϕ eine Belegung von V in A. Dann erfüllt A
– eine Gleichung t1 = t2 mit ϕ, falls evalϕA (t1 ) = evalϕA (t2 ),
A
– ein Ordnungsatom w1 < w2 mit ϕ, falls evalϕA (w1 ) <lex
A evalϕ (w2 ) und
– ein Definiertheitsatom def (t) mit ϕ, falls evalϕA (t) ∈ AC
s.
A erfüllt ein negatives Literal ¬λ mit ϕ falls A nicht λ mit ϕ erfüllt. Weiterhin
erfüllt A eine Klausel Γ mit ϕ falls ein Literal in Γ existiert, das A mit ϕ
erfüllt.
• Eine Klausel Γ ist gültig in A, falls A die Klausel Γ mit jeder Belegung von V
in A erfüllt (Schreibweise: A |= Γ). Sei K eine Klasse von sig-Algebren und
E eine Klauselmenge. Man schreibt K |= E genau dann, wenn A |= Γ für jede
sig-Algebra A ∈ K und jede Klausel Γ ∈ E.
5
Kapitel 1. Grundlagen
Definition 1.4 Sei spec = (sig, C, E) eine Spezifikation mit Konstruktoren. Eine
sig-Algebra A heißt (sig-)Modell von spec falls die Klauseldarstellung jeder bedingten Gleichung E in A gültig ist. Die Klasse aller sig-Modelle von spec wird mit
Mod(spec) bezeichnet.
Definition 1.5 Sei spec = (sig, C, E) eine Spezifikation mit Konstruktoren. Ein
sig-Modell A von spec wird ein Datenmodell genannt, falls für alle KonstruktorA
Grundterme t1 , t2 ∈ GT (sig C ), tA
1 = t2 impliziert, dass Mod(spec) |= t1 = t2 . Die
Klasse aller Datenmodelle von spec wird mit DMod(spec) bezeichnet.
Definition 1.6 Ein Spezifikation spec heißt zulässig, falls DMod(spec) 6= ∅.
Eine Klausel Γ heißt induktiv gültig oder induktives Theorem bezüglich einer
zulässigen Spezifikation mit Konstruktoren spec, falls DMod(spec) |= Γ.
Ein induktiver Theorembeweiser hat nun zur Aufgabe, die induktive Gültigkeit
einer gegebenen Klausel nachzuweisen. Das folgende Lemma bietet hierfür ein nützliches Kriterium für die Gültigkeit einer Klausel in einer sig-Algebra.
Lemma 1.1 (nach [Küh00, S. 34]) Wenn A eine sig-Algebra und Γ eine Klausel
ist, dann gilt A 6|= Γ genau dann, wenn es eine induktive Substitution σ und eine
Belegung ϕ von V G in A gibt, so dass A nicht Γσ mit ϕ erfüllt. Das Tupel (Γ, σ, ϕ)
wird dann ein A-Gegenbeispiel genannt.
Basierend auf diesem Lemma ist es möglich, eine Klausel als induktiv gültig nachzuweisen, indem systematisch die Existenz eines Gegenbeispiels ausgeschlossen wird.
Dieses Verfahren ist die Grundlage des induktiven Theorembeweisers QuodLibet.
1.2. Der Theorembeweiser QuodLibet
In den folgenden Abschnitten werden einige grundlegende Eigenschaften des Theorembeweisers QuodLibet beschrieben, die für die folgenden Kapitel wichtig sind. Eine detaillierte Darstellung des gesamten Systems findet sich in [Küh00] und [Kai02].
1.2.1. Anwendbarkeitsbereich und generelle Funktionsweise
QuodLibet ist ein Beweissystem zum Nachweis von induktiven Theoremen zu positiv/negativ bedingten Spezifikationen mit freien Konstruktoren. Dabei sind auch
partiell spezifizierte Funktionen zugelassen. Die Zulässigkeit der Spezifikation, das
heißt, die Tatsache, dass die Klasse der Datenmodelle der Spezifikation nicht leer
ist, wird von QuodLibet automatisch anhand eines hinreichenden, syntaktischen
Kriteriums überprüft.
Um ein induktives Theorem nachzuweisen, arbeitet QuodLibet nach dem Prinzip
der Verkleinerung von Gegenbeispielen entsprechend einer wohlfundierten Ordnung.
Diese wird solange durchgeführt, bis die Existenz oder Nicht-Existenz eines Gegenbeispiels evident wird. Dieses Verfahren ist sehr stark an der mathematischen
6
1.2. Der Theorembeweiser QuodLibet
Vorgehensweise beim Finden von Induktionsbeweisen orientiert, die Fermat bereits
1659 unter dem Namen descente infinie beschrieb [Wir04].
Der Vorgang wird durch ein festes Inferenzsystem beschrieben, das gültige Schritte zur Verkleinerung von Gegenbeispielen und für die Erkennung der Nicht-Existenz eines Gegenbeispiels beschreibt. Jede Inferenzregel überführt ein Ziel in eine
(möglicherweise leere) Menge von Teilzielen. Das Inferenzsystem enthält auch Inferenzregeln zum induktiven Anwenden von Zielen. Hierbei werden automatisch neue
Teilziele erzeugt, die sogenannten induktiven Beweisverpflichtungen, die den Nachweis fordern, dass die Instanz, für die die Induktionsannahme angewandt wurde, in
einer wohlfundierten Induktionsordnung kleiner als das ursprüngliche Beweisziel ist.
Die in QuodLibet verwendete semantische Induktionsordnung -A basiert darauf,
jedem Beweisziel Γ ein Gewicht w zuzuordnen, das gewissermaßen die Größe“ des
”
Beweisziels angibt. Daher werden Beweisziele in der Form hΓ ; wi angegeben, das
heißt als Tupel einer Klausel Γ mit dem zugehörigen Gewicht w.
1.2.2. Inferenzsystem
Das Inferenzsystem ist der Kern von QuodLibet. Bisher enthielt QuodLibet 25
Inferenzregeln [Küh00]. Allgemein hat eine Inferenzregel des Kalküls von QuodLibet folgende Form:
hΓ ; wi
hΓ1 ; w1 i . . . hΓn ; wn i
mit hΠ1 ; wˆ1 iU1 , . . . , hΠk ; wˆk iUk
falls Anwendbarkeitsbedingung
wobei n, k ∈ und Uj ∈ {I, L} für j = 1, . . . , k. Eine solche Inferenzregel kann verwendet werden, um ein Ziel hΓ ; wi zu den neuen (Teil-)Zielen hΓ1 ; w1 i . . . hΓn ; wn i
abzuleiten, vorausgesetzt die Anwendbarkeitsbedingung ist erfüllt. Die Inferenzregel
kann dazu weitere Ziele hΠ1 ; wˆ1 iU1 , . . . , hΠk ; wˆk iUk nutzen, die auf hΓ; wi entweder
als Induktionsannahme (Ui = I) oder als Axiom oder Lemma (Ui = L) angewandt
werden. Eine Inferenzregel heißt applikativ, falls k > 0 und nicht-applikativ, falls
k = 0. Applikative Inferenzregeln beinhalten die Anwendung einer definierenden
Gleichung, eines Lemmas oder einer Induktionsvoraussetzung auf ein Ziel. Nicht-applikative Inferenzregeln sind z. B. das Reinigen einer Klausel oder die Aufspaltung
nach Fällen.
N
Im folgenden Abschnitt werden zunächst zwei wichtige Eigenschaften der Inferenzregeln von QuodLibet vorgestellt. Im Anschluss daran werden drei Beispiele
für Inferenzregeln beschrieben.
Eigenschaften von Inferenzregeln
Für das Gesamtsystem sind folgende Eigenschaften gefordert:
• Korrektheit: Wenn mit Hilfe des Systems ein abgeschlossener Beweisbaum gefunden wird, so ist das Ziel ein induktives Theorem.
7
Kapitel 1. Grundlagen
• Widerspruchskorrektheit: Wenn ein Ziel mit dem System zu einem Widerspruch (in der Regel in Gestalt der leeren Klausel) abgeleitet werden kann, so
ist das Ziel kein induktives Theorem.
Da Veränderungen am Zustand der Inferenzmaschine generell nur durch Anwendung
einer der Inferenzregeln durchgeführt werden können, kann der Nachweis dieser beiden Eigenschaften auf lokale Eigenschaften der Inferenzregeln zurückgeführt werden.
Wie in [Küh00] gezeigt wird, genügt für den Nachweis der Korrektheit des gesamten Kalküls der Nachweis der Korrektheit der einzelnen Inferenzregeln und für den
Nachweis der Widerspruchskorrektheit der Nachweis der Sicherheit der Inferenzregeln.
Definition 1.7 Eine Inferenzregel heißt korrekt, falls für jede zulässige Spezifikation spec und jede Instanz
hΓ ; wi
hΓ1 ; w1 i . . . hΓn ; wn i
mit hΠ1 ; wˆ1 iU1 , . . . , hΠk ; wˆk iUk
der Inferenzregel sowie für jedes Datenmodell A ∈ DMod(spec) und jedes A-Gegenbeispiel der Form (hΓ ; wi, σ, ϕ) eine der folgenden Aussagen gilt:
1. Es gibt ein i ∈ {1, . . . , n} und ein A-Gegenbeispiel der Form (hΓi ; wi i, τ, ψ),
so dass (hΓi ; wi i, τ, ψ) -A (hΓ ; wi, σ, ϕ).
2. Es gibt ein j ∈ {1, . . . , k}, so dass Uj = L und Πj nicht induktiv gültig in spec
ist.
3. Es gibt ein j ∈ {1, . . . , k} und ein A-Gegenbeispiel der Form (hΠj ; ŵj i, τ, ψ),
so dass Uj = I und (hΠj ; ŵj i, τ, ψ) ≺A (hΓ ; wi, σ, ϕ).
Sicherheit bedeutet, dass durch die Anwendung einer Inferenzregel keine neuen
Gegenbeispiele eingeführt werden:
Definition 1.8 Eine Inferenzregel heißt sicher, falls für jede zulässige Spezifikation
spec und jede Instanz
hΓ ; wi
hΓ1 ; w1 i . . . hΓn ; wn i
mit hΠ1 ; wˆ1 iU1 , . . . , hΠk ; wˆk iUk
der Inferenzregel gilt, dass aus der induktiven Gültigkeit von jeder der Klauseln
{Γ, Π1 , . . . , Πk } bezüglich spec die induktive Gültigkeit jeder der Klauseln {Γ1 , . . . , Γn }
bezüglich spec folgt.
Nachdem nun diese Eigenschaften von Inferenzregeln definiert wurden, werden
in den folgenden Abschnitten drei Beispiele für Inferenzregeln von QuodLibet beschrieben, die diese Eigenschaften haben. Eine Beschreibung der weiteren Inferenzregeln kann in [Küh00] und [Kai02] nachgelesen werden.
8
1.2. Der Theorembeweiser QuodLibet
Beispiel: Literal Hinzufügen
Ein Beispiel für eine nicht-applikative Inferenzregel ist die Regel Literal Hinzufügen.
Um diese zu beschreiben, wird die folgende Definition benötigt:
N
Definition 1.9 Sei Γ = λ1 , . . . , λn eine Klausel mit n ∈ . Dann besteht die aus
der Klausel Γ resultierende Fallunterscheidung aus den Klauseln Λ1 , . . . , λn und Λ,
so dass
1. Λi = λi , λi−1 , λi−2 , . . . , λ1 für i = 1, . . . , n
2. Λ = λn , . . . , λ1
Die Inferenzregel Literal Hinzufügen realisiert genau diese Fallunterscheidung und
kann wie folgt formal beschrieben werden:
Literal Hinzufügen
falls Λ1 , . . . , Λn , Λ die Fallunterscheidung ist, die aus den Literalen
λ1 , . . . , λn für n > 0 resultiert
hΓ ; wi
hΛ1 , Γ ; wi . . . hΛn , Γ ; wi hΛ, Γ ; wi
Wendet man diese Inferenzregel mit den Literalen ¬def (f (x)) , ¬def (g(y)) an, so
kann beispielsweise das Ziel hf (x) + g(y) = g(y) + f (x) ; wi zu den Zielen
hdef (f (x)) , f (x) + g(y) = g(y) + f (x) ; (f (x), g(y))i
hdef (g(y)) , ¬def (f (x)) , f (x) + g(y) = g(y) + f (x) ; wi
h¬def (g(y)) , ¬def (f (x)) , f (x) + g(y) = g(y) + f (x) ; wi
abgeleitet werden.
Beispiel: Konstant Umschreiben
Eine weitere nicht-applikative Inferenzregel ist die Regel Konstant Umschreiben. Diese
˙ t2 aus, um in einem andeInferenzregel nutzt ein negatives Literal der Form t1 6=
ren Literal den Term t1 durch t2 zu ersetzen. Sie kann folgendermaßen beschrieben
werden:
Konstant Umschreiben
falls
hΓ, λ[t1 ]p , ∆ ; wi
hΓ, λ[t2 ]p , ∆ ; wi
• p ∈ Pos(λ) und λ/p = t1 und
˙ t2 in Γ, ∆ gibt.
• es ein Literal t1 6=
Mit der Inferenzregel Konstant Umschreiben kann demnach beispielsweise das Ziel
hx 6= y ∨ y 6= z ∨ x = z ; wi in das Ziel hx 6= y ∨ x 6= z ∨ x = z ; wi abgeleitet
werden.
9
Kapitel 1. Grundlagen
Beispiel: Nicht-induktive Termersetzung
Eine applikative Inferenzregel ist zum Beispiel die Regel Nicht-induktive Termersetzung. Um diese beschreiben zu können, wird zunächst folgende Definition benötigt:
Definition 1.10 Die Menge von Definiertheitsbedingungen einer Substitution µ und
einer Klausel Γ ist definiert als
DefCond(µ, Γ) = {¬def (xµ) | x ∈ Var(Γ) ∩ V C und xµ 6∈ T (sig C , V C )}
Damit kann nun die Inferenzregel Nicht-induktive Termersetzung wie folgt formuliert werden:
Nicht-induktive Termersetzung
hΓ, λ, ∆ ; wi
.
mit hΠ, l = r, Σ ; ŵiL
hΛ1 , Γ, λ, ∆ ; wi . . . hΛn , Γ, λ, ∆ ; wi hΛ, Γ, λ[rµ]p , ∆ ; wi
falls es eine Position p ∈ Pos(λ), eine Substitution µ und eine Klausel Θ gibt, so
dass
• λ/p = lµ
.
• Γ, ∆, lµ = rµ, Θ enthält DefCond(µ, (Π, l = r, Σ)), Πµ, Σµ
• Λ1 , . . . , Λn , Λ ist die aus Θ resultierende Fallunterscheidung
Mit Hilfe dieser Inferenzregel kann beispielsweise unter Anwendung des Lemmas
hx + y = y + x ; wi mit der Substitution µ = {x ← f(u), y ← v} auf die Position
p = 1 das Ziel hf(u) + v = v + f(u) ; wi zu den Zielen
hdef (f(u)) ∨ f(u) + v = v + f(u) ; wi
h¬def (f(u)) ∨ v + f(u) = v + f(u) ; wi
abgeleitet werden.
1.2.3. Beweiszustandsgraphen
Beweise und Beweisversuche der Lemmata werden in sogenannten Beweiszustandsgraphen dargestellt. Diese Beweiszustandsgraphen sind und-oder-Graphen, die Zielknoten und Inferenzknoten als und- bzw. oder-Knoten enthalten. Für jedes zu beweisende Lemma wird ein neuer Zielknoten erzeugt. Eine Veränderung an einem Beweiszustandsgraphen ist nur möglich, indem auf einen Zielknoten eine Inferenzregel
angewendet wird. Dadurch erhält dieser Zielknoten als Kind einen Inferenzknoten,
dessen Kinder Zielknoten sind. Diese enthalten die Teilziele der Inferenzregel. Bei
applikativen Inferenzregeln wird zusätzlich eine Kante zu einem Axiom-Knoten oder
einem anderen Zielknoten eingefügt. Dadurch werden Zusammenhänge zwischen einzelnen Lemmata festgehalten. Es ist daher nicht unbedingt notwendig, dass diese
10
1.2. Der Theorembeweiser QuodLibet
{ +(0, y) = y }
y
subst-add
{ +(0, 0) = 0 }
0
{ +(0, s(y)) = s(y) }
s(y)
axiom-rewrite
axiom-rewrite
{0=0}
0
{ s(+(0, y)) = s(y) }
s(y)
=-decomp
ind-rewrite
{ s(y) = s(y) }
s(y)
{ y < s(y),
y = +(0, y),
s(+(0, y)) = s(y) }
s(y)
=-decomp
<-decomp
Abbildung 1.1.: Ein abgeschlossener Beweisbaum für das Ziel +(0, y) = y.
Lemmata bereits bewiesen sind, da die Abhängigkeiten später überprüft werden
können. Lässt man diese Kanten jedoch weg, so zerfällt der Beweiszustandsgraph in
den sogenannten Beweiszustandswald, dessen Komponenten Beweiszustandsbäume
genannt werden. Die Wurzeln der Beweiszustandsbäume sind die zu beweisenden
Ziele.
Es ist möglich, auf einen Zielknoten mehrere Inferenzregeln anzuwenden. Dadurch
entstehen mehrere Inferenzknoten als Nachfolger des Zielknotens. Ein solcher Punkt
wird Entscheidungspunkt genannt und ermöglicht es, mehrere Beweisversuche für
einen Zielknoten parallel auszuführen.
Wenn eine Inferenzregel keine neuen Teilziele erzeugt, so ist dieser Inferenzknoten des Beweiszustandsbaumes abgeschlossen. Ein Inferenzknoten mit Teilzielen ist
abgeschlossen, wenn jedes Teilziel abgeschlossen ist (daher werden die Inferenzknoten als und-Knoten angesehen). Ein Zielknoten ist abgeschlossen, wenn mindestens
ein nachfolgender Inferenzknoten abgeschlossen ist (daher sind die Zielknoten oderKnoten). Reduziert man einen Beweiszustandsbaum auf jeweils einen Inferenzknoten als Nachfolger eines Zielknotens, so erhält man einen partiellen Beweisversuch.
Ist die Wurzel des partiellen Beweisversuches ein abgeschlossener Zielknoten und ist
die induktive Gültigkeit aller angewandten Lemmata bewiesen, so wird der partielle Beweisversuch als Beweisbaum bezeichnet. Wie in [Küh00] gezeigt wird, ist ein
Ziel induktiv gültig, wenn für das Ziel ein Beweisbaum existiert. Der Beweis eines
induktiven Theorems läuft in QuodLibet daher so ab, dass zunächst ein neuer
Zielknoten erzeugt wird, der das zu beweisende Theorem enthält. Anschließend wird
11
Kapitel 1. Grundlagen
durch Anwendung von Inferenzregeln ausgehend von diesem Zielknoten versucht,
einen Beweisbaum für das Ziel zu erzeugen.
Ein Beispiel für einen abgeschlossenen Beweisbaum ist in Abbildung 1.1 dargestellt. Zielknoten werden dabei als Rechtecke dargestellt, in denen das Ziel in Form
einer Klausel in geschweiften Klammern und eines Gewichtes steht. Inferenzknoten
werden als Rechtecke mit abgerundeten Ecken dargestellt, in denen der Name der
angewendeten Inferenz steht. Der Beweisbaum beinhaltet einen Beweis für das Ziel
+(0, y) = y in einer Spezifikation, die die Sorte Nat mit den Konstruktoren 0 und
s und ein definiertes zweistelliges Funktionssymbol + mit den definierenden Regeln
+(x, 0) = x und +(x, s(y)) = s(+(x, y)) enthält.
1.2.4. Taktiken
Weil die Inferenzregeln korrekt und sicher sind und die einzige Möglichkeit darstellen,
Änderungen an Beweiszustandsgraphen vorzunehmen, ist QuodLibet bereits dafür
geeignet, einen manuell erarbeiteten Beweis zu überprüfen. Allerdings ist es auch
wünschenswert, noch unbekannte Beweise automatisch zu finden. Dies ist möglich,
indem die Anwendung der Inferenzregeln durch sogenannte Taktiken automatisiert
wird. In QuodLibet werden diese Taktiken in der eigens entwickelten Programmiersprache QML (QuodLibet-Meta-Language) beschrieben. Hierbei handelt es sich um
eine imperative Programmiersprache, ähnlich der Sprache Pascal, die neben Befehlen
für die Ausführung von Inferenzregeln die notwendigen Kontrollstrukturen bereitstellt, um Taktiken für die Beweisfindung zu beschreiben. Diese Taktiken können
vom Benutzer selbst programmiert und in das System geladen werden. Es steht
jedoch auch eine Menge von Standard-Taktiken bereit, mit denen zumindest eine
Teilautomatisierung des Beweisprozesses bereits realisierbar ist – dennoch ist eine
Interaktion mit dem Benutzer in den meisten Fällen notwendig, um komplexere Beweise zu führen. Eine Beschreibung der bisher verwendeten Standard-Taktiken findet
sich in [Sch04].
1.3. Entscheidungsverfahren
Mit einem induktiven Theorembeweiser wie QuodLibet ist es möglich, Theoreme
aus verschiedenen Theorien zu beweisen. Dazu müssen nur in der Spezifikation die
entsprechenden Axiome der Theorie enthalten sein. Diese Flexibilität ist der große
Vorteil eines solchen allgemeinen Theorembeweisers. Allerdings tauchen viele Theorien sehr häufig auf, insbesondere in bestimmten Problemdomänen. Eine der häufigsten Theorien ist die Theorie der Arithmetik der natürlichen Zahlen. Hierbei zeigt sich
eine Schwäche des allgemeinen Ansatzes, da es für einige dieser Theorien deutlich
effizientere Verfahren gibt, die das Wissen über die Struktur der Axiome und damit
der Theorie besser ausnutzen. Besonders interessant sind dabei diejenigen Theorien,
für die es ein sogenanntes Entscheidungsverfahren gibt. Ein Entscheidungsverfahren liefert für jeden syntaktisch korrekten Ausdruck eine Entscheidung, ob dieser in
einer gegebenen Theorie gültig ist oder nicht. Für die Arithmetik der natürlichen
Zahlen zeigte Gödel bereits 1930 in [Göd31] mit seinem bekannten Unvollständig-
12
1.4. Lineare Arithmetik
keitssatz, dass diese unvollständig ist; das heißt auch, dass für diese Theorie kein
Entscheidungsverfahren existiert. Allerdings hatte Presburger bereits 1929 in [Pre29]
gezeigt, dass eine Teiltheorie der Arithmetik der ganzen Zahlen, die lineare Arithmetik oder sogenannte Presburger-Arithmetik, vollständig ist und somit auch ein
Entscheidungsverfahren existiert. Presburgers Argumentation lässt sich analog zur
linearen Arithmetik der ganzen Zahlen auch für die der natürlichen Zahlen führen
[JBG99].
Die Kombination spezieller Entscheidungsverfahren mit einem allgemeinen Theorembeweiser ist daher sehr viel versprechend. Man hat nach wie vor ein Verfahren,
das allgemein für alle Theorien funktioniert, kann jedoch Aussagen, die aus einer der
Theorien stammen, für die ein Entscheidungsverfahren zur Verfügung steht, wesentlich effizienter behandeln. Es ist zudem möglich, auch Aussagen, die nur teilweise
in den Bereich eines Entscheidungsverfahrens fallen, mit dem Entscheidungsverfahren zu behandeln. Dazu werden Terme mit definierten Operatoren, die nicht zu
der jeweiligen Theorie gehören, zu Variablen abstrahiert. Dann ist es auch möglich,
auf die Axiome und Lemmata dieser Theorien zu verzichten, so dass das allgemeine Verfahren bei der Beweissuche einen deutlich kleineren Suchraum durchsuchen
muss. Zudem wird auch der Benutzer entlastet, da die Axiome und Lemmata, die in
den Bereich der Entscheidungsverfahren fallen, nicht mehr explizit formuliert werden müssen. Kritisch ist jedoch die Zusammenarbeit zwischen Theorembeweiser und
Entscheidungsverfahren zu sehen. Hierbei kann der Effizienzgewinn durch das Entscheidungsverfahren möglicherweise wieder verloren gehen. Dabei ist es in der Regel nicht realisierbar, das Entscheidungsverfahren als Black-Box“ zu integrieren,
”
da zu viele Informationen zwischen den Komponenten ausgetauscht werden müssen
[BM88].
1.4. Lineare Arithmetik
Lineare Arithmetik ist eine Theorie erster Stufe der natürlichen, ganzen bzw. rationalen Zahlen ohne Multiplikation. Diese Theorie ist im Gegensatz zur allgemeinen
Arithmetik der natürlichen, ganzen bzw. rationalen Zahlen entscheidbar. Bereits
1929 bewies Mojzesz Presburger in [Pre29] diese Entscheidbarkeit für die lineare
Arithmetik der ganzen Zahlen und dieser Beweis kann leicht auf die natürlichen
Zahlen übertragen werden. Allerdings ist auch bewiesen, dass die Komplexität eines
solchen Entscheidungsverfahrens für die natürlichen und die ganzen Zahlen bestenn
falls in O(22 ) liegen kann, wobei n die Länge der Aussage ist [FR74]. In der Praxis
können viele Beispiele jedoch deutlich schneller entschieden werden.
Im Folgenden wird ausschließlich die lineare Arithmetik der natürlichen Zahlen
behandelt, die daher auch kurz als lineare Arithmetik bezeichnet wird. Die lineare
Arithmetik der natürlichen Zahlen umfasst die Prädikatenlogik erster Stufe mit den
. sowie dem Prädikat
natürlichen Zahlen als Universum und den Operatoren + und −
≤. Zusätzlich wird der Operator ∗ zur Multiplikation mit Konstanten als Abkürzung
für eine entsprechend häufige Addition definiert: n ∗ x := x + x + . . . + x für n ∈ .
Dieser Operator muss als erstes Argument stets eine natürliche Zahl haben.
N
13
Kapitel 1. Grundlagen
In dieser Arbeit werden nur Aussagen betrachtet, die keine Quantoren enthalten.
Aufgrund der in Abschnitt 1.1.2 beschriebenen Semantik sind die Aussagen implizit
allquantifiziert, da für die Gültigkeit einer Klausel, gefordert wird, dass diese von
allen Belegungen erfüllt wird. Die so entstehende Arithmetik wird quantorenfreie
lineare Arithmetik genannt. Im Folgenden wird unter dem Begriff lineare Arithmetik
stets die quantorenfreie lineare Arithmetik verstanden.
Für die Informatik ist die quantorenfreie lineare Arithmetik besonders interessant,
da viele Beweisziele, die typischerweise bei Hardware- und Software-Verifikation entstehen, mit den Mitteln dieser Arithmetik formuliert werden können. Daher ist es
wünschenswert, solche Aufgaben effizient lösen zu können. Die Integration eines Entscheidungsverfahrens für lineare Arithmetik in einen induktiven Theorembeweiser ist
hierfür sehr viel versprechend.
Es kommt jedoch sehr häufig vor, dass Beweisziele nicht in der reinen linearen
Arithmetik liegen, sondern zusätzlich definierte Funktionssymbole enthalten. Auch
diese Ziele können mit Hilfe des Entscheidungsverfahrens bearbeitet werden, indem
man die Teilterme, die außerhalb der lineare Arithmetik liegen, zu Variablen abstrahiert. Natürlich ist das Entscheidungsverfahren dann kein Entscheidungsverfahren
für die ursprüngliche, nicht in der linearen Arithmetik liegende, Klausel. Gelingt es
jedoch, die Klausel mit den neuen Variablen mittels des Entscheidungsverfahrens zu
beweisen, das heißt die Nicht-Existenz eines Gegenbeispiels nachzuweisen, so kann
auch in der ursprünglichen Klausel kein Gegenbeispiel enthalten sein; somit ist auch
diese bewiesen.
Beispiel: (nach [BM88, S. 92]) Zusätzlich zu der Sorte Nat und den beschriebenen
Operatoren und Prädikaten sei die Sorte List definiert, die wie üblich Listen über
natürlichen Zahlen beschreibt. Dazu seien die beiden folgenden Funktionen definiert,
die das maximale bzw. minimale Element einer Liste bezeichnen sollen:
max : List −→ Nat
min : List −→ Nat
Seien weiter l und k Variablen der Sorte Natund a eine Variable der Sorte List. Dann
ist die Klausel
min(a) < l ∨ k ≤ 0 ∨ l < max(a) + k
nicht in der linearen Arithmetik, kann aber durch Abstraktion der Terme min(a) und
max(a) zu neuen Variablen min und max der Sorte Nat in eine solche umgewandelt
werden:
min < l ∨ k ≤ 0 ∨ l < max + k
Diese neue Klausel kann jedoch nicht mehr bewiesen werden, da die Information
fehlt, dass min(a) ≤ max(a) ist. Möglicherweise steht diese Information als Lemma
zur Verfügung, kann jedoch nicht mehr angewendet werden, weil die Terme min(a)
und max(a) abstrahiert wurden. Daher ist es notwendig, diese Abstraktion rückgängig zu machen, wenn das Entscheidungsverfahren nicht das gewünschte Ergebnis
bringt. Um dies zu vereinfachen, muss man in der Praxis die Abstraktion nicht
durchführen, sondern kann lediglich während des Entscheidungsverfahrens alle Teilterme, die außerhalb der linearen Arithmetik liegen, wie Variablen behandeln. Dies
geschieht hier im Rahmen der in Abschnitt 2.3 beschriebenen Polynomdarstellung.
14
1.4. Lineare Arithmetik
Eine derartige Integration des Entscheidungsverfahrens in den Theorembeweiser
ermöglicht es daher, dieses nicht nur für die Entscheidung von Aussagen der reinen
linearen Arithmetik zu verwenden, sondern auch Aussagen, die definierte Funktionssymbole enthalten, zu verarbeiten. Diese Möglichkeit ist essentiell für den Nutzen
des Entscheidungsverfahrens, da in der Praxis sehr selten Aussagen aus der reinen
linearen Arithmetik bewiesen werden müssen.
15
16
2. Integration der linearen Arithmetik in
QuodLibet
Ein wichtiger Schritt für die Integration eines Entscheidungsverfahrens ist zunächst,
die notwendigen Basisstrukturen bereitzustellen. Bisher sind in QuodLibet keinerlei
vordefinierte Sorten und Operatoren vorhanden. Um jedoch ein spezielles Entscheidungsverfahren für eine auf den natürlichen Zahlen basierende Arithmetik implementieren zu können, müssen sowohl die natürlichen Zahlen selbst als auch die zu
behandelnden Operatoren dem System als solche bekannt sein.
2.1. Die Darstellung natürlicher Zahlen
Zunächst wird für die natürlichen Zahlen eine Sorte definiert, die mit Nat bezeichnet
wird. Das heißt, dass zukünftig jede Spezifikation eine Signatur enthält, für die Nat ∈
S gilt. In QuodLibet wird dies so realisiert, dass beim Programmstart automatisch
die Sorte Nat in die Liste der bekannten Sorten eingetragen wird.
Bisher wurden die natürlichen Zahlen in der Regel mittels der Konstruktoren
0 : → Nat für die natürliche Zahl Null und s : Nat → Nat für die Nachfolgerfunktion dargestellt. Diese Darstellung wird sehr unhandlich, wenn mit Konstanten
gearbeitet wird, die größere natürliche Zahlen repräsentieren, da die natürliche Zahl
n durch den Konstruktorgrundterm s(s(s(. . . (s(0)) . . .))) (im Folgenden kurz sn (0))
dargestellt werden muss. Um effizienter mit natürlichen Zahlen arbeiten zu können,
werden daher abkürzende Schreibweisen für sämtliche Konstruktorgrundterme der
bisherigen Darstellung eingeführt. Dazu wird das Zahlsymbol der natürlichen Zahl
n als Abkürzung für sn (0) verwendet. Das heißt, dass beispielsweise das Symbol
3 als Abkürzung für den Term s(s(s(0))) eingeführt wird. Die Menge aller dieser
Symbole für alle natürlichen Zahlen wird zukünftig mit N bzw. als die Konstanten
der natürlichen Zahlen bezeichnet. Um weiterhin eine Darstellung der natürlichen
Zahlen mit freien Konstruktoren zu ermöglichen, wird dabei die Definition mit 0
und s beibehalten und fest in das System integriert. Das heißt, es werden fortan
nur noch Spezifikationen verwendet, deren Signatur das Funktionssymbol s sowie
die Konstante 0 als Konstruktorsymbole der Sorte Nat enthält. Für die Konstanten
der natürlichen Zahlen wird ein neuer Symboltyp eingeführt, der überall im System
an Stelle eines Konstruktorterms verwendet werden kann. Der Parser wird entsprechend angepasst, so dass automatisch solche Symbole erzeugt werden, wenn eine
natürliche Zahl eingelesen wird.
Aus dieser Darstellung ergibt sich jedoch das Problem, dass es für jede natürliche
Zahl (außer der Null) mehrere syntaktisch verschiedene, jedoch semantisch gleich-
17
Kapitel 2. Integration der linearen Arithmetik
wertige Darstellungen gibt. Da es aufgrund der unendlichen Anzahl nicht möglich
ist, für jede der neuen Konstanten eine definierende Regel im System zu speichern,
die deren Äquivalenz zur Darstellung in sn (0) beschreibt, ist es notwendig, diese
Information fest in das System zu integrieren und die beiden Darstellungen gleichwertig zu behandeln. Dies betrifft Matching, Unifikation und Termgleichheit. Hierbei muss sichergestellt werden, dass die Terme n, sn (0), sn−1 (1), usw. für n ∈ N
als gleich angesehen werden. Eine relativ einfache Lösung für dieses Problem ist die
automatische Konvertierung der verkürzten Darstellung in die s-Darstellung. Diese
Konvertierung kann schrittweise und nur bei den Operationen, die diese benötigen,
durchgeführt werden. Will man beispielsweise die beiden Terme 2 und s(s(0)) auf
Gleichheit überprüfen, so geschieht dies rekursiv durch Vergleich der Topsymbole
und der Argumente. Es wäre an dieser Stelle also möglich, den Term 2 zunächst in
s(1) zu konvertieren. Dann stimmt das Topsymbol von s(1) und s(s(0)) überein. Als
nächsten Schritt werden die Argumente verglichen, das heißt 1 mit s(0). Auch hier
kann man zunächst 1 in s(0) konvertieren, was dann sowohl im Topsymbol s als auch
im Argument 0 mit dem zweiten Term übereinstimmt.
Analog kann man auch bei den Operationen Unifikation und Matching vorgehen.
Diese erweiterte Form der Termgleichheit ist in vielen Fällen jedoch sehr aufwändig
zu überprüfen, so dass bei der Implementierung noch einige Optimierungen notwendig sind. Beispielsweise muss vermieden werden, dass beim Vergleich zweier vordefinierter Nat-Konstanten wie beispielsweise 5 und 7 beide Terme in ihre s-Darstellung
expandiert werden.
2.2. Operatoren und Prädikate der linearen Arithmetik
Wie in Abschnitt 1.4 beschrieben, enthält die lineare Arithmetik die Operatoren +,
. und ∗ sowie das Prädikat ≤. Die drei Operatoren +, −
. und ∗ arbeiten rein auf
−
der Sorte Nat, für die Definition des Prädikates ≤ wird zusätzlich die Sorte Bool mit
den Konstruktorsymbolen true und false benötigt.
Daraus ergibt sich folgende Definition für eine Signatur, die die Sorten und Funktionssymbole der linearen Arithmetik enthält:
Definition 2.1 Eine Signatur mit linearer Arithmetik ist eine Signatur sig = (S, F, α),
für die gilt:
• {Nat, Bool} ⊆ S
. ∗, s, ≤} ⊆ F , N ⊆ F
• {+, −,
• α(+)
.
α(−)
α(∗)
α(s)
α(≤)
=
=
=
=
=
Nat
Nat
Nat
Nat
Nat
Nat
Nat
Nat
Nat
Nat
Nat
Nat
Nat
Bool
18
2.2. Operatoren und Prädikate der linearen Arithmetik
. und ∗ mit Infix-Notation verwenIm Folgenden werden die Funktionssymbole +, −
det, um die Lesbarkeit zu erhöhen. Alle anderen Funktionssymbole werden jedoch
nach wie vor mit der bei QuodLibet üblichen Präfix-Notation verwendet.
Die Bedeutung der Funktionssymbole wird nun durch eine Menge von Axiomen
festgelegt, die im Rahmen der linearen Arithmetik vorgegeben sind:
x+0 = x
x + s(y) = s(x + y)
x∗0 = 0
x ∗ s(y) = (x ∗ y) + x
. 0 = x
x−
. x = 0
0−
. s(y) = x −
. y
s(x) −
(A1 )
(A2 )
(A3 )
(A4 )
(A5 )
(A6 )
(A7 )
≤(0, y) = true
(A8 )
≤(s(x), 0) = false
(A9 )
≤(s(x), s(y)) = ≤(x, y)
(A10 )
Die Menge aller dieser Axiome wird mit AX LA bezeichnet. Daraus ergibt sich
dann folgende Definition für eine Spezifikation mit Konstruktoren, die die Axiome
der linearen Arithmetik enthält:
Definition 2.2 Eine Spezifikation mit Konstruktoren und linearer Arithmetik ist
eine Spezifikation mit Konstruktoren spec = (sig, C, E), für die gilt:
• sig ist eine Signatur mit linearer Arithmetik
• CNat = {0, s}
CBool = {true, false}
• AX LA ⊆ E
Enthält die Spezifikation keine weiteren Sorten, Operatoren und Axiome, so spricht
man von der Spezifikation der reinen linearen Arithmetik.
Durch diese Definitionen wird die Spezifizierbarkeit nicht eingeschränkt. Alle Spezifikationen ohne lineare Arithmetik lassen sich problemlos zu Spezifikationen mit
linearer Arithmetik erweitern, indem die Sorten- und Funktionssymbole sowie die
Axiome der linearer Arithmetik zur Spezifikation hinzugenommen werden. Sofern in
der ursprünglichen Spezifikation bereits Sorten- oder Funktionssymbole der linearen
Arithmetik enthalten waren, können diese umbenannt werden, um Konflikte zu vermeiden. Da es unendlich viele Möglichkeiten für Sorten- und Funktionssymbole gibt,
entsteht dadurch keine Einschränkung. Die Menge der induktiv gültigen Theoreme
wird durch diese Erweiterung nicht eingeschränkt, sondern wird ebenfalls erweitert.
Das heißt, dass alle vorher induktiv gültigen Theoreme auch anschließend induktiv
19
Kapitel 2. Integration der linearen Arithmetik
gültige Theoreme sind. Zusätzlich sind alle in der linearen Arithmetik induktiv gültigen Theoreme hinzugekommen. Dadurch ist es gerechtfertigt, im Folgenden nur
noch mit Spezifikationen mit linearer Arithmetik zu arbeiten.
Intention der Spezifikationen mit linearer Arithmetik ist es, die lineare Arithmetik auf den natürlichen Zahlen zu beschreiben. Da die natürlichen Zahlen mit
den üblichen Operationen Datenmodell einer Spezifikation spec mit reiner linearer
Arithmetik sind, gelten alle in spec induktiv gültigen Theoreme auch in den natürlichen Zahlen. Für die Bestimmung induktiv gültiger Theoreme sind jedoch alle
Datenmodelle zu betrachten, nicht nur die natürlichen Zahlen. Um diese Semantik
beizubehalten, werden daher die folgenden Beweise nicht nur für die natürlichen
Zahlen, sondern für alle Datenmodelle geführt.
Bei der Integration der linearen Arithmetik in QuodLibet wird statt des Operators ≤ mit Ergebnistyp Bool ein vordefiniertes Prädikat in Form eines neuen
Literaltyps eingeführt, das sogenannte ≤-Atom. Dies dient dazu, im Rahmen des
Entscheidungsverfahrens einfacher mit diesem Prädikat arbeiten zu können. Zudem
kann dadurch auf die Einführung der Sorte Bool verzichtet werden. Ein ≤-Atom ist
ein Termpaar der Form t1 ≤ t2 mit t1 , t2 ∈ T (sig, V )Nat . Ein Atom ist dann eine Gleichung, ein Ordnungsatom, ein Definiertheitsatom oder ein ≤-Atom. Um die
Semantik von ≤-Atomen festzulegen, wird der zweite Punkt der Definition 1.3 wie
folgt erweitert: A erfüllt ein ≤-Atom t1 ≤ t2 , falls gilt evalϕA (≤(t1 , t2 )) = true. Somit
kann ein ≤-Atom t1 ≤ t2 als abkürzende Schreibweise für ≤(t1 , t2 ) = true angesehen
werden. Dadurch ist es möglich, bei der Integration in QuodLibet die Sorte Bool
nicht mehr explizit zu integrieren, da diese in der Syntax nicht mehr auftaucht.
Um nun das Entscheidungsverfahren für lineare Arithmetik in QuodLibet zu
integrieren, ist es zunächst notwendig, QuodLibet auf Spezifikationen mit linearer Arithmetik umzustellen. Dazu werden die Sorten- und Funktionssymbole sowie
die Axiome der linearen Arithmetik fest in das System integriert. Dies geschieht,
. ∗ und s sowie die Konstante
indem beim Systemstart die Funktionssymbole +, −,
0 automatisch in die Liste der Funktionssymbole eingetragen werden. Die Axiome
werden ebenfalls automatisch für jede Spezifikation in das System aufgenommen.
Dies dient vor allem dazu, die Analyse der Operatoren zu ermöglichen, beispielsweise um zu einem späteren Zeitpunkt eine geeignete Induktionsvariable zu finden.
. nicht angewendet werden. Stattdessen
Allerdings sollten die Axiome für + und −
wird die in den folgenden Abschnitten beschriebene Normalisierung angewendet, die
die Anwendung dieser Axiome beinhaltet. Die Axiome für ∗ werden jedoch weiterhin
angewendet, da im Rahmen der linearen Arithmetik nur Multiplikationen mit Konstanten behandelt werden können. Für nichtlineare Multiplikationen müssen daher
nach wie vor die Axiome für den Beweisprozess zur Verfügung stehen.
Alle Grundterme der linearen Arithmetik können, da sämtliche Operatoren total definiert sind, unter Anwendung der Axiome zu Konstruktorgrundtermen ausgewertet werden. Daher kann jeder Grundterm t der linearen Arithmetik zu einer
Konstante aus N ausgewertet werden, für die im Folgenden die Schreibweise (t)↓
verwendet wird. Beispielsweise gilt (3 + 4)↓ = (s3 (0) + s4 (0))↓ = s7 (0) = 7 und
. 5)↓ = (s12 (0) −
. s5 (0))↓ = s7 (0) = 7. Außerdem kann jeder Konstruktorgrund(12 −
n
term s (0) der Sorte Nat auf eine äquivalente Konstante n ∈
abgebildet werden
N
20
2.3. Terme in Polynomdarstellung
und umgekehrt. Das heißt, die Auswertung eines Grundterms zu einer Konstanten
entspricht inhaltlich dem Rechnen“ auf natürlichen Zahlen.
”
Somit ist es auch möglich, gewisse Konzepte, die auf den natürlichen Zahlen
verwendet werden, auf die hier verwendeten Konstanten der natürlichen Zahlen N
zu übertragen. Ein solches Konzept, das für die folgenden Abschnitte benötigt wird,
ist das eines gemeinsamen Teilers natürlicher Zahlen. Ein gemeinsamer Teiler g
zweier natürlicher Zahlen a und b ist eine Zahl, die beide Zahlen ohne Rest teilt.
Das heißt es existieren a0 , b0 ∈ , so dass a = g ∗ a0 und b = g ∗ b0 . Dieses Konzept
wird nun folgendermaßen auf die hier verwendeten Konstanten und Operationen
übertragen: Seien x und y Konstanten aus N . Dann können die Konstanten x und y
auf natürliche Zahlen x
e und ye in abgebildet werden. Ist nun ge ∈ ein gemeinsamer
Teiler von x
e und ye, so wird die ge entsprechende Konstante g in N gemeinsamer Teiler
von x und y genannt. Dann existieren auch x0 , y 0 ∈ N , so dass x = (g ∗ x0 )↓ und
y = (g ∗ y 0 )↓. Analog kann auch ein gemeinsamer Teiler mehrerer natürlicher Zahlen
bzw. Konstanten definiert werden.
N
N
N
N
Der größte gemeinsame Teiler (ggT) zweier oder mehrerer Zahlen ist dann der bezüglich der Ordnung der natürlichen Zahlen größte der gemeinsamen Teiler der Zahlen. Auf den natürlichen Zahlen ist der ggT eindeutig bestimmt. Auch das Konzept
des größten gemeinsamen Teilers lässt sich analog zum Vorgehen beim gemeinsamen
Teiler auf die hier definierten Konstanten für die natürlichen Zahlen übertragen.
2.3. Terme in Polynomdarstellung
Um effizient mit Termen der linearen Arithmetik arbeiten zu können, bietet es sich
an, diese als Polynome darzustellen. Dies ermöglicht es, die Operationen des Entscheidungsverfahrens effizient auszuführen.
Definition 2.3 Ein Term-Polynom ist eine Summe der Form
a1 t1 + a2 tn + . . . + an tn + a
mit ai , a ∈ N , ai 6= 0, n ∈
N, ti ∈ T (F, V )Nat.
Als abkürzenden Schreibweise wird im Folgenden meist die Form
n
X
ai ti + a
i=1
verwendet.
Man nennt die ti die Summanden, die ai die Koeffizienten, die ai ti die Monome
und a die Konstante des Term-Polynoms.
Hierbei ist es sinnvoll, zusätzliche Eigenschaften zu fordern, die eine Normalform
für Term-Polynome beschreiben. Durch Anwendung der Axiome der linearen Arithmetik und einfacher, daraus ableitbarer, Lemmata ist es möglich, jeden Term in
eine solche Normalform zu überführen. Dies erleichtert die Vergleichbarkeit von Polynomen und erhöht nochmals die Effizienz bei der Behandlung der Polynome im
21
Kapitel 2. Integration der linearen Arithmetik
Rahmen des Entscheidungsverfahrens. Zudem ist es möglich, auf die explizite Anwendung der Axiome der linearen Arithmetik zu verzichten, wenn die Umwandlung
eines Terms in ein Term-Polynom in Normalform in das System integriert wird.
Für die Normalform wird gefordert, dass die Monome minimal sind, das heißt nicht
selbst wieder eine Addition oder eine Multiplikation mit einer Konstanten sind. Falls
ein Monom eine Subtraktion beschreibt, so wird diese unter Einsatz der Axiome
möglichst stark vereinfacht. Weiterhin ist es möglich, alle Monome zu sortieren,
da die Kommuntativität und Assoziativität von + bewiesen werden können. Hierbei
kann auch zusätzlich sichergestellt werden, dass kein Summand mehrfach vorkommt.
Daraus ergibt sich die folgende Definition:
Definition 2.4 Sei ≺ eine strikte und totale Ordnung auf Termen. Ein Term-Polynom t der Form
t=
n
X
ai ti + a
mit ai , a ∈ N , ai 6= 0, n ∈
N, ti ∈ T (F, V )Nat
i=1
ist in Polynom-Normalform (PNF) bezüglich ≺, falls für alle ti
• ti ist eine Variable oder
. s} oder
• top(ti ) ∈
/ {+, ∗, −,
• ti = l ∗ r und l, r ∈
/ N , l, r Term-Polynome in PNF oder
. r und
• ti = l −
– l ist ein Term-Polynom in PNF der Form
–
–
–
–
–
Pn0
0 0
j=1 aj tj
+ a0
Pn00
r ist ein Term-Polynom in PNF der Form k=1 a00k t00k + a00
alle t0j , t00k sind paarweise disjunkt
a0 = 0 oder a00 = 0
alle a0j , a00k , a0 , a00 haben keinen gemeinsamen Teiler außer 1
r 6= 0, l 6= 0
und t1 ≺ t2 ≺ . . . ≺ tn gilt. Damit sind auch alle ti paarweise verschieden, da die
Ordnung ≺ strikt ist.
Term-Polynome werden im Folgenden auch anstelle von Termen verwendet, obwohl sie syntaktisch keine Terme darstellen. Dazu wird die folgende Termrepräsentation eines Term-Polynoms verwendet, wenn notwendig:
Definition 2.5 Die Termrepräsentation [ai ti ]T eines Monoms ai ti ist
ti
falls ai = 1
[ai ti ]T :=
(ai ∗ ti ) sonst
P
Die Termrepräsentation [t]T eines Term-Polynoms t = ni=1 ai ti + a ist
a + ([a1 t1 ]T + ([a2 t2 ]T + . . . + [an tn ]T ) . . .)) falls a 6= 0
[p]T :=
[a1 t1 ]T + ([a2 t2 ]T + . . . + [an tn ]T ) . . .)
sonst
22
2.3. Terme in Polynomdarstellung
Im Folgenden wird diese Umwandlung eines Term-Polynoms in seine Termdarstellung nicht immer explizit angegeben, sondern immer dann, wenn ein Term-Polynom
als Term behandelt wird, angenommen. Auch für Termpolynome selbst werden oft
zur besseren Lesbarkeit eine Konstante, die 0 ist, und Faktoren, die 1 sind, weggelassen.
Da die Ordnung ≺ in der Definition beliebig, aber fest ist, wird sie fortan nicht
mehr explizit aufgeführt. Der Ausdruck ein Term-Polynom t ist in PNF bedeutet
dann, dass das Term-Polynom t bezüglich einer beliebigen, aber festen Ordnung ≺
in PNF ist.
Um zu zeigen, dass es mit den bisherigen Inferenzregeln von QuodLibet möglich
ist, einen Term in ein Term-Polynom in PNF zu überführen, wird eine vereinfachte
Ableitbarkeit definiert, die sich insbesondere dadurch auszeichnet, dass keine induktiven Inferenzregeln zugelassen sind.
Definition 2.6 Sei spec eine Spezifikation. Ein Term t heißt in spec mit einer
Klausel Θ zu einem Term s nicht-induktiv ableitbar, wenn jedes Ziel hΓ ; wi, für
das Γ/p = t gilt, durch einmalige Anwendung der QuodLibet-Inferenzregel Literal
Hinzufügen mit Θ und anschließende Anwendung von nicht-induktiven Inferenzregeln (wobei nur in spec gültige Lemmata und Axiome für applikative Inferenzregeln
verwendet werden) in die Ziele
hΛ1 , Γ ; wi . . . hΛn , Γ ; wi hΛ, Γ[s]p ; wi
überführt werden kann. Dabei ist Λ1 , . . . , Λn , Λ die aus Θ resultierende Fallunterscheidung ist.
Man sagt dann auch umgekehrt, dass der Term s in spec mit Θ aus t nichtinduktiv ableitbar ist. Ein Term t ist in jeder Spezifikation spec mit ∅ zu sich selbst
nicht-induktiv ableitbar.
Die folgenden zwei Lemmata beschreiben Eigenschaften der nicht-induktiven Ableitbarkeit von Termen, die in den folgenden Beweisen benötigt werden.
Lemma 2.1 Sei spec eine Spezifikation mit Konstruktoren. Ist in spec der Term t
mit Θ1 zum Term t1 nicht-induktiv ableitbar und der Term t1 mit Θ2 zum Term t2
nicht-induktiv ableitbar, so ist in spec auch t mit Θ = Θ1 ∪ Θ2 zu t2 nicht-induktiv
ableitbar.
Beweis: Ist in spec der Term t mit Θ1 zum Term t1 nicht-induktiv ableitbar und
der Term t1 mit Θ2 zu t2 nicht-induktiv ableitbar, so kann ein Ziel hΓ ; wi, für
das Γ/p = t gilt, durch einmalige Anwendung der QuodLibet-Inferenzregel Literal
Hinzufügen mit Θ in die Ziele
hΛ1 , Γ ; wi . . . hΛn , Γ ; wi hΛ, Γ ; wi
überführt werden, wobei Λ1 , . . . , Λn , Λ die aus Θ resultierende Fallunterscheidung
ist.
Anschließend kann das Ziel hΛ, Γ ; wi in spec durch aufeinander folgende Ausführung der Instanzen der nicht-induktiven, applikativen Inferenzregeln, die für die
23
Kapitel 2. Integration der linearen Arithmetik
Ableitung von t nach t1 und von t1 nach t2 verwendet wurden, zu hΛ, Γ[t2 ]p ; wi
abgeleitet werden.
t
u
Lemma 2.2 Sei spec eine Spezifikation und t ein Term für den t/p = t0 gilt. Ist in
spec der Term t0 mit Θ zum Term s nicht-induktiv ableitbar, so ist in spec auch t
mit Θ zu t[s]p nicht-induktiv ableitbar.
Beweis: Folgt unmittelbar aus der Definition von nicht-induktiv ableitbar.
t
u
In den folgenden Beweisen wird stets angegeben, welche Instanzen von Inferenzregeln für die nicht-induktive Ableitbarkeit angewendet werden. Sind lediglich Axiome
und induktiv gültige Lemmata angegeben, so bedeutet dies, dass diese mit der Inferenzregel Nicht-induktive Termersetzung angewendet werden, sofern es sich um eine
bedingte Gleichung handelt. Handelt es sich um ein Lemma der Form l ↔ r, so wird
das Lemma zunächst in einer Richtung mit der Inferenzregel Nicht-induktive Termersetzung und anschließend, um das ursprüngliche Lemma zu entfernen, in die andere
Richtung mit der Inferenzregel Applikative Literal-Beseitigung angewendet. Da Gültigkeit der Bedingungsliterale meist aus dem Kontext klar ist, wird deren Nachweis
dann nicht explizit aufgeführt.
Einige Axiome und einfache Lemmata werden hierbei zur Verbesserung der Übersichtlichkeit oft nicht explizit aufgeführt, sofern sie für den Nachweis der nicht-induktiven Ableitbarkeit nicht wesentlich sind. Dazu gehören beispielsweise die Assoziativität und Kommutativität von +, die häufig zunächst angewandt werden, um
Summanden so umzusortieren, dass andere Lemmata anwendbar sind. Das folgende
Lemma enthält eine Liste der benötigten, in jeder Spezifikation mit linearer Arithmetik induktiv gültigen Lemmata.
Lemma 2.3 Die in Abbildung 2.1 aufgeführten Lemmata sind in jeder Spezifikation
mit linearer Arithmetik spec induktiv gültig (u, v, w, x, y und z sind Konstruktorvariablen der Sorte Nat).
Die Schreibweise Γ ← ∆ steht hierbei (als Erweiterung des Konzeptes des bedingten Gleichung) für eine bedingte Klausel, deren Klauselrepräsentation Γ, δ1 . . . δn ist,
falls ∆ = δ1 . . . δn ist. Weiter steht Γ ↔ ∆ (Γ und ∆ sind Klauseln) als Abkürzung
für zwei Lemmata Γ ← ∆ und ∆ ← Γ.
t
u
Beweis: Siehe Anhang A.
Mit Hilfe dieser Lemmata kann nun folgender Satz bewiesen werden:
Satz 2.1 Sei spec eine Spezifikation mit Konstruktoren und linearer Arithmetik. Zu
jedem Term t der Sorte Nat gibt es ein Term-Polynom tp in PNF, dessen Termdarstellung [tp ]T in spec mit einer Klausel PNFDefCond(t) aus t nicht-induktiv ableitbar
ist.
24
2.3. Terme in Polynomdarstellung
def (x + y)
(L1 )
def (x ∗ y)
(L2 )
1∗x
=
x
(L3 )
x+y
=
y+x
(L4 )
(x + y) + z
=
x + (y + z)
(L5 )
(x ∗ z) + (y ∗ z)
=
(x + y) ∗ z
(L6 )
(x + 1) ∗ y
=
(x ∗ y) + y
(L7 )
s(x)
.
(x ∗ y) − (x ∗ z)
. (x + z)
(x + y) −
=
x+1
(L8 )
=
. z)
x ∗ (y −
. z
y−
(L9 )
=
. z) = w + (z −
. y)
x + y = w + z ↔ x + (y −
. z) ∗ u) = w + ((z −
. y) ∗ u)
x + (y ∗ u) = w + (z ∗ u) ↔ x + ((y −
(L10 )
(L11 )
(L12 )
≤(x ∗ y, x ∗ z)
=
≤(y, z) ← x 6= 0
(L13 )
≤(u ∗ v, (u ∗ w) + y)
=
≤(v, w) ← ≤(u, y) = false
(L14 )
≤((u ∗ x) + v, u ∗ y)
=
≤(x + 1, y) ← ≤(u, v) = false, v 6= 0
(L15 )
x∗y
6=
(x ∗ z) + u ← u 6= 0, ≤(x, u) = false
(L16 )
(x ∗ y = x ∗ z ↔ y = z) ← x 6= 0
(L17 )
≤(x, y) = false ↔ ≤(y + 1, x) = true
(L18 )
x < y ↔ ≤(x + 1, y) = true
(L19 )
x 6< y ↔ ≤(y, x) = true
. y = 0 ← ≤(y, x) = false
x−
(L20 )
(L21 )
.
(x + (y − z) = u ↔ x + y = u + z) ← ≤(z, y) = true
(L22 )
.
(≤(x + (y − z), u) = true ↔ ≤(x + y, u + z) = true) ← ≤(z, y) = true (L23 )
x
=
y ← ≤(x, y) = true, ≤(y, x) = true
(L24 )
≤(x, y)
=
true ← x = y
(L25 )
≤(x, y)
=
true ← ≤(y, x) 6= true
(L26 )
Abbildung 2.1.: In jeder Spezifikation mit linearer Arithmetik induktiv gültige Lemmata.
25
Kapitel 2. Integration der linearen Arithmetik
Beweis: Induktion über den Termaufbau.
Induktionsanfang:
1. t ∈ V : tp = 1t ist ein Polynom-Term in PNF und t ist in spec mit
(
∅
falls t ∈ V C
PNFDefCond(t) =
{¬def (t)} sonst
zu [tp ]T nicht-induktiv ableitbar, denn es gilt [tp ]T = [1t]T = t. Auch wenn
t keine Konstruktorvariable ist, reicht PNFDefCond(t) = ∅ für die Ableitbarkeit aus, für den weiteren Beweis ist es jedoch nützlich, hier bereits ¬def (t)
aufzunehmen.
2. t ∈ N : tp = t ist ein Polynom-Term in PNF, der in spec mit PNFDefCond(t) =
∅ zu [tp ]T nicht-induktiv ableitbar ist, denn es gilt [tp ]T = [t]T = t.
Induktionsschritt: Fallunterscheidung nach dem Topsymbol des Terms:
1. t = l + r: Seien lp und rp Term-Polynome in PNF, deren Termdarstellungen
in spec mit PNFDefCond(l) bzw. PNFDefCond(r) aus l bzw. r nicht-induktiv
ableitbar sind.
und haben die
PmInduktionsvoraussetzung
Pn Diese existieren nach
0
Form lp = i=1 ai ti + a und rp = j=1 bj sj + b. Dann ist t := lp + rp in spec
mit PNFDefCond(t) = PNFDefCond(l) ∪ PNFDefCond(r) aus t nicht-induktiv
ableitbar (nach Lemma 2.1 und 2.2). Sei cj := (bj + ai )↓ für alle i, j mit sj = ti
(für jedes sj existiert maximal ein solches ti , da lp und rp in PNF sind) und sei
c := (a + b)↓. Dann ist auch die Termdarstellung des Polynoms
X
X
X
t00 :=
ai ti +
bi sj +
cj sj + c
{i|1≤i≤n,∀j:sj 6=ti }
{j|1≤j≤m,∀i:ti 6=sj }
{j|1≤j≤m,∃i:ti =sj }
mit PNFDefCond(t) in spec aus t nicht-induktiv ableitbar (Anwendung von
A1 , L3 , L4 , L5 und L6 ). Sortiert man die Summanden von t00 entsprechend
einer totalen Ordnung ≺ auf Termen, so erhält man ein Term-Polynom tp in
PNF, dessen Termdarstellung ebenfalls in spec mit PNFDefCond(t) aus t nichtinduktiv ableitbar ist (Lemma 2.1 und Anwendung von L4 und L5 ).
2. t = l ∗ r: Seien lp und rp Term-Polynome in PNF, deren Termdarstellung in
spec mit PNFDefCond(l) bzw. PNFDefCond(r) aus l bzw. r nicht-induktiv
ableitbar ist.
und haben die
PnDiese existieren nach
PInduktionsvoraussetzung
m
0
:=
Form lp = i=1 ai ti + a und rp = j=1 bj sj + b. Dann ist t
lp ∗ rp in spec
mit PNFDefCond(t) = PNFDefCond(l) ∪ PNFDefCond(r) aus t nicht-induktiv
ableitbar (nach Lemma 2.1 und Lemma 2.2). Daraus können dann folgende
vereinfachte Term-Polynome abgeleitet werden, die in PNF sind:
a) n = 0, m = 0: tp := (a ∗ b)↓ ist ein Term-Polynom in PNF, dessen Termdarstellung in spec mit ∅ aus t0 und damit mit PNFDefCond(t) aus t nichtinduktiv ableitbar ist (Lemma 2.1).
26
2.3. Terme in Polynomdarstellung
Pn
b) n > 0, m = 0: tp :=
i=1 (b ∗ ai )↓ ti + (b ∗ a)↓ ist ein Term-Polynom
in PNF, dessen Termdarstellung in spec mit PNFDefCond(t1 ) aus t0 und
damit mit PNFDefCond(t) aus t nicht-induktiv ableitbar ist (Lemma 2.1,
Anwendung von L6 ).
P
c) n = 0, m > 0: tp := m
j=1 (a ∗ bj )↓ sj + (a ∗ b)↓ ist ein Term-Polynom
in PNF, dessen Termdarstellung in spec mit PNFDefCond(t2 ) aus t0 und
damit mit PNFDefCond(t) aus t nicht-induktiv ableitbar ist (Lemma 2.1,
Anwendung von L6 ).
d) n > 0, m > 0: tp := 1(t1p ∗ t2p ) ist ein Term-Polynom in PNF, dessen
Termdarstellung [tp ]T in spec mit PNFDefCond(t) aus t nicht-induktiv
ableitbar ist, da [tp ]T = lp ∗ rp = t0 .
3. t = s(l): Sei lp ein Term-Polynom in PNF, dessen Termdarstellung in spec
mit PNFDefCond(l) aus l nicht-induktiv ableitbar
Pn ist. Dieser existiert nach
Induktionsvoraussetzung
und
hat
die
Form
l
=
p
i=1 ai ti + a. Dann ist tp :=
Pn
i=1 ai ti + (a + 1)↓ ein Term-Polynom in PNF, dessen Termdarstellung mit
PNFDefCond(t) = PNFDefCond(l) aus t nicht-induktiv ableitbar ist (Lemma 2.1 und Lemma 2.2, Anwendung von L8 ).
. r: Seien l und r Term-Polynome in PNF, deren Termdarstellung
4. t = l −
p
p
in spec mit PNFDefCond(l) bzw. PNFDefCond(r) aus l bzw. r nicht-induktiv
ableitbar ist.
PInduktionsvoraussetzung und haben die
P Diese existieren nach
Form lp = ni=1 ai ti + a und rp = m
j=1 bj sj + b. Seien
ci :=
ai
falls sj 6= ti für alle j
. b )↓ falls s = t
(ai −
j
j
i
bj
falls sj 6= ti für alle i
. a )↓ falls s = t
(bj −
i
j
i
.
c := (a − b)↓
. a)↓
d := (b −
dj
:=
Sei weiterhin k der größte gemeinsame Teiler aller ci und dj sowie c und d, das
heißt es existieren c0i , d0j , c0 und d0 , so dass ci = (k ∗ c0i )↓ für alle i ∈ {1, . . . , n}
0
und dj = (k ∗ d0j )↓ P
für alle j ∈ {1, . . . , m} sowie c = (k
∗ d0 )↓.
P∗ c )↓ und d = (k
0
0
0
0
0
Seien dann t1 p := {i|1≤i≤n,ci 6=0} ci ti + c und t2 p = {j|1≤j≤m,dj 6=0} dj sj + d0 .
Weiterhin sei

falls ci = 0 für alle i ∈ {1, . . . , n}, c = 0
 0P
c
t
+
c
falls dj = 0 für alle j ∈ {1, . . . , m}, d = 0
tp :=
{i|1≤i≤n,ci6=0} i i

.
0
0
k t1 p − t2 p
sonst
Dann ist tp ein Term-Polynom in PNF, dessen Termdarstellung in spec mit
PNFDefCond(tp ) aus t nicht-induktiv ableitbar ist (Anwendung von A5 , A6 ,
L6 , L9 und L10 ).
. Das Polynom t := 1(f (t , . . . , t )) ist in
5. t = f (t1 , . . . , tn ) mit f 6∈ {+, ∗, s, −}:
p
1
n
PNF und seine Termdarstellung in spec mit PNFDefCond(t) = {f (t1 , . . . , tn )}
aus t nicht-induktiv ableitbar, da [tp ]T = t gilt.
t
u
27
Kapitel 2. Integration der linearen Arithmetik
Der Beweis von Satz 2.1 ist konstruktiv und lässt daher die unmittelbare Ableitung eines Konstruktionsverfahrens für die Bestimmung eines aus einem Term nichtinduktiv ableitbaren Term-Polynoms in PNF zu.
Beispiele: Sei eine Ordnung auf den Termen gegeben, die diese im Wesentlichen
nach der Multimenge der Variablen, der Termlänge, dem Topsymbol und schließlich
lexikographisch nach den Teiltermen ordnet.
Der Term ((x + (3 ∗ y)) + 5) + (x + (x ∗ y)) ist entsprechend dem Verfahren aus
Satz 2.1 mit ∅ nicht-induktiv ableitbar zu dem Polynom 2x + 3y + xy + 5, das in
PNF ist.
. x)) ist entsprechend dem Verfahren aus
Der Term ((3 ∗ x) + (f (z) ∗ 2)) + (3 + (y −
.
Satz 2.1 mit {¬def (f (z))} nicht-induktiv ableitbar zu dem Polynom 3x+2f (z)+(y −
x) + 3, das in PNF ist.
2.4. Literale in Polynomdarstellung
Auch für Literale der Form l op r, wobei op ∈ {6=, =, ≤} ist und l und r Terme der
Sorte Nat sind, kann eine Polynomdarstellung definiert werden. Diese beinhaltet,
dass die beiden Terme l und r Term-Polynome sind.
Definition 2.7 Ein Polynom-Literal
ist ein Literal λPder Form l op r, bei dem l
P
und r Polynome der Form l = ni=1 ai ti + a bzw. r = m
j=1 bj sj + b sind
Analog zu Term-Polynomen kann auch für Polynom-Literale eine Normalform definiert werden. Diese besteht zunächst daraus, dass die beiden Polynome l und r
in PNF sind. Darüber hinaus können hier jedoch noch weitere Forderungen gestellt
werden. Die Summanden können über beiden Seiten paarweise disjunkt gemacht
werden, indem bei gleichen Summanden auf der Seite mit dem größeren Koeffizienten der kleinere Koeffizient abgezogen wird. Dasselbe kann auch mit den Konstanten
gemacht werden, so dass nur noch eine der Konstanten ungleich 0 ist. Zuletzt können
mittels der Distributivität gemeinsame Koeffizienten ausgeklammert und anschließend eliminiert werden. Hierbei müssen jedoch die Konstanten gesondert behandelt
werden, falls sie den gemeinsamen Teiler der Summanden nicht enthalten. Die Behandlung ist abhängig von der Literalart. Daraus ergibt sich folgende Definition für
die Polynom-Normalform erster Stufe für Literale:
Pn
Pm
Definition 2.8 Ein Polynom-Literal λ =
i=1 ai ti + a op
j=1 bj sj + b ist in
Polynom-Normalform erster Stufe (PNF1), falls gilt:
1. op ∈ {6=, =, ≤}
2. die beiden Polynome
Pn
i=1 ai ti
+ a und
Pm
j=1 bj sj
+ b sind in PNF
3. alle ti , sj sind paarweise verschieden
4. a = 0 oder b = 0
5. alle ai , bj haben keinen gemeinsamen Teiler außer 1
28
2.4. Literale in Polynomdarstellung
Definition 2.9 Sei spec eine Spezifikation mit Konstruktoren. Ein Literal λ heißt
in spec mit einer Klausel Θ zu einer Klauselmenge K = {Γ1 , . . . , Γn } mit Γi =
λi,1 . . . λi,ki für alle i ∈ {1, . . . , n} nicht-induktiv ableitbar, wenn das Ziel hλ ; wi sich
durch einmalige Anwendung der QuodLibet-Inferenzregel Literal Hinzufügen mit Θ
und anschließende Anwendung von nicht-induktiven Inferenzregeln (wobei nur in
spec gültige Lemmata und Axiome für applikative Inferenzregeln verwendet werden)
in die Ziele
hΛ1 , λ ; wi , . . . , hΛn , λ ; wi , hΛ, λ1,1 , . . . , λ1,k1 ; wi , . . . , Λ, λj,1 , . . . , λj,kj ; w
überführen lässt. Dabei ist Λ1 , . . . , Λn , Λ die aus Θ resultierende Fallunterscheidung.
Besteht dabei die Klauselmenge K nur aus einer Klausel mit einem Literal, das
heißt K = {λ1,1 }, so sagt man auch, dass λ in spec mit Θ zu λ1,1 nicht-induktiv
ableitbar ist.
Bemerkung: Ist ein Literal λ in spec mit Θ zur Klauselmenge K = ∅ ableitbar, so
bedeutet dies, dass für den Beweis des Ziels hλ ; wi nur noch die aus der Fallunterscheidung resultierenden Ziele hΛ1 , λ ; wi , . . . , hΛn , λ ; wi bewiesen werden müssen.
Ist ein Literal λ in spec mit Θ zur Klauselmenge K = {} ableitbar, so bedeutet
dies, dass das Literal λ aus jedem Ziel entfernt werden kann, sofern zuvor eine
Fallunterscheidung nach Θ gemacht wird.
Auch hier lässt sich, analog zu Lemma 2.1, die nicht-induktive Ableitbarkeit verketten.
Lemma 2.4 Sei spec eine Spezifikation mit Konstruktoren und das Literal λ in spec
mit Θ1 zur Klauselmenge K = {Λ1 , . . . , Λn } mit Λi = λi,1 . . . λi,ki für i ∈ {1, . . . , n}
nicht-induktiv ableitbar. Sei weiterhin das Literal λj,k mit j ∈ {1, . . . , n} und k ∈
{1, . . . , kj } in spec mit Θ2 zu einer Klauselmenge K2 = {∆1 , . . . , ∆m } nicht-induktiv
ableitbar und Γl := λj,1 . . . λj,k−1 , ∆l , λj,k . . . λj,ki für l ∈ {1, . . . , m}. Dann ist λ in
spec mit Θ = Θ1 ∪ Θ2 zur Klauselmenge {Λ1 , . . . , Λj−1 , Γ1 , . . . , Γm , Λj+1 , . . . , Λn }
nicht-induktiv ableitbar.
t
u
Beweis: Analog Lemma 2.1.
Lemma 2.5 Sei spec eine Spezifikation mit Konstruktoren und linearer Arithmetik.
Jedes Literal λ der Form λ = l op r, wobei op ∈ {6=, =, ≤} ist und l und r
Terme der Sorte Nat sind, ist in spec mit einer Klausel PNFDefCond(λ) zu einer
Klauselmenge Kp nicht-induktiv ableitbar, in der alle Literale in PNF1 sind.
P
P
Beweis: Seien lN = ni=1 ai ti + a und rN = m
j=1 bj sj + b Term-Polynome in PNF,
die sich in spec mit PNFDefCond(l) bzw. PNFDefCond(r) aus l bzw. r ableiten lassen. Diese existieren nach Satz 2.1. Sei λ0 := lN op rN . Dann ist λ0 in spec mit
PNFDefCond(λ) := PNFDefCond(l) ∪ PNFDefCond(r) aus λ nicht-induktiv ableitbar. Es sind dann in λ0 alle ti paarweise verschieden, ebenso alle sj . Jedoch kann es
i und j mit ti = sj geben. Diese müssen wie folgt zusammengefasst werden: Seien
. a )↓ und d := (a −
. b )↓ für alle i, j mit t = s sowie a0 := (a −
. b)↓
cj := (bj −
i
i
i
j
i
j
.
und b0 := (b − a)↓. Sei weiterhin
29
Kapitel 2. Integration der linearen Arithmetik
X
λ00 :=
X
X
i=1
X
bj sj +
cj sj + b0
{j|1≤j≤m,∃i:(sj =ti ∧cj 6=0)}
{j|1≤j≤m,∀i:sj 6=ti }
=:
di ti + a0 op
{i|1≤i≤n,∃j:(sj =ti ∧di 6=0)}
{i|1≤i≤n,∀j:sj 6=ti }
n0
X
ai ti +
m0
a0i t0i + a0 op
X
b0j s0j + b0
j=1
λ00 erfüllt nun bereits die ersten vier Bedingungen der PNF1. Außerdem ist λ00 in
spec mit PNFDefCond(λ) aus λ0 (Anwendung von L11 und L12 ) und damit nach
Lemma 2.4 aus λ nicht-induktiv ableitbar.
Um auch die fünfte Bedingung zu erfüllen, werden gemeinsame Faktoren aus den
Koeffizienten von λ00 zunächst ausgeklammert (Anwendung von L6 ) und anschließend eliminiert. Sei dazu g der größte gemeinsame Teiler aller a0i und b0j , das heißt
a0i = (g ∗ a00i )↓ für alle i ∈ {1, . . . , n0 } und b0j = (g ∗ b00j )↓ für alle j ∈ {1, . . . , m0 }. Seien
weiterhin a00 , a000 , b00 , b000 ∈ N , so dass a0 = (g ∗ a00 + a000 )↓ und b0 = (g ∗ b00 + b000 )↓ sowie
a000 < g und b000 < g erfüllt sind. Je nach Literalart wird dann wie folgt verfahren:
• op = 6=:
P 0 00 0
P 0
00
Gilt a000 = 0 und b000 = 0, so ist λp := ni=1 a00i t0i + a00 6= m
j=1 bj sj + b ein
Literal in PNF1, das in spec aus λ00 mit PNFDefCond(λ) (Anwendung von L17 )
und damit nach Lemma 2.4 aus λ nicht-induktiv ableitbar ist.
Anderenfalls ist ∅ eine Klauselmenge in PNF1, die in spec mit PNFDefCond(λ)
aus λ00 (Anwendung der Inferenzregel Nicht-induktive Subsumption mit L16 )
und damit nach Lemma 2.4 aus λ nicht-induktiv ableitbar ist.
• op = ≤:
P 0 00 0
P 0
00
Gilt a000 = 0, so ist λp := ni=1 a00i t0i + a00 ≤ m
j=1 bj sj + b ein Literal in PNF1,
das in spec aus λ mit PNFDefCond(λ) (Anwendung von L14 ) und damit nach
Lemma 2.4 aus λ nicht-induktiv ableitbar ist.
P 0 00 0
P 0
00
Anderenfalls ist λp := ni=1 a00i t0i + (a00 + 1)↓ ≤ m
j=1 bj sj + b ein Literal in
PNF1, das in spec aus λ mit PNFDefCond(λ) (Anwendung von L15 ) und damit
nach Lemma 2.4 aus λ nicht-induktiv ableitbar ist.
• op = =:
P 0
P 0 00 0
00
Gilt a000 = 0 und b000 = 0, so ist λp := ni=1 a00i t0i + a00 = m
j=1 bj sj + b ein
00
Literal in PNF1, das in spec aus λ mit PNFDefCond(λ) (Anwendung von L17 )
und damit nach Lemma 2.4 aus λ nicht-induktiv ableitbar ist.
Anderenfalls ist die Menge {} eine Klauselmenge in PNF1, die in spec mit
PNFDefCond(λ) aus λ00 (Applikative Literal-Beseitigung mit L16 ) und damit
nach Lemma 2.4 aus λ nicht-induktiv ableitbar ist.
t
u
30
2.4. Literale in Polynomdarstellung
Beispiel: An das Beispiel zu Satz 2.1 anknüpfend, sei folgendes Literal gegeben:
. x))
((x + (3 ∗ y)) + 5) + (x + (x ∗ y)) = ((3 ∗ x) + (f (z) ∗ 2)) + (3 + (y −
Dieses Literal ist entsprechend dem Verfahren aus Satz 2.1 mit {¬def (f (z))} nichtinduktiv ableitbar zum Polynom-Literal
. x) ,
3y + xy + 2 = x + 2f (z) + (y −
das in PNF1 ist.
Diese Polynom-Normalform erster Stufe lässt sich auch auf negierte ≤-Literale
sowie eine bestimmte Art von Ordungsliteralen erweitern. Dies geschieht, indem
diese Literale zunächst in ≤-Literale umgewandelt werden und anschließend mit
Lemma 2.5 zu einer Klauselmenge in PNF1 abgeleitet werden.
Lemma 2.6 Sei spec eine Spezifikation mit Konstruktoren und linearer Arithmetik.
Dann ist in spec jedes Literal λ der Form λ = l 6≤ r, λ = l < r oder λ = l 6< r
wobei l und r Terme der Sorte Nat sind, mit einer Klausel PNFDefCond(λ) zu einem
Literal der Form l0 ≤ r0 nicht-induktiv ableitbar.
Beweis:
1. Habe λ die Form λ = l 6≤ r. Dann ist λ in spec mit PNFDefCond(λ) unter
Anwendung von L18 zu r + 1 ≤ l nicht-induktiv ableitbar.
2. Habe λ die Form λ = l < r. Dann ist λ in spec mit PNFDefCond(λ) unter
Anwendung von L19 zu l + 1 ≤ r nicht-induktiv ableitbar.
3. Habe λ die Form λ = l 6< r. Dann ist λ in spec mit PNFDefCond(λ) unter
Anwendung von L20 zu r ≤ l nicht-induktiv ableitbar.
t
u
Satz 2.2 Sei spec eine Spezifikation mit Konstruktoren und linearer Arithmetik.
Jedes Literal λ der Form λ = l op r, wobei op ∈ {6=, =, ≤, 6≤, <, 6<} ist und l und r
Terme der Sorte Nat sind , ist in spec mit einer Klausel PNFDefCond(λ) zu einer
Klauselmenge Kp nicht-induktiv ableitbar, in der alle Literale in PNF1 sind.
t
u
Beweis: Folgt unmittelbar aus Lemma 2.6 und Lemma 2.5.
Von der Polynom-Normalform erster Stufe ausgehend, wird die Polynom-Normalform zweiter Stufe bestimmt, indem für Minuszeichen im linearen Anteil des
Literals eine Fallunterscheidung gemacht wird. Dies resultiert in einer konjunktiv
verknüpften Menge von Klauseln, in deren linearem Anteil keine Minuszeichen mehr
vorkommen.
Definition 2.10 Die Anzahl der Minuszeichen im linearen Anteil eines Terms t,
bezeichnet mit mp(t), ist wie folgt rekursiv definiert:
 Pn
falls f ∈ {+, s}

i=1 mp(ti )


oder f = ∗ und t1 ∈ oder t2 ∈
Pn
mp(f (t1 , . . . , tn )) =
.

i=1 mp(ti ) + 1 falls f = −


0
sonst
N
31
N
Kapitel 2. Integration der linearen Arithmetik
Die Anzahl der Minuszeichen im linearen Anteil eines Literals λ = l op r ist die
Summe aus mp(l) und mp(r) und wird als mp(λ) bezeichnet.
Definition 2.11 Ein Literal λ = l op r ist in Polynom-Normalform
zweiter Stufe
P
P
(PNF2), falls es in PNF1 ist und somit die Form λ = ni=1 ai ti + a op m
j=1 bj sj + b
. für alle i ∈ {1, . . . , n} und top(s ) 6= −
. für alle j ∈ {1, . . . , m}
hat und top(ti ) 6= −
j
gilt.
N
Eine Klausel Λ = λ1 . . . λl für l ∈
ist in Polynom-Normalform zweiter Stufe
(PNF2), falls alle Literale λ1 , . . . , λl in PNF2 sind.
N
Eine Klauselmenge K = {Λ1 , . . . , Λk } für k ∈
ist in Polynom-Normalform
zweiter Stufe (PNF2), falls alle Klauseln Λ1 , . . . , Λl in PNF2 sind.
Für den Beweis, dass bestimmte Literale zu einer Klauselmenge in PNF2 ableitbar
sind, wird noch die folgende Definition benötigt:
Definition 2.12 Für zwei Klauseln Γ = γ1 . . . γn und ∆ = δ1 . . . δm bezeichne Γ∆
die Konkatenation der beiden Klauseln, das heißt die Klausel γ1 . . . γn δ1 . . . δm . Die
disjunktive Verknüpfung K1 ∨ K2 zweier Klauselmengen K1 und K2 ist dann wie
folgt definiert:
K1 ∨ K2 := {Γ∆ | Γ ∈ K1 , ∆ ∈ K2 }
Satz 2.3 Sei spec P
eine Spezifikation P
mit Konstruktoren und linearer Arithmetik.
m
Jedes Literal λ = ni=1 ai ti + a op
j=1 bj sj + b in PNF1 ist in spec mit einer
Klausel PNFDefCond(λ) zu einer Klauselmenge Kp nicht-induktiv ableitbar, die in
PNF2 ist.
Beweis: Vollständige Induktion über die Anzahl mp(λ) der Minuszeichen im linearen Anteil von λ
• Induktionsanfang: mp(λ) = 0
Da λ keine Minuszeichen im linearen Anteil enthält, enthält λ auch keine Minuszeichen an Top-Position eines Summanden und ist somit in PNF2. Somit
ist die Klauselmenge {λ} ebenfalls in PNF2.
• Induktionsschritt: mp(λ) > 0
Fallunterscheidung nach dem Summanden, in dem ein Minuszeichen vorkommt:
1. tk enthält ein Minuszeichen für ein k ∈ {1, . . . , n}: dieses Minuszeichen
muss das Top-Symbol von tk sein, da tk sonst keinen linearen Anteil hätte
. t00 . Seien weiterhin
(weil λ in PNF1 ist); sei deshalb tk = t0k −
k
λ1 = t00k 6≤ t0k
X
λ2 =
λ3 =
λ4 =
ai ti +
ak t0k
+ a op
bj sj + ak t00k + b
j=1
i∈{1,...,n,i6=k}
t00k ≤ t0k
X
m
X
ai ti + a op
m
X
j=1
i∈{1,...,n,i6=k}
32
bj sj + b
2.4. Literale in Polynomdarstellung
und Kl für l ∈ {1, 2, 3, 4} in spec mit PNFDefCond(λl ) aus λl nicht-induktiv ableitbare Klauselmengen, deren Literale in PNF1 sind. Diese existieren nach Satz 2.2. Besteht die Klauselmenge Kl aus genau einer Klausel
mit genau einem Literal λ0l , so sei Kl0 eine in spec mit PNFDefCond(λ0l )
aus λ0l nicht-induktiv ableitbare Klauselmenge in PNF2. Besteht die Klauselmenge Kl jedoch nur aus der leeren Klausel oder ist selbst leer, so sei
Kl0 = Kl . Eine andere Möglichkeit für Kl0 gibt es nicht (siehe Ergebnisse
von Satz 2.2). Alle Klauselmengen Kl0 für l ∈ {1, 2, 3, 4} sind dann in
PNF2. Die abgeleiteten Klauselmengen Kl0 existieren nach Induktionsvoraussetzung, da die Anzahl der Minuszeichen im linearen Anteil von λ0l
jeweils um mindestens eins kleiner ist als die von λ. Dann ist die Klauselmenge
(K10 ∨ K20 ) ∪ (K30 ∨ K40 ) eine in spec mit PNFDefCond(λ) ⊇
S
0
i∈{1,...,4} (PNFDefCond(λl ) ∪ PNFDefCond(λl )) aus λ nicht-induktiv ableitbare Klauselmenge in PNF2 (Fallunterscheidung mit Literal Hinzufügen
nach dem Literal t00k ≤ t0k und Anwendung von L21 und L22 bzw. L23 ).
. s00 für ein k ∈ {1, . . . , m}: analog
2. sk = s0k −
t
u
k
Beispiel: Anknüpfend an das Beispiel zu Lemma 2.5 ist das Literal
. x) ,
3y + xy + 2 = x + 2f (z) + (y −
das in PNF1 ist, entsprechend dem Verfahren aus Satz 2.3 mit {¬def (f (z))} nichtinduktiv ableitbar zur Klauselmenge
{y + 1 ≤ x, 2y + xy + 2 = 2f (z)}, {x ≤ y, 3y + xy + 2 = x + 2f (z)}
,
in der alle Literale in PNF2 sind.
Da das Entscheidungsverfahren, das im folgenden Kapitel vorgestellt wird, sehr
stark auf die Verarbeitung von ≤-Literalen und Ungleichungen ausgelegt ist, ist es
manchmal nützlich, Gleichungen in zwei ≤-Literale umzuwandeln. Dazu wird die
Polynom-Normalform dritter Stufe wie folgt definiert:
Definition 2.13 Ein Literal λ = l op r ist in Polynom-Normalform dritter Stufe
(PNF3), falls es ein PNF2 ist und op ∈ {6=, ≤} ist.
Dass eine Umwandlung eines Literals in PNF2 in die PNF3 möglich ist, besagt der
folgende Satz:
Satz 2.4 Sei spec eine Spezifikation mit Konstruktoren und linearer Arithmetik.
Jedes Literal λ = l op r in PNF2 ist in spec mit einer Klauselmenge PNFDefCond(λ)
zu einer Klauselmenge Kp nicht-induktiv ableitbar, in der jedes Literal in PNF3 ist.
Beweis: Ist op ∈ {6=, ≤}, so ist λ bereits in PNF3. Sei op = =. Dann ist
{l ≤ r, r ≤ l} eine in spec aus λ nicht-induktiv ableitbare Klauselmenge, deren
Literale in PNF3 sind. Die Ableitbarkeit kann wie folgt gezeigt werden: Zunächst wird
mittels der Inferenzregel Nicht-induktive Subsumption mit L24 das Ziel hl = r ; wi
in die beiden Ziele
hl ≤ r, l = r ; wi
hr ≤ l, l 6≤ r, l = r ; wi
33
Kapitel 2. Integration der linearen Arithmetik
abgeleitet (zusätzliche Definiertheitsziele können sofort mit L1 und L2 sowie den
Literalen aus PNFDefCond(λ) gezeigt werden). Das erste Ziel kann dann mittels
der Inferenzregel Applikative Literal-Beseitigung mit L25 in das Ziel hl ≤ r ; wi
abgeleitet werden. Das zweite Ziel kann mittels Applikative Literal-Beseitigung mit
L26 in das Ziel hr ≤ l, l = r ; wi abgeleitet werden. Diese kann wiederum mittels der
Inferenzregel Applikative Literal-Beseitigung mit L25 in das Ziel hr ≤ l ; wi abgeleitet
werden.
t
u
Beispiel: Das Literal 2y + xy + 2 = 2f (z) aus dem Beispiel zu Satz 2.3 ist in
PNF2 und kann, entsprechend dem Verfahren aus Satz 2.4, mit {¬def (f (z))} nichtinduktiv zur Klauselmenge
{2y + xy + 2 ≤ 2f (z)}, {2f (z) ≤ 2y + xy + 2}
,
abgeleitet werden, in der alle Literale in PNF3 sind.
Die Normalform für Polynome-Literale wird somit in drei Stufen definiert. Dies
erleichtert die Definition, da diese sukzessive aufgebaut werden kann. Außerdem
kann in der im nächsten Kapitel beschriebenen Inferenzregel für die Normalisierung
ebenfalls ein stufenweises Vorgehen realisiert werden. Dies hat insbesondere den
Vorteil, dass je nach Notwendigkeit eine Aufspaltung in mehrere Fälle vermieden
werden kann. Eine genauere Beschreibung zum Einsatz der verschiedenen Stufen
der Normalisierung ist in der Beschreibung der neuen Taktiken im Abschnitt 3.3
enthalten.
34
3. Integration eines
Entscheidungsverfahrens für lineare
Arithmetik
3.1. Das Entscheidungsverfahren
Entscheidungsverfahren für lineare Arithmetik über den natürlichen oder ganzen
Zahlen sind sehr aufwändig im Vergleich zu Entscheidungsverfahren für lineare
Arithmetik über rationalen Zahlen. Dies liegt daran, dass das Problem für natürliche oder ganze Zahlen NP-vollständig ist und daher kein Verfahren bekannt ist, das
eine lineare Komplexität hat. Für rationale Zahlen sind jedoch Verfahren mit linearer Komplexität bekannt. Aus diesem Grund entschieden sich beispielsweise Boyer
und Moore [BM88] dazu, ein Entscheidungsverfahren für lineare Arithmetik über
rationalen Zahlen als hinreichendes Kriterium für die Erfüllbarkeit von Formeln der
linearen Arithmetik über den ganzen Zahlen zu verwenden. Wenn eine (quantorenfreie) lineare Formel keine Lösung in den rationalen Zahlen besitzt, so besitzt Sie
auch keine Lösung in den ganzen Zahlen. Umgekehrt gilt dies natürlich nicht: besitzt
eine lineare Formel eine Lösung in den rationalen Zahlen, so heißt das nicht, dass sie
auch eine Lösung in den ganzen Zahlen besitzt. Dieser Fall tritt jedoch in der Praxis
sehr selten auf, weshalb es durchaus vertretbar sein kann, diese Schwäche in Kauf zu
nehmen. Man muss sich dann jedoch bewusst sein, dass man damit kein Entscheidungsverfahren für die lineare Arithmetik der ganzen Zahlen einsetzt. Somit nimmt
man in Kauf, dass durchaus auch reine Formeln der linearen Arithmetik der ganzen Zahlen mit den aufwändigeren Mitteln außerhalb des Entscheidungsverfahrens“
”
entschieden werden müssen.
Eine andere Möglichkeit, diesen Fall zu behandeln, zeigt Pugh in seiner Beschreibung des Omega-Tests [Pug92]. Die grundlegende Idee ist, in einem dieser seltenen
Fälle, in denen das Entscheidungsverfahren für rationale Zahlen nicht ausreicht, eine aufwändigere Berechnung zu starten, um durch systematische Durchsuchung des
rationalen Lösungsbereichs ganzzahlige Lösungen aufzufinden. Man hofft dann, dass
dies nicht allzu häufig auftritt. Im Extremfall kann dies allerdings zu einer sehr
ungünstigen Laufzeit führen, wie Pugh in seinem Beispiel An omega test nightma”
re“ [Pug92] demonstriert, in dem gezeigt wird, dass die Laufzeit von der Größe der
Koeffizienten abhängt.
Wie in Abschnitt 1.3 beschrieben, ermöglicht ein Entscheidungsverfahren, die Erfüllbarkeit eines gegebenen Ausdrucks zu bestimmen. Da in QuodLibet jedoch nicht
die Erfüllbarkeit, sondern die Gültigkeit eines (quantorenfreien) Ausdrucks gezeigt
werden soll, müssen die Ausdrücke vor Anwendung des Entscheidungsverfahrens ne-
35
Kapitel 3. Integration eines Entscheidungsverfahrens
giert werden. Dies ist leicht möglich, da in QuodLibet mit Klauseln, das heißt
disjunktiv verknüpften Literalen, gearbeitet wird und die meisten Entscheidungsverfahren auf Aussagen in Form von konjunktiv verknüpften Literalen beschrieben
sind. Somit müssen lediglich die einzelnen Literale negiert werden. Denn liefert das
Entscheidungsverfahren das Ergebnis, dass der Ausdruck Λ = λ1 ∧ λ2 ∧ . . . ∧ λn
unerfüllbar ist (das heißt, in keinem Datenmodell und von keiner Belegung erfüllt
wird), so heißt dies, dass die Klausel ¬Λ = ¬λ1 ∨ ¬λ2 ∨ . . . ∨ ¬λn gültig ist. Ist Λ
erfüllbar, so ist ¬Λ nicht gültig. Bei der folgenden Beschreibung des verwendeten
Entscheidungsverfahrens wird daher ebenfalls von konjunktiv verknüpften Literalen
ausgegangen und einer Entscheidung über die Erfüllbarkeit ausgegangen. Für den
Einsatz in QuodLibet wird das Entscheidungsverfahren dann so modifiziert, dass
ohne Negation direkt auf den Literalen der Klauseln gearbeitet werden kann.
In dieser Arbeit wird der Ansatz verwendet, der auch dem Omega-Test zugrunde
liegt. Das heißt, basierend auf einem Entscheidungsverfahren für rationale Zahlen
wird ein Entscheidungsverfahren für natürliche Zahlen entwickelt, indem der rationale Lösungsraum auf natürlichzahlige Lösungen durchsucht wird. Als grundlegendes Entscheidungsverfahren für rationale Zahlen wird die Fourier-Motzkin-Variablenelimination [DE73] verwendet. Dieses Verfahren ist für Mengen von ≤-Literalen
definiert und basiert auf der einfachen Idee, zwei ≤-Literale so mit Konstanten
zu multiplizieren, dass bei einer anschließenden Addition der beiden Literale eine
Variable
eliminiert
Hierfür werden zunächst alle Ungleichungen in die Form
Pwird.
Pn
m
b
y
a
x
+
a
≤
i=1 i i + b gebracht, wobei alle aj , a, bi und b positiv sind.
j=1 j j
Wenn dann im Literal s1 ≤ t1 die Variable x in s1 mit dem Faktor c1 und im
Literal s2 ≤ t2 in t2 mit dem Faktor c2 vorkommt, dann können diese Literale zu
c2 s1 + c1 s2 ≤ c2 t1 + c1 t2 addiert werden. In diesem neuen Literal kommt auf beiden
Seiten die Variable x mit dem Faktor c1 ∗c2 vor. Durch anschließende Normalisierung
wird damit die Variable x aus dem neuen Literal eliminiert. Eine Belegung, die
s1 ≤ t1 und s2 ≤ t2 erfüllt, erfüllt auch stets das neue Literal.
Eine Menge von ≤-Literalen kann nun in eine neue Menge überführt werden, in der
die Variable x nicht mehr vorkommt. Dazu wird für jedes Paar von Literalen in der
ursprünglichen Menge, bei dem die Variable x bei einem Literal auf der linken und
bei einem auf der rechten Seite vorkommt, eine Variablenelimination durchgeführt.
Die Menge der Literale, die dadurch entstehen, wird zusammen mit den Literalen,
in denen die Variable x nicht vorkommt, als neue Ausgangsmenge verwendet, um
die nächste Variable zu eliminieren. Kommt eine Variable x nur auf linken oder nur
auf rechten Seiten vor, so können alle Literale, in denen die Variable x vorkommt,
entfernt werden. Dies ist möglich, weil stets ein hinreichend kleiner oder großer Wert
für x gefunden werden kann, so dass diese Literale erfüllt sind.
Somit kann effektiv jede Variable vollständig aus der gesamten Literalmenge eliminiert werden. Führt man dies für alle Variablen durch, die in den Literalen vorkommen, so erhält man letztendlich nur noch variablenfreie Literale. Hat mindestens
eines dieser Literale die offensichtlich widersprüchliche Form c ≤ 0 mit c ∈
und
c > 0, so ist die Klausel unerfüllbar. Enthält die Klausel jedoch kein solches Literal,
sondern nur noch offensichtlich allgemeingültige Literale der Form 0 ≤ c mit c ∈
Q
Q
36
3.1. Das Entscheidungsverfahren
und c ≥ 0, so ist die Klausel erfüllbar. Einen anderen Fall gibt es nicht, weshalb das
Verfahren stets zu einer Entscheidung führt.
Dieses Verfahren muss für die Anwendung im Rahmen von QuodLibet noch angepasst werden. Zum einen dürfen hier Variablen nicht komplett eliminiert werden,
da die Variablen der linearen Arithmetik auch ganze Terme repräsentieren können.
Würde man nun diese Terme komplett aus allen Literalen eliminieren, so ginge eine
eventuell in den zu Variablen abstrahierten Termen enthaltene Information verloren.
Kann mittels des Entscheidungsverfahrens die Unerfüllbarkeit nachgewiesen werden,
ist dies natürlich unerheblich. Stellt das Entscheidungsverfahren jedoch die Erfüllbarkeit der Literalmenge fest, so müssen die Informationen aus den abstrahierten
Termen verwendet werden, um eventuell doch noch die Unerfüllbarkeit nachweisen
zu können. Dies liegt daran, dass für die Variablen der linearen Arithmetik, die einen
Term außerhalb der linearen Arithmetik repräsentieren, nicht beliebige Werte eingesetzt werden können. Daher werden auch die ursprünglichen Literale weiterhin in
der Literalmenge mitgeführt. Auch die Löschung von Literalen, wenn eine Variable
nur auf einer Seite aller Literale vorkommt, wird nicht durchgeführt. Führt man
dabei auf eine andere Weise Buch, welche Variablen bereits eliminiert worden sind,
so führt das Verfahren nach wie vor zu einer Entscheidung.
Weiterhin ist eine Erweiterung des Verfahrens auf den Zahlenbereich der natürlichen Zahlen notwendig. Erweist sich eine Literalmenge als erfüllbar über den rationalen Zahlen, so wird anschließend die gefundene Lösungsmenge auf Lösungen in
den natürlichen Zahlen durchsucht, indem vor dem letzten Schritt der Variablenelimination eine Fallunterscheidung durchgeführt wird. Dies geschieht, indem eine oder
mehrere neue Literalmengen erzeugt werden, die alle möglichen Fälle abdecken, für
die die zuletzt übrig gebliebenen Variablen Werte aus den natürlichen Zahlen annehmen könnten. Lässt sich in all diesen Fällen nachweisen, dass keine natürlichzahlige
Lösung existiert, so ist die Unerfüllbarkeit der Literalmenge über den natürlichen
Zahlen nachgewiesen. Anderenfalls ist die Literalmenge auch über den natürlichen
Zahlen erfüllbar. Welche Möglichkeiten hierbei genau überprüft werden müssen, ist
in [Pug92] beschrieben. Ein konkretes Beispiel wird im Rahmen der Beschreibung
der Inferenzregel ≤-Fallunterscheidung im Abschnitt 3.2.5 erläutert.
Neben den ≤-Literalen gibt es in QuodLibet auch Ungleichungen, die durch die
eingangs beschriebene Negation der Literale zu Gleichungen werden. Eine solche
Gleichung l = r könnte man in zwei ≤-Literale l ≤ r und r ≤ l umwandeln und
das oben beschrieben Verfahren zur Lösung anwenden. Die in den Gleichungen enthaltene Information kann jedoch deutlich effizienter eingesetzt werden, indem die
Gleichung nach einer Variablen aufgelöst wird und anschließend in den anderen Literalen eine entsprechende Ersetzung dieser Variablen vorgenommen wird. Dies ist
jedoch nur möglich, wenn der Koeffizient der Variablen 1 ist. Um in einer Gleichung,
in der keiner der Koeffizienten 1 ist, mindestens einen der Koeffizienten auf 1 zu
bringen, wird das in [Knu81] beschriebene Verfahren verwendet. Dieses basiert auf
dem euklidischen Algorithmus beruht und erreicht die Verkleinerung des minimalen
Faktors in einem Literal dadurch, dass das Literal durch diesen minimalen Faktor
dividiert wird, wobei die Ergebnisse der Division auf- bzw. abgerundet werden. Um
die durch die Rundung entstehende Differenz auszugleichen wird eine zusätzliche
Variable eingeführt. Anschließend wird die Gleichung nach der Variablen aufgelöst,
37
Kapitel 3. Integration eines Entscheidungsverfahrens
die ursprünglich den minimalen Faktor hatte und nun den Faktor 1 hat. Der Wert
für diese Variable wird dann in die ursprüngliche Gleichung eingesetzt. Danach ist
der minimale Faktor in der Gleichung kleiner dem ursprünglichen minimalen Faktor.
Falls nötig, wird dieser Schritt so lange wiederholt, bis der minimale Faktor 1 ist.
Beispiel: Das Literal 2x + 5y = 7, in dem keiner der Koeffizienten 1 ist, kann durch
Division durch den minimalen Faktor 2 zu x + 2y + z = 4 umgeformt werden (auf der
linken Seite wird abgerundet, auf der rechten Seite aufgerundet). Dieses resultierende
Literal kann dann nach x aufgelöst werden und bestimmt somit einen Term, der für
x im ursprünglichen Literal (und auch in alle anderen Literalen) eingesetzt werden
kann. Das ursprüngliche Literal hat dann die Form y + 1 = 2z. Der minimale Faktor
ist nun 1, so dass diese Gleichung nun nach y aufgelöst und das Resultat in allen
anderen Literalen für y eingesetzt werden kann. Damit wurden die Variable x und y
aus allen Literalen eliminiert, die Variable z wurde neu eingeführt. Die Gesamtzahl
der Variablen wurde somit um eins reduziert.
Die Realisierung des beschriebenen Entscheidungsverfahrens erfolgt in QuodLibet durch die Erweiterung der Inferenzregeln um einzelne Regeln für die Teilschritte
des Entscheidungsverfahrens. Diese werden dann durch Taktiken angesteuert, die das
eigentliche Verfahren realisieren. Hierbei ist eine enge Verzahnung mit den bereits
vorhandenen Inferenzregeln und somit eine Erweiterung der vorhandenen Taktiken
notwendig.
3.2. Inferenzregeln für das Entscheidungsverfahren
3.2.1. Vorbemerkungen
In den folgenden Abschnitten werden zunächst die einzelnen Inferenzregeln, die zur
Realisierung des Entscheidungsverfahrens in QuodLibet integriert wurden, im Detail beschrieben. Die Beschreibung richtet sich dabei nach der in [Küh00, Anhang
C] verwendeten Form. Das heißt insbesondere, dass die folgenden (Meta-)Variablen
ohne weitere Erklärung verwendet werden:
1. m, n, j, k für natürliche Zahlen
2. t, u, v, l, r für Terme
3. p für Positionen
4. w für Gewichte
5. λ für Literale
6. Γ, ∆, Π für Klauseln
Außerdem wird mit Γ[m] das m-te Literal in einer Klausel Γ bezeichnet.
38
3.2. Inferenzregeln für das Entscheidungsverfahren
Zur besseren Verständlichkeit wird zusätzlich zu jeder Inferenzregel ein Beispiel für
die Anwendung der Regel gegeben. Die Variablen x, y und z sind in diesen Beispielen
Konstruktorvariablen der Sorte Nat.
Weiterhin werden zu jeder Inferenzregel die Korrektheit und die Sicherheit gezeigt. Dies dient – wie in Abschnitt 1.2.2 beschrieben – dazu, die Korrektheit und
Widerspruchskorrektheit des Gesamtsystems sicherzustellen. Für den Beweis der Sicherheit ist folgendes Lemma sehr nützlich, das besagt, dass eine Inferenzregel sicher
ist, wenn jedes Teilziel, das bei der Anwendung der Inferenzregel erzeugt wird, durch
hinzufügen von Literalen zum ursprünglichen Ziel entsteht.
Lemma 3.1 (nach [Küh00, Lemma 5.1.2]) Wenn jede Instanz einer Inferenzregel
die Form
hΓ ; wi
hΛ1 , Γ ; w1 i . . . hΛn , Γ ; wn i
mit hΠ1 ; ŵ1 iU1 , . . . , hΠk ; ŵk iUk
N
hat, wobei n, k ∈ , Λ1 , . . . , Λn Klauseln sind und Uj ∈ {I, L} für i = 1, . . . , k
gilt, dann ist die Inferenzregel sicher.
Beweis: Folgt unmittelbar aus Definition 1.8.
t
u
Kann die Sicherheit nicht mit diesem Lemma gezeigt werden, so wird sie in den
folgenden Beweisen auf Inferenzregeln zurückgeführt, deren Sicherheit bereits bewiesen wurde. Um das dafür benötigte Lemma beweisen zu können, wird zunächst
folgendes Lemma gezeigt:
Lemma 3.2 Sei das Ziel hΓ ; wi durch die aufeinander folgende Anwendung einer
Folge von k Instanzen (k ∈ ) von nicht-induktiven und sicheren Inferenzregeln auf
hΓ ; wi oder bereits abgeleitete Teilziele unter Verwendung ausschließlich gültiger
Lemmata in die Teilziele hΓ1 ; w1 i, . . . , hΓn ; wn i ableitbar. Ist dann die Klausel Γ
induktiv gültig, so sind auch die Klauseln Γ1 , . . . , Γn induktiv gültig.
N
Beweis: Vollständige Induktion nach k.
Induktionsanfang: Ist k = 0, so ist n = 1 und Γ1 = Γ. Da Γ induktiv gültig ist,
ist auch Γ1 induktiv gültig.
Induktionsschritt: Ist k = l+1, so werde durch aufeinander folgende Anwendung
der ersten l Instanzen von nicht-induktiven und sicheren Inferenzregeln auf das Ziel
hΓ ; wi oder bereits abgeleitete Teilziele unter Verwendung ausschließlich induktiv
gültiger Lemmata das Ziel hΓ; wi in die Teilziele hΓ01 ; w10 i, . . . , hΓ0n0 ; wn0 0 i abgeleitet.
Nach Induktionsvoraussetzung sind alle Γ01 , . . . , Γ0n0 induktiv gültig. Leitet nun die
kte Inferenzregel das Ziel hΓ0i ; wi0 i zu den Teilzielen hΓ001 ; w100 i, . . . , hΓ00n00 ; wn0000 i ab, so
sind, da auch die kte Inferenzregel sicher ist, auch alle Γ001 , . . . , Γ00n00 induktiv gültig.
Somit sind alle Γ1 , . . . , Γn induktiv gültig.
t
u
Nun kann das Lemma gezeigt werden, das für die Beweise der Sicherheit der neuen
Inferenzregeln verwendet werden kann.
39
Kapitel 3. Integration eines Entscheidungsverfahrens
Lemma 3.3 Die nicht-applikative Inferenzregel
hΓ ; wi
hΓ1 ; w1 i . . . hΓn ; wn i
falls Anwendbarkeitsbedingung
ist sicher, falls es für jede Instanz der Inferenzregel eine Folge von Instanzen von
nicht-induktiven und sicheren Inferenzregeln gibt, deren aufeinander folgende Anwendung auf hΓ ; wi oder bereits abgeleitete Teilziele unter Verwendung ausschließlich induktiv gültiger Lemmata das Ziel hΓ; wi in die Teilziele hΓ1 ; w1 i, . . . , hΓn ; wn i
ableitet.
Beweis: Sei
hΓ ; wi
hΓ1 ; w1 i . . . hΓn ; wn i
eine Instanz der Inferenzregel und Γ induktiv gültig. Weiterhin gebe es eine Folge
von Instanzen von nicht-induktiven und sicheren Inferenzregeln, deren aufeinander
folgende Anwendung auf hΓ ; wi oder bereits abgeleitete Teilziele unter Verwendung ausschließlich induktiv gültiger Lemmata das Ziel hΓ ; wi in die Teilziele
hΓ1 ; w1 i, . . . , hΓn ; wn i ableitet. Nach Lemma 3.2 sind dann auch die Klauseln
Γ1 , . . . , Γn induktiv gültig. Somit ist die Inferenzregel sicher.
t
u
Die Beweise der Korrektheit der neuen Inferenzregeln werden ähnlich wie die der
Sicherheit auf die bereits als korrekt bekannten Inferenzregeln zurückgeführt. Um
das dafür benötigte Lemma beweisen zu können, wird zunächst folgendes Lemma
gezeigt:
Lemma 3.4 Sei A ∈ DMod(spec). Sei weiterhin das Ziel hΓ ; wi durch die aufeinander folgende Anwendung einer Folge von k Instanzen (k ∈ ) von nicht-induktiven
und korrekten Inferenzregeln auf hΓ ; wi oder bereits abgeleitete Teilziele unter Verwendung ausschließlich gültiger Lemmata in die Teilziele hΓ1 ; w1 i, . . . , hΓn ; wn i
ableitbar. Existiert dann ein A-Gegenbeispiel der Form (hΓ ; wi, σ, ϕ), so existiert
auch ein A-Gegenbeispiel der Form (hΓi ; wi i, τ, ψ), für das (hΓi ; wi i, τ, ψ) -A
(hΓ ; wi, σ, ϕ) gilt.
N
Beweis: Vollständige Induktion über k.
Induktionsanfang: Ist k = 0, so ist n = 1 und Γ1 = Γ sowie w1 = w. Dann
ist (hΓ1 ; w1 i, σ, ϕ) ein A-Gegenbeispiel, für das offensichtlich (hΓ1 ; w1 i, σ, ϕ) -A
(hΓ ; wi, σ, ϕ) gilt.
Induktionsschritt: Ist k = l + 1, so wurde durch aufeinander folgende Anwendung der ersten l Instanzen von nicht-induktiven und korrekten Inferenzregeln auf
das Ziel hΓ; wi oder bereits abgeleitete Teilziele unter Verwendung ausschließlich induktiv gültiger Lemmata das Ziel hΓ; wi in die Teilziele hΓ01 ; w10 i, . . . , hΓ0n0 ; wn0 0 i abgeleitet. Nach Induktionsvoraussetzung existiert dann ein i0 ∈ {1, . . . , m} und ein AGegenbeispiel der Form (hΓ0i0 ; wi00 i, τ, ψ), so dass (hΓ0i0 ; wi00 i, τ, ψ) -A (hΓ ; wi, σ, ϕ)
gilt. Falls mit der kten Inferenzregel eines der Ziele hΓ0j ; wj0 i für j 6= i0 abgeleitet
wird, so existiert dieses Gegenbeispiel auch anschließend. Wird jedoch hΓ0i0 ; wi00 i
zu den Teilzielen hΓ001 ; w100 i, . . . , hΓ00n00 ; wn0000 i abgeleitet, so existiert, da auch die
40
3.2. Inferenzregeln für das Entscheidungsverfahren
kte Inferenzregel korrekt ist, ein i00 ∈ {1, . . . , 0} und ein A-Gegenbeispiel der Form
(hΓ00i00 ; wi0000 i, π, ρ), so dass (hΓ00i00 ; wi0000 i, π, ρ) -A (hΓ0j ; wj0 i, τ, ψ) gilt. Da weiterhin
(hΓ0i0 ; wi00 i, τ, ψ) -A (hΓ; wi, σ, ϕ) gilt und wegen der Transitivität von -A gilt dann
aber auch (hΓ00i00 ; wi0000 i, π, ρ) -A (hΓ ; wi, σ, ϕ).
t
u
Mit Hilfe dieses Lemmas kann nun das in den Beweisen der neuen Inferenzregeln
verwendete Lemma gezeigt werden.
Lemma 3.5 Die nicht-applikative Inferenzregel
hΓ ; wi
hΓ1 ; w1 i . . . hΓn ; wn i
falls Anwendbarkeitsbedingung
ist korrekt, falls es für jede Instanz der Inferenzregel eine Folge von Instanzen von
nicht-induktiven und korrekten Inferenzregeln gibt, deren aufeinander folgende Anwendung auf hΓ; wi oder bereits abgeleitete Teilziele unter Verwendung ausschließlich
induktiv gültiger Lemmata das Ziel hΓ ; wi in die Teilziele hΓ1 ; w1 i, . . . , hΓn ; wn i
ableitet.
Beweis: Da die Inferenzregel nicht-applikativ ist, kann sie nur aufgrund der ersten
Bedingung von Definition 1.7 korrekt sein. Sei also
hΓ ; wi
hΓ1 ; w1 i . . . hΓn ; wn i
eine Instanz der Inferenzregel und A ∈ DMod(spec) sowie (hΓ ; wi, σ, ϕ) ein A-Gegenbeispiel. Weiterhin gebe es eine Folge von Instanzen von nicht-induktiven und
korrekten Inferenzregeln, deren aufeinander folgende Anwendung auf hΓ ; wi oder
bereits abgeleitete Teilziele unter Verwendung ausschließlich induktiv gültiger Lemmata das Ziel hΓ; wi in die Teilziele hΓ1 ; w1 i, . . . , hΓn ; wn i ableitet. Nach Lemma 3.4
gibt es dann ein i ∈ {1, . . . , n}, so dass ein A-Gegenbeispiel der Form (hΓi ; wi i, τ, ψ)
existiert, für das (hΓi ; wi i, τ, ψ) -A (hΓ ; wi, σ, ϕ) gilt. Somit ist die Inferenzregel
korrekt.
t
u
Um Lemma 3.3 und Lemma 3.5 anwenden zu können, werden die in [Küh00]
eingeführten und als korrekt und sicher bewiesenen Inferenzregeln von QuodLibet genutzt (die deutschen Bezeichnungen der Inferenzregeln sind aus [Kai02] übernommen). Die Axiome, die für die Anwendung der applikativen Inferenzregeln zur
Verfügung stehen, sind in Abschnitt 2.2 aufgeführt. Die Liste der induktiv gültigen
Lemmata aus Abbildung 2.1 wird zusätzlich um die Liste der Lemmata in Abbildung 3.1 ergänzt, deren induktive Gültigkeit ebenfalls in Anhang A gezeigt wird.
Für die Anwendung dieser Inferenzregeln wird jedoch häufig die Definiertheit betroffener Terme gefordert. Diese kann entweder bereits zuvor gezeigt worden sein,
was durch ein negiertes Definiertheitsliteral angezeigt wird, oder muss noch gezeigt
werden. Bei vielen der hier neu eingeführten Inferenzregeln wird daher gefordert,
dass die Definiertheit der Summanden der Polynome bereits gezeigt wurde. Dies
geschieht in der Regel bereits im Rahmen der Umwandlung eines Terms in ein Polynom in PNF, die vor Anwendung der anderen Inferenzregeln stattfinden muss. Es
41
Kapitel 3. Integration eines Entscheidungsverfahrens
0 6= s(x) + y
(L27 )
≤(s(x) + y, 0) = false
. y)
def (x −
(L28 )
(L29 )
≤(x, y) = true ∨ ≤(u, v) = true
. 1))) = true,
← ≤((z ∗ x) + (w ∗ u), (z ∗ y) + ((w ∗ v) + ((z + w) −
(L30 )
z 6= 0, w 6= 0
≤(x, y) = true ∨ x = y + 1 ← ≤(x, y + 1) = true
. y=x
(x + y) −
(L31 )
≤(x + y, x + z) = ≤(y, z)
.
≤(x − v, y + w) = true ← ≤(x, y) = true
(L33 )
≤(y, z) = true ← x + y = z
. z) ← ≤(z, y) = true
(x + z = y ↔ x = y −
. y) ∗ z = (x ∗ z) −
. (y ∗ z)
(x −
(L35 )
(L37 )
. y) + y = x ← ≤(y, x) = true
(x −
(L38 )
x 6= y ← z ∗ x 6= z ∗ y
(L39 )
x + u = y + v ← x = y, u = v
(L40 )
u + x 6= v + y ← u 6= v, x = y
(L41 )
≤(u + x, v + y) = true ← ≤(u, v) = true, x = y
(L42 )
u = v ← u + x = v + y, x = y
(L43 )
u 6= v ← u + x 6= v + y, x = y
(L44 )
≤(u, v) = true ← ≤(u + x, v + y) = true, x = y
(L45 )
≤(x + z, y + w) = true ← ≤(x + u, y + v) = true, ≤(z + v, w + u) = true
(L32 )
(L34 )
(L36 )
(L46 )
Abbildung 3.1.: Weitere in jeder Spezifikation mit linearer Arithmetik induktiv gültige Lemmata.
müssen daher – außer bei der Normalisierung selbst – keine Definiertheitsziele für
die Summanden erzeugt werden, sondern deren Existenz kann vorausgesetzt werden.
Sollte eines der negierten Defininiertheitsliterale jedoch nicht im Ziel enthalten sein,
beispielsweise, weil der Benutzer es mittels der Inferenzregel Applikative Literal-Beseitigung wieder entfernt hat, so kann stets vor Anwendung der Inferenzregeln mittels
der Inferenzregel Literal Hinzufügen ein entsprechendes Literal hinzugefügt werden.
Bei einigen Inferenzregeln müssen jedoch nicht nur einzelne Summanden definiert
sein, sondern auch ganze Polynome. Deren Definiertheit lässt sich jedoch einfach zeigen, wenn die Definiertheit der Summanden vorausgesetzt wird. Dies gelingt durch
Anwendung von Literal Hinzufügen mit einem negierten Definiertheitsliteral für das
Polynom. Das entstehende Ziel mit dem nicht negiertem Definiertheitsliteral def (t)
kann durch Anwendung von Nicht-induktive Subsumption mit L1 gezeigt werden.
Anschließend kann die gewünschte Inferenz auf das Ziel mit dem negierten Definiertheitsliteral ¬def (t) angewendet werden. Das negierte Definiertheitsliteral kann
42
3.2. Inferenzregeln für das Entscheidungsverfahren
danach wieder entfernt werden, indem die Inferenzregel Applikative Literal-Beseitigung mit L1 darauf angewendet wird. Dieses Verfahren lässt sich problemlos in eine
Kette von Inferenzregel-Anwendungen wie sie für Lemma 3.5 und Lemma 3.3 benötigt wird, eingliedern, da nur korrekte und sichere Inferenzregeln mit induktiv
gültigen Lemmata angewendet werden.
Um die Definiertheitsbedingungen für die Inferenzregeln formulieren zu können,
wird die Menge PolyDefCond wie folgt definiert:
Definition 3.1 Die P
Menge der negierten Definiertheitsliterale für alle Summanden
eines Polynoms t = ni=1 ai ti + a wird mit PolyDefCond(t) bezeichnet und ist wie
folgt definiert:
PolyDefCond(t) := {¬def (ti ) | 1 ≤ i ≤ n, ti 6∈ T (sig C , V C )}
Diese Definition wird für ein Literal l op r, bei dem l und r Polynome sind, wie
folgt fortgesetzt:
PolyDefCond(l op r) = PolyDefCond(l) ∪ PolyDefCond(r)
Für alle im Folgenden beschriebenen Inferenzregeln (außer der Normalisierung
selbst) ist Bedingung, dass die Literale, auf die eine dieser Inferenzregel angewendet wird, zuvor in PNF gebracht wurden. Nach der Anwendung einer Inferenzregel,
die ein neues Literal zu einem Ziel hinzufügt oder ein vorhandenes Literal ändert,
ist jedoch in der Regel ein Literal vorhanden, das nicht in PNF ist. Damit nicht
ständig erneut eine Normalisierung durchgeführt werden muss, wird bei diesen Inferenzregeln stets automatisch jedes Literal mindestens in PNF1 gebracht. Bei einigen
Inferenzregeln wird auch dadurch erst der gewünschte Effekt erzielt, wie beispielsweise bei der Inferenzregel ≤-Variablen-Eliminierung, bei der die Variable erst nach
der Normalisierung des neuen Literals aus diesem eliminiert ist. Dennoch werden die
Inferenzregeln hier ohne die Normalisierung beschrieben, da nur dann die entstehenden Teilziele klar und verständlich definiert werden können. Bei allen Inferenzregeln,
bei denen eine solche automatische Normalisierung durchgeführt wird, ist dies im
Beschreibungstext erwähnt. Die Beweise der Korrektheit und Sicherheit der Inferenzregeln müssen hierfür nicht angepasst werden, da zunächst die Normalisierung
als korrekt und sicher nachgewiesen wird und somit nach Lemma 3.5 und Lemma 3.3
auch die aufeinander folgende Ausführung einer korrekten und sicheren Inferenzregel
und der Normalisierung wieder korrekt und sicher ist.
3.2.2. Normalisierung
Zur Normalisierung stehen zwei Inferenzregeln zur Verfügung. Die Inferenzregel LALiteral-Normalisierung überführt ein gesamtes Literal in die Polynom-Normalform
während die Inferenzregel LA-Term-Normalisierung nur einen Teilterm eines Literals
in die Polynom-Normalform überführt.
43
Kapitel 3. Integration eines Entscheidungsverfahrens
LA-Literal-Normalisierung:
la-norm m n
hΓ, λ, ∆ ; wi
hΛ1 , Γ, λ, ∆ ; wi . . . hΛk , Γ, λ, ∆ ; wi
hΛ, λ1,1 , . . . , λ1,k1 −1 , Γ, λ1,k1 , ∆ ; wi . . . hΛ, λj,1 , . . . , λj,kj −1 , Γ, λj,kj , ∆ ; wi
falls eine Klausel Θ existiert, so dass
• n ∈ {1, 2, 3}
• (Γ, λ, ∆)[m] = λ
• λ = l op r, wobei l und r Terme bzw. einstellige Gewichte der Sorte Nat sind
• {λ1,1 . . . λ1,k1 , . . . , λj,1 . . . λj,kj } ist die aus λ in spec mit PNFDefCond(λ) herleitbare Klauselmenge in PNFn entsprechend Satz 2.2, 2.3 bzw. 2.4
• Γ, ∆, Θ enthält PNFDefCond(λ)
• Λ1 , . . . , Λk , Λ ist die aus Θ resultierende Fallunterscheidung
Mit dieser Inferenzregel wird das an Position m stehende Literal in die in Abschnitt 2.4 beschriebene Polynom-Normalform überführt. Welche Stufe der PNF erzeugt werden soll, lässt sich über den Parameter n festlegen. Dieser kann daher den
Wert 1, 2 oder 3 haben.
Bei der Überführung in PNF werden auch die notwendigen Definiertheitsziele erzeugt, sofern die Definiertheit der entsprechenden Terme nicht bereits gezeigt worden
ist.
Beispiel: Das Ziel
. (3 ∗ f(x)) + ((x ∗ 2) + 3)) ; wi
h(x ∗ 2) + (7 + (4 ∗ x)) ≤ ((2 ∗ y) −
kann durch Anwendung von
la-norm 1 2
in die Ziele
. (3 ∗ f(x)) + ((x ∗ 2) + 3)) ; wi
hdef (f(x)) ∨ (x ∗ 2) + (7 + (4 ∗ x)) ≤ ((2 ∗ y) −
h2y + 1 ≤ 3f(x) ∨ ¬def (f(x)) ∨ 4x + 3f(x) + 4 ≤ 2y ; wi
h3f(x) ≤ 2y ∨ ¬def (f(x)) ∨ x + 1 ≤ 0 ; wi
überführt werden. Das erste Ziel dient dazu, die Definiertheit von f(x) nachzuweisen.
.
In den beiden folgenden Zielen, die aus der Fallunterscheidung für das −-Zeichen
entstehen, wird diese Definiertheit dann vorausgesetzt.
44
3.2. Inferenzregeln für das Entscheidungsverfahren
Lemma 3.6 Die Inferenzregel LA-Literal-Normalisierung ist korrekt und sicher.
Beweis: Nach Satz 2.2, 2.3 bzw. 2.4 ist für jede Instanz der Inferenzregel LA-LiteralNormalisierung das Literal λ mit PNFDefCond(λ) zur Klauselmenge
{λ1,1 . . . λ1,k1 , . . . , λj,1 . . . λj,kj }
nicht-induktiv ableitbar. Das heißt, es gibt eine Folge von Instanzen nicht-induktiver,
korrekter und sicherer Inferenzregeln, deren aufeinander folgende Anwendung das
Ziel hλ ; wi in die Ziele
hΛ1 , λ ; wi , . . . , hΛn , λ ; wi , hΛ, λ1,1 , . . . , λ1,k1 ; wi , . . . , Λ, λj,1 , . . . , λj,kj ; w
ableitet, wobei Λ1 , . . . , Λn , Λ die aus PNFDefCond(λ) resultierende Fallunterscheidung ist. Da zusätzliche Literale in einem Ziel die Anwendbarkeit von Inferenzregeln
nicht verhindern können, gilt dies auch, wenn in jedem Ziel zusätzlich die Klauseln
Γ und ∆ enthalten sind. Sofern das i-te Literal aus PNFDefCond(λ) bereits in Γ
oder ∆ enthalten ist, kann anschließend dieses anschließend aus allen Zielen, die es
enthalten mittels der Inferenzregel Mehrfache Literale wieder entfernt werden. Jedes
Ziel, das das Literal negiert enthält, kann mittels der Inferenzregel Komplementäre
Literale zur leeren Menge abgeleitet werden. Dadurch entstehen genau die Ziele, die
aus einer Fallunterscheidung nach Θ statt nach PNFDefCond(λ) resultieren. Daher
ist nach Lemma 3.5 und Lemma 3.3 die Inferenzregel LA-Literal-Normalisierung korrekt und sicher.
t
u
LA-Term-Normalisierung:
la-term-norm m p
hΓ, λ, ∆ ; wi
hΛ1 , Γ, λ, ∆ ; wi . . . hΛk , Γ, λ, ∆ ; wi hΛ, Γ, λ[t]p , ∆ ; wi
falls eine Klausel Θ existiert, so dass gilt:
• (Γ, λ, ∆)[m] = λ
• λ/p ∈ T (F, V )Nat
• t ist die Termrepräsentation eines in spec mit PNFDefCond(t) aus λ/p nichtinduktiv ableitbaren Polynoms in PNF entsprechend Satz 2.1
• Γ, ∆, Θ enthält PNFDefCond(t)
• Λ1 , . . . , Λk , Λ ist die aus Θ resultierende Fallunterscheidung
Mit dieser Inferenzregel wird der Teilterm an Position p des Literals m in die in
Abschnitt 2.3 beschriebene Polynom-Normalform überführt.
Bei der Überführung in PNF werden auch die notwendigen Definiertheitsziele erzeugt, sofern die Definiertheit der entsprechenden Terme nicht bereits gezeigt worden
ist.
45
Kapitel 3. Integration eines Entscheidungsverfahrens
Beispiel: Das Ziel
h((x ∗ 2) + 7) + ((f(x) ∗ 2) + (3 ∗ x)) ≤ (2 ∗ y) + ((x ∗ 2) + 3)) ; wi
kann durch Anwendung von
la-term-norm 1 [1]
in die Ziele
hdef (f(x)) ∨ ((x ∗ 2) + 7) + ((f(x) ∗ 2) + (3 ∗ x)) ≤ (2 ∗ y) + ((x ∗ 2) + 3)) ; wi
h¬def (f(x)) ∨ 5x + 2f(x) + 7 ≤ (2 ∗ y) + ((x ∗ 2) + 3)) ; wi
überführt werden. Das erste Ziel dient dazu, die Definiertheit von f(x) nachzuweisen.
Im zweiten Ziel wird diese Definiertheit dann vorausgesetzt und, da die Position [1]
angegeben wurde, die linke Seite des Literals in PNF umgewandelt.
Lemma 3.7 Die Inferenzregel LA-Term-Normalisierung ist korrekt und sicher.
Beweis: Nach Satz 2.1 ist für jede Instanz der Inferenzregel LA-Term-Normalisierung der Term λ/p mit PNFDefCond(λ/p) zu einem Term t in PNF nicht-induktiv
ableitbar. Das heißt, es gibt eine Folge von Instanzen nicht-induktiver, korrekter und
sicherer Inferenzregeln, deren aufeinander folgende Anwendung das Ziel hλ ; wi in
die Ziele
hΛ1 , λ ; wi , . . . , hΛn , λ ; wi , hΛ, λ[t]p ; wi
ableitet, wobei Λ1 , . . . , Λn , Λ die aus PNFDefCond(λ) resultierende Fallunterscheidung ist. Da zusätzliche Literale in einem Ziel die Anwendbarkeit von Inferenzregeln
nicht verhindern können, gilt dies auch, wenn in jedem Ziel zusätzlich die Klauseln
Γ und ∆ enthalten sind. Sofern das i-te Literal aus PNFDefCond(λ) bereits in Γ
oder ∆ enthalten ist, kann anschließend dieses anschließend aus allen Zielen, die es
enthalten mittels der Inferenzregel Mehrfache Literale wieder entfernt werden. Jedes
Ziel, das das Literal negiert enthält, kann mittels der Inferenzregel Komplementäre
Literale zur leeren Menge abgeleitet werden. Dadurch entstehen genau die Ziele, die
aus einer Fallunterscheidung nach Θ statt nach PNFDefCond(λ) resultieren. Daher
ist nach Lemma 3.5 und Lemma 3.3 die Inferenzregel LA-Term-Normalisierung korrekt und sicher.
t
u
3.2.3. Tautologien
Die Inferenzregeln für Tautologien ermöglichen es, bestimmte induktiv gültige Literale zu nutzen, um ein Ziel zu beweisen. Es stehen zwei Inferenzregeln zur Verfügung,
eine für ≤-Literale und eine für Ungleichungen. Diese stellen in der Regel den Endpunkt des Entscheidungsverfahrens für ein Ziel dar.
46
3.2. Inferenzregeln für das Entscheidungsverfahren
≤-Tautologie:
<=-taut m
falls
hΓ, 0 ≤ t, ∆ ; wi
• (Γ, 0 ≤ t, ∆)[m] = 0 ≤ t
• 0 ≤ t in PNF
• Γ, ∆ enthält PolyDefCond(t)
Diese Inferenzregel resultiert unmittelbar aus dem Axiom A8 und dient dazu, am
Ende des Entscheidungsverfahrens eine Tautologie zu erkennen.
Beispiel: Das Ziel
h0 ≤ 4x + 3 ; wi
kann durch Anwendung der Inferenzregel ≤-Tautologie bewiesen werden.
Lemma 3.8 Die Inferenzregel ≤-Tautologie ist korrekt und sicher.
Beweis:
• Korrektheit: Das Ziel hΓ, 0 ≤ t, ∆ ; wi kann durch Anwendung der korrekten Inferenzregel Nicht-induktive Subsumption mit dem Axiom A8 und der
Substitution {y ← t} zur leeren Menge abgeleitet werden (die dafür benötigte Definiertheit von t wird wie im Abschnitt 3.2.1 beschrieben sichergestellt).
Somit ist die Inferenzregel ≤-Tautologie nach Lemma 3.5 korrekt.
• Sicherheit: Da die Inferenzregel ≤-Tautologie keine Teilziele hat, ist sie offensichtlich sicher.
t
u
LA-6=-Tautologie:
la-=/=-taut m
falls
•
•
•
•
hΓ, 0 6= t, ∆ ; i
(Γ, λ, ∆)[m] = 0 6= t
P
λ ist in PNF und t = ni=1 ai ti + a
a 6= 0
Γ, ∆ enthält PolyDefCond(t)
Mit dieser Inferenzregel können auch offensichtlich induktiv gültige Ungleichungen
ausgenutzt werden.
Beispiel: Das Ziel
h0 6= x + 1 ; wi
kann durch Anwendung der Inferenzregel LA-6=-Tautologie bewiesen werden.
47
Kapitel 3. Integration eines Entscheidungsverfahrens
Lemma 3.9 Die Inferenzregel LA-6=-Tautologie ist korrekt und sicher.
Beweis:
Pn
• Korrektheit: Die Termrepräsentation des Polynoms
i=1 ai ti + a hat, da
a 6= 0 ist, die Form s(x) + y. Das Ziel hΓ, 0 6= s(x) + y, ∆ ; wi kann durch
Anwendung der korrekten Inferenzregel Nicht-induktive Subsumption mit L27
und der Substitution {x ← t} zur leeren Menge abgeleitet werden (die dafür
benötigte Definiertheit von t wird wie im Abschnitt 3.2.1 beschrieben sichergestellt). Somit ist die Inferenzregel LA-6=-Tautologie nach Lemma 3.5 korrekt.
• Sicherheit: Da die Inferenzregel LA-6=-Tautologie keine Teilziele hat, ist sie
offensichtlich sicher.
u
t
3.2.4. Redundanz-Elimination
Redundanz-Elimination ist zur Beweisfindung nicht notwendig, trägt jedoch bei manueller Beweissuche zur Übersichtlichkeit und bei automatischer Beweissuche zur
Einschränkung des Suchraums bei.
Lemma 3.10 (nach [Küh00, S. 182])
Jede ein Literal entfernende Inferenzregel der Form
hΓ, λ, ∆ ; wi
hΓ, ∆ ; wi
ist korrekt.
Beweis: Angenommen (hΓ, λ, ∆ ; wi, σ, ϕ) ist ein A-Gegenbeispiel für das Ziel der
Regel. Dann erfüllt A keines der Literale Γσ und ∆σ mit ϕ. Daher ist (hΓ, ∆; wi, σ, ϕ)
ein A-Gegenbeispiel für das Teilziel der Regel. Außerdem gilt für dieses offensichtlich
(hΓ, ∆ ; wi, σ, ϕ) -A (hΓ, λ, ∆ ; wi, σ, ϕ).
t
u
≤-Beseitigung:
<=-removal m
falls
•
•
•
•
hΓ, t ≤ 0, ∆ ; wi
hΓ, ∆ ; wi
(Γ, λ, ∆)[m] = t ≤ 0
P
t ≤ 0 = ni=1 ai ti + a ≤ 0 in PNF
a 6= 0
Γ, ∆ enthält PolyDefCond(t)
Ein Literal, das diese Bedingungen erfüllt, ist offensichtlich von keinem Datenmodell erfüllbar und daher redundant. Es kann somit entfernt werden.
48
3.2. Inferenzregeln für das Entscheidungsverfahren
Beispiel: Im Ziel
h3x + 4 ≤ 0 ∨ x + y = y + x ; wi
kann das erste Literal durch Anwendung der Inferenzregel ≤-Beseitigung entfernt
werden. Das Resultat ist:
hx + y = y + x ; wi
Lemma 3.11 Die Inferenzregel ≤-Beseitigung ist korrekt und sicher.
Beweis:
• Korrektheit: Die Korrektheit folgt unmittelbar aus Lemma 3.10.
Pn
• Sicherheit: Die Termrepräsentation t des Polynoms
i=1 ai ti + a hat, da
a 6= 0 ist, die Form s(x) + y. Das Ziel hΓ, ≤(s(x) + y, 0) = true, ∆ ; wi
kann durch Anwendung der sicheren Inferenzregel Nicht-induktive Termersetzung mit L28 und der Substitution {x ← t} auf die linke Seite des Literals
m zu hΓ, false = true, ∆ ; wi abgeleitet werden (die dafür benötigte Definiertheit von t wird wie im Abschnitt 3.2.1 beschrieben sichergestellt). Dieses Ziel
kann durch Anwendung der sicheren Inferenzregel =-Beseitigung auf das Literal false = true zu hΓ, ∆ ; wi abgeleitet werden. Somit ist die Inferenzregel ≤Beseitigung nach Lemma 3.3 sicher.
t
u
≤-Subsumptions-Beseitigung:
<=-subs-removal m n
hΓ, t1 ≤ t2 , ∆, s1 ≤ s2 , Π ; wi
hΓ, t1 ≤ t2 , ∆, Π ; wi
falls
• (Γ, t1 ≤ t2 , ∆, s1 ≤ s2 , Π)[m] = t1 ≤ t2
• (Γ, t1 ≤ t2 , ∆, s1 ≤ s2 , Π)[n] = s1 ≤ s2
P 1
Pm2
0
00
• t1 ≤ t2 = m
i=1 ai ti + a ≤
i=1 bi ti + b in PNF
P 1
Pm2
0
00
• s1 ≤ s2 = m
i=1 bi ti + d in PNF
i=1 ai ti + c ≤
• a + d ≤ b + c ist induktiv gültig
Dadurch, dass die Differenz zwischen a und b größer sein muss, als die Differenz
zwischen d und c, ist immer, wenn s1 ≤ s2 erfüllt ist, auch t1 ≤ t2 erfüllt. Daher
kann s1 ≤ s2 entfernt werden, weil dadurch keine Lösungen verloren gehen.
49
Kapitel 3. Integration eines Entscheidungsverfahrens
Beispiel: Das Ziel
hx ≤ 7 ∨ x ≤ 5 ; wi
kann mittels der Inferenzregel ≤-Subsumptions-Beseitigung durch Anwendung von
<=-subs-removal 1 2
zum Ziel
hx ≤ 7 ; wi
abgeleitet werden.
Lemma 3.12 Die Inferenzregel ≤-Subsumptions-Beseitigung ist korrekt und sicher.
Beweis:
• Korrektheit: Die Korrektheit folgt unmittelbar aus Lemma 3.10.
• Sicherheit: Das Ziel
hΓ, t1 ≤ t2 , ∆, s1 ≤ s2 , Π ; wi
kann durch Anwendung der sicheren Inferenzregel Literal Hinzufügen mit dem
Literal a + d ≤ b + c zu den beiden Zielen
ha + d ≤ b + c, Γ, t1 ≤ t2 , ∆, s1 ≤ s2 , Π ; wi,
ha + d 6≤ b + c, Γ, t1 ≤ t2 , ∆, s1 ≤ s2 , Π ; wi
abgeleitet werden. Das erste dieser beiden Ziele kann durch Anwendung der
sicheren Inferenzregel Nicht-induktive Subsumption mit dem induktiv gültigen
Literal a + d ≤ b + c zur leeren Menge abgeleitet werden. Das zweite Ziel kann
durch Anwendung der Inferenzregel Applikative Literal-Beseitigung mit L46 und
der Substitution
{x ←
m1
X
i=1
ai t0i , y ←
m2
X
bi t00i , z ← a, u ← c, v ← d, w ← b}
i=1
zu
ha + d 6≤ b + c, Γ, t1 ≤ t2 , ∆, Π ; wi
P 1
Pm2
0
00
abgeleitet werden (die dafür benötigte Definiertheit von m
i=1 ai ti und
i=1 bi ti
wird wie im Abschnitt 3.2.1 beschrieben sichergestellt). Anschließend kann das
Literal a + d 6≤ b + c durch Anwendung der sicheren Inferenzregel Applikative Literal-Beseitigung mit dem induktiv gültigen Literal a + d ≤ b + c wieder
entfernt werden. Das daraus resultierende Ziel
hΓ, t1 ≤ t2 , ∆, Π ; wi
ist das Teilziel der Inferenzregel ≤-Subsumptions-Beseitigung. Somit ist die Inu
t
ferenzregel ≤-Subsumptions-Beseitigung nach Lemma 3.3 sicher.
50
3.2. Inferenzregeln für das Entscheidungsverfahren
3.2.5. Variablen-Elimination
Der Kern des beschriebenen Entscheidungsverfahrens ist die Elimination von Variablen. Die folgenden Inferenzregeln realisieren jeweils die Elimination einer Variablen
aus zwei ≤-Literalen bzw. aus einem 6=-Literal. In beiden Fällen werden jedoch aus
den in Abschnitt 3.1 beschriebenen Gründen die ursprünglichen Literale im Ziel beibehalten. Zudem wird die Inferenzregel ≤-Fallunterscheidung beschrieben, die zwar
keine direkte Variablenelimination beinhaltet, aber stets angewendet werden kann,
wenn die ≤-Variablenelimination zu einem redundanten Literal der Form k ≤ 0 mit
k 6= 0 führt.
≤-Variablen-Elimination:
<=-var-elim m n p
hΓ, t1 ≤ t2 , ∆, s1 ≤ s2 , Π ; wi
hu1 ≤ u2 , Γ, t1 ≤ t2 , ∆, s1 ≤ s2 , Π ; wi
falls
• (Γ, t1 ≤ t2 , ∆, s1 ≤ s2 , Π)[m] = t1 ≤ t2
• (Γ, t1 ≤ t2 , ∆, s1 ≤ s2 , Π)[n] = s1 ≤ s2
P 1
Pm2
0
00
• t1 ≤ t2 = m
i=1 ai ti + a ≤
i=1 bi ti + b in PNF
P 1
P 2
di s00i + d in PNF
• s1 ≤ s2 = ni=1
ci s0i + c ≤ ni=1
• (t1 ≤ t2 )/p = t00j für ein j ∈ {1, . . . , m2 }
• t00j = s0k für ein k ∈ {1, . . . , n1 }
• g ist der größte gemeinsame Teiler von bj und ck , das heißt es existieren b0j und
c0k in N , so dass bj = (g ∗ b0j )↓ und ck = (g ∗ c0k )↓
. 1))
• u1 ≤ u2 = (c0k ∗ t1 ) + (b0j ∗ s1 ) ≤ (c0k ∗ t2 ) + ((b0j ∗ s2 ) + ((b0j + c0k ) −
• Γ, ∆, Π enthält PolyDefCond(ti ) und PolyDefCond(si ) für i ∈ {1, 2}.
Diese Inferenzregel realisiert die Variablen-Elimination für ≤-Literale des Entscheidungsverfahrens. Nach der Anwendung der Inferenzregel ≤-Variablen-Elimination kommt in u1 der Term c0k ∗ g ∗ b0j ∗ t00j und in u2 der Term b0j ∗ g ∗ c0k ∗ s0k vor.
Da t00j = s0k gilt, wird dieser Summand somit bei der anschließenden Normalisierung
aus dem Literal eliminiert. Damit ist die Variablen-Elimination für ≤-Literale des
Entscheidungsverfahrens realisiert und es steht ein Literal zur Verfügung, aus dem
die Variable t00j bzw. s0k eliminiert wurde.
51
Kapitel 3. Integration eines Entscheidungsverfahrens
Beispiel: Das Ziel
h2x ≤ y ∨ 2y ≤ z ; wi
kann mittels der Inferenzregel ≤-Variablen-Elimination durch Anwendung von
<=-var-elim 1 2 [2]
zu dem Ziel
. 1)) ∨ 2x ≤ y ∨ 2y ≤ z ; wi
h(2 ∗ (2 ∗ x)) + (2 ∗ y) ≤ (2 ∗ y) + ((1 ∗ z) + ((2 + 1) −
abgeleitet werden. Durch die anschließende Normalisierung wird dann das Ziel
h4x ≤ z + 2 ∨ 2x ≤ y ∨ 2y ≤ z ; wi
erzeugt, bei dem die Variable y aus dem ersten Literal eliminiert ist.
Lemma 3.13 Die Inferenzregel ≤-Variablen-Elimination ist korrekt und sicher.
Beweis:
• Korrektheit: Für jede Instanz der Inferenzregel kann durch Anwendung der
korrekten Inferenzregel Nicht-induktive Subsumption mit dem induktiv gültigen
Lemma L30 und der Substitution
{x ← t1 , y ← t2 , u ← s1 , v ← s2 , z ← c0k , w ← b0j }
auf das Ziel
hΓ, t1 ≤ t2 , ∆, s1 ≤ s2 , Π ; wi
dieses zu
hu1 ≤ u2 , Γ, t1 ≤ t2 , ∆, s1 ≤ s2 , Π ; wi
abgeleitet werden (die dafür benötigte Definiertheit von t1 , t2 , s1 und s2 wird
wie im Abschnitt 3.2.1 beschrieben sichergestellt). Somit ist nach Lemma 3.5
auch die Inferenzregel ≤-Variablen-Elimination korrekt.
• Sicherheit: Die Sicherheit folgt unmittelbar aus Lemma 3.1.
t
u
≤-Fallunterscheidung:
<=-case-split m n p
hΓ, t1 ≤ t2 , ∆, s1 ≤ s2 , Π ; wi
ht1 6= t2 + 1, Γ, t1 ≤ t2 , ∆, s1 ≤ s2 , Π ; wi . . . ht1 6= t2 + k, Γ, t1 ≤ t2 , ∆, s1 ≤ s2 , Π ; wi
falls
1. (Γ, t1 ≤ t2 , ∆, s1 ≤ s2 , Π)[m] = t1 ≤ t2
2. (Γ, t1 ≤ t2 , ∆, s1 ≤ s2 , Π)[n] = s1 ≤ s2
52
3.2. Inferenzregeln für das Entscheidungsverfahren
3. t1 ≤ t2 =
Pm1
+a≤
Pm2
4. s1 ≤ s2 =
Pn1
+c≤
Pn2
0
i=1 ai ti
0
i=1 ci si
00
i=1 bi ti
+ b in PNF
00
i=1 di si
+ d in PNF
5. (t1 ≤ t2 )/p = t00j für ein j ∈ {1, . . . , m2 }
6. t00j = s0k für ein k ∈ {1, . . . , n1 }
7. g ist der größte gemeinsame Teiler von bj und ck , das heißt es existieren b0j und
c0k in N , so dass bj = g ∗ b0j ↓ und ck = g ∗ c0k ↓
8. c0k
Pm1
9. k =
0
i=1 ai ti
+ b0j
Pn1
0
i=1 ci si
= c0k
Pm2
00
i=1 bi ti
+ b0j
Pn2
00
i=1 di si
ist induktiv gültig
.
. 1
c0k a + b0j c −
c0k b + b0j d + b0j + c0k −
↓
10. k 6= 0
. 1 ≤ c0 a + b0 c ist induktiv gültig
11. c0k b + b0j d + b0j + c0k −
j
k
12. Γ, ∆, Π enthält PolyDefCond(ti ) und PolyDefCond(si ) für i ∈ {1, 2}
Diese Inferenzregel dient dazu, in dem Fall, dass die Anwendung der Inferenzregel
≤-Variablen-Elimination zu einem Literal k ≤ 0 mit k 6= 0 führen würde, eine Fallunterscheidung für alle k möglichen Werte der Variablen durchzuführen. Dadurch
kann auch die im Abschnitt 3.1 beschriebene Fallunterscheidung zur Erweiterung des
Entscheidungsverfahrens über rationalen Zahlen auf die natürlichen Zahlen realisiert
werden.
Alle neu hinzugefügten Literale werden wie in Abschnitt 3.2.1 beschrieben automatisch normalisiert.
Beispiel: Im Fall k = 1 kann durch Anwendung von ≤-Fallunterscheidung eine implizite Gleichung [KN94] ausgenutzt werden. Die Fallunterscheidung besteht aus
genau einem Fall, so dass zum ursprünglichen Ziel eine Ungleichung hinzukommt.
Diese kann dann durch Anwendung von Konstant Umschreiben (evtl. nach vorheriger
Anwendung von 6=-Variablenelimination) genutzt werden.
Beispielsweise kann das Ziel
hx ≤ 1 ∨ 3 ≤ x ∨ x = 2 ; wi
durch Anwendung von ≤-Fallunterscheidung auf die beiden ersten Literale mit für
die Variable x zum Ziel
hx 6= 2 ∨ x ≤ 1 ∨ 3 ≤ x ∨ x = 2 ; wi
abgeleitet werden.
Die Fallunterscheidung für das Entscheidungsverfahren muss nur durchgeführt
werden, wenn mindestens zwei Variablen vorhanden sind. Die ist beispielsweise für
das Ziel
h6 ≤ 2x + y ∨ 2x + y ≤ 3 ∨ y + 3 ≤ 2x ∨ 2x ≤ y ; wi
53
Kapitel 3. Integration eines Entscheidungsverfahrens
{ 6 ≤ +(*(2, x ), y),
+(*(2, x ), y) ≤ 3,
+(y, 3) ≤ *(2, x ),
*(2, x ) ≤ y }
≤-case-split
1
2
[2 : 1 : 2]
{ +(*(2, x ), y) 6= 5,
6 ≤ +(*(2, x ), y),
+(*(2, x ), y) ≤ 3,
+(y, 3) ≤ *(2, x ),
*(2, x ) ≤ y }
{ +(*(2, x ), y) 6= 4,
6 ≤ +(*(2, x ), y),
+(*(2, x ), y) ≤ 3,
+(y, 3) ≤ *(2, x ),
*(2, x ) ≤ y }
≤-case-split
4
5
[22 ]
≤-case-split
4
5
[22 ]
{ *(2, x ) 6= +(y, 2),
+(*(2, x ), y) 6= 5,
6 ≤ +(*(2, x ), y),
+(*(2, x ), y) ≤ 3,
+(y, 3) ≤ *(2, x ),
*(2, x ) ≤ y }
{ *(2, x ) 6= +(y, 1),
+(*(2, x ), y) 6= 5,
6 ≤ +(*(2, x ), y),
+(*(2, x ), y) ≤ 3,
+(y, 3) ≤ *(2, x ),
*(2, x ) ≤ y }
{ *(2, x ) 6= +(y, 2),
+(*(2, x ), y) 6= 4,
6 ≤ +(*(2, x ), y),
+(*(2, x ), y) ≤ 3,
+(y, 3) ≤ *(2, x ),
*(2, x ) ≤ y }
{ *(2, x ) 6= +(y, 1),
+(*(2, x ), y) 6= 4,
6 ≤ +(*(2, x ), y),
+(*(2, x ), y) ≤ 3,
+(y, 3) ≤ *(2, x ),
*(2, x ) ≤ y }
la-const-rewrite
1
2
[2 : 1]
la-const-rewrite
1
2
[2 : 1]
la-const-rewrite
1
2
[2 : 1]
la-const-rewrite
1
2
[2 : 1]
Abbildung 3.2.: Beweisbaum für das zweite Beispiel für ≤-Fallunterscheidung
notwendig. Die induktive Gültigkeit dieses Ziels kann alleine durch Anwendung von
≤-Variablenelimination und ≤-Tautologie nicht nachgewiesen werden. Die liegt daran,
dass es über den rationalen Zahlen Gegenbeispiele (z. B. x = 1,5 und y = 1,5) gibt,
nicht jedoch über den natürlichen Zahlen. Das Ziel kann jedoch durch Anwendung
von ≤-Fallunterscheidung mit den beiden ersten Literalen und der Variable x zu den
beiden Zielen
h2x + y 6= 5 ∨ 6 ≤ 2x + y ∨ 2x + y ≤ 3 ∨ y + 3 ≤ 2x ∨ 2x ≤ y ; wi
h2x + y 6= 4 ∨ 6 ≤ 2x + y ∨ 2x + y ≤ 3 ∨ y + 3 ≤ 2x ∨ 2x ≤ y ; wi
abgeleitet werden. Führt man anschließend auf jedem dieser Ziele eine ≤-Fallunterscheidung mit den anderen beiden ≤-Literalen und der Variable y aus, so erhält man
folgende vier Ziele mit jeweils zwei Ungleichungen:
h2x 6= y + 2 ∨ 2x + y 6= 5 ∨ 6 ≤ 2x + y ∨ 2x + y ≤ 3 ∨ y + 3 ≤ 2x ∨ 2x ≤ y ; wi
h2x 6= y + 1 ∨ 2x + y 6= 5 ∨ 6 ≤ 2x + y ∨ 2x + y ≤ 3 ∨ y + 3 ≤ 2x ∨ 2x ≤ y ; wi
h2x 6= y + 2 ∨ 2x + y 6= 6 ∨ 6 ≤ 2x + y ∨ 2x + y ≤ 3 ∨ y + 3 ≤ 2x ∨ 2x ≤ y ; wi
h2x 6= y + 1 ∨ 2x + y 6= 6 ∨ 6 ≤ 2x + y ∨ 2x + y ≤ 3 ∨ y + 3 ≤ 2x ∨ 2x ≤ y ; wi
Alle diese Ziele können durch Anwendung von LA Konstant Umschreiben auf die
beiden ersten Literale mit der Variable y abgeschlossen werden, so dass die induktive
Gültigkeit des ursprünglichen Ziels gezeigt ist. Der Beweisbaum für diesen Beweis
ist in Abbildung 3.2 dargestellt.
Lemma 3.14 Die Inferenzregel ≤-Fallunterscheidung ist korrekt und sicher.
54
3.2. Inferenzregeln für das Entscheidungsverfahren
Beweis:
• Korrektheit: Das Ziel hΓ, t1 ≤ t2 , ∆, s1 ≤ s2 , Π ; wi kann durch Anwendung
der korrekten Inferenz-Regel Literal Hinzufügen mit den Literalen t1 = t2 +
1, . . . , t1 = t2 + k zu den Teilzielen
ht1 6= t2 + 1, Γ, t1 ≤ t2 , ∆, s1 ≤ s2 , Π ; wi,
ht1 6= t2 + 2, t1 = t1 + 1, Γ, t1 ≤ t2 , ∆, s1 ≤ s2 , Π ; wi,
...,
ht1 6= t2 + k, . . . , t1 = t1 + 1, Γ, t1 ≤ t2 , ∆, s1 ≤ s2 , Π ; wi,
ht1 = t2 + 1, . . . , t1 = t2 + k, Γ, t1 ≤ t2 , ∆, s1 ≤ s2 , Π ; wi
abgeleitet werden. Das erste Teilziel ist bereits mit dem ersten Teilziel der
Inferenzregel ≤-Fallunterscheidung identisch. Das zweite Teilziel kann durch
Anwendung der korrekten Inferenzregel Konstant Umschreiben mit dem ersten
Literal auf die linke Seite des zweiten Literals zu
ht2 + 2 = t2 + 1, t1 6= t2 + 2, Γ, t1 ≤ t2 , ∆, s1 ≤ s2 , Π ; wi
abgeleitet werden. Durch Anwendung der bereits als korrekt nachgewiesenen
Inferenzregel LA-Literal-Normalisierung und anschließende Anwendung von =Beseitigung auf das erste Literal wird dieses dann zu
ht1 6= t2 + 2, Γ, t1 ≤ t2 , ∆, s1 ≤ s2 , Π ; wi
abgeleitet. Dies entspricht dem zweiten Teilziel der Inferenzregel ≤-Fallunterscheidung. Analog kann man auch für das 3. bis k. Teilziel verfahren.
Das letzte Teilziel muss eliminiert werden. Dies gelingt durch Nachweis seiner
induktiven Gültigkeit. Dazu werden sukzessive durch Anwendung der Inferenzregel Nicht-induktive Subsumption mit L31 die Literale t1 ≤ t2 +1 bis t1 ≤ t2 +k
hinzugenommen. Sei m0 die Position des Literals t1 ≤ t2 + k im resultierenden
Ziel. Dann kann die bereits als korrekt nachgewiesene Inferenzregel ≤-Variablen-Elimination auf die Literale t1 ≤ t2 + k und s1 ≤ s2 an der Position p
angewendet werden. Das Resultat ist ein neues Literal
. 1
(c0k ∗ t1 ) + (b0j ∗ s1 ) ≤ c0k ∗ (t2 + k) + (b0j ∗ s2 ) + b0j + c0k −
im Ziel. Durch Anwendung der Inferenzregel Nicht-induktive Termersetzung mit
L6 und L4 kann dieses zu
. 1
(c0k ∗ t1 ) + (b0j ∗ s1 ) ≤ (c0k ∗ t2 ) + (c0k ∗ k) + (b0j ∗ s2 ) + b0j + c0k −
abgeleitet werden. Anschließend kann dieses durch Anwendung der Inferenzregel Nicht-induktive Termersetzung mit Bedingung 8 und L33 zu
. 1
(c0k ∗ a) + (b0j ∗ c) ≤ (c0k ∗ b) + (b0j ∗ d) + (c0k ∗ k) + b0j + c0k −
abgeleitet werden. Dieses kann durch Anwendung der ebenfalls bereits als kor. 1) ∗ k)↓
rekt nachgewiesenen Inferenzregel Literal-Normalisierung zu 0 ≤ ((c0k −
55
Kapitel 3. Integration eines Entscheidungsverfahrens
abgeleitet werden. Durch Anwendung der Inferenzregel ≤-Tautologie auf dieses
Literal kann das Ziel dann zur leeren Menge abgeleitet werden.
Somit gibt es für jede Instanz der Inferenzregel ≤-Fallunterscheidung eine Folge von Instanzen von nicht-induktiven und korrekten Inferenzregeln, deren
aufeinander folgende Anwendung das Ziel unter Verwendung ausschließlich induktiv gültiger Lemmata in die Teilziele ableitet. Daher ist die Inferenzregel
≤-Fallunterscheidung nach Lemma 3.5 korrekt.
• Sicherheit: Die Sicherheit folgt unmittelbar aus Lemma 3.1.
t
u
6=-Variablen-Elimination:
=/=-var-elim m p x
hΓ, t1 6= t2 , ∆ ; wi
hu1 + x 6= u2 , Γ, t1 6= t2 , ∆ ; wi
falls
• (Γ, t1 6= t2 , ∆)[m] = t1 6= t2
P 1
Pm2
0
00
• t1 6= t2 = m
i=1 ai ti + a 6=
i=1 bi ti + b in PNF
• x ∈ V C \ Var(Γ, t1 , t2 , ∆, w)
• p bezeichnet einen Summanden in t1 , d. h. (t1 6= t2 )/p = ak t0k für ein k ∈
{1, . . . , m1 }
• ak ≤ ai ist induktiv gültig für 1 ≤ i ≤ m1
• ak ≤ bi ist induktiv gültig für 1 ≤ i ≤ m2
• ak 6= 1
• es existieren a0i , a00i , a0 , a00 , so dass ai = (ak ∗a0i +a00i )↓ und a00i < ak für 1 ≤ i ≤ m1
sowie a = (ak ∗ a0 + a00 )↓ und a00 < ak
. b00 )↓ und b00 < a für 1 ≤ i ≤ m
• es existieren b0i , b00i , b0 , b00 , so dass bi = (ak ∗b0i −
2
k
i
i
. b00 )↓ und b00 < a
sowie b = (ak ∗ b0 −
k
P 1 0 0
Pm1 0 00
0
0
• u1 = m
i=1 ai ti + a und u2 =
i=1 bi ti + b
• Γ, ∆ enthält PolyDefCond(t1 ) und PolyDefCond(t2 )
Diese Inferenzregel realisiert einen Teil der Variablenelimination für 6=-Literale.
Mit Hilfe dieser Inferenzregel kann in einem 6=-Literal, dessen minimaler Faktor
nicht 1 ist, der minimale Faktor reduziert werden. Dazu muss direkt im Anschluss
und die Anwendung dieser Inferenzregel die Inferenzregel LA Konstant Umschreiben
angewendet werden, um den Wert für die neue Variable in das ursprüngliche Ziel
56
3.2. Inferenzregeln für das Entscheidungsverfahren
einzusetzen. Wird dies so lange durchgeführt, bis der minimale Faktor 1 ist, so kann
anschließend die Variable eliminiert werden, deren Faktor 1 ist.
Das neu hinzugefügte Literal u1 + x 6= u2 wird wie in Abschnitt 3.2.1 beschrieben
automatisch normalisiert.
Beispiel: Das Ziel
h2x + 5y = 7 ; wi
kann durch Anwendung von 6=-Variablen-Elimination auf die Variable x zu
hx + 2y + z = 4 ∨ 2x + 5y = 7 ; wi
abgeleitet werden, wobei z eine neue Variable ist. Anschließend kann die Inferenzregel
LA Konstant Umschreiben, die im nächsten Abschnitt beschrieben ist, angewendet
werden. Dieser Schritt ist im Beispiel für die Inferenzregel LA Konstant Umschreiben
beschrieben.
Lemma 3.15 Die Inferenzregel 6=-Variablen-Elimination ist korrekt und sicher.
Beweis:
• Korrektheit: Sei
hΓ, t1 6= t2 , ∆ ; wi
hu1 + x 6= u2 , Γ, t1 6= t2 , ∆ ; wi
eine Instanz der Inferenzregel 6=-Variablen-Elimination.
Für den Beweis der Korrektheit wird zunächst die induktive Gültigkeit zweier
Lemmata gezeigt (die Definiertheit der Polynome wird hierbei vorausgesetzt,
jedoch nicht explizit aufgeführt).
. (Pm1 a00 t0 + a00 ) = a ∗ u :
(H1) t1 −
1
k
i=1 i i
Das Ziel
* m
!
!
+
m1
1
X
X
.
0
00 0
00
ai ti + a −
ai ti + a
= ak ∗ u1 ; w
i=1
i=1
kann durch Anwendung der Inferenzregel Nicht-induktive Termersetzung mit
den Axiomen für + und ∗ zu
* m
!
!
+
m1
1
X
X
.
0
00 0
0
00
00 0
00
((ak ∗ ai ) + ai )ti + ((ak ∗ a ) + a ) −
ai ti + a
= ak ∗ u1 ; w
i=1
i=1
abgeleitet werden. Durch Anwendung der Inferenzregel Nicht-induktive Termersetzung mit L4 , L5 und L6 kann dieses Ziel zu
*
!!
!
+
m1
m1
X
X
.
00 0
00
00 0
00
a ∗u +
a t +a
−
a t +a
=a ∗u ; w
k
1
i i
k
i i
i=1
1
i=1
P 1 0 0
0
abgeleitet werden (da u1 = m
i=1 ai ti + a ). Wendet man darauf die Inferenzregel Nicht-induktive Termersetzung mit L32 an, so erhält man das Ziel
hak ∗ u1 = ak ∗ u1 ; wi
57
.
Kapitel 3. Integration eines Entscheidungsverfahrens
Dieses Ziel kann dann durch Anwendung der Inferenzregel =-Zerlegung abgeschlossen werden.
P 2 00 00
00
(H2) t2 + ( m
i=1 bi ti + b ) = ak ∗ u2 :
Das Ziel
* m
!
!
+
m1
1
X
X
bi t00i + b +
b00i t00i + b00 = ak ∗ u2 ; w
i=1
i=1
kann durch Anwendung der Inferenzregel Nicht-induktive Termersetzung mit
den Axiomen für + und ∗ zu
* m
!
!
+
m1
1
X
X
0 . 00 00
0 . 00
00 00
00
((ak ∗ bi ) − bi )ti + ((ak ∗ b ) − b ) +
b i ti + b
= ak ∗ u2 ; w
i=1
i=1
abgeleitet werden. Durch Anwendung der Inferenzregel Nicht-induktive Termersetzung mit L4 , L5 , L37 und L38 kann dieses Ziel zu
hak ∗ u2 = ak ∗ u2 ; wi
P 1 0 00
0
abgeleitet werden (da u2 = m
i=1 bi ti + b ). Dieses Ziel kann dann durch Anwendung der Inferenzregel =-Zerlegung abgeschlossen werden.
Nun kann der eigentliche Beweis begonnen werden. Das Ziel
hΓ, t1 6= t2 , ∆ ; wi
kann durch Anwendung der Inferenzregel Literal Hinzufügen mit den beiden
Literalen
. u )
λ := ¬def (u −
1
2
1
λ2 := u1 6≤ u2
zu den Zielen
. u ) , Γ, t =
hdef (u2 −
1
1 6 t2 , ∆ ; wi
.
hu1 ≤ u2 , ¬def (u2 − u1 ) , Γ, t1 =
6 t2 , ∆ ; wi
.
hu1 6≤ u2 , ¬def (u2 − u1 ) , Γ, t1 6= t2 , ∆ ; wi
(1 )
(2 )
(3 )
abgeleitet werden. Das erste Ziel kann leicht durch Anwendung von L29 und
anschließender Ausnutzung von PolyDefCond(t1 ) und PolyDefCond(t2 ) gezeigt
werden.
Das zweite Ziel kann ebenfalls gezeigt werden. Durch Anwendung der Inferenzregel Nicht-induktive Subsumption mit L25 kann das Ziel zu
. u ) , Γ, t 6= t , ∆ ; wi
ht 6≤ t , u ≤ u , ¬def (u −
1
2
1
2
2
1
1
2
abgeleitet werden. Dieses Ziel kann anschließend durch Anwendung der Inferenzregel Nicht-induktive Subsumption mit L34 zum Ziel
*
!
!
m1
m2
X
X
.
t −
a00 t0 + a00 6≤ t +
b00 t00 + b00 ,
1
i i
i=1
2
i i
i=1
. u ) , Γ, t 6= t , ∆ ; w
t1 6≤ t2 , u1 ≤ u2 , ¬def (u2 −
1
1
2
58
+
3.2. Inferenzregeln für das Entscheidungsverfahren
abgeleitet werden. Durch Anwendung der Inferenzregel Nicht-induktive Termersetzung mit H1 und H2 entsteht daraus das Ziel
. u ) , Γ, t 6= t , ∆ ; wi
hak ∗ u1 6≤ ak ∗ u2 , t1 6≤ t2 , u1 ≤ u2 , ¬def (u2 −
1
1
2
.
Durch Anwendung der Inferenzregel Nicht-induktive Termersetzung mit L13
und anschließende Anwendung der Inferenzregel Komplementäre Literale kann
dann das Ziel gezeigt werden.
Im dritten Ziel wird die Inferenzregel Konstrukorvariable Hinzufügen auf das
. u ) angewendet. Dadurch entsteht das Ziel
Literal ¬def (u2 −
1
. u , Γ, t 6= t , ∆ ; wi
hu1 6≤ u2 , x 6= u2 −
1
1
2
mit x ∈ V C \ Var(Γ, t1 , t2 , ∆, w). Durch Anwendung der Inferenzregeln Nichtinduktive Subsumption und Applikative Literal-Beseitigung mit L36 kann dieses
Ziel dann zu
hu1 6≤ u2 , x + u1 6= u2 , Γ, t1 6= t2 , ∆ ; wi
abgeleitet werden. Das noch überschüssige Literal u1 6≤ u2 kann schließlich
durch Anwendung der Inferenzregel Applikative Literal-Beseitigung mit L35
entfernt werden. Somit kann das Ziel hΓ, t1 6= t2 , ∆ ; wi durch Anwendung
korrekter Inferenzregeln in das Ziel hu1 + x 6= u2 , Γ, t1 6= t2 , ∆ ; wi abgeleitet werden und die Inferenzregel 6=-Variablen-Elimination ist nach Lemma 3.5
korrekt.
• Sicherheit: Die Sicherheit folgt unmittelbar aus Lemma 3.1.
t
u
3.2.6. Benutzen negativer Literale
LA Konstant Umschreiben:
la-const-rewrite m n p
hΓ, t1 op t2 , ∆ ; wi
hΓ, u1 op u2 , ∆ ; wi
falls
• (Γ, t1 op t2 , ∆)[n] = t1 op t2
P 1
Pm2
1
2
• t1 op t2 = m
i=1 ai ti + a op
i=1 bi ti + b in PNF
• es gibt ein Literal t3 6= t4 in Γ, ∆, so dass (Γ, t1 op t2 , ∆)[m] = t3 6= t4
P 3
Pm4
3
4
• t3 6= t4 = m
i=1 ci ti + c 6=
i=1 di ti + d in PNF
• p bezeichnet einen Summanden in der
1. linken Seite des 6=-Literals, d. h. (t3 6= t4 )|p = cj t3j für ein j ∈ {1, . . . , m3 }
– cj = 1
59
Kapitel 3. Integration eines Entscheidungsverfahrens
– Der Summand t3j kommt auch im Literal t1 op t2 vor, auf der
a) linken Seite, d. h. t3j = t1k für ein k ∈ {1, . . . m1 }:
u1 op u2 = t1 + ak ∗ t4 op t2 + ak ∗ t3
b) rechten Seite, d. h. t3j = t2k für ein k ∈ {1, . . . m2 }:
u1 op u2 = t1 + bk ∗ t3 op t2 + bk ∗ t4
2. rechten Seite des 6=-Literals, d. h. (t3 6= t4 )|p = dj t4j für ein j ∈ {1, . . . , m4 }
– dj = 1
– Der Summand t4j kommt auch im Literal t1 op t2 vor, auf der
a) linken Seite, d. h. t4j = t1k für ein k ∈ {1, . . . m1 }:
u1 op u2 = t1 + ak ∗ t3 op t2 + ak ∗ t4
b) rechten Seite, d. h. t4j = t2k für ein k ∈ {1, . . . m2 }:
u1 op u2 = t1 + bk ∗ t4 op t2 + bk ∗ t3
• Γ, ∆ enthält PolyDefCond(t1 ) und PolyDefCond(t2 )
Diese Inferenzregel ist eine Erweiterung der bereits zuvor in QuodLibet vorhandenen Inferenzregel Konstant Umschreiben. Hiermit ist es auch möglich, umzuschreiben, wenn der umzuschreibene Term nicht alleine auf einer Seite steht. Das
umgeschriebene Literal wird wie in Abschnitt 3.2.1 beschrieben automatisch normalisiert.
Beispiel: Das Ziel
hx + 2y + z 6= 4 ∨ 2x + 5y 6= 7 ; wi
kann durch Anwendung der Inferenzregel
la-const-rewrite 1 2 [1:1]
in das Ziel
hx + 2y + z 6= 4 ∨ 2x + 5y + 2 ∗ 4 6= 7 + 2 ∗ (x + 2y + z) ; wi
überführt werden. Durch die automatische anschließende Normalisierung wird dieses
Ziel dann zu
hx + 2y + z 6= 4 ∨ y + 1 6= 2z ; wi
Lemma 3.16 Die Inferenzregel LA Konstant Umschreiben ist korrekt und sicher.
Beweis: Sei
hΓ, t1 op t2 , ∆ ; wi
hΓ, u1 op u2 , ∆ ; wi
eine Instanz der Inferenzregel LA Konstant Umschreiben mit Parametern m, n und
p. Bezeichne p einen Summand in der linken Seite des 6=-Literals. Außerdem komme
dieser Summand in der linken Seite des Literals t1 op t2 vor. Das heißt, u1 op u2 =
t1 + (ak ∗ t4 ) op t2 + (ak ∗ t3 ). Alle anderen Fälle sind analog beweisbar.
60
3.3. Taktiken für das Entscheidungsverfahren
Das Ziel
hΓ, t1 op t2 , ∆ ; wi
kann durch Anwendung der korrekten und sicheren Inferenzregel Nicht-induktive Subsumption mit L17 zum Ziel
hak ∗ t4 6= ak ∗ t3 , Γ, t1 op t2 , ∆ ; wi
abgeleitet werden, da ak 6= 0 gilt und Γ, ∆ das Literal t3 6= t4 enthält. Dieses Ziel
kann dann durch eine weitere Anwendung von Nicht-induktive Subsumption mit L43 ,
L44 oder L45 zu
ht1 + (ak ∗ t4 ) op t2 + (ak ∗ t3 ), ak ∗ t4 6= ak ∗ t3 , Γ, t1 op t2 , ∆ ; wi
abgeleitet werden. In diesem Ziel ist das Literal u1 op u2 des Teilziels von LA Konstant Umschreiben bereits enthalten. Die beiden zusätzlichen Literale können durch
Anwendung der korrekten und sicheren Inferenzregel Applikative Literal-Beseitigung
mit L39 und L40 , L41 oder L42 entfernt werden, so dass das Teilziel
hΓ, u1 op u2 , ∆ ; wi
abgeleitet werden kann.
Somit ist die Inferenzregel LA Konstant Umschreiben aufgrund von Lemma 3.5 und
Lemma 3.3 korrekt und sicher.
t
u
3.3. Taktiken für das Entscheidungsverfahren
Die im vorherigen Abschnitt beschriebenen Inferenzregeln reichen aus, um die manuelle Durchführung des Entscheidungsverfahrens zu ermöglichen. Zusätzlich soll
das Entscheidungsverfahren jedoch auch in die Taktiken von QuodLibet integriert
werden, so dass das Entscheidungsverfahren im Rahmen der Taktiken automatisch
ausgeführt werden kann. Hierzu müssen die vorhandenen Taktiken angepasst und
erweitert werden. Ein Anpassung ist insbesondere notwendig, weil durch die Integration des Entscheidungsverfahrens ein zusätzlicher Literaltyp im System verwendet
wird, die ≤-Literale. Die bisherigen Taktiken können hiermit nicht umgehen und
beispielsweise Lemmata für ≤-Literale werden nicht angewendet. Zudem müssen die
Taktiken erweitert werden, so dass sie die neuen Inferenzregeln für das Entscheidungsverfahren auch anwenden, wenn entsprechende Literale vorhanden sind. Als
Ausgangsbasis für die notwendigen Anpassungen und Erweiterungen der Taktiken
werden die in [Sch04] beschriebenen neuen Standard-Taktiken von QuodLibet verwendet. Diese Taktiken sind in verschiedene Module aufgeteilt. Die für die Integration des Entscheidungsverfahrens notwendigen Erweiterungen der Taktiken werden
im Wesentlichen im Modul Simplification vorgenommen.
3.3.1. Erweiterung des Moduls Simplification
Der Simplifikationsprozess im Modul Simplification ist in fünf Durchläufe gegliedert.
Diese fünf Durchläufe werden teilweise erweitert, um die Inferenzregeln des Entscheidungsverfahrens zu integrieren. Zusätzlich wird ein weiterer Durchlauf definiert, in
61
Kapitel 3. Integration eines Entscheidungsverfahrens
dem versucht wird, mittels des Entscheidungsverfahrens einen Beweis zu finden. Dieser Durchlauf wird zwischen dem bisher zweiten und dem bisher dritten Durchlauf
ausgeführt.
Der bisher erste Durchlauf besteht daraus, einfache Tautologien zu beweisen, die
durch die Anwendung einer Inferenzregel ohne die Anwendung von Lemmata gezeigt
werden können. Zusätzlich zu den bisherigen Inferenzregeln wird hier nun versucht,
die Inferenzregeln aus Abschnitt 3.2.3 anzuwenden. Da bereits für die Anwendung
dieser Inferenzregeln Bedingung ist, dass die Literale in PNF sind, werden zu Beginn
dieses Durchlaufs alle Literale, die den Bedingungen der Inferenzregel LA-LiteralNormalisierung entsprechen mittels dieser Inferenzregel in PNF1 gebracht.
Im zweiten Durchlauf werden Inferenzregeln angewendet, die redundante Literale
entfernen. Hierbei ist es wichtig, einen Kompromiss zwischen Aufwand und Nutzen
zu finden. Ein zu hoher Aufwand für die Suche nach redundanten Literalen ist zu vermeiden, da die Entfernung eines solchen Literals zwar den Suchraum verkleinert, für
die Beweisfindung aber nicht notwendig ist. Daher wird hier nur versucht, zusätzlich
zu den bisherigen Inferenzregeln die Inferenzregel ≤-Beseitigung aus Abschnitt 3.2.4
anzuwenden, nicht jedoch die Inferenzregel ≤-Subsumptions-Beseitigung.
Nach dem zweiten Durchlauf wird der zusätzliche Durchlauf für die weiteren Inferenzregeln des Entscheidungsverfahrens für lineare Arithmetik durchgeführt. Dieser
besteht nun daraus, abhängig vom Literaltyp zu versuchen, die verschiedenen, neuen
Inferenzregeln des Entscheidungsverfahrens anzuwenden. Die Heuristiken, die hierbei verwendet werden, sind jedoch lediglich eine erste Annäherung. Sie sind zwar
funktionsfähig, jedoch nicht besonders effizient. Die Verbesserung dieser Heuristiken
bleibt als weiteres Forschungsfeld offen.
Bevor die weiteren Inferenzregeln des Entscheidungsverfahrens jedoch angewendet werden, werden zunächst alle Literale, die die nötigen Voraussetzungen erfüllen,
durch Anwendung der Inferenzregel LA-Literal-Normalisierung in PNF2 gebracht. Literale, die in der reinen linearen Arithmetik liegen, das heißt, keine definierten Operatoren enthalten, werden dabei in PNF3 gebracht. Dieser Kompromiss hinsichtlich
der Stufe der Normalformbildung ist dadurch begründet, dass im Rahmen des Entscheidungsverfahrens ≤-Literale besser genutzt werden können als Gleichungen. Sind
jedoch auch definierte Operatoren vorhanden, so ist eine Umwandlung in ≤-Literale nicht unbedingt sinnvoll, da dies dazu führen kann, dass Bedingungsliterale der
Lemmata der definierten Operatoren nicht mehr als erfüllt angesehen werden. Beispielsweise wird die Bedingung x = 0 nicht als erfüllt angesehen, wenn nur x ≤ 0
enthalten ist. Dies führt dazu, dass entsprechende Lemmata möglicherweise nicht
angewendet werden. Zudem kann es vorkommen, dass Beweise nach der Fallunterscheidung in beiden Fällen genau gleich geführt werden. Auch dies ist unerwünscht,
da sich die Beweiskomplexität stark erhöht.
Der weitere Ablauf des zusätzlichen Durchlaufs gliedert sich wiederum in mehrere
Phasen. Zunächst wird für jedes ≤-Literal, das im zu simplifizierenden Ziel vorkommt, versucht eine ≤-Variablenelimination mit einem anderen ≤-Literal der Klausel vorzunehmen. Entsteht bei der Variablenelimination ein neues Literal der Form
1 ≤ 0, so wird die Variablenelimination wieder zurückgenommen (da dieses Literal
redundant ist) und stattdessen die Inferenzregel ≤-Fallunterscheidung angewendet.
62
3.3. Taktiken für das Entscheidungsverfahren
Dies führt in diesem Fall dazu, dass genau ein neues Ziel erzeugt wird, in dem eine
entsprechende Ungleichung vorkommt. Da dies jedoch nur im Fall 1 ≤ 0 und nicht
allgemein im Fall c ≤ 0 für c ∈ N gemacht wird, realisieren die Taktiken nicht
vollständig das Entscheidungsverfahren. Hier ist gegebenenfalls ein Benutzereingriff
notwendig, wenn das System das Ziel nicht auf andere Weise beweisen kann. Diese Maßnahme soll verhindern, dass automatisch Fallunterscheidungen in sehr viele
Fälle gemacht werden. Stattdessen wird dem Benutzer die Entscheidung überlassen, bei wie vielen Fällen versucht werden soll, durch Fallunterscheidung das Ziel zu
beweisen.
Anschließend an die Anwendung der Variablenelimination auf ≤-Literale wird
versucht, Ungleichungen mittels der Inferenzregel LA Konstant Umschreiben auszunutzen. Dazu wird für jedes 6=-Literal überprüft, ob dieses einen oder mehrere Summanden mit Faktor 1 enthält. Ist dies der Fall, so wird jeder dieser Summanden
auf Vorkommen in anderen Literalen untersucht. Wird ein solches Vorkommen gefunden, so wird überprüft, ob alle Variablen, die im 6=-Literal vorkommen auch im
zweiten Literal vorkommen. Nur wenn dies der Fall ist, wird die Inferenzregel LA
Konstant Umschreiben auf die beiden Literale und den gemeinsamen Summanden
angewendet. Diese Heuristik soll verhindern, dass durch die Inferenzregel LA Konstant Umschreiben neue Variablen in Literale eingeführt werden, da dies meist nicht
sinnvoll ist.
Zuletzt wird versucht, auch die Ungleichungen nutzbar zu machen, die keinen
Summanden mit Faktor 1 enthalten. Dies wird durch Anwendung der Inferenzregel 6=-Variablen-Elimination realisiert. Diese Inferenzregel wird auf jede Ungleichung
angewendet, deren minimaler Faktor eines Summanden größer als 1 ist. Dadurch entsteht eine neue Ungleichung, die einen kleineren minimalen Faktor enthält. Führt
man dies solange durch, bis eine Ungleichung entsteht, die einen Summanden mit
Faktor 1 enthält und somit im Rahmen der Inferenzregel LA Konstant Umschreiben
nutzbar ist.
Die Anwendung von ≤-Variablenelimination, LA Konstant Umschreiben und 6=-Variablen-Elimination wird solange versucht, bis keine weitere Anwendung mehr möglich
ist. Im Anschluss daran wird versucht, die Inferenzregel LA-Term-Normalisierung anzuwenden. Dazu wird in jedem Literal der Sorte Nat an allen geeigneten Positionen
überprüft, ob eine Anwendung von LA-Term-Normalisierung eine Änderung im Term
bewirken würde. Ist dies der Fall wird die Inferenz angewendet. Ist keine weitere Anwendung der Inferenz LA-Term-Normalisierung mehr möglich, so wird der zusätzliche
Durchlauf beendet und der dritte Durchlauf begonnen.
Die bisher dritten und vierten Durchläufe bleiben im Wesentlichen unverändert.
In diesen beiden Durchläufen wird versucht, das Ziel durch Anwendung von Lemmata zu zeigen. Während im dritten Durchlauf nur Lemmata angewendet werden,
die direkt anwendbar sind, werden im vierten Durchlauf auch Lemmata angewendet,
deren Anwendungsbedingungen gesondert gezeigt werden müssen. Beide Durchläufe
werden vor allem um die Möglichkeit erweitert, auch ≤-Literale zu behandeln. Dies
bedeutet, dass für alle diese Durchläufe zusätzliche Funktionen hinzugefügt werden,
die die entsprechenden Operationen auf ≤-Literalen vornehmen. Zudem ist es notwendig, bei der Termersetzung die Berechnung alternativer Literalrepräsentationen
63
Kapitel 3. Integration eines Entscheidungsverfahrens
zu erweitern. Bisher war es hier beispielsweise bereits möglich, die Anwendungsbedingung x = false eines Lemmas als erfüllt anzusehen, wenn im Ziel das Literal
x 6= true vorkommt. Dadurch, dass nun eine Theorie fest in das System integriert
ist, ergeben sich zusätzliche alternative Literalrepräsentationen. Beispielsweise sollte die Anwendungsbedingung x ≤ y als erfüllt betrachtet werden, wenn das Literal
x < y+1 im Ziel vorkommt und umgekehrt. Derzeit werden nur einige relativ einfach
zu überprüfende Alternativen beachtet. Durch einen höheren Aufwand bei der Suche
nach Literalen in alternativer Repräsentation ist es möglich, die Suche nach anwendbaren Lemmata zu verbessern. Wie viel Aufwand für die Bestimmung alternativer
Literalrepräsentationen hierbei sinnvoll ist, muss in Praxiserprobungen festgestellt
werden.
Der fünfte Durchlauf, in dem bisher nur die Inferenzregel Konstant Umschreiben
angewendet wurde, bleibt vollkommen unverändert.
3.3.2. Möglichkeiten zur Verbesserung der Taktiken
Die im vorherigen Abschnitt beschriebenen Erweiterungen und Anpassungen der
Taktiken realisieren bereits im Wesentlichen das im Abschnitt 3.1 beschriebene
Entscheidungsverfahren. Dadurch, dass stets alle möglichen Variableneliminationen
durchgeführt werden und danach eine Überprüfung auf Tautologien durchgeführt
wird, ist die Fourier-Motzkin-Variablenelimination realisiert.
Die Erweiterung des Fourier-Motzkin-Verfahrens auf natürliche Zahlen wird jedoch nicht vollständig verwirklicht, da die Fallunterscheidung nur angewendet wird,
wenn dadurch genau ein Fall entsteht. Dadurch können auch einige induktive Theoreme der reinen linearen Arithmetik, wie das im Abschnitt 3.2.5 beschriebene Beispiel,
nicht bewiesen werden. Daher sollte eine bessere Heuristik für die ≤-Fallunterscheidung entwickelt werden. Hierbei wäre es sinnvoll, mit verschiedenen Werten für die
Grenze der Anzahl der automatisch erzeugten Fälle zu experimentieren.
Im Bereich der Heuristiken gibt es einige weitere Ansatzpunkte für eine Weiterentwicklung der Taktiken. Dass stets alle möglichen Variableneliminationen in willkürlicher Reihenfolge durchgeführt werden, ist zwar ausreichend, um sicherzustellen,
dass alle Schritte der Fourier-Motzkin-Variablenelimination auch durchgeführt werden. Hier könnte jedoch eine deutlich bessere Heuristik entwickelt werden, indem
(ähnlich wie bei geordneter Paramodulation im Bereich des deduktiven Theorembeweisens) eine Ordnung auf den Summanden etabliert wird, die es erlaubt, nur in
dieser Ordnung maximale Variablen zu eliminieren. Dies ist dadurch zu begründen,
dass die Variablenelimination nur zum Ziel führt, wenn alle Variablen eliminiert
wurden. Kann daher eine maximale Variable nicht eliminiert werden, so müssen
auch kleinere Variablen nicht eliminiert werden, da die maximale Variable verhindert, dass eine (variablenfreie) Tautologie entsteht. Die maximale Variable wird auch
durch Elimination kleinerer Variablen nicht eliminierbar werden.
Die Anwendung von LA Konstant Umschreiben steht derzeit noch in einem Konflikt mit der Anwendung der ähnlichen Inferenzregel Konstant Umschreiben. Es gibt
Literale, auf die beide Inferenzregeln angewendet werden können. Da die Inferenzregel LA Konstant Umschreiben derzeit stets vor Konstant Umschreiben ausgeführt
64
3.3. Taktiken für das Entscheidungsverfahren
wird, kann es vorkommen, dass durch die Anwendung von Konstant Umschreiben der
Effekt der Anwendung von LA Konstant Umschreiben genau umgekehrt wird. Um
dies zu verhindern müsste die Kontrolle über die Anwendung dieser beiden Inferenzregeln koordiniert werden. Alternativ könnte man versuchen, diese beiden sehr
ähnlichen Inferenzregeln zu einer Inferenzregel zusammen zu fassen. Dann könnte
die Vermeidung des Umkehreffektes lokal für diese Inferenzregel versucht werden.
Ein weiteres großes Potential bietet die Anwendung von Lemmata und Induktionshypothesen. Hier entsteht eine gewisse Problematik dadurch, dass das System
zwar nun mit einer eingebauten Theorie arbeitet, aber die Matching-Operation nicht
modulo dieser Theorie ausgeführt wird. Erste Versuche, die Matching-Operation
entsprechend zu erweitern, erwiesen sich als ungeeignet, da das System zu sehr ausbremst wird. Die Entscheidung, wie stark beim Matching die lineare Arithmetik betrachtet werden soll, kann jedoch ohne Anpassung des Kernsystems in die Taktiken
verlagert werden. Dies kann dadurch realisiert werden, dass innerhalb der Taktiken
eine Funktion implementiert wird, die für die Anwendung einer TermersetzungsInferenzregel mit einem hinreichenden Verfahren einen Match µ modulo der Theorie der linearen Arithmetik bestimmt. Anschließend wird mittels der Inferenzregel
Literal Hinzufügen ein der Anwendungsbedingung der Termersetzung entsprechendes Literal λ/p = lµ hinzugefügt. Das Ziel, das anschließend das Literal λ/p = lµ
selbst enthält, kann mittels des Entscheidungsverfahrens bewiesen werden. Das zweite Ziel, das entsteht, enthält das Literal λ/p 6= lµ. Dieses Literal kann dann durch
Anwendung der Inferenzregel Konstant Umschreiben so genutzt werden, dass im ursprünglichen Literal λ/p durch lµ ersetzt wird. Damit ist der zuvor bestimmte Match
modulo der Theorie der linearen Arithmetik auch ein syntaktischer Match und die
Inferenzregel für die Termersetzung kann angewendet werden.
Auch im Bereich der Subsumption könnte die Semantik von ≤-Literalen noch besser ausgenutzt werden. Hat man beispielsweise das Lemma f(x) ≤ 5 bereits gezeigt,
so kann das Ziel f(x) ≤ 6 leicht gezeigt werden, indem die Inferenzregel Nicht-induktive Subsumption mit f(x) ≤ 5 angewendet wird. Anschließend enthält das Ziel
die beiden Literale f(x) ≤ 6 und f(x) 6≤ 5 und kann durch Anwendung der LiteralNormalisierung auf letzteres und anschließende ≤-Variablenelimination zur Tautologie
0 ≤ 1 abgeleitet werden. Dies könnte im Rahmen der Taktiken bei der Suche nach einem Subsumptionslemma beachtet werden, so dass in mehr Fällen eine Subsumption
ausgeführt werden könnte, anstatt das neue Ziel auf eine andere Art zu beweisen.
65
66
4. Auswertung
Auch wenn die Taktiken noch deutliches Verbesserungspotenzial enthalten, können
schon erste Auswertungen vorgenommen werden, um festzustellen, in wie weit die
erwarteten Effekte eintreten. Dazu werden im folgenden Abschnitt drei Beispiele
betrachtet, aus deren einzelnen Auswertungen anschließend die wesentlichen Grundtendenzen bestimmt werden.
4.1. Auswirkung der Integration des
Entscheidungsverfahrens in Beispielspezifikationen
Um den Effekt der Integration des Entscheidungsverfahrens auszuwerten, werden
drei Spezifikationen verwendet, die Probleme aus der Domäne der natürlichen Zahlen und damit einen relativ hohen Anteil an linearer Arithmetik beinhalten (die
Spezifikationen sind im Anhang B abgedruckt). Diese Spezifikationen werden – sofern möglich – mit dem bisherigen System ohne lineare Arithmetik und mit dem
neuen System mit integrierter linearer Arithmetik bearbeitet. Dabei wird jeweils
versucht, möglichst viele Beweise automatisch durch Aufruf von Taktiken zu finden. Die Beweise werden jeweils zunächst mit dem System ohne lineare Arithmetik
erstellt. Anschließend werden die Beweisskripte im System mit linearer Arithmetik
ausgeführt und angepasst, wo es notwendig ist. Zudem werden Lemmata, die beim
Beweis mit dem System mit linearer Arithmetik nicht mehr benötigt werden, entfernt. Dieses Vorgehen sichert eine relativ gute Vergleichbarkeit, da ähnliche Beweise
geführt werden müssen. Allerdings ergibt sich hieraus auch eine Benachteiligung des
Systems mit linearer Arithmetik. Dies liegt daran, dass die Spezifikationen nicht für
das System mit linearer Arithmetik optimiert sind. Durch eine im Kontext der linearen Arithmetik bessere Formulierung der Lemmata könnte auch ein besseres Gesamtergebnis erreicht werden. Hierfür wäre es notwendig, die in [Sch04] beschriebenen
Richtlinien für gute Spezifikationen zu erweitern und anzupassen. Dann müssten die
gesamten Beweise von Beginn an mit dem System mit integrierter Arithmetik neu
geführt werden. Im Rahmen dieser Arbeit war ein solches Vorgehen jedoch aufgrund
des deutlich höheren Zeitaufwandes leider nicht möglich.
Wie in [Sch04] werden die beiden Versionen des Systems hinsichtlich der folgenden
Aspekte verglichen:
• Lemmata: die Zahl der Lemmata, die in der Spezifikation verwendet werden.
Diese dient als Hinweis auf die Komplexität des Spezifikation. Durch rekursive
Beweisstrategien automatisch erzeugte Lemmata werden in Klammern angegeben.
67
Kapitel 4. Auswertung
• Manuelle Anwendungen: die Zahl der manuell angewendeten Inferenzregeln.
Diese lässt erkennen, wie gut die Taktiken automatisch einen Beweis finden.
• Gewicht: die Anzahl der notwendigen manuellen Instanziierungen von Gewichtsvariablen um eine passende Induktionsordnung zu bestimmen.
• Automatische Anwendungen: die Zahl der automatisch und erfolgreich durch
die aufgerufenen Taktiken angewendeten Inferenzen. Diese Zahl lässt Schlüsse
auf die Komplexität der automatisch gefundenen Beweise zu.
• Löschungen: die Zahl der zurückgenommenen Anwendungen von Inferenzregeln. Diese entstehen durch Fehlschläge beim Beweis eines Bedingungsziels bei
bedingter Anwendung von Lemmata aber auch im Rahmen des Entscheidungsverfahrens beispielsweise bei der Rücknahme von ≤-Variablen-Elimination, falls
dadurch ein redundantes Literal entsteht.
• Laufzeit: die Laufzeit in Sekunden für den Beweis der gesamten Spezifikation,
gemessen von einem CMU-Common-Lisp-System auf einem Rechner mit 400
MHz Intel Celeron Prozessor und 256 MB RAM. Dabei werden die Zeiten
für Benutzerinteraktion nicht berücksichtigt, sondern nur die reine Rechenzeit
gemessen.
4.1.1. Das Beispiel ggT
Das Beispiel ggT enthält eine Spezifikation, deren Ziel es ist, zu beweisen, dass der
ggT idempotent, kommutativ und assoziativ ist. Dieses Beispiel hat einen relativ
hohen Anteil an linearer Arithmetik. Die Daten des Vergleichs der alten Version
ohne lineare Arithmetik und der neuen mit linearer Arithmetik sind in Tabelle 4.1
enthalten.
Kriterium
Lemmata
manuelle Anwendungen
Gewicht
automatische Anwendungen
Löschungen
Laufzeit
ohne LA
81 (+1)
24
2
1059
10
5,99
mit LA
53
25
2
2614
298
21,60
Tabelle 4.1.: Ergebnisse des Beispiels ggT
Zunächst fällt bei den Ergebnissen auf, dass die Zahl der benötigten Lemmata
bei integrierter linearer Arithmetik deutlich geringer ist. Dies liegt daran, dass viele
Lemmata Theoreme der reinen linearen Arithmetik beinhalteten. Sie können nun
durch die Anwendung des Entscheidungsverfahrens ersetzt werden. Allerdings führt
dies zu einer deutlichen Steigerung der Anzahl der automatischen Anwendungen.
Negativ fällt weiterhin auf, dass eine zusätzliche manuelle Anwendung hinzugekommen ist. Sie besteht aus einer nicht-induktiven Termersetzung mit einem Lemma,
dessen Anwendungsbedingung die Form x = 0 hat. Diese Anwendungsbedingung ist
68
4.1. Auswirkung der Integration des Entscheidungsverfahrens
an der konkreten Stelle zwar im Ziel enthalten, wurde aber durch Anwendung der
Normalisierung dritter Stufe in zwei Fälle x ≤ 0 und 0 ≤ x aufgeteilt. Somit ist die
Anwendungsbedingung nicht mehr direkt im Ziel enthalten. Dies führt dazu, dass
die Taktik zunächst versucht, andere Lemmata anzuwenden, die keine Anwendungsbedingungen haben oder deren Anwendungsbedingungen bereits im Ziel enthalten
sind. Dadurch wählt die Taktik das falsche“ Lemma aus und scheitert im Anschluss.
”
Dieses Problem könnte vermieden werden, indem die Taktiken so erweitert werden,
dass auch x ≤ 0 für die Erfüllung einer Anwendungsbedingung x = 0 zugelassen
wird, da diese beiden Literale äquivalent sind, falls x definiert ist. Zudem könnte
auch die Anwendungsbedingung des Lemmas zu x ≤ 0 umformuliert werden, was
jedoch in den hier nicht betrachteten Bereich der Verbesserung von Spezifikationen
im Kontext der linearen Arithmetik fällt.
Die Laufzeit des Beispiels hat sich im Vergleich zum System ohne lineare Arithmetik deutlich (um etwa den Faktor 4) verschlechtert. Dies liegt vor allem daran,
dass die Taktik für das Entscheidungsverfahren derzeit noch mit einer sehr einfachen
Heuristik arbeitet und daher viele nutzlose Inferenzschritte ausgeführt werden.
4.1.2. Das Beispiel
√
2
√
√
Das Beispiel 2 enthält eine Spezifikation, deren Ziel es ist, zu beweisen, dass 2
irrational ist. Auch dieses Beispiel hat einen relativ hohen Anteil an linearer Arithmetik. Die Daten des Vergleichs der alten Version ohne lineare Arithmetik und der
neuen mit linearer Arithmetik sind in Tabelle 4.2 enthalten.
Kriterium
Lemmata
manuelle Anwendungen
Gewicht
automatische Anwendungen
Löschungen
Laufzeit
ohne LA
51 (+2)
11
1
1005
28
11,76
mit LA
22
7
1
1144
540
13,57
√
Tabelle 4.2.: Ergebnisse des Beispiels 2
Bei diesem Beispiel ist eine noch deutlichere Reduzierung der benötigten Lemmata zu erkennen als beim Beispiel ggT. Es werden mit linearer Arithmetik deutlich
weniger als die Hälfte der Lemmata benötigt. Auch die Anzahl der manuellen Anwendungen ist deutlich gesunken, wohingegen die Anzahl der automatischen Anwendungen leicht gestiegen ist. Allerdings wird ein sehr großer Anteil der automatischen
Anwendungen wieder gelöscht. Die Differenz aus automatischen Anwendungen und
gelöschten Anwendungen – das heißt die tatsächlich in den Beweisbäumen enthaltenen Anwendungen – sinkt dadurch sogar von 977 auf 604.
Betrachtet man im Detail die Anzahl der Anwendungen der einzelnen Inferenzregeln, so fällt auf, dass im System mit linearer Arithmetik mit Abstand am häufigsten die Inferenzregeln ≤-Variablen-Elimination (326), LA-Literal-Normalisierung (279)
und Mehrfache Literale (223) angewendet werden. Die Anzahl der Anwendungen von
69
Kapitel 4. Auswertung
Nicht-induktive Termersetzung (62 statt 470) und Nicht-induktive Subsumption (54
statt 246) ist deutlich gesunken. Wie zu erwarten war, wurde somit ein Großteil
der Anwendungen nicht-induktiver, applikativer Inferenzregeln durch die Anwendung von Inferenzregeln des Entscheidungsverfahrens ersetzt. Auffällig ist, dass im
System mit linearer Arithmetik die Inferenzregel Mehrfache Literale sehr häufig angewendet wird. Durch eine Verbesserung der neuen Inferenzregeln könnte dies reduziert
werden, indem mehrfache Literale gar nicht erst erzeugt werden. Dadurch könnten
die Beweisbäume weiter verkleinert werden, ein deutlicher Einfluss auf die Laufzeit
ist jedoch nicht zu erwarten.
Allerdings ist auch zu beobachten, dass ein sehr großer Anteil der Anwendungen
von ≤-Variablen-Elimination wieder gelöscht wird (249 von 326). Hier könnte durch
eine verbesserte Heuristik noch einiges eingespart werden.
Insgesamt ist eine leichte Erhöhung der Laufzeit um etwa 15% zu beobachten.
Der größte Teil dieser Zeit wird damit verbracht, ein einziges Lemma zu beweisen.
Bei diesem Beweis wird ein sehr hoher Anteil an Normalisierungen und Variableneliminationen durchgeführt und auch der weitaus größte Teil der Löschungen von
Inferenzregelanwendungen tritt hier auf. Verbesserte, zielgerichtetere Taktiken könnten hierbei die Laufzeit deutlich verringern.
4.1.3. Das Beispiel 91er-Funktion
Das letzte Beispiel beinhaltet eine Spezifikation von John McCarthys 91er-Funktion
[MM70] und enthält als Ziel den Beweis der Termination der 91er-Funktion. Diese
Funktion ist rekursiv wie folgt definiert:
f 91(x) :=
. 10
x−
f 91(f 91(x + 11))
falls n > 100
sonst
Für Werte kleiner oder gleich 101 hat die 91er-Funktion stets das Ergebnis 91
. 10. Der Beweis, dass die Funktion
und für alle größeren Werte das Ergebnis x −
terminiert, wird als guter Testfall für induktive Theorembeweiser angesehen.
Bisher ist mit QuodLibet ein solcher Beweis nicht gelungen. Dies liegt vor allem
daran, dass mit relativ großen Zahlen gerechnet wird, die bisher in QuodLibet
durch Konstruktorterme in s-Darstellung repräsentiert wurden. Dadurch entstehen
sehr große Ziele, der Termersetzungs-Prozess wird sehr aufwändig und der Suchraum
insgesamt sehr groß.
Mit Hilfe der integrierten linearen Arithmetik, der dazu als Kurzschreibweise definierten Konstanten für natürliche Zahlen und dem Entscheidungsverfahren gelingt
es nun, die Termination der 91er-Funktion zu zeigen. Bei diesem Beispiel wurde der
Beweis zudem von vornherein im System mit linearer Arithmetik geführt, so dass die
bei den beiden vorherigen Beispielen beschriebene Benachteiligung dieses Systems
nicht eintritt.
70
4.2. Grundtendenzen in den Auswertungen der Beispiele
Kriterium
Lemmata
manuelle Anwendungen
Gewicht
automatische Anwendungen
Löschungen
Laufzeit
ohne LA
-
mit LA
5
7
3
503
157
4,01
Tabelle 4.3.: Ergebnisse des Beispiels 91er-Funktion
Der Vollständigkeit halber sind in Tabelle 4.3 die Ergebnisse der Spezifikation
des Beispiels 91er-Funktion aufgeführt, auch wenn hier natürlich kein Vergleich zur
Version ohne lineare Arithmetik möglich ist.
4.2. Grundtendenzen in den Auswertungen der Beispiele
Aus der Auswertung der Ergebnisse der drei Beispiele ergeben sich einige Grundtendenzen, die jedoch aufgrund der geringen Anzahl von Beispielen nicht als gefestigt
angesehen werden können.
Zunächst ist festzustellen, dass das Ziel einer deutlichen Reduzierung der Anzahl
der Lemmata, die für Beweise mit linearer Arithmetik benötigten werden, anscheinend erreicht wurde. Dies entspricht der Erwartung, da viele der bisher benötigten Lemmata einfache Aussagen der linearen Arithmetik enthielten. Diese Lemmata müssen nun nicht mehr explizit formuliert werden, sondern werden durch das
Entscheidungsverfahren abgedeckt. Dies bedeutet für den Benutzer eine deutliche
Entlastung, da die Lemmata von QuodLibet nicht automatisch gefunden werden,
sondern vom Benutzer eingegeben werden müssen. Diese Entlastung könnte zwar
auch durch eine Sammlung häufig benötigter Lemmata erreicht werden, die dem
Benutzer zur Verfügung gestellt wird. Allerdings müsste der Benutzer dem System
dennoch mitteilen, welche dieser Lemmata im Rahmen der Taktiken verwendet werden sollen, da sonst der Suchraum viel zu groß würde.
Weiterhin ließ sich zumindest bei einem Beispiel auch die Zahl der manuellen Anwendungen von Inferenzregeln deutlich reduzieren. Auch dies entlastet den Benutzer,
da manuelle Anwendungen stets bedeuten, dass der Benutzer den Stand des Beweises, an dem eine Taktik abgebrochen wurde, erfassen und durch manuellen Eingriff
den Beweis fortsetzen muss. Wenn die Beispiele hinsichtlich des Einsatzes mit linearer Arithmetik optimiert würden, könnte hier wahrscheinlich ein noch besserer Wert
erzielt werden.
Diesen deutlich erkennbaren Vorteilen stehen jedoch auch zwei Nachteile gegenüber. Zum einen erhöht sich die Gesamtlaufzeit des neuen Systems gegenüber dem
System ohne lineare Arithmetik. Diese ist jedoch angesichts der Verringerung der
notwendigen manuellen Eingriffe relativ gering. Denn jeder manuelle Eingriff, um
ein neues Lemma einzugeben oder manuell Inferenzregeln anzuwenden, bedeutet eine erheblich größere Verzögerung. Dadurch ist die Zeit, die ein Benutzer für die
71
Kapitel 4. Auswertung
Beweisfindung benötigt, mit dem neuen System dennoch deutlich geringer. Ähnlich
verhält es sich mit der Zahl der automatische angewendeten Inferenzregeln. Diese
steigt zwar mit der Integration der linearen Arithmetik teilweise deutlich an, was
jedoch dem Benutzer im Wesentlichen nur den bereits diskutierten Nachteil einer
längeren Laufzeit beschert und die Beweisbäume etwas komplexer macht. Wenn jedoch im Gegenzug weniger manuelle Eingriffe nötig sind, so sind auch komplexere
Beweisbäume verkraftbar, da der Benutzer sich nicht mehr so häufig in einen aktuellen Beweiszustand einarbeiten muss.
Die erwähnten Nachteile resultieren zudem hauptsächlich aus den relativ rudimentären Taktiken. Es ist zu erwarten, dass diese deutlich weniger stark in Erscheinung treten, wenn die in Abschnitt 3.3.2 beschrieben Verbesserungspotentiale
ausgeschöpft werden.
72
5. Zusammenfassung und Ausblick
Zielsetzung dieser Arbeit war es, die Integration von Entscheidungsverfahren in den
induktiven Theorembeweiser QuodLibet am Beispiel der linearen Arithmetik zu
untersuchen. Um diese Integration zu realisieren, wurden zunächst die notwendigen
Basisstrukturen in das System integriert. Dazu gehören die Operatoren der linearen
Arithmetik, ein neuer Literaltyp für die Darstellung von ≤-Beziehungen und eine
effizientere Repräsentation von natürlichen Zahlen im System.
Anschließend wurde das Entscheidungsverfahren der Fourier-Motzkin-Variablenelimination in QuodLibet integriert. Dazu wurde das Verfahren auf den Bereich
der natürlichen Zahlen erweitert und für die Verwendung im formalen Kontext von
QuodLibet angepasst. Um das Verfahren zu realisieren, wurden dem System zehn
neue Inferenzregeln hinzugefügt, die den einzelnen Schritten des Entscheidungsverfahrens entsprechen. Das Entscheidungsverfahren wird dann durch die Anwendung
dieser Inferenzregeln in erweiterten Standard-Taktiken ausgeführt.
Die Auswertung der Ergebnisse aus den Beispielspezifikationen hat gezeigt, dass
die erhofften positiven Effekte durch diese Integration der linearen Arithmetik erreicht wurden. In Spezifikationen, die Ziele mit linearer Arithmetik enthalten, kann
eine deutliche Reduzierung der benötigten Lemmata erreicht werden. Auch die Anzahl der notwendigen manuellen Eingriffe in den Beweisprozess sinkt tendenziell. Im
Gegenzug steigt die benötigte Rechenzeit sowie die Anzahl der automatisch angewendeten Inferenzregeln. Dies ist jedoch wesentlich dadurch bedingt, dass die Taktiken
noch nicht das volle Potential des Entscheidungsverfahrens ausschöpfen. Insgesamt
ist somit eine bessere, aber aufwändigere Automatisierung des Systems gelungen.
Insbesondere bei Beispielen mit größeren Zahlkonstanten macht sich die verbesserte Darstellung der Zahlen deutlich bemerkbar, so dass Theoreme bewiesen werden
können, deren Beweis zuvor nicht gelang.
Es ist jedoch noch ein großes Potential für Verbesserungen der Taktiken vorhanden. Einige mögliche Verbesserungen wurden im Abschnitt 3.3.2 bereits beschrieben.
Dieses Potential kann im Rahmen weiterer Arbeiten zu diesem Thema ausgeschöpft
werden. Es ist zu erwarten, dass dadurch die Zahl der automatisch angewendeten Inferenzregeln und auch die Laufzeit deutlich reduziert werden können. Eine
bessere Einschätzung des Erfolgs der Integration des Entscheidungsverfahrens wäre
durch die Auswertung einer größeren Anzahl von Beispielen möglich. Würde diese im
Rahmen weiterer Arbeiten durchgeführt, so erhielte man auch eine gute empirische
Grundlage für die weitere Verbesserung der Taktiken.
73
74
A. Beweise der verwendeten Lemmata
Die Beweise, dass die in Abbildung 2.1 und Abbildung 3.1 aufgelisteten Lemmata in
jeder Spezifikation mit linearer Arithmetik induktiv gültig sind, werden hier in Form
eines QuodLibet-Skriptes angegeben. Führt man dieses Skript mit dem bisherigen
QuodLibet-System aus, so werden Beweise für alle verwendeten Lemmata erzeugt.
Das Skript besteht zunächst aus Anweisungen, die eine Spezifikation mit linearer
Arithmetik erzeugen. Anschließend werden einige zusätzliche Lemmata bewiesen,
die für die Beweise der eigentlichen Lemmata benötigt werden. Zuletzt wird für
jedes der Lemmata L1 bis L46 ein Beweis erzeugt. Die Beweise für L19 und L20
gelingen jedoch nur in eine Richtung, da die Inferenzregeln von QuodLibet für
die Behandlung negativer Ordnungsatome nicht ausgelegt sind. Da diese Lemmata
jedoch von untergeordneter Wichtigkeit sind, kann hier auf den Beweis der zweiten
Richtung verzichtet werden.
QuodLibet-Skript: Beweise der verwendeten Lemmata
initialize
call initialize-database
define sort Bool with constructors
false : --> Bool
true : --> Bool
.
declare constructor variables b : Bool.
assume
{ b = false,
b = true }
bool-complete
call auto-strategy bool-complete
call activate-lemma bool-complete
define sort Nat with constructors
0 : --> Nat
s : Nat --> Nat
.
declare constructor variables u, v, w, x, y, z : Nat.
declare operators
leq : Nat Nat --> Bool
75
Anhang A. Beweise der verwendeten Lemmata
.
assert leq-1 :
leq(0,y) = true
.
assert leq-2 :
leq(s(x),0) = false
.
assert leq-3 :
leq(s(x),s(y)) = leq(x,y)
.
call analyze-operator leq
call auto-strategy leq-def-auto
call activate-lemma leq-def-auto
assume
{ leq(x,y) = true,
leq(y,x) = true }
leq-complete
call auto-strategy leq-complete
call activate-lemma leq-complete
assume
{ leq(x,x) = true }
leq-x-x
call auto-strategy leq-x-x
call activate-lemma leq-x-x
assume
{ leq(x,s(y)) = true,
leq(x,y) =/= true }
leq-x-sy
call auto-strategy leq-x-sy
call activate-lemma leq-x-sy
assume
{ leq(s(x),y) = false,
leq(x,y) =/= false }
leq-sx-y
call auto-strategy leq-sx-y
call activate-lemma leq-sx-y
assume
{ leq(x,0) =/= true,
x = 0 }
leq-x-0
call auto-strategy leq-x-0
76
QuodLibet-Skript
call activate-lemma
leq-x-0
assume
{ leq(x,y) =/= true,
leq(y,x) =/= true,
x = y }
leq-trichotomy
call auto-strategy leq-trichotomy
declare operators
plus : Nat Nat --> Nat
.
assert plus-1 :
plus(x,0) = x
.
assert plus-2 :
plus(x,s(y)) = s(plus(x,y))
.
call analyze-operator plus
call auto-strategy plus-def-auto
call activate-lemma plus-def-auto
assume
{ plus(0,y) = y }
plus-0-y
call auto-strategy plus-0-y
call activate-lemma plus-0-y
assume
{ plus(s(x),y) = s(plus(x,y)) }
plus-sx-y
call auto-strategy plus-sx-y
call activate-lemma plus-sx-y
assume
{ plus(x,y) = plus(y,x) }
plus-commutative
call auto-strategy plus-commutative
call activate-lemma plus-commutative
assume
{ plus(x,plus(y,z)) = plus(y,plus(x,z)) }
plus-comm-ext
call auto-strategy plus-comm-ext
call activate-lemma plus-comm-ext
77
Anhang A. Beweise der verwendeten Lemmata
assume
{ plus(plus(x,y),z) = plus(x,plus(y,z)) }
plus-ass
call auto-strategy plus-ass
call activate-lemma plus-ass
assume
{ leq(x,plus(y,z)) = true,
leq(x,y) =/= true }
leq-x-plus-mono
call auto-strategy leq-x-plus-mono
call activate-lemma leq-x-plus-mono
assume
{ leq(x,plus(z,y)) = true,
leq(x,y) =/= true }
leq-x-plus-mono-2
call auto-strategy leq-x-plus-mono-2
call activate-lemma leq-x-plus-mono-2
assume
{ leq(plus(u,v),plus(x,y)) = true,
leq(u,x) =/= true,
leq(v,y) =/= true }
leq-plus-mono
call auto-strategy leq-plus-mono
call activate-lemma leq-plus-mono
assume
{ leq(plus(x,z),plus(y,z)) = leq(x,y) }
leq-plus-2
call auto-strategy leq-plus-2
call activate-lemma leq-plus-2
assume
{ leq(plus(z,x),plus(z,y)) = leq(x,y) }
leq-plus-1
call simplify leq-plus-1
call activate-lemma leq-plus-1
declare operators
times : Nat Nat --> Nat
.
assert times-1 :
times(x,0) = 0
.
assert times-2 :
78
QuodLibet-Skript
times(x,s(y)) = plus(times(x,y),x)
.
call analyze-operator times
call auto-strategy times-def-auto
call activate-lemma times-def-auto
assume
{ times(0,y) = 0 }
times-0-y
call auto-strategy times-0-y
call activate-lemma times-0-y
assume
{ times(s(x),y) = plus(times(x,y),y) }
times-sx-y
call auto-strategy times-sx-y
call activate-lemma times-sx-y
assume
{ times(s(0),x) = x }
times-s0
call auto-strategy times-s0
call activate-lemma times-s0
assume
{ times(x,y) = times(y,x) }
times-commutative
call auto-strategy times-commutative
call activate-lemma times-commutative
assume
{ times(x,plus(y,z)) = plus(times(x,y),times(x,z)) }
times-distr-1
call auto-strategy times-distr-1
call activate-lemma times-distr-1
assume
{ times(x,times(y,z)) = times(y,times(x,z)) }
times-comm-ext
call auto-strategy times-comm-ext
call activate-lemma times-comm-ext
call deactivate-lemmas
{ times-distr-1 }
assume
{ leq(times(x,z),times(y,z)) = true,
79
Anhang A. Beweise der verwendeten Lemmata
leq(x,y) =/= true }
leq-times-2
call auto-strategy leq-times-2
call activate-lemma leq-times-2
assume
{ leq(times(z,x),times(z,y)) = true,
leq(x,y) =/= true }
leq-times-1
call simplify leq-times-1
call activate-lemma leq-times-1
declare operators
minus : Nat Nat --> Nat
.
assert minus-1 :
minus(x,0) = x
.
assert minus-2 :
minus(s(x),s(y)) = minus(x,y)
.
assert minus-3 :
minus(0,x) = 0
.
call analyze-operator minus
call auto-strategy minus-def-auto
call activate-lemma minus-def-auto
assume
{ minus(plus(x,y),y) = x }
minus-plus-2
call auto-strategy minus-plus-2
call activate-lemma minus-plus-2
assume
{ minus(plus(y,x),y) = x }
minus-plus-1
call simplify minus-plus-1
call activate-lemma minus-plus-1
assume
{ minus(plus(x,z),plus(y,z)) = minus(x,y) }
minus-plus-3
call auto-strategy minus-plus-3
call activate-lemma minus-plus-3
80
QuodLibet-Skript
assume
{ minus(plus(z,x),plus(z,y)) = minus(x,y) }
minus-plus-4
call simplify minus-plus-4
call activate-lemma minus-plus-4
assume
{ plus(y,minus(x,y)) = x,
leq(y,x) =/= true }
plus-minus-2
call auto-strategy plus-minus-2
call activate-lemma plus-minus-2
assume
{ plus(minus(x,y),y) = x,
leq(y,x) =/= true }
plus-minus-1
call auto-strategy plus-minus-1
call activate-lemma plus-minus-1
assume
{ plus(x,z) =/= plus(y,z),
x = y }
plus-inj-1
call auto-strategy plus-inj-1
call activate-lemma plus-inj-1
assume
{ plus(z,x) =/= plus(z,y),
x = y }
plus-inj-2
call auto-strategy plus-inj-2
call activate-lemma plus-inj-2
assume
{ leq(plus(u,v),y) = false,
leq(v,y) = true }
less-plus-mono-1
call auto-strategy less-plus-mono-1
call activate-lemma less-plus-mono-1
assume
{ leq(plus(y,x),z) = false,
leq(y,z) =/= false }
less-plus-mono-2
call auto-strategy less-plus-mono-2
call activate-lemma less-plus-mono-2
81
Anhang A. Beweise der verwendeten Lemmata
assume
{ leq(v,0) = false,
v = 0 }
leq-v-0
call auto-strategy leq-v-0
call activate-lemma leq-v-0
assume
{ s(minus(x,s(0))) = x,
x = 0 }
s-minus
call auto-strategy s-minus
call activate-lemma s-minus
assume
{ leq(plus(x,u),s(plus(y,v))) = false,
leq(x,y) = true,
leq(u,v) = true }
less-plus-mono
call auto-strategy less-plus-mono
call activate-lemma less-plus-mono
assume
{ leq(times(u,w),plus(times(v,w),minus(w,s(0)))) = false,
leq(u,v) = true,
w = 0 }
less-times-mono
call auto-strategy less-times-mono
apply lemma-subs
less-plus-mono
[ x <-- u, y <-- v, u <-- times(u,w),
v <-- plus(minus(w,s(0)),times(v,w)) ] ..
less-times-mono_1
call simplify less-times-mono_1
apply axiom-rewrite
1
[1:2]
plus-2
1
[x <-- v , y <-- plus(minus(w,s(0)),times(v,w))] ..
less-times-mono_1
apply lemma-rewrite
1
[1:2:2]
plus-sx-y
1
82
QuodLibet-Skript
[x <-- minus(w,s(0)) , y <-- times(v,w)] ..
less-times-mono_1
call simplify less-times-mono_1
apply lemma-rewrite
2
[1:2:2:1]
s-minus
1
[x <-- w] ..
less-times-mono_1
set weight w less-times-mono
call cont-proof-attempt less-times-mono_1
call activate-lemma less-times-mono
assume
{ leq(plus(x,u),plus(y,v)) = false,
leq(x,y) = true,
leq(u,v) = true }
less-plus-mono-3
call auto-strategy less-plus-mono-3
call activate-lemma less-plus-mono-3
assume
{ leq(times(u,w),times(v,w)) = false,
leq(u,v) = true,
w = 0 }
less-times-mono-1
call auto-strategy less-times-mono-1
call activate-lemma less-times-mono-1
assume
{ leq(times(w,u),times(w,v)) = false,
leq(u,v) = true,
w = 0 }
less-times-mono-2
call auto-strategy less-times-mono-2
call activate-lemma less-times-mono-2
assume
{ x =/= y,
leq(x,y) =/= false }
uneq-less
call auto-strategy uneq-less
call activate-lemma uneq-less
assume
{ times(x,z) =/= times(y,z),
83
Anhang A. Beweise der verwendeten Lemmata
x = y,
z = 0 }
times-inj-1
apply lemma-subs
leq-trichotomy
[x <-- x , y <-- y] ..
times-inj-1
apply lemma-subs
less-times-mono
[u <-- x, v <-- y, w <-- z] ..
times-inj-1
call simplify times-inj-1
apply lemma-subs
less-times-mono
[u <-- y, v <-- x, w <-- z] ..
times-inj-1
call simplify times-inj-1
call activate-lemma times-inj-1
call deactivate-lemmas { uneq-less }
assume
{ plus(x,y) =/= y,
x = 0 }
uneq-plus-x-y-x
call auto-strategy uneq-plus-x-y-x
call activate-lemma uneq-plus-x-y-x
assume
{ x = 0,
leq(s(0),x) = true }
leq-1-x
call auto-strategy leq-1-x
call activate-lemma leq-1-x
assume
{ minus(s(x),y) = s(minus(x,y)),
leq(y,x) =/= true }
minus-s-leq
call auto-strategy minus-s-leq
call activate-lemma minus-s-leq
assume
{ minus(plus(x,z),y) = plus(minus(x,y),z),
leq(y,x) =/= true }
minus-plus-leq
call auto-strategy minus-plus-leq
call activate-lemma minus-plus-leq
84
QuodLibet-Skript
assume
{ minus(plus(z,x),y) = plus(minus(x,y),z),
leq(y,x) =/= true }
minus-plus-leq-1
call auto-strategy minus-plus-leq-1
call activate-lemma minus-plus-leq-1
assume { def plus(x,y) } L1
call simplify L1
assume { def times(x,y) } L2
call simplify L2
assume { times(s(0),x) = x } L3
call auto-strategy L3
assume { plus(x,y) = plus(y,x) } L4
call auto-strategy L4
assume { plus(plus(x,y),z) = plus(x,plus(y,z)) } L5
call auto-strategy L5
assume { plus(times(x,z),times(y,z)) = times(plus(x,y),z) } L6
call auto-strategy L6
assume { times(plus(x,s(0)),y) = plus(times(x,y),y) } L7
call auto-strategy L7
assume { s(x) = plus(x,s(0)) } L8
call auto-strategy L8
assume { minus(times(x,y),times(x,z)) = times(x,minus(y,z)) } L9
call auto-strategy L9
call activate-lemma L9
assume { minus(plus(x,y),plus(x,z)) = minus(y,z) } L10
call auto-strategy L10
assume { plus(x,y) =/= plus(w,z),
plus(x,minus(y,z)) = plus(w,minus(z,y)) } L11a
call auto-strategy L11a
assume { plus(x,y) = plus(w,z),
plus(x,minus(y,z)) =/= plus(w,minus(z,y)) } L11b
85
Anhang A. Beweise der verwendeten Lemmata
call auto-strategy L11b
assume { plus(x,times(y,u)) =/= plus(w,times(z,u)),
plus(x,times(minus(y,z),u)) = plus(w,times(minus(z,y),u)) }
L12a
call auto-strategy L12a
assume { plus(x,times(y,u)) = plus(w,times(z,u)),
plus(x,times(minus(y,z),u)) =/= plus(w,times(minus(z,y),u)) }
L12b
call auto-strategy L12b
assume { leq(times(x,y),times(x,z)) = leq(y,z),
x = 0 } L13
call auto-strategy L13
assume { leq(times(u,v),plus(times(u,w),y)) = leq(v,w),
leq(u,y) = true } L14
call auto-strategy L14
call activate-lemma L14
assume { leq(plus(times(u,x),v),times(u,y)) = leq(s(x),y),
leq(u,v) = true,
v = 0 } L15
call auto-strategy L15
assume { times(x,y) =/= plus(times(x,z),u),
u = 0,
leq(x,u) = true } L16
apply lemma-subs
leq-trichotomy
[ x <-- z ] ..
L16
apply lemma-subs
uneq-less
[y <-- times(x,y) , x <-- plus(times(x,z),u)] ..
L16
set current g-node L16 [1:2]
apply lemma-subs
uneq-less
[x <-- times(x,y) , y <-- plus(times(x,z),u)] ..
L16
call cont-proof-attempt L16
assume
{ times(z,x) =/= times(z,y),
x = y,
86
QuodLibet-Skript
z = 0 } L17a
call auto-strategy L17a
assume { times(x,y) = times(x,z),
y =/= z,
x = 0 } L17b
call auto-strategy L17b
assume { leq(x,y) = false,
leq(s(y),x) = false } L18a
call auto-strategy L18a
assume { leq(x,y) = true,
leq(s(y),x) = true } L18b
call auto-strategy L18b
assume { ~(x < y),
leq(s(x),y) = true } L19a
assume { x < y,
leq(s(x),y) = false } L19b
call auto-strategy L19b
assume { x < y,
leq(y,x) = true } L20a
call auto-strategy L20a
assume { ~(x < y),
leq(y,x) = false } L20b
assume { minus(x,y) = 0,
leq(y,x) = true } L21
call auto-strategy L21
assume { plus(x,minus(y,z)) = u,
plus(x,y) =/= plus(u,z),
leq(z,y) =/= true } L22a
call auto-strategy L22a
assume { plus(x,minus(y,z)) =/= u,
plus(x,y) = plus(u,z),
leq(z,y) =/= true } L22b
call simplify L22b
assume { leq(plus(x,minus(y,z)),u) = true,
leq(plus(x,y),plus(u,z)) = false,
leq(z,y) =/= true } L23a
87
Anhang A. Beweise der verwendeten Lemmata
call auto-strategy
L23a
assume { leq(plus(x,minus(y,z)),u) = false,
leq(plus(x,y),plus(u,z)) = true,
leq(z,y) =/= true } L23b
call auto-strategy L23b
assume { x = y,
leq(x,y) =/= true,
leq(y,x) =/= true } L24
call auto-strategy L24
assume { leq(x,y) = true,
x =/= y } L25
call auto-strategy L25
assume { leq(x,y) = true,
leq(y,x) = true } L26
call auto-strategy L26
assume { 0 =/= plus(s(x),y) } L27
call auto-strategy L27
assume { leq(plus(s(x),y),0) = false } L28
call auto-strategy L28
assume { def minus(x,y) } L29
call auto-strategy L29
assume { leq(plus(times(z,x),times(w,u)),
plus(times(z,y),plus(times(w,v),
minus(plus(z,w),s(0))))) = false,
leq(x,y) = true,
leq(u,v) = true,
z = 0,
w = 0 } L30
apply lit-add
leq(plus(times(z,x),times(w,u)),
s(plus(plus(times(z,y),minus(z,s(0))),
plus(times(w,v),minus(w,s(0)))))) =/= false
. ..
L30
apply lemma-rewrite
1
[1]
less-plus-mono
1
88
QuodLibet-Skript
[x <-- times(z,x) , u <-- times(w,u) ,
y <-- plus(times(z,y),minus(z,s(0))) ,
v <-- plus(times(w,v),minus(w,s(0)))] ..
L30
call cont-proof-attempt L30
apply lemma-rewrite
11
[1:2]
plus-sx-y
1
[x <-- minus(w,s(0)) ,
y <-- plus(minus(z,s(0)), plus(times(v,w),times(y,z)))] ..
L30
call simplify L30
apply lemma-rewrite
12
[1:2:1]
s-minus
1
[x <-- w] ..
L30
call simplify L30
assume
{ leq(x,y) = true,
x = plus(y,s(0)),
leq(x,plus(y,s(0))) =/= true }
L31
call auto-strategy L31
assume { minus(plus(x,y),y) = x } L32
call auto-strategy L32
assume { leq(plus(x,y),plus(x,z)) = leq(y,z) } L33
call auto-strategy L33
assume { leq(minus(x,v),plus(y,w)) = true,
leq(x,y) =/= true } L34
call auto-strategy L34
assume { leq(y,z) = true,
plus(x,y) =/= z } L35
call auto-strategy L35
assume { plus(x,z) = y,
x =/= minus(y,z),
leq(z,y) =/= true } L36a
89
Anhang A. Beweise der verwendeten Lemmata
call auto-strategy L36a
assume { plus(x,z) =/= y,
x = minus(y,z),
leq(z,y) =/= true } L36b
call auto-strategy L36b
assume { times(minus(x,y),z)
L37
apply lemma-rewrite
1
[1]
times-commutative
1
[x <-- minus(x,y) ,
L37
set current g-node L37 [1:2]
apply lemma-rewrite
2
[2:1]
times-commutative
1
[x <-- x , y <-- z]
L37
apply lemma-rewrite
2
[2:2]
times-commutative
1
[x <-- y , y <-- z]
L37
set current g-node L37 root
call simplify-open-subgoals
= minus(times(x,z),times(y,z)) }
y <-- z] ..
..
..
L37
assume { plus(minus(x,y),y) = x,
leq(y,x) =/= true } L38
call auto-strategy L38
assume { x =/= y,
times(z,x)=times(z,y) } L39
call auto-strategy L39
assume { plus(x,u) = plus(y,v),
x =/= y,
u =/= v } L40
call auto-strategy L40
90
QuodLibet-Skript
assume { plus(u,x) =/= plus(v,y),
u = v,
x =/= y } L41
call auto-strategy L41
assume { leq(plus(u,x),plus(v,y)) = true,
leq(u,v) = false,
x =/= y } L42
call auto-strategy L42
assume { u = v,
plus(u,x) =/= plus(v,y),
x =/= y } L43
call auto-strategy L43
assume { u =/= v,
plus(u,x) = plus(v,y),
x =/= y } L44
call auto-strategy L44
assume { leq(u,v) = true,
leq(plus(u,x),plus(v,y)) = false,
x =/= y } L45
call auto-strategy L45
assume { leq(plus(x,z),plus(y,w)) = true,
leq(plus(x,u),plus(y,v)) = false,
leq(plus(z,v),plus(w,u)) = false } L46
apply lit-add
leq(plus(plus(x,u),plus(z,v)),
plus(plus(y,v),plus(w,u))) =/= true
. ..
L46
apply lemma-subs
leq-plus-mono
[u <-- plus(x,u) , v <-- plus(z,v) ,
x <-- plus(y,v) , y <-- plus(w,u)] ..
L46
call cont-proof-attempt L46
91
92
B. Beispielspezifikationen
In den folgenden drei Abschnitten sind die QuodLibet-Skripte für die Spezifikationen, die in Kapitel 4 verwendet werden, aufgeführt. Diese enthalten nur die Definition der benötigten Operatoren und die eigentlichen Beweisziele, keine Lemmata und
keine Beweise. Die Operatoren der linearen Arithmetik werden nicht spezifiziert, da
diese im neuen System bereits enthalten sind und für das alte System ohne lineare
Arithmetik entsprechend der Beschreibung in Abschnitt 2.2 leicht zur Spezifikation
hinzugefügt werden können.
B.1. Das Beispiel ggT
declare constructor variables x, y, z : Nat.
declare operators
gcd : Nat Nat --> Nat
.
assert gcd-1 :
gcd(x,y) = x
if y = 0
.
assert gcd-2 :
gcd(x,y) = y
if x = 0,
y =/= 0
.
assert gcd-3 :
gcd(x,y) = gcd(x,-(y,x))
if
x <= y,
x =/= 0,
y =/= 0
.
assert gcd-4 :
gcd(x,y) = gcd(-(x,y),y)
if
~(x <= y),
x =/= 0,
y =/= 0
.
93
Anhang B. Beispielspezifikationen
assume
{ gcd(x,x) = x }
gcd-idempotent
assume
{ gcd(x,y) = gcd(y,x) }
gcd-commutative
assume
{ gcd(gcd(x,y),z) = gcd(x,gcd(y,z)),
x = 0,
y = 0,
z = 0 }
gcd-associative
B.2. Das Beispiel
√
2
declare constructor variables x,y : Nat.
declare operators
sqr
:
Nat --> Nat
.
assert sqr1 :
sqr(x)=*(x,x)
.
assume
{ *(2,sqr(y))=/=sqr(x), y=0 }
sqrtirrat1
B.3. Das Beispiel 91er-Funktion
declare constructor variables x : Nat.
declare operators
f91 : Nat --> Nat
.
assert f91-1 :
f91(x)=f91(f91(+(x,11)))
if x <= 100
.
94
B.3. Das Beispiel 91er-Funktion
assert f91-2 :
f91(x) = -(x,10)
if ~(x <= 100)
.
assume
{ def f91(x) }
def-f91
95
96
Literaturverzeichnis
[Ave95] Avenhaus, Jürgen: Reduktionssysteme.
1995.
Springer, Berlin Heidelberg,
[BM88] Boyer, Robert S. und J. Strother Moore: Integrating Decision Procedures into Heuristic Theorem Provers: A Case Study of Linear Arithmetic. Machine Intelligence, 11:83 – 124, 1988.
[DE73]
Dantzig, George B. und B. Curtis Eaves: Fourier-Motzkin elimination and its dual. Journal of Combinatorial Theory, 14(3):288 – 297, 1973.
[FR74]
Fischer, Michael J. und Michael O. Rabin: Super-Exponential Complexity of Presburger Arithmetic. In: Proceedings of the SIAM-AMS Symposium in Applied Mathematics, Band 7, Seiten 27 – 41, 1974.
[Göd31] Gödel, Kurt: Über formal unentscheidbare Sätze der Principia Mathematica und verwandter Systeme I. Monatsheft für Mathematik und Physik,
38:173 – 198, 1931.
[JBG99] Janičić, Predrag, Alan Bundy und Ian Green: A Framework for
the Flexible Integration of a Class of Decision Procedures into Theorem
Provers. Informatics Research Report EDI-INF-RR-0096, University of
Edinburgh, Division of Informatics, 1999.
[Kai02] Kaiser, Markus: Effizientes Beweisen mit einem formalen Beweissystem.
Diplomarbeit, Fachbereich Mathematik, Universität Kaiserslautern, 2002.
[Küh00] Kühler, Ulrich: A Tactic-Based Inductive Theorem Prover for Data Types with Partial Operations. Infix, Sankt Augustin, 2000. Dissertation,
Fachbereich Informatik, Universität Kaiserslautern.
[KN94] Kapur, Depak und Xumin Nie: Reasoning about Numbers in Tecton. In:
Proceedings of 8th International Symposium on Methodologies for Intelligent Systems (ISMIS’94), Seiten 57–70, Charlotte, North Carolina, USA,
Oktober 1994.
[Knu81] Knuth, Donald E.: The art of computer programming: Seminumerical
algorithms, Band 2, Seiten 326 – 328. Addison-Wesley, 2. Auflage, 1981.
[MM70] Manna, Zohar und John McCarthy: Properties of programs and partial
function logic. Machine Intelligence, 5:27 – 37, 1970.
97
Literaturverzeichnis
[Pre29] Presburger, Mojzesz: Über die Vollständigkeit eines gewissen Systems
der Arithmetik ganzer Zahlen, in welchem die Addition als einzige Operation hervortritt. Comptes Rendus du I congrès de Mathématiciens des Pays
Slaves, Seiten 92 – 101, 1929.
[Pug92] Pugh, William: The omega test: a fast and practical integer programming
algorithm for dependence analysis. Communications of the ACM, 35(8):102
– 114, 1992.
[Sch04] Schmidt-Samoa, Tobias: The New Standard Tactics of the Inductive
Theorem Prover QuodLibet. SEKI-Report SR-2004-01, Fachbereich Informatik, TU Kaiserslautern, 2004.
[Wir04] Wirth, Claus-Peter: Descente Infinie + Deduction. Logic Journal of
the IGPL, 12(1):1–96, 2004.
98
Herunterladen