Kalkül für Aussagenlogik ϕ, Γ ⊢ ϕ, ∆ (axiom) false, Γ ⊢ ∆ Γ′ ⊢ ∆′ (weakening, Γ′ ⊆ Γ, ∆′ ⊆ ∆) Γ⊢∆ (false left) Γ ⊢ ϕ, ∆ ϕ, Γ ⊢ ∆ (cut formula) Γ⊢∆ Γ ⊢ ϕ, ∆ (negation left) ¬ ϕ, Γ ⊢ ∆ ϕ, ψ, Γ ⊢ ∆ ϕ ∧ ψ, Γ ⊢ ∆ ϕ, Γ ⊢ ∆ ψ, Γ ⊢ ∆ ϕ ∨ ψ, Γ ⊢ ∆ Γ ⊢ ϕ, ∆ ψ, Γ ⊢ ∆ ϕ → ψ, Γ ⊢ ∆ Γ ⊢ true, ∆ (true right) ψ, Γ ⊢ ∆ (negation right) Γ ⊢ ¬ ψ, ∆ (conjunction left/right) Γ ⊢ ϕ, ∆ Γ ⊢ ψ, ∆ Γ ⊢ ϕ ∧ ψ, ∆ (disjunction left/right) Γ ⊢ ϕ, ψ, ∆ Γ ⊢ ϕ ∨ ψ, ∆ (implication left/right) ϕ, Γ ⊢ ψ, ∆ Γ ⊢ ϕ → ψ, ∆ Γ ⊢ ϕ, ψ, ∆ ϕ, ψ, Γ ⊢ ∆ ϕ, Γ ⊢ ψ, ∆ ψ, Γ ⊢ ϕ, ∆ (equivalence left/right) ϕ ↔ ψ, Γ ⊢ ∆ Γ ⊢ ϕ ↔ ψ, ∆ 25 Regeln für Quantoren und Gleichungen ϕτx , ∀ x.ϕ, Γ ⊢ ∆ (all left) • ∀ x.ϕ, Γ ⊢ ∆ Γ ⊢ ϕτx , ∃ x.ϕ, ∆ (exists right) Γ ⊢ ∃ x.ϕ, ∆ ϕyx , Γ ⊢ ∆ • (exists left) ∃ x.ϕ, Γ ⊢ ∆ Γ ⊢ ϕyx , ∆ (all right) Γ ⊢ ∀ x.ϕ, ∆ ϕτx die Substitution von x durch einen beliebigen Term τ in ϕ. y ist eine neue Variable, i.e. eine die nicht frei in Q x.ϕ, Γ, ∆ (Q ∈ {∀, ∃}) vorkommt. Genauer: y 6∈ (free(ϕ)\{x}) ∪ free(Γ) ∪ free(∆) • Γ ⊢ τ = τ, ∆ x = τ, Γτx ⊢ ∆τx (insert equation) x = τ, Γ ⊢ ∆ (reflexivity right) 26 Variablen und freie Variablen eines Ausdrucks Die Variablen eines Ausdrucks (Var (e)) Var (x) Var (op(t1 , . . . , tn )) Var (e = e′ ) Var (Qx.ϕ) = = = = {x} x∈X Sn i=1 Var (ti ) Var (e) ∪ Var (e′ ) {x} ∪ Var (ϕ) Q ∈ {∀, ∃} Die freien Variablen einer Formel (free(ϕ)) sind genauso definiert ausser: free(Qx.ϕ) = free(ϕ) \ {x} Q ∈ {∀, ∃} 27 Substitution die Substitution einer Variablen x durch einen Ausdruck t in e (etx ) xtx = t yxt = y falls x 6= y op(e1 , . . . , en )tx = op((e1 )tx , . . . , (en )tx ) (e1 = e2 )tx (Qy.ϕ)tx = (e1 )tx = (e2 )tx ) = Qy.ϕ Qy.ϕt x Qz.(ϕzy )tx falls y = x ∨ x 6∈ free(ϕ) falls y 6= x, y 6∈ free(t), x ∈ free(ϕ) falls y 6= x, y ∈ free(t), x ∈ free(ϕ) (z neu, d. h. z 6∈ Var (ϕ) ∪ Var (t)) (Q ∈ {∀, ∃}) 28 KIV: Organisation in Projekte Grundlegende Organisation: • In KIV arbeitet man in (SW-Entwicklungs-) Projekten • Jedes Projekt definiert Spezifikationen (Σ + Ax + Weiteres) • Spezifikationen können aufeinander aufbauen ⇒ Entwicklungsgraph • Über jeder Spezifikation kann man Theoreme formulieren und beweisen 29 KIV: Projektauswahl- und Projektebene 4 Ebenen: 1. Projektauswahlebene • Projekte anlegen, löschen, auf einem Projekt arbeiten 2. Projektebene • zeigt den Entwicklungsgraph der Spezifikationen • Spezifikationen anlegen, ändern, löschen • Auf einer Spezifikation arbeiten 30 KIV: Spezifikations- und Beweisebene 3. Spezifikationsebene ⋆ Theoreme anlegen, ändern, löschen ⋆ einen Beweis führen 4. Beweisebene ⋆ Beweise führen durch interaktive Anwendung von Regeln ⋆ Zwei Regelsätze: Basisregeln/für’s Beweisen optimierte Regeln ⋆ Backtracking, Pruning ⋆ Simplifikation + Heuristiken zur automatischen Anwendung von Regeln 31 KIV: Verzeichnisstruktur Verzeichnisstruktur: • Ein Projektverzeichnis <projektname> • darin: ⋆ ein Unterverzeichnis specs ⋆ [eine Datei devgraph für den Entwicklungsgraph] • in specs: ein Unterverzeichnis <specname> für jede Spezifikation • darin: ⋆ eine Datei specification für Signatur, Axiome etc. ⋆ eine Datei sequents für Theoreme ⋆ [ein Verzeichnis proofs das geladene Theoreme, geführte Beweise etc. speichert] 32 Semantik von Formeln und Sequenzen 33 Grundidee der Verwendung von Logik im Software Entwurf Syntax: ⊢K „ist beweisbar” O Menge von Formeln = Axiome Ax Semantik: Vollständigkeit Korrektkeit beschreiben Software-Systeme: Menge von Algebren {A, B, . . .} |= „ist gültig in” 34 Formel ϕ beschreibt Eigenschaft ϕA Grundidee der Verwendung von Logik im Software Entwurf (1) Semantik (i.e. der Inhalt, dessen was wir tun): • 1. Schritt: Wir wollen Softwaresysteme und funktionale Anforderungen an solche beschreiben • SW-Systeme sind Datenstrukturen, Programme etc. bei eingebetteten Systemen evtl. inclusive Umgebung. • 2. Schritt: Gegeben eine beliebige Implementierung, die die Anforderungen erfüllt, wollen wir Eigenschaften wie z.B. Korrektheit und Sicherheit nachweisen Mathematik: Das allgemeinste Modell für ein SW-System ist eine Algebra A. Wir wollen also Algebren beschreiben, und Eigenschaften von Algebren nachweisen. 35 Grundidee der Verwendung von Logik im Software Entwurf (2) Mathematik: Sprachen zum Beschreiben von Algebren und ihren Eigenschaften heissen Logiken Bem.: auch Prog.sprachen sind spezielle Beschreibungen von Algebren! Syntax • Algebren kann man durch Formelmengen Ax beschreiben • Eigenschaften werden durch Formeln ϕ beschreiben • Statt informell zu überlegen ob eine Eigenschaft gilt, verwenden wir einen Kalkül K , und zeigen formal: Ax ⊢K ϕ Gewinn: Garantie, dass SW-System Eingenschaft hat keine absolute Garantie: nur so gut, wie genau man das SW-System beschrieben wurde (insbes. die Umgebung bei eingebetteten Systemen!) 36 Semantik: Σ-Algebren Eine Σ-Algebra A = ((As )s∈S , (opA )op∈OP ) zu einer Signatur Σ = (S, OP ) ist ein Paar mit: • nichtleeren Mengen As für jede Sorte s ∈ S (Trägermengen) • Die Trägermenge Abool ist immer gleich {tt,ff} • Funktionen op A : As1 × . . . × Asn → As′ für alle op : s1 , . . . , sn → s′ • Die vordefinierten booleschen Symbole haben in jedem A die “normale” Bedeutung (Wahrheitstafeln): trueA = tt, ∧A (tt,ff) = ff, ∨A (tt,ff) = tt etc. Die Menge aller Σ-Algebren über Σ wird mit Alg(Σ) bezeichnet. 37 Semantik: Belegungen von Variablen Eine Belegung (engl. v aluation; auch: ein Zustand) v: S s∈S vs : Xs → As ist eine Abbildung, die jedem Variablensymbol in Xs einen Wert in As zuordnet Die Abänderung vxa der Belegung v für x ∈ Xs und a ∈ As ist definiert durch: vxa := ( v(y) a 38 falls x 6= y falls x = y Semantik von Ausdrücken Gegeben eine Algebra A und eine Belegung v . Dann ist die Semantik [[e]]A,v eines Ausdrucks e der Sorte s das folgende Element aus As : • [[x]]A,v := v(x) für x ∈ Xs • [[op(e1 , . . . , en )]]A,v := op A ([[e1 ]]A,v , . . . , [[en ]]A,v ) für op ∈ OP und ei ∈ Expr (Σ, X) • [[e1 = e2 ]]A,v := tt, falls [[e1 ]]A,v = [[e2 ]]A,v (sonst := ff) • [[∀ x.ϕ]]A,v := tt, falls für alle a ∈ As′ gilt: [[ϕ]]A,vxa = tt (sonst := ff) (x ∈ Xs′ ) • [[∃ x.ϕ]]A,v := tt, falls es ein a ∈ As′ gibt mit [[ϕ]]A,vxa = tt (sonst := ff) (x ∈ Xs′ ) Hinweis: Falls ϕ eine Formel ist, so ist [[ϕ]]A,v immer tt oder ff. (“die Formel ist wahr oder falsch in A mit v ”) 39 Gültigkeit und Erfüllbarkeit Für ϕ ∈ For (Σ, X) und Ax ⊆ For (Σ, X) definiert man: • A, v |= ϕ :⇔ [[ϕ]]A,v = tt • A |= ϕ :⇔ für jedes v gilt: A, v |= ϕ Gesprochen: „ϕ gilt in A“, „A Modell von ϕ “ • A |= Ax :⇔ A |= ϕ für alle ϕ ∈ Ax • Ax |= ϕ :⇔ für alle A ∈ Alg(Σ) gilt: A |= Ax ⇒ A |= ϕ Gesprochen: „ϕ folgt aus Ax “ • ϕ Tautologie, |= ϕ :⇔ für alle A ∈ Alg(Σ) gilt A |= ϕ • ϕ erfüllbar :⇔ es gibt A ∈ Alg(Σ) mit A |= ϕ • Ax erfüllbar :⇔ es gibt A ∈ Alg(Σ) mit A |= Ax 40 Eigenschaften der Prädikatenlogik (1) 1. A, v |= ϕ ⇔ Nicht A, v |= ¬ ϕ (kurz: A, v 6|= ¬ ϕ) 2. A, v |= ϕ oder A, v |= ¬ ϕ 3. v(x) = v ′ (x) für alle x ∈ free (ϕ) ⇒ (A, v |= ϕ ⇔ A, v ′ |= ϕ) 4. Nur, wenn free (ϕ) = ∅: A |= ϕ oder A |= ¬ ϕ 5. Nur, wenn free (ϕ) = ∅: A |= ϕ ⇔ A 6|= ¬ ϕ 6. A |= ϕ ⇔ A |= Cl∀ (ϕ) Bedeutung: Cl∀ (ϕ) - Allquantifizierung aller freien Variablen in ϕ 41 Eigenschaften der Prädikatenlogik (2) Substitutionstheorem [[t]]A,v A, vx |= ϕ ⇔ A, v |= ϕtx Korollar (Instanzierung und Umbenennung) Es gilt: |= (∀ x. ϕ) → ϕtx Wenn z 6∈ free (ϕ) \ {x}, so gilt außerdem: • A, v |= ∀ y . ϕ ⇔ A, v |= ∀ z . ϕzy • |= (∀ y . ϕ) ↔ (∀ z . ϕzy ) 42 Semantik von Sequenzen Definition (Semantik von Sequenzen) V W A, v |= Γ ⊢ ∆ ⇔ A, v |= Γ→ ∆ Folgerungen Für ϕ ∈ For (Σ, X) und Ax ⊆ For (Σ, X) gilt A |= ϕ A |= ¬ ϕ Ax |= ϕ Ax |= ¬ ϕ ⇔ ⇔ ⇔ ⇔ 43 A |= ⊢ ϕ A |= ϕ ⊢ Ax |= ⊢ ϕ Ax |= ϕ ⊢ Korrektheit der basic rules Satz (Regelkorrektheit der basic rules) Für alle basic rules gilt: A |= {Γ1 ⊢ ∆1 , . . . , Γn ⊢ ∆n } ⇒ A |= (Γ ⊢ ∆) alles andere wäre nicht sehr sinnvoll! Satz (Invertierbarkeit der basic rules) Für alle basic rules außer Abschwächung gilt: A |= (Γ ⊢ ∆) ⇒ A |= {Γ1 ⊢ ∆1 , . . . , Γn ⊢ ∆n } Wichtige Konsequenz: Durch Regelanwendung wird aus einer beweisbaren Sequenz nie eine unbeweisbare! (man kann nichts falsch machen, nur unnötiges und umständliches) 44 Korrektheit und Vollständigkeit von PL Erhält man aus der Formelmenge Ax durch Anwendung der basic rules die Sequenz ⊢ ϕ, dann schreibt man Ax ⊢P L ϕ. Das ist genau dann der Fall, wenn es einen KIV-Beweisbaum für ⊢ ϕ aus Ax gibt. Satz (Korrektheit) Für eine Formel ϕ und eine Formelmenge Ax gilt Ax ⊢P L ϕ ⇒ Ax |= ϕ Satz (Vollständigkeit) Für eine Formel ϕ und eine Formelmenge Ax gilt Ax |= ϕ ⇒ Ax ⊢P L ϕ 45 Unentscheidbarkeit von PL Satz (Unentscheidbarkeit von PL) Es gibt kein Entscheidungsverfahren für die Allgemeingültigkeit von prädikatenlogischen Formeln. Zählt man alle Beweise des Sequenzenkalküls auf, so wird darin jede allgemeingültige Formel irgendwann vorkommen, aber das Verfahren kann nicht so verschärft werden, daß es auch für alle nicht allgemeingültigen Formeln immer abbricht. Beachte: Für reine Aussagenlogik ist Sequenzenkalkül ein Entscheidungsverfahren: man kann blind einfach Regeln anwenden, das terminiert immer. Genau wenn der Beweis geschlossen wird ist die Formel allgemeingültig! Das Problem bei PL liegt wo ? 46 Unentscheidbarkeit von PL Satz (Unentscheidbarkeit von PL) Es gibt kein Entscheidungsverfahren für die Allgemeingültigkeit von prädikatenlogischen Formeln. Zählt man alle Beweise des Sequenzenkalküls auf, so wird darin jede allgemeingültige Formel irgendwann vorkommen, aber das Verfahren kann nicht so verschärft werden, daß es auch für alle nicht allgemeingültigen Formeln immer abbricht. Beachte: Für reine Aussagenlogik ist Sequenzenkalkül ein Entscheidungsverfahren: man kann blind einfach Regeln anwenden, das terminiert immer. Genau wenn der Beweis geschlossen wird ist die Formel allgemeingültig! Das Problem bei PL liegt bei der Frage welche Terme τ man bei den Regeln all left/exists right wählen soll. 46 Der KIV-Kalkül Simplifier und Heuristiken 47 KIV-Kalkül: Überblick • Versuch 1: basic rules, ab Versuch 2: KIV-Kalkül • Sequenzenkalkül kennt keine Beweisstrukturierung: ⇒ Lemmas + Regeln zum Anwenden von Lemmas • Beobachtung: Sequenzenkalkül ist sehr elementar: ⇒ viele Regeln automatisch anwendbar • Deshalb: Definition eines Simplifiers, der alle unkritischen Regeln immer automatisch macht. • Regeln mit 2 Prämissen (disjunction left, conjunction right etc.) sind der Idee nach alle Fallunterscheidung ⇒ Zusammenfassen zu einer Regel case distinction • Automatisches Anwenden von Regeln durch Heuristiken, die man jederzeit dazu- oder wegschalten kann 48 Nachtrag zum Basiskalkül: cut und weakening Wozu braucht man: Γ′ ⊢ ∆′ (weakening, Γ′ ⊆ Γ, ∆′ ⊆ ∆) Γ⊢∆ 49 Γ ⊢ ϕ, ∆ ϕ, Γ ⊢ ∆ (cut formula) Γ⊢∆ Nachtrag zum Basiskalkül: cut und weakening Wozu braucht man: Γ′ ⊢ ∆′ (weakening, Γ′ ⊆ Γ, ∆′ ⊆ ∆) Γ⊢∆ Γ ⊢ ϕ, ∆ ϕ, Γ ⊢ ∆ (cut formula) Γ⊢∆ Erinnerung: Wenn Axiome (in KIV auch: Lemmas) gegeben sind, dürfen diese als Prämissen in Beweisebäumen übrigbleiben 49 Nachtrag zum Basiskalkül: cut und weakening Wozu braucht man: Γ′ ⊢ ∆′ (weakening, Γ′ ⊆ Γ, ∆′ ⊆ ∆) Γ⊢∆ Γ ⊢ ϕ, ∆ ϕ, Γ ⊢ ∆ (cut formula) Γ⊢∆ Erinnerung: Wenn Axiome (in KIV auch: Lemmas) gegeben sind, dürfen diese als Prämissen in Beweisebäumen übrigbleiben • Regeln werden nur benötigt, um Axiome als Prämissen hinzubekommen • im Basiskalkül: insert axiom, erzeugt eine Prämisse • im KIV-Kalkül: insert lemma & insert rewrite-lemma ⊢ Ax Cl∀ (Ax ), Γ ⊢ ∆ (insert axiom) Γ⊢∆ 49 KIV-Kalkül: Lemmaanwendung Beim Anwenden von Axiome will man nicht umständlich cut, all left (und evtl. insert equation) machen Γ′ ⊢ ∆′ Γ ⊢ Θ( V Γ′ ), ∆ Θ( ∆′ ), Γ ⊢ ∆ W Γ⊢∆ (insert lemma) • Γ′ ⊢ ∆′ is das Lemma (Axiom oder anderes Theorem) • Θ ist eine Substitution für die freien Variables des Lemmas • die Prämisse mit dem Lemma wird vom System als geschlossen beachtet 50 KIV-Kalkül: Ersetzungslemmas ′ Γ ⊢ϕ→σ=τ Γ ⊢ Θ( Γ′ ∧ ϕ), ∆ Γ⊢∆ V Γ′′ ⊢ ∆′′ (insert rewrite lemma) • Γ′ ⊢ ϕ → σ = τ ist das Lemma (Γ und Vorbedingung ϕ dürfen fehlen) • Θ ist eine Substitution für die freien Variables des Lemmas • Γ′′ ⊢ ∆′′ entsteht aus Γ ⊢ ∆ durch Ersetzen von Θ(σ) durch Θ(τ ) • Lemmas der Form Γ′ ⊢ ϕ → (ψ ↔ χ) mit ψ Literal erlaubt: Dann wird Θ(ψ) durch Θ(χ) ersetzt • Wird kontextsensitiv unterstützt: Klicken auf das führende Funktionssymbol von σ in der Sequenz bietet passende Rewrite-Regeln an 51