TU Kaiserslautern Prof. Dr. A. Poetzsch-Heffter Dipl.-Inf. P. Michel Fachbereich Informatik Dipl.-Inf. C. Feller AG Softwaretechnik Übungsblatt 1: Spezifikation und Verifikation mit Logik Höherer Ordnung (Sommersemester 2010) Ausgabe: 12.04.2010 Aufgabe 1 Kalkül des natürlichen Schließens Wir betrachten das Genzten-Kalkül, auch Kalkül des natürlichen Schließens genannt. Das Kalkül arbeitet auf Sequenzen (engl. sequents) der Form Γ ` A, welche aussagen, dass die Formel A aus der Menge der Formeln Γ syntaktisch folgt. Kann man mit Hilfe der Regeln des Kalküls aus den Axiomen eine solche Sequenz ableiten, gilt auch die semantische Folgerungsbeziehung (das Kalkül ist korrekt). Das Kalkül beinhaltet nur ein einziges Axiom, was besagt, dass man jede Formel unter Annahme von sich selbst herleiten kann: A ` A, für alle Formeln A. Dafür gibt es um so mehr Regeln, mit denen sich aus Sequenzen neue bilden lassen: Konjunktion, Disjunktion und Implikation (binäre Relationen) Γ`A Γ ` B (∧I) Γ`A∧B Γ`A (∨Il ) Γ`A∨B Γ ` A ∧ B (∧E ) l Γ`A Γ ` A ∧ B (∧E ) r Γ`B Γ`A∨B Γ, A ` C Γ`C Γ`B (∨Ir ) Γ`A∨B Γ, A ` B (→ I) Γ`A→B Γ`A→B Γ ` A (→ E) Γ`B Γ, B ` C (∨E) Wahrheitswerte (Konstanten), Negation (unäre Relation) und Abschwächung Γ ` False (FalseE) Γ`A Γ, A ` False (¬I) Γ ` ¬A Γ ` ¬A Γ ` A (¬E) Γ ` False Γ ` B (W ) Γ, A ` B Universelle und Existentielle Quantoren Γ ` {anew /x}A (∀I) Γ ` ∀x.A Γ ` {t/x}A (∃I) Γ ` ∃x.A Γ ` ∃x.A Γ ` ∀x.A (∀E) Γ ` {t/x}A Γ, {anew /x}A ` C (∃E) Γ`C Die Namen der Regeln stehen seitlich in Klammern notiert. Dabei steht I für Introduction, E für Elimination und W für Weakening. Die Syntax {y/x}A bedeutet, dass alle ungebundenen Vorkommen von x in A durch y ersetzt werden. Für anew muss eine vollkommen neue Variable gewählt werden, die sonst noch nicht vorkommt. t hingegen darf irgendein beliebiger Term sein. Ein Beweis in diesem Kalkül ist ein Baum von Regelanwendungen, dessen Blätter Axiome sind und dessen Wurzel die zu beweisende Behauptung ist. Man erstellt einen Beweis in diesem Kalkül üblicherweise rückwärts, als ausgehend von der Behauptung, hin zu Axiomen. a) (Vorbereiten!) Zeigen Sie mit Hilfe des Gentzen-Kalküls, dass gilt: ` (a ∨ (b ∧ c)) → ((a ∨ b) ∧ (a ∨ c)) b) (Vorbereiten!) Zeigen Sie mit Hilfe des Gentzen-Kalküls, dass gilt: ` ∃x.∀y.P (x, y) → ∀y.∃x.P (x, y) c) Schreiben Sie eine Isabelle/HOL Theorie, die Ihre Beweise aus a) und b) umsetzt. Ein Gerüst mit dem Sie starten können sieht so aus: theory Blatt1 imports Main begin lemma Aufgabe_1_a: "(a \/ (b /\ c)) −−> ((a \/ b) /\ (a \/ c))" apply (rule ...) ... done lemma Aufgabe_1_b: "(EX x. ALL y. P x y) −−> (ALL y. EX x. P x y)" ... end Die Regeln des Gentzen-Kalküls entsprechen in etwa den folgenden Isabelle/HOL Regeln: Gentzen ∧I ∧El ∧Er →I →E Isabelle/HOL conjI conjunct1 conjunct2 impI mp Gentzen ∨Il ∨Ir ∨E ∀E ∀I Isabelle/HOL disjI1 disjI2 disjE spec allI Gentzen ¬I ¬E FalseE ∃I ∃E Isabelle/HOL notI notE FalseE exI exE Aufgabe 2 Hilbert-Kalkül Das Hilbert-Kalkül hat nur die Regel Modus-Ponens: P →Q Q P (MP) Dazu kommen die drei Axiome: (A1) P → (Q → P ) (A2) (P → (Q → R)) → ((P → Q) → (P → R)) (A3) (¬P → ¬Q) → (Q → P ) Ein Beweis im Hilbert-Kalkül ist eine Sequenz von Formeln, bei der jede Formel entweder ein Axiom, eine Annahme (engl. assumption) oder das Ergebnis einer Modus-Ponens Anwendung auf zwei vorhergehende Formeln ist. Die Sequenz Γ ` P bedeutet, dass es mit den Annahmen aus Γ einen Beweis gibt, der mit P endet. a) (Vorbereiten!) Zeigen Sie, dass ` b → (a → a). b) (Vorbereiten!) Zeigen Sie, dass ` a ∨ ¬a. (Hinweis: Verwenden Sie die Regeln aus der Vorlesung, um das ∨ zu eliminieren.) c) (Vorbereiten!) Zeigen Sie, dass ¬¬a ` a. d) Übertragen Sie die Beweise sinnvoll nach Isabelle/HOL.