Variablen und freie Variablen eines Ausdrucks

Werbung
Variablen und freie Variablen eines Ausdrucks
Die Variablen eines Ausdrucks (Var (e))
Var (x)
Var (op(e1 , . . . , en ))
Var (e = e 0 )
Var (Qx.ϕ)
=
=
=
=
{x}
Sn
x ∈X
Var
(e
)
i
i=1
Var (e) ∪ Var (e 0 )
{x} ∪ Var (ϕ)
Q ∈ {∀, ∃}
Die freien Variablen einer Formel (free(ϕ)) sind genauso definiert ausser:
free(Qx.ϕ) = free(ϕ) \ {x} Q ∈ {∀, ∃}
19. April 2013
G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering
33 / 56
Substitution
Die Substitution einer Variablen x durch einen Ausdruck t in e (ext )
xxt
= t
yxt
= y
op(e1 , . . . , en )tx
= op((e1 )tx , . . . , (en )tx )
(e1 = e2 )tx
t
t
= ((e
 1 )x = (e2 )x )


Qy .ϕ
falls y = x ∨ x 6∈ free(ϕ)



 Qy .ϕt
falls y 6= x, y 6∈ free(t), x ∈ free(ϕ)
x
=
z t


 Qz.(ϕy )x falls y 6= x, y ∈ free(t), x ∈ free(ϕ)



(z neu, d. h. z 6∈ Var (ϕ) ∪ Var (t))
(Qy .ϕ)tx
falls x 6= y
(Q ∈ {∀, ∃})
19. April 2013
G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering
34 / 56
Regeln für Gleichungen
Γ ` τ = τ, ∆
(reflexivity right)
x = τ, Γτx ` ∆τx
(insert equation)
x = τ, Γ ` ∆
• Statt x = τ ist auch τ = x erlaubt (Symmetrie)
• KIV erlaubt auch:
• Einsetzen von Gleichungen τ = τ 0 (beides keine Variable).
Ersetzt τ nur dort, wo alle Variablen frei sind.
• Einsetzen der Gleichung nur an spezifischen
Positionen in Γ ` ∆ (selten gebraucht)
19. April 2013
G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering
35 / 56
Beispiel
Ein Beweis mit Quantoren.
19. April 2013
G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering
36 / 56
Regeln für Quantoren
•
ϕτx , ∀ x.ϕ, Γ ` ∆
(all left)
∀ x.ϕ, Γ ` ∆
•
ϕyx , Γ ` ∆
(exists left)
∃ x.ϕ, Γ ` ∆
Γ ` ϕτx , ∃ x.ϕ, ∆
(exists right)
Γ ` ∃ 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(∆)
19. April 2013
G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering
37 / 56
Intuition für Quantorenregeln (1)
all left:
• Allquantor im Antezedent: ∀ x.ϕ wird als wahr angenommen
• Aus der Annahme folgt, dass auch die Annahme ϕtx für einen
beliebigen Term t wahr ist
• Jede Formel ϕtx darf hinzugenommen werden
• Einziges Problem: Welches t ist nützlich (kreativ!)?
all right:
• Allquantor im Sukzedent: ∀ x.ϕ soll bewiesen werden
• Dazu muss ϕ für jedes beliebige, feste“ Element bewiesen werden
”
• Eine Variable y bezeichnet so ein beliebiges Element, aber nur, wenn
sie neu ist
• Wenn die Variable nicht neu wäre, wäre ihr Wert nicht beliebig,
sondern durch die Formeln eingeschränkt.
• Statt ∀ x.ϕ zeige man also ϕyx mit neuem y .
• Keine Kreativität erforderlich
19. April 2013
G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering
38 / 56
Intuition für Quantorenregeln (2)
ex right:
• ∃ x.ϕ im Sukzedent soll bewiesen werden
• Wenn ϕtx für einen Term t bewiesen werden kann, so ist ∃ x.ϕ wahr
für den Wert den t bezeichnet.
• Also darf man sich ein t (hoffentlich das richtige“) aussuchen, um
”
einen Beweis für ϕtx zu führen.
ex left:
• ∃ x.ϕ im Antezedent darf angenommen werden.
• Es gibt also eine Belegung von x mit einem Element, für die ϕ wahr
ist
• Über das Element weiss man nur, dass ϕ wahr wird.
• Eine neue Variable y können wir mit dem Element belegen, da die
Gültigkeit der Sequenz von der Belegung bisher nicht abhängt.
• Die neue Variable gibt einen Namen“ für das existierende Element.
”
• Statt ∃ x.ϕ wird also ϕyx mit neuem y als Annahme verwendet.
19. April 2013
G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering
39 / 56
Zusätzliche Regel: Insert Axiom
`ϕ
all right
` Cl∀ (ϕ)
weakening
Γ, Cl∀ (ϕ) ` ∆ Γ ` Cl∀ (ϕ), ∆
cut
Γ`∆
Cl∀ (ϕ) := ∀ x1 , . . . , xn .ϕ, wobei {x1 , . . . , xn } = free(ϕ)
Neue Regel im Basiskalkül, um obige Schritte abzukürzen:
` Ax
Cl∀ (Ax), Γ ` ∆
(insert axiom)
Γ`∆
• KIV bietet die erste Prämisse nicht mehr an
• Später: Der KIV-Kalkül hat noch komfortablere Regeln:
insert lemma & insert rewrite-lemma
19. April 2013
G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering
40 / 56
Vorgriff: Induktion für natürliche Zahlen
• Theoretisches zu Induktion später
• In KIV gibt es pro Datentyp meist eine strukturelle Induktionsregel
• Nat. Zahlen: Wenn für eine Formel ϕ(n)
• ϕ(0) gilt
• Für jedes n: Aus Ind.hyp. ϕ(n) folgt: ϕ(n +1)
dann gilt für ∀ n. ϕ(n)
• Im Sequenzenkalkül: ϕ ist jetzt die Sequenz Γ ` ∆ (für
Induktionsformel in Formel umwandeln!)
` ϕ(0)
ϕ(n) ` ϕ(n +1)
Γ`∆
V
W
ϕ = ∀ y. Γ →
∆,
y = free(Γ → ∆) \ {n}
19. April 2013
G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering
41 / 56
Semantik von
Formeln und Sequenzen
19. April 2013
G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering
42 / 56
Grundidee der Verwendung von
Logik im Softwareentwurf
Menge von Formeln
= Axiome Ax
Syntax:
beschreiben
Semantik:
Software-Systeme:
Menge von Algebren
{A, B, . . .}
`K
,,ist beweisbar”
O
Vollständigkeit
Formel ϕ
Korrektkeit
beschreibt
|=
,,ist gültig in”
Eigenschaft ϕA
Ziel: Nachweis, dass ein reales Softwaresystem eine Eigenschaft hat.
Technik: Formaler Beweis ( Rechnen mit Formeln“) in KIV.
”
Korrektheit + Vollständigkeit garantieren, dass man das richtige tut
19. April 2013
G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering
43 / 56
Grundidee der Verwendung von
Logik im Softwareentwurf (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.
19. April 2013
G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering
44 / 56
Grundidee der Verwendung von
Logik im Softwareentwurf (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 die Genauigkeit der Beschreibung
des SW-Systems (insbes. die Umgebung bei eingebetteten Systemen!)
19. April 2013
G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering
45 / 56
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 0 für alle op : s1 , . . . , sn → s 0
• 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.
Merke: Sorten bedeuten Datenmengen,
Operationssymbole bezeichen Funktionen
Algebra = Datenstruktur, Σ entspricht Interface
Bsp: Datenmenge = Menge aller Listen, Operation: Aneinanderhängen
19. April 2013
G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering
46 / 56
Semantik: Belegungen von Variablen
Eine Belegung (engl. v aluation; auch: ein Zustand)
S
v : 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:
v (y ) falls x 6= y
a
vx (y ) :=
a
falls x = y
19. April 2013
G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering
47 / 56
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 0 gilt: [[ϕ]]A,v a = tt (sonst := ff)
(x ∈ Xs 0 )
x
• [[∃ x.ϕ]]A,v := tt, falls es ein a ∈ As 0 gibt mit [[ϕ]]A,v a = tt (sonst :=
x
ff) (x ∈ Xs 0 )
Hinweis: Falls ϕ eine Formel ist, so ist [[ϕ]]A,v immer tt oder ff.
(“Die Formel ist wahr oder falsch in A mit v ”)
19. April 2013
G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering
48 / 56
Gültigkeit
Für ϕ ∈ For (Σ, X ) und Ax ⊆ For (Σ, X ) definiert man:
• A, v |= ϕ :⇔ [[ϕ]]A,v = tt
Gesprochen: ϕ gilt in A unter Belegung v“
”
• 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 |= ϕ
Beachte: A |= p(x) genau dann, wenn pA konstant für alle Elemente
wahr ist, also auch genau dann, wenn A |= ∀ x.p(x)
19. April 2013
G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering
49 / 56
Erfüllbarkeit
Für ϕ ∈ For (Σ, X ) und Ax ⊆ For (Σ, X ) definiert man:
• ϕ erfüllbar in der Algebra A
:⇔ es gibt Belegung v mit A, v |= ϕ
• Ax erfüllbar in der Algebra A
:⇔ es gibt Belegung v mit A, v |= ϕ für alle ϕ ∈ Ax
• ϕ erfüllbar, falls ϕ erfüllbar in einer Algebra
• Ax erfüllbar, falls Ax erfüllbar in einer Algebra
Beachte: p(x) ist erfüllbar in A, wenn pA für ein Element wahr liefert,
also auch genau dann, wenn A |= ∃ x.p(x)
19. April 2013
G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering
50 / 56
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 0 (x) für alle x ∈ free(ϕ) ⇒ (A, v |= ϕ ⇔ A, v 0 |= ϕ)
4
Nur, wenn free(ϕ) = ∅: A |= ϕ oder A |= ¬ ϕ
5
Nur, wenn free(ϕ) = ∅: A |= ϕ ⇔ A 6|= ¬ ϕ
6
A |= ϕ ⇔ A |= Cl ∀ (ϕ)
7
{Ax1 , . . . , Axn } |= ϕ ⇔ {Cl ∀ (Ax1 ), . . . , Cl ∀ (Axn )} |= ϕ
Bedeutung: Cl ∀ (ϕ)-Allquantifizierung aller freien Variablen in ϕ
Beachte Nummer 7: Axiome sind immer allquantifiziert
(Unterschied zur Vorlesung Logik f. Informatiker!)
19. April 2013
G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering
51 / 56
Eigenschaften der Prädikatenlogik (2)
Substitutionstheorem
[[t ]]
A, vx A,v |= ϕ ⇔ 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 )
19. April 2013
G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering
52 / 56
Semantik von Sequenzen
Definition (Semantik von V
Sequenzen)
W
A, v |= Γ ` ∆ ⇔ A, v |=
Γ→
∆
Folgerungen
Für ϕ ∈ For (Σ, X ) und Ax ⊆ For (Σ, X ) gilt
19. April 2013
A |= ϕ
⇔
A |= ` ϕ
A |= ¬ ϕ
⇔
A |= ϕ `
Ax |= ϕ
⇔
Ax |= ` ϕ
Ax |= ¬ ϕ
⇔
Ax |= ϕ `
G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering
53 / 56
Korrektheit der Basisregeln
Satz (Regelkorrektheit der Basisregeln)
Für alle Basisregeln gilt:
A |= {Γ1 ` ∆1 , . . . , Γn ` ∆n } ⇒ A |= (Γ ` ∆)
Alles andere wäre nicht sehr sinnvoll!
Satz (Invertierbarkeit der Basisregeln)
Für alle Basisregeln 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)
19. April 2013
G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering
54 / 56
Korrektheit und Vollständigkeit von PL
Kann man mit den Basisregeln einen Beweisbaum mit Konklusion ` ϕ
und Prämissen in Ax konstruieren, dann schreibt man
Ax `PL ϕ.
Satz (Korrektheit)
Für jede Formel ϕ und jede Formelmenge Ax gilt
Ax `PL ϕ
⇒
Ax |= ϕ
Satz (Vollständigkeit)
Für jede Formel ϕ und jede Formelmenge Ax gilt
Ax |= ϕ
19. April 2013
⇒
Ax `PL ϕ
G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering
55 / 56
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?
19. April 2013
G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering
56 / 56
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.
19. April 2013
G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering
56 / 56
Herunterladen