Ü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.