Automatisierte Logik und Programmierung

Werbung
Übung zur Vorlesung
Automatisierte Logik und Programmierung
Prof. Chr. Kreitz
Universität Potsdam, Theoretische Informatik — Wintersemester 2003/04
Blatt 1 — Abgabetermin: —
Das erste Übungsblatt soll dazu dienen, ein Gefühl für die Begriffe Kalkül, Prädikatenlogik, definitorische Erweiterung, sowie Intuitionistische Logik zu erarbeiten. Dazu soll weniger das Knacken
von harten Nüssen dienen sondern vielmehr das herumspielen mit einfachen Fragestellungen.
Aufgabe 1.1 (Gefühl für Kalkül)
In der Vorlesung wurden bereits die aus der Schule bekannten Ableitungsregeln der Differentialrechnung als ein Beispiel für formale Kalküle genannt. In dieser Aufgabe wollen wir uns
in die Rolle eines “dummen” Rechners hineinversetzen, der keine Vorstellung von den tieferen
Inhalten der Differentialrechnung hat, stattdessen aber ein paar Ableitungsregeln kennt (siehe
Anhang 1), mit deren Hilfe er die folgenden Aufgaben lösen soll:
1.1–a
1.1–b
1.1–c
d
dx
d
dx
d
dx
(x2 + 4x)
(1 + x3 )
(2x3 )
Hinweis: Transformiere die obigen Terme zunächst in Terme der angegebenen Grammatik,
reduziere dann jeweils, bis keine Regel mehr anwendbar ist und transformiere das Ergebnis
anschließend wieder in einen arithmetischen Term. Beachte dabei, daß der Rechner nicht von
alleine die Anwendbarkeit arithmetischer Operationen (wie z. B. Addition, Multiplikation etc.)
erkennt, sondern einfach nur stur die gegebenen Regeln anwendet.
Aufgabe 1.2 (Prädikatenlogik)
Formuliere folgende Sätze in der Prädikatenlogik erster Stufe:
1.2–a “Sein oder nicht Sein”
1.2–b “Es ist noch kein Meister vom Himmel gefallen”
1.2–c “Wenn der Hahn kräht auf dem Mist, ändert sich das Wetter oder es bleibt wie es ist”
Aufgabe 1.3 (Definitorische Erweiterung)
Definiere die folgenden Operatoren bzw. Ausdrücke mit Hilfe einer äquivalenten Formel in der
Prädikatenlogik erster Stufe mit Sorten:
˙
1.3–a A∧B:
“höchstens eine der beiden Formeln A und B gilt”
˙
1.3–b A∨B:
“genau eine der beiden Formeln A und B gilt”
1.3–c T: (die immer gültige Formel). Gib mindestens eine intuitionistische Definition an.
Vorlesung Automatisierte Logik und Programmierung
2
Übung 1
Aufgabe 1.4 (Intuitionismus)
Welche der folgenden Aussagen gilt intuitionistisch, welche nur klassisch? Begründe informal:
1.4–a ¬¬(A ∨ ¬A)
1.4–b (A ⇒ B) ⇒ ¬A ∨ B
1.4–c ¬A ∨ B ⇒ (A ⇒ B)
Hinweis: Eine Aussage ist nur dann intuitionistisch gültig, wenn es einen Beweis für sie gibt,
der nicht vom Gesetz des ausgeschlossenen Dritten (“tertium non datur”) Gebrauch macht. Es
lohnt sich, zu mehreren über diese — ziemlich philosophischen — Fragen zu diskutieren.
Aufgabe 1.5 (Prädikatenlogik I: Syntax)
Welche der folgenden Ausdrücke sind Formeln der Prädikatenlogik erster Stufe mit Sorten
gemäß den Definitionen im Skript (Abschnitt 2.2.1)?
1.5–a ∀x:A.∃f:F.≥(f(x),x)
1.5–b ¬∀p:P.∃x,y.p(x)⇒p(y)
1.5–c (¬∃x:W.x=w)⇒ ∀x:S.x=f(m)⇒M(x)
1.5–d (∃x:P.Q(x))∧(∃y:S.P(f(y))) ⇒ ¬∀z:W.¬Q(z)∧∃u:z.R(g(f(z),a,g(f(u),z,b)))
Aufgabe 1.6 (Prädikatenlogik II: Semantik)
Es seien:
V
F
P
T
unter folgender (nicht–Standard) Interpretation ι:
= {x, y, z}
= {+, 0, 1, 2, . . .}
=∅
= {N}
ι(N) = NΩ
ω , die Menge der natürlichen Zahlen
(mit Null) ergänzt um zwei Elemente Ω
und ω
ι(x) = ι(y) = ι(z) = Null
ι(0), ι(1), . . . = Null, Eins,. . .
ι(+) = ⊕
j
ω Ω
⊕
Dabei sei die zweistellige Funktion ⊕ wie folgt definiert, wobei
i i+j Ω ω
i, j ∈ N \ {Ω, ω} gilt und mit “+” die gewöhnliche Addition
ω
ω
Ω ω
auf natürlichen Zahlen gemeint ist:
Ω Ω ω
Ω
Welche der folgenden prädikatenlogischen Ausdrücke ist semantisch wahr unter ι:
1.6–a
1.6–b
1.6–c
1.6–d
1.6–e
1.6–f
1.6–g
1.6–h
1.6–i
∀x:N.¬(x=x+1)
∀x,y:N.x+1=y+1⇒x=y
∀x:N.x+0=x
∀x:N.0+x=x
∀x:N.¬(0=x+1)
∀x:N.¬(x=0)⇒ ∃y:N.x=y+1
∀x,y,z:N.x+(y+z)=(x+y)+z
∀x,y:N.x+y=y+x
∀x,y:N.0+x=x⇒(0+x)+y=x+(y+0)
Vorlesung Automatisierte Logik und Programmierung
1
Anhang 1
Anhang 1.1: Differentialkalkül
Hier die Kalkülregeln zum symbolischen Differenzieren:
1. Ableitungsregeln
prod
sum
D(A+B) −→ D(A)+D(B)
D(A*B) −→ D(A)*B+A*D(B)
pow
D(A^s(N )) −→ D(A*A^N )
1. Abschlußregeln
pow
cons
D(A^0) −→0 0
D(N ) −→ 0
lin
D(x) −→ s(0)
Dabei sind A, B ∈ TERM und N ∈ NAT0 entsprechend folgender Grammatik:
TERM
PRODUCT
POWER
BASE
NAT0
←
←
←
←
←
PRODUCT | PRODUCT + PRODUCT
POWER | POWER * POWER
BASE | BASE ^NAT0
NAT0 | x | (TERM )
0 | s(NAT0 )
Unter Beachtung der üblichen Vorrangregeln für arithmetische Terme können Klammern ausgelassen werden. Die hier aufgeführten Regeln dürfen überdies auf jedes Vorkommen eines
D–Termes innerhalb eines TERM–Ausdrucks angewendet werden. Die natürlichen Zahlen werden hier durch die Nachfolgerfunktion “s” repräsentiert:
0 ≡ 0,
n ≡ s(s(
· · · s(} 0)))
| {z
n–mal
Hier nun ein Beispiel für dx2 /dx ≡ D(x^s(s(0))):
D(x^s(s(0)))
−→ D(x*x^s(0))
pow
prod
−→ D(x)*x^s(0)+x*D(x^s(0))
lin
−→ s(0)*x^s(0)+x*D(x^s(0))
pow
−→ s(0)*x^s(0)+x*D(x*x^0)
prod
−→ s(0)*x^s(0)+x*(D(x)*x^0+x*D(x^0))
lin
−→ s(0)*x^s(0)+x*(s(0)*x^0+x*D(x^0))
pow
−→0 s(0)*x^s(0)+x*(s(0)*x^0+x*0)
Ergebnis:
s(0)*x^s(0)+x*(s(0)*x^0+x*0)
= 1x1 + x(1x0 + 0x)
= x + x(1 + 0)
= x+x
= 2x
Vorlesung Automatisierte Logik und Programmierung
1
Anhang 1
Lösung 1.1 Ziel dieser Aufgabe ist es, mit Hilfe der allseits bekannten Ableitungsregeln
ein Gefühl für formale Kalküle zu entwickeln. Dabei soll eine Vorstellung für die typische
Vorgehensweise beim Anwenden solcher Kalküle entwickelt werden: formalisieren, berechnen,
darstellen in der ursprünglichen Sprache. Weiterhin soll auch erkannt werden können, wie
dringend der Bedarf nach definitorischer Erweiterung, Entscheidungsprozeduren u. ä. ist, um
formale Kalküle praktisch einsetzen zu können.
Die mathematischen Lösungen der hier gestellten Aufgaben dürfte als bekannt vorausgesetzt
werden. In jedem Falle unumgänglich für halbwegs praktisches Arbeiten wäre eine Berechnungsregel für die arithmetischen Grundoperationen Addition, Subtraktion, Multiplikation und
Division. Diese lassen sich schrittweise mit Hilfe der Nachfolgerfunktion angeben:
A + s(B) −→ s(A + B),
(A + 0)−→ A
Assioiativ– und Kommutativgesetze können dann hinzugenommen werden. Um nun etwa eine
einfache Multiplikation nicht in eine Ableitung, bestehend aus einer ewig langen Kette von Regelanwendungen ausarten zu lassen, wäre es sinnvoll, eine abkürzende “Makro–Regel” hierfür zu
definieren. Diese entspräche dann einer Anwendung der Schnittregel aus dem Sequenzenkalkül.
Auf diese Weise würde mann nun Schritt für Schritt die relevanten Konzepte aufbauen.
Lösung 1.2 Ziel dieser Aufgabe ist es ein wenig den Formalisierungsprozeß zu üben. Er
bildet einen gewichtigen Teil des Versuches, Dinge aus der Erfahrungswelt des Menschen für
den Rechner verwertbar zu machen. Neben dem Umgang mit formalen Kalkülen ist dies ein
ganz wesentlicher Lerninhalt für alle, die sich mit der Automatisierung von Denkvorgängen
beschäftigen.
Eine musterartige Lösung für die vorliegenden Aufgaben anzugeben ist insofern schwierig, als
es keine eindeutige solche gibt. Während man “Sein oder nicht Sein” noch ziemlich eindeutig
als Sein ∨ ¬Sein beschreiben kann ist bei den anderen Beispielen der Grad der Detailliertheit
wesentlich variabler und hängt von der Intention ab, aus der heraus man sie formalisieren
möchte. Hier einige Vorschläge:
• “Es ist noch kein Meister vom Himmel gefallen”:
¬∃x.Meister(x)∧ Gefallen von(himmel, x)
• “Wenn der Hahn kräht auf dem Mist, ändert sich das Wetter oder es bleibt wie es ist”:
∀x.Hahn(x)∧Kräht(x)∧Auf(x, mist)
⇒ (∀y.Wetter(y)⇒ Ändert sich(y)∨¬Ändert sich(y))
Vorlesung Automatisierte Logik und Programmierung
2
Anhang 1
Lösung 1.3 Ziel dieser Aufgabe ist es, sowohl die Nützlichkeit des Werkzeugs “Definitiorische Erweiterung” zu erkennen als auch den Umgang mit ihm zu üben. Leider sind die
wirklich interessanten Definitionen wie Gleichheit oder natürliche Zahlen erst in höherer Stufe
möglich. Für die vorliegenden Beispiele gibt es mehrere Möglichkeiten, von denen wir hier
einige vorstellen:
˙
• A∧B
≡ ¬(A ∧ B) oder ¬A ∨ ¬B
˙
• A∨B ≡ ¬A ∧ B ∨ A ∧ ¬B oder (A ∨ B) ∧ ¬(A ∧ B)
•
T ≡ A ∨ ¬A oder ¬Λ oder ¬(A ∧ ¬A) oder A ⇒ A
(diese letzten drei sind auch intuitionistisch gültig).
Lösung 1.4 Ziel dieser Aufgabe ist es, einen Begriff von der intuitionistischen Gültigkeit
zu vermitteln. Mit Hilfe des Nachdenkens über den Grund, aus dem die einzelnen Aussagen
gelten oder auch nicht gelten, soll dies möglichst hitzig debattiert werden.
Das erste Beispiel ist in der Tat intuitionistisch gültig. Während man es zwar ablehnt etwas
als wahr zu akzeptieren, dessen Gegenteil für wiedersprüchlich befunden wurde, ist es durchaus
legitim, etwas für falsch zu halten dessen Gegenteil nicht falsch sein kann. Der Intuitionist
erkennt demnach an, daß es kein Problem geben kann, das nicht entweder selbst wahr ist oder
aber dessen Gegenteil wahr ist.
Das zweite Beispiel gilt intuitionistisch nicht, da allein aus der Voraussetzung, daß man aus
der Wahrheit von A immer auf diejenige von B schließen kann, nicht notwendigerweise eine
Antwort auf die Frage resultiert, ob dies der Fall ist, weil nun gerade A nicht gilt oder aber
weil B sowieso gilt. Jeder Beweis für diese Formel muß sich auf Tertium non datur stützen:
es kann eben nur eine der zu beweisenden Möglichkeit geben, wenn die Implikation als wahr
angenommen wird.
Das letzte Beispiel schließlich ist intuitionistisch gültig. Im Gegensatz zum ersten Beispiel
kann man aus jeder einzelnen der beiden alternativ möglichen Voraussetzungen die Gültigkeit
der Implikation folgern: wenn A nicht gilt, ist sie erfüllt und ebenso wenn B gilt.
Lösung 1.5 Ziel dieser Aufgabe ist es weniger, die Langeweile beim auseinanderfriemeln
von höchst abstrakten Ausdrücken irgendeiner formalen Sprache zu erfahren sondern vielmehr,
eine gewisse Intuition beim Umgang mit der so überaus wichtigen Sprache der Prädikatenlogik
erster Stufe zu entwickeln. Im einzelnen gilt dann folgendes:
1.5–a ∀x:A.∃f:F.≥(f(x),x)
— ist kein Ausdruck der Prädikatenlogik erster Stufe mit
Sorten: es wird hier über ein Funktionssymbol (f) quantifiziert!
1.5–b ¬∀p:P.∃x,y.p(x)⇒p(y)
— ist kein Ausdruck der Prädikatenlogik erster Stufe mit
Sorten: es wird hier über ein Prädikatszeichen (p) quantifiziert!
1.5–c (¬∃x:W.x=w)⇒ ∀x:S.x=f(m)⇒M(x)
Stufe mit Sorten.
— ist ein Ausdruck der Prädikatenlogik erster
1.5–d (∃x:P.Q(x))∧(∃y:S.P(f(y))) ⇒ ¬∀z:W.¬Q(z)∧∃u:z.R(g(f(z),a,g(f(u),z,b)))
— ist kein Ausdruck der Prädikatenlogik erster Stufe mit Sorten: ein Objekt (z) kann
nicht gleichzeitig eine Sorte sein!
Vorlesung Automatisierte Logik und Programmierung
3
Anhang 1
Lösung 1.6 Ziel dieser Aufgabe ist es, den Sinn und die Anwendungen von Semantik
mit Hilfe von Interpretationen zu illustrieren. Überdies soll gleichzeitig vermittelt werden, wie
schnell die syntaktische Erscheinungsform eine Bedeutung suggeriert, die mitunter von der
intendierten Interpretation abweicht. Hier die Lösungen im einzelnen:
ω
nicht wahr. Gegenbeispiel: ιΩ
x oder auch ιx .
1.6–a ι(∀x:N.¬(x=x+1)):
1.6–b ι(∀x,y:N.x+1=y+1⇒x=y):
wahr.
1.6–c ι(∀x:N.x+0=x):
wahr.
1.6–d ι(∀x:N.0+x=x):
ω
nicht wahr. Gegenbeispiel: ιΩ
x oder auch ιx .
1.6–e ι(∀x:N.¬(0=x+1)):
wahr.
1.6–f ι(∀x:N.¬(x=0)⇒ ∃y:N.x=y+1):
wahr.
1.6–g ι(∀x,y,z:N.x+(y+z)=(x+y)+z):
ω
nicht wahr. Gegenbeispiel: (ιΩ
y )z
1.6–h ι(∀x,y:N.x+y=y+x):
nicht wahr. Gegenbeispiel: (ιωx )Ω
y.
1.6–i ι(∀x,y:N.0+x=x⇒(0+x)+y=x+(y+0)):
wahr.
Herunterladen