Semantik von Formeln und Sequenzen

Werbung
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 , (op A )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 (y)
:=
(
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 (ϕ) \ {y }, 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 ⊢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
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 der 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 der 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 anwendet.
• Regeln mit 2 Prämissen (disjunction left, conjunction right etc.) sind der
Idee nach alle Fallunterscheidungen
⇒ 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 Beweisbä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 Beweisbä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 Axiomen will man nicht umständlich cut, all left (und
evtl. insert equation) machen
Γ′
⊢
∆′
Γ ⊢ Θ(
V
Γ′ ), ∆
Θ( ∆′ ), Γ ⊢ ∆
W
Γ⊢∆
(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 geschlossen
betrachtet
50
KIV-Kalkül: Ersetzungslemmas
′
Γ ⊢ϕ→σ=τ
Γ ⊢ Θ( Γ′ ∧ ϕ), ∆
Γ⊢∆
V
Γ′′ ⊢ ∆′′
(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ührende
Funktionssymbol von σ in der Sequenz bietet passende
Rewrite-Regeln an
51
KIV-Kalkül: Der Simplifier
Beobachtung: Viele Vereinfachungen macht man beim mathematischen
Beweisen ohne darüber nachzudenken. Alle unkritischen Regeln wendet
der 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
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:
true
⊢
∆
A, Γtrue
A
A
A, Γ ⊢ ∆
AfBalse → B, Γ ⊢ ∆
A → B, Γ ⊢ , ∆
ΓfAalse ⊢ A, ∆fAalse
Γ ⊢ A, ∆
f alse
A ∧ BA
,Γ ⊢ ∆
A ∧ B, Γ ⊢ ∆
= A ∧ true ⇒ A
Bsp.: A ∧ A ⇒ A ∧ Atrue
A
53
true
,Γ ⊢ ∆
A → BA
A → B, Γ ⊢ , ∆
f alse
Γ ⊢ A ∧ BA
,∆
Γ ⊢ A ∧ B, ∆
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
Simplifier: lokale und globale Regeln
2 Klassen von Simplifierregeln
• Lokale Simplifierregeln: Werden in Beweisen über der Spezifikation, in
der 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
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) Simplifierrules
Add (Local) Forwardrules
• Auf Spezifikationsebene: durch Rechtsklick auf das Theorem
und Anklicken der Checkbox
56
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
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 oder
nicht 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
Simplifier: Pragmatik von Bedingungen
Wann sollte man Vorbedingungen in Γ stecken, wann in ϕ1 , . . . ϕn ?
• Vorbedingungen vor dem Sequenzenhaken in Γ sollten nur dann
definiert 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
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 + 2
vorkommen: 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
Herunterladen