semantik von formeln und sequenzen · grundidee der verwendung von logik im software entwurf (2)...

31
Semantik von Formeln und Sequenzen 33

Upload: others

Post on 09-Sep-2019

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Semantik von Formeln und Sequenzen · Grundidee der Verwendung von Logik im Software Entwurf (2) Mathematik: Sprachen zum Beschreiben von Algebren und ihren Eigenschaften heissen

Semantik vonFormeln und Sequenzen

33

Page 2: Semantik von Formeln und Sequenzen · Grundidee der Verwendung von Logik im Software Entwurf (2) Mathematik: Sprachen zum Beschreiben von Algebren und ihren Eigenschaften heissen

Grundidee der Verwendung vonLogik im Software Entwurf

Syntax: Menge von Formeln= Axiome Ax

beschreiben

��

⊢ K

„ist beweisbar”

Ko-rrekt-

keit

��

Formel ϕ

beschreibt

��Semantik:

Software-Systeme:Menge von Algebren

{A,B, . . .}

|=„ist gültig in”

Voll-ständig-

keit

OO

Eigenschaft ϕA

34

Page 3: Semantik von Formeln und Sequenzen · Grundidee der Verwendung von Logik im Software Entwurf (2) Mathematik: Sprachen zum Beschreiben von Algebren und ihren Eigenschaften heissen

Grundidee der Verwendung vonLogik im Software Entwurf (1)

Semantik (i. e. der Inhalt, dessen was wir tun):

• 1. Schritt: Wir wollen Softwaresysteme und funktionale Anforderungenan solche beschreiben

• SW-Systeme sind Datenstrukturen, Programme etc. bei eingebettetenSystemen evtl. inclusive Umgebung

• 2. Schritt: Gegeben eine beliebige Implementierung, die dieAnforderungen erfüllt, wollen wir Eigenschaften wie z. B. Korrektheitund Sicherheit nachweisen

Mathematik: Das allgemeinste Modell für ein SW-System ist eine Algebra A.

Wir wollen also Algebren beschreiben, und Eigenschaften von Algebrennachweisen.

35

Page 4: Semantik von Formeln und Sequenzen · Grundidee der Verwendung von Logik im Software Entwurf (2) Mathematik: Sprachen zum Beschreiben von Algebren und ihren Eigenschaften heissen

Grundidee der Verwendung vonLogik im Software Entwurf (2)

Mathematik: Sprachen zum Beschreiben von Algebren und ihrenEigenschaften 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 wireinen 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-Systembeschrieben wurde (insbes. die Umgebung bei eingebetteten Systemen!)

36

Page 5: Semantik von Formeln und Sequenzen · Grundidee der Verwendung von Logik im Software Entwurf (2) Mathematik: Sprachen zum Beschreiben von Algebren und ihren Eigenschaften heissen

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 opA : As1× . . .×Asn

→ As′ für alle op : s1, . . . , sn → s′

• Die vordefinierten booleschen Symbole haben in jedem Adie “normale” Bedeutung (Wahrheitstafeln):trueA = tt , ∧A(tt ,ff) = ff , ∨A(tt ,ff) = tt etc.

Die Menge aller Σ-Algebren über Σ wird mit Alg(Σ) bezeichnet.

37

Page 6: Semantik von Formeln und Sequenzen · Grundidee der Verwendung von Logik im Software Entwurf (2) Mathematik: Sprachen zum Beschreiben von Algebren und ihren Eigenschaften heissen

Semantik: Belegungen von Variablen

Eine Belegung (engl. valuation; auch: ein Zustand)

v :⋃

s∈S vs : Xs → As

ist eine Abbildung, die jedem Variablensymbol in Xs einen Wert in As

zuordnet

Die Abänderung vax der Belegung v für x ∈ Xs und a ∈ As ist definiert durch:

vax(y) :=

{

v(y) falls x 6= y

a falls x = y

38

Page 7: Semantik von Formeln und Sequenzen · Grundidee der Verwendung von Logik im Software Entwurf (2) Mathematik: Sprachen zum Beschreiben von Algebren und ihren Eigenschaften heissen

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 := opA([[e1]]A,v, . . . , [[en]]A,v) für op ∈ OP undei ∈ 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,va

x

= tt (sonst := ff)(x ∈ Xs′)

• [[∃ x.ϕ]]A,v := tt , falls es ein a ∈ As′ gibt mit [[ϕ]]A,va

x

= 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

Page 8: Semantik von Formeln und Sequenzen · Grundidee der Verwendung von Logik im Software Entwurf (2) Mathematik: Sprachen zum Beschreiben von Algebren und ihren Eigenschaften heissen

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

Page 9: Semantik von Formeln und Sequenzen · Grundidee der Verwendung von Logik im Software Entwurf (2) Mathematik: Sprachen zum Beschreiben von Algebren und ihren Eigenschaften heissen

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

Page 10: Semantik von Formeln und Sequenzen · Grundidee der Verwendung von Logik im Software Entwurf (2) Mathematik: Sprachen zum Beschreiben von Algebren und ihren Eigenschaften heissen

Eigenschaften der Prädikatenlogik (2)

Substitutionstheorem

A, v[[t]]

A,v

x |= ϕ⇔ A, v |= ϕtx

Korollar (Instanzierung und Umbenennung)Es gilt:

|= (∀ x . ϕ) → ϕtx

Wenn z 6∈ free(ϕ) \ {y}, so gilt außerdem:

• A, v |= ∀ y. ϕ⇔ A, v |= ∀ z. ϕzy

• |= (∀ y. ϕ) ↔ (∀ z. ϕzy)

42

Page 11: Semantik von Formeln und Sequenzen · Grundidee der Verwendung von Logik im Software Entwurf (2) Mathematik: Sprachen zum Beschreiben von Algebren und ihren Eigenschaften heissen

Semantik von Sequenzen

Definition (Semantik von Sequenzen)A, v |= Γ ⊢ ∆ ⇔ A, v |=

Γ →∨

FolgerungenFür ϕ ∈ For(Σ,X) und Ax ⊆ For(Σ,X) gilt

A |= ϕ ⇔ A |= ⊢ ϕ

A |= ¬ ϕ ⇔ A |= ϕ ⊢

Ax |= ϕ ⇔ Ax |= ⊢ ϕ

Ax |= ¬ ϕ ⇔ Ax |= ϕ ⊢

43

Page 12: Semantik von Formeln und Sequenzen · Grundidee der Verwendung von Logik im Software Entwurf (2) Mathematik: Sprachen zum Beschreiben von Algebren und ihren Eigenschaften heissen

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 eineunbeweisbare!

(Man kann nichts falsch machen, nur unnötiges und umständliches)44

Page 13: Semantik von Formeln und Sequenzen · Grundidee der Verwendung von Logik im Software Entwurf (2) Mathematik: Sprachen zum Beschreiben von Algebren und ihren Eigenschaften heissen

Korrektheit und Vollständigkeit von PL

Erhält man aus der Formelmenge Ax durch Anwendung der basic rules dieSequenz ⊢ ϕ, dann schreibt man

Ax ⊢PL ϕ.

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 ⊢PL ϕ ⇒ Ax |= ϕ

Satz (Vollständigkeit)Für eine Formel ϕ und eine Formelmenge Ax gilt

Ax |= ϕ ⇒ Ax ⊢PL ϕ

45

Page 14: Semantik von Formeln und Sequenzen · Grundidee der Verwendung von Logik im Software Entwurf (2) Mathematik: Sprachen zum Beschreiben von Algebren und ihren Eigenschaften heissen

Unentscheidbarkeit von PL

Satz (Unentscheidbarkeit von PL)

Es gibt kein Entscheidungsverfahren für die Allgemeingültigkeit vonprädikatenlogischen Formeln. Zählt man alle Beweise desSequenzenkalküls auf, so wird darin jede allgemeingültige Formelirgendwann vorkommen, aber das Verfahren kann nicht so verschärftwerden, daß es auch für alle nicht allgemeingültigen Formeln immerabbricht.

Beachte: Für reine Aussagenlogik ist der Sequenzenkalkül einEntscheidungsverfahren: man kann blind einfach Regeln anwenden,das terminiert immer. Genau wenn der Beweis geschlossen wird ist dieFormel allgemeingültig!

Das Problem bei PL liegt wo ?

46

Page 15: Semantik von Formeln und Sequenzen · Grundidee der Verwendung von Logik im Software Entwurf (2) Mathematik: Sprachen zum Beschreiben von Algebren und ihren Eigenschaften heissen

Unentscheidbarkeit von PL

Satz (Unentscheidbarkeit von PL)

Es gibt kein Entscheidungsverfahren für die Allgemeingültigkeit vonprädikatenlogischen Formeln. Zählt man alle Beweise desSequenzenkalküls auf, so wird darin jede allgemeingültige Formelirgendwann vorkommen, aber das Verfahren kann nicht so verschärftwerden, daß es auch für alle nicht allgemeingültigen Formeln immerabbricht.

Beachte: Für reine Aussagenlogik ist der Sequenzenkalkül einEntscheidungsverfahren: man kann blind einfach Regeln anwenden,das terminiert immer. Genau wenn der Beweis geschlossen wird ist dieFormel allgemeingültig!

Das Problem bei PL liegt bei der Frage welche Terme τ man beiden Regeln all left/exists right wählen soll.

46

Page 16: Semantik von Formeln und Sequenzen · Grundidee der Verwendung von Logik im Software Entwurf (2) Mathematik: Sprachen zum Beschreiben von Algebren und ihren Eigenschaften heissen

Der KIV-KalkülSimplifier und Heuristiken

47

Page 17: Semantik von Formeln und Sequenzen · Grundidee der Verwendung von Logik im Software Entwurf (2) Mathematik: Sprachen zum Beschreiben von Algebren und ihren Eigenschaften heissen

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 Regelnimmer automatisch anwendet.

• Regeln mit 2 Prämissen (disjunction left, conjunction right etc.) sind derIdee nach alle Fallunterscheidungen⇒ Zusammenfassen zu einer Regel case distinction

• Automatisches Anwenden von Regeln durch Heuristiken, die manjederzeit dazu- oder wegschalten kann

48

Page 18: Semantik von Formeln und Sequenzen · Grundidee der Verwendung von Logik im Software Entwurf (2) Mathematik: Sprachen zum Beschreiben von Algebren und ihren Eigenschaften heissen

Nachtrag zum Basiskalkül:cut und weakening

Wozu braucht man:

Γ′ ⊢ ∆′

Γ ⊢ ∆(weakening, Γ′ ⊆ Γ,∆′ ⊆ ∆)

Γ ⊢ ϕ,∆ ϕ,Γ ⊢ ∆

Γ ⊢ ∆(cut formula)

49

Page 19: Semantik von Formeln und Sequenzen · Grundidee der Verwendung von Logik im Software Entwurf (2) Mathematik: Sprachen zum Beschreiben von Algebren und ihren Eigenschaften heissen

Nachtrag zum Basiskalkül:cut und weakening

Wozu braucht man:

Γ′ ⊢ ∆′

Γ ⊢ ∆(weakening, Γ′ ⊆ Γ,∆′ ⊆ ∆)

Γ ⊢ ϕ,∆ ϕ,Γ ⊢ ∆

Γ ⊢ ∆(cut formula)

Erinnerung: Wenn Axiome (in KIV auch: Lemmas) gegeben sind, dürfendiese als Prämissen in Beweisbäumen übrigbleiben

49

Page 20: Semantik von Formeln und Sequenzen · Grundidee der Verwendung von Logik im Software Entwurf (2) Mathematik: Sprachen zum Beschreiben von Algebren und ihren Eigenschaften heissen

Nachtrag zum Basiskalkül:cut und weakening

Wozu braucht man:

Γ′ ⊢ ∆′

Γ ⊢ ∆(weakening, Γ′ ⊆ Γ,∆′ ⊆ ∆)

Γ ⊢ ϕ,∆ ϕ,Γ ⊢ ∆

Γ ⊢ ∆(cut formula)

Erinnerung: Wenn Axiome (in KIV auch: Lemmas) gegeben sind, dürfendiese als Prämissen in Beweisbäumen übrigbleiben

• Regeln werden nur benötigt, um Axiome als Prämissenhinzubekommen

• Im Basiskalkül: insert axiom, erzeugt eine Prämisse

• Im KIV-Kalkül: insert lemma & insert rewrite-lemma

⊢ Ax Cl∀ (Ax ),Γ ⊢ ∆

Γ ⊢ ∆(insert axiom)

49

Page 21: Semantik von Formeln und Sequenzen · Grundidee der Verwendung von Logik im Software Entwurf (2) Mathematik: Sprachen zum Beschreiben von Algebren und ihren Eigenschaften heissen

KIV-Kalkül: Lemmaanwendung

Beim Anwenden von Axiomen will man nicht umständlich cut, all left (undevtl. insert equation) machen

Γ′ ⊢ ∆′ Γ ⊢ Θ(∧

Γ′),∆ Θ(∨

∆′),Γ ⊢ ∆

Γ ⊢ ∆(insert lemma)

• Γ′ ⊢ ∆′ ist 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 geschlossenbetrachtet

50

Page 22: Semantik von Formeln und Sequenzen · Grundidee der Verwendung von Logik im Software Entwurf (2) Mathematik: Sprachen zum Beschreiben von Algebren und ihren Eigenschaften heissen

KIV-Kalkül: Ersetzungslemmas

Γ′ ⊢ ϕ→ σ = τ Γ ⊢ Θ(∧

Γ′ ∧ ϕ),∆ Γ′′ ⊢ ∆′′

Γ ⊢ ∆(insert rewrite lemma)

• Γ′ ⊢ ϕ→ σ = τ ist das Lemma (Γ und Vorbedingung ϕ dürfen fehlen)

• Θ ist eine Substitution für die freien Variablen 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ührendeFunktionssymbol von σ in der Sequenz bietet passendeRewrite-Regeln an

51

Page 23: Semantik von Formeln und Sequenzen · Grundidee der Verwendung von Logik im Software Entwurf (2) Mathematik: Sprachen zum Beschreiben von Algebren und ihren Eigenschaften heissen

KIV-Kalkül: Der Simplifier

Beobachtung: Viele Vereinfachungen macht man beim mathematischenBeweisen ohne darüber nachzudenken. Alle unkritischen Regeln wendetder Simplifier in einem Schritt immer an.

Es gibt 2 Arten von Vereinfachung:

Logische Vereinfachung

• Beipiel: Ersetzen von A ∧ A durch A (für jede Formel A)

• Sind von Axiomen unabhängig, werden immer angewandt

Simplifierregeln

• Beispiel (nat. Zahlen): n+ 0 = n zum Ersetzen von τ + 0 durch τ

• Benötigen eine als Simplifierregel markiertes Axiom oder Lemma

52

Page 24: Semantik von Formeln und Sequenzen · Grundidee der Verwendung von Logik im Software Entwurf (2) Mathematik: Sprachen zum Beschreiben von Algebren und ihren Eigenschaften heissen

Simplifier: Logische Vereinfachung

• Aussagenlogische Regeln mit einer Prämisse(wie implication right, con. left, dis. right etc.)

• All right, Exists left, axiom, reflexivity

• Aussagenlogik mit true und false

• ∃ x. x = τ ∧ A kann zu Aτx vereinfacht werden, falls x 6∈ Vars(τ).

• Vereinfachung mit Hilfe des Kontexts

Beispiele:

A,ΓtrueA ⊢ ∆true

A

A,Γ ⊢ ∆

ΓfalseA ⊢ A,∆false

A

Γ ⊢ A,∆

A→ BtrueA ,Γ ⊢ ∆

A→ B,Γ ⊢ ,∆

AfalseB → B,Γ ⊢ ∆

A→ B,Γ ⊢ ,∆

A ∧ BfalseA ,Γ ⊢ ∆

A ∧ B,Γ ⊢ ∆

Γ ⊢ A ∧ BfalseA ,∆

Γ ⊢ A ∧ B,∆

Bsp.: A ∧ A⇒ A ∧ AtrueA = A ∧ true⇒ A

53

Page 25: Semantik von Formeln und Sequenzen · Grundidee der Verwendung von Logik im Software Entwurf (2) Mathematik: Sprachen zum Beschreiben von Algebren und ihren Eigenschaften heissen

Simplifier: Datenstrukturabhängige Regeln

• Simplifierregeln sind Axiome oder Theoreme (Sequenzen),die einen entsprechenden Verwendungseintrag haben

• Die syntaktische Form bestimmt den Effekt

• Es gibt mehrere Klassen:⋆ Simplifierregeln⋆ Forward-Regeln

• Alle Regeln können lokal oder global sein

Zentral für das Verständnis von KIV:Welche Simplifierregel hat welchen Effekt?

54

Page 26: Semantik von Formeln und Sequenzen · Grundidee der Verwendung von Logik im Software Entwurf (2) Mathematik: Sprachen zum Beschreiben von Algebren und ihren Eigenschaften heissen

Simplifier: lokale und globale Regeln

2 Klassen von Simplifierregeln

• Lokale Simplifierregeln: Werden in Beweisen über der Spezifikation, inder sie definiert sind, benutzt.

• Globale Simplifierregeln: Werden in Beweisen in Spezifikationen, dieüber der, in der sie definiert sind, benutzt.

Pragmatik

• Lokal werden Axiome als Simplifierregeln verwendet

• Global werden Theoreme verwendet, die “gute” Simplifierregeln sind

Analog für Forward-Regeln

55

Page 27: Semantik von Formeln und Sequenzen · Grundidee der Verwendung von Logik im Software Entwurf (2) Mathematik: Sprachen zum Beschreiben von Algebren und ihren Eigenschaften heissen

Simplifier: Eingabe von Simplifierregeln

Theoreme werden als Simplifierregeln eingetragen, wahlweise durch

• Am Ende der Sequenz in der specification/sequents-Datei:used for: s, ls;used for: f, lf;

• Auf Spezifikationsebene im Menü:Add (Local) SimplifierrulesAdd (Local) Forwardrules

• Auf Spezifikationsebene: durch Rechtsklick auf das Theoremund Anklicken der Checkbox

56

Page 28: Semantik von Formeln und Sequenzen · Grundidee der Verwendung von Logik im Software Entwurf (2) Mathematik: Sprachen zum Beschreiben von Algebren und ihren Eigenschaften heissen

Simplifier: Typen von Simplifierregeln

Simplifierregeln (mit Eintrag s und/oder ls ) gehören zu einer der Klassen

• Termersetzungsregel = Rewriteregel:

Generelle Form: Γ ⊢ ϕ→ (σ = τ)Effekt: (Instanzen von) σ durch τ ersetzen

• Formelersetzungsregel = Äquivalenzregel

Generelle Form: Γ ⊢ ϕ→ (ψ ↔ χ)Effekt: (Instanzen von) ψ durch χ ersetzen

• Assoziativität und Kommutativität:

Generelle Form: (a+ b) + c = a+ (b+ c) und a+ b = b+ a

Effekt: Alle anderen Regeln modulo Ass. und Komm. anwenden

57

Page 29: Semantik von Formeln und Sequenzen · Grundidee der Verwendung von Logik im Software Entwurf (2) Mathematik: Sprachen zum Beschreiben von Algebren und ihren Eigenschaften heissen

Simplifier: Pragmatik von Bedingungen

Rewrite- und Äquivalenzregeln haben die generelle Form

Γ ⊢ ϕ→ σ = τ und Γ ⊢ ϕ→ (ψ ↔ χ)

• Vorbedingungen Γ und ϕ:Als Formel dieselbe Bedeutung, aber unterschiedlich behandelt.

• ϕ = ϕ1 ∧ . . . ∧ ϕn muss Konjunktion von Literalen sein

• Literal = evtl. negierte atomare Formel

• Atomare Formel = Anwendung von Gleicheit odernicht vordefiniertem Prädikat (ungleich ∧, ∨, . . . ) auf Terme

• (Instanzen von) ϕ1, . . . , ϕn werden in Sequenz gesucht:Nichtnegierte Formeln im Antezedent, negierte im Sukzedent

• Γ wird versucht, durch rekursiven Simplifieraufruf zu beweisen

• Γ darf beliebige Formeln enthalten

58

Page 30: Semantik von Formeln und Sequenzen · Grundidee der Verwendung von Logik im Software Entwurf (2) Mathematik: Sprachen zum Beschreiben von Algebren und ihren Eigenschaften heissen

Simplifier: Pragmatik von Bedingungen

Wann sollte man Vorbedingungen in Γ stecken, wann in ϕ1, . . .ϕn?

• Vorbedingungen vor dem Sequenzenhaken in Γ sollten nur danndefiniert werden, wenn sie in sinnvollen Sequenzen immer erfüllt sind.

• Typische sinnvolle Vorbedingungen sind Definiertheitsbedingungen:

⋆ m −1 (Vorgänger von m) ist nur für m 6= 0 definiert⋆ m − n ist nur für n ≤ m definiert⋆ .rest und .last sind nur für nichtleere Listen definiert⋆ Arrays: i < #ar sollte für Zugriff a[i] immer wahr sein

• Wenn man die Pragmatik nicht befolgt:Viele nutzlose Simplifieraufrufe (wird schnell sehr langsam)

59

Page 31: Semantik von Formeln und Sequenzen · Grundidee der Verwendung von Logik im Software Entwurf (2) Mathematik: Sprachen zum Beschreiben von Algebren und ihren Eigenschaften heissen

Simplifier: Beispiele zu Vorbedingungen

• n 6= 0 ⊢ (m < n−1 ↔ m+1 < n)Vorbedingung ok im Antezedent, da 0 − 1 nicht sinnvoll ist

• ⊢ m < n→ (n < m+ 2 ↔ m+ 1 = n)Nicht im Antezedent, sonst, sobald Instanzen von n < m+ 2vorkommen: viele unnötige Beweisversuche für m < n

• m ≤ n ⊢ (n − m) + m = m

Beweist z. B. die Sequenz f(x) > 5 ⊢ (f(x) − 3) + 3 = f(x)(da der Simplifier f(x) > 5 ⊢ 3 ≤ f(x) beweisen kann)

⊢ m ≤ n→ (n − m) + m = m beweist die Sequenz nicht,da 3 ≤ f(x) nicht in der Sequenz vorkommt

60