Korrekte Software: Grundlagen und Methoden Vorlesung 3 vom 11.04.19
Denotationale Semantik
Serge Autexier, Christoph Lüth Universität Bremen Sommersemester 2019
11:27:20 2019-07-04 1 [27]
Fahrplan
IEinführung
IOperationale Semantik IDenotationale Semantik
IÄquivalenz der Operationalen und Denotationalen Semantik IDer Floyd-Hoare-Kalkül
IInvarianten und die Korrektheit des Floyd-Hoare-Kalküls IStrukturierte Datentypen
IVerifikationsbedingungen IVorwärts mit Floyd und Hoare IModellierung
ISpezifikation von Funktionen IReferenzen und Speichermodelle
IFunktionsaufrufe und das Framing-Problem IAusblick und Rückblick
Korrekte Software 2 [27]
Überblick
IKleinster Fixpunkt
IDenotationale Semantik für C0
Korrekte Software 3 [27]
Fixpunkt
ISeif :A*Aeine partielle Funktion. EinFixpunktvonf ist ein a∈A, so dassf(a) =a.
IBeispiele
IFixpunkte vonf(x) =√
xsind 0 und 1; ebenfalls fürf(x) =x2. IFür die Sortierfunktion sind alle sortierten Listen Fixpunkte
Korrekte Software 4 [27]
Regeln und Regelinstanzen
Definition
SeiReine Menge von Regelnx1...xy n,n≥0.
Die Anwendung einer Regel auf spezifischea1. . .anist eine Regelinstanz IBetrachte folgende RegelmengeR
− 22
− 23
n m
n·m
IRegelinstanzen sind
− 4
− 8
4 8
32
4 4
16
16 32 512
3 5
15 . . .
Korrekte Software 5 [27]
Induktive Definierte Mengen
Definition
SeitReine Menge von Regelinstanzen undBeine Menge. Dann definieren wir
R(B) =ˆ {y| ∃x1, . . . ,xk⊆B.x1, . . . ,xk y ∈R}und Rˆ0(B) =Bund ˆRi+1(B) = ˆR( ˆRi(B))
Korrekte Software 6 [27]
Beispiel
IBetrachte folgende RegelmengeR
− 22
− 23
n m
n·m
IWas sind Rˆ0(∅) =∅
Rˆ1(∅) = ˆR(∅) ={4,8}
Rˆ2(∅) =?{16,32,64,4,8}
Rˆ3(∅) =?{128,256,512,1024,2048,4096,16,32,64,4,8}
Rˆi+1(∅) =?{22k+3l|1≤k+l≤2i}
Korrekte Software 7 [27]
Induktive Definierte Mengen
Definition
SeitReine Menge von Regelinstanzen undBeine Menge. Dann definieren wir
R(B) =ˆ {y| ∃x1, . . . ,xk⊆B.x1, . . . ,xk y ∈R}und Rˆ0(B) =Bund ˆRi+1(B) = ˆR( ˆRi(B))
Definition (Abgeschlossen und Monoton)
IEine MengeSisabgeschlossen unterR(R-abgeschlossen)gdw.
R(S)ˆ ⊆S
IEine Operationf ist monotongdw.
∀A,B.A⊆B⇒f(A)⊆f(B)
Korrekte Software 8 [27]
Kleinster Fixpunkt Operator
Lemma
Für jede Menge von Regelinstanzen R ist die induzierte OperationRˆ monoton.
Lemma
Sei Ai= ˆRi(∅)für alle i∈Nund A=S
i∈NAi. Dann gilt (a)A ist R-abgeschlossen,
(b)R(A) =ˆ A, und
(c)A ist die kleinste R-abgeschlossene Menge.
Korrekte Software 9 [27]
Beweis von Lemma (a).
AistR-abgeschlossen:
Seix1,...,xy k ∈Rundx1, . . . ,xk⊆A.
DaA=S
i∈NAigibt es einjso dassx1, . . . ,xk⊆Aj. Also auch:
y∈R(Aˆ j) = ˆR( ˆRj(∅))
= ˆRj+1(∅)
=Aj+1⊆A.
Korrekte Software 10 [27]
Beweis von Lemma (b): ˆR(A) =A.
IR(A)ˆ ⊆A:
DaA R-abgeschlossen gilt auch ˆR(A)⊆A.
IA⊆R(A):ˆ
Seiy∈A. Dann∃n>0.y∈Anundy6∈An−1. Folglich muss es eine Regelinstanzx1,...,xy k∈Rgeben mit x1, . . . ,xk⊆An−1⊆A.
Da ˆRmonoton gilt ˆR(An−1)⊆R(A).ˆ Day∈An= ˆR(An−1) folgt darausy∈R(A).ˆ
Korrekte Software 11 [27]
Beweis von Lemma (c).
Aist die kleinsteR-abgeschlossene Menge, d.h. für jede R-abgeschlossene MengeBgiltA⊆B.
Beweis per Induktion überndass giltAn⊆B:
IBasisfall:
A0=∅ ⊆B IInduktionsschritt:
DaB R-abgeschlossen ist gilt: ˆR(B)⊆B.
Induktionsannahme:An⊆B.
Dann giltAn+1= ˆR(An)⊆R(B)ˆ ⊆Bweil ˆRmonoton undBist R-abgeschlossen.
Korrekte Software 12 [27]
Kleinster Fixpunkt Operator
Definition
fix( ˆR) =[ n∈N
Rˆn(∅) ist derkleinste Fixpunkt.
Korrekte Software 13 [27]
Kleinster Fixpunkt
IBetrachte folgende RegelmengeR
− 22
− 23
n m
n·m
IWas sind
Rˆ1(∅) = ˆR(∅) ={4,8}
Rˆ2(∅) =?
Rˆ3(∅) =?
Rˆi+1(∅) =?
IWie siehtfix( ˆR) aus?
Korrekte Software 14 [27]
Denotationale Semantik — Motivation
IOperationale Semantik
Eine Menge von Regeln, die einen Zustand und ein Programm in einen neuen Zustand oder Fehler überführen
hc, σi →Stmtσ0|⊥
IDenotationale Semantik
Eine Menge von Regeln, die ein Programm in einepartielle Funktion
| {z } Denotat von Zustand nach Zustand überführen
C[[c]] : Σ*Σ
Korrekte Software 15 [27]
Denotationale Semantik — Motivation
Zwei Programme sind äquivalent gdw. sie immer zum selben Zustand (oder Fehler) auswerten
c0∼c1iff (∀σ, σ0.hc0, σi →Stmtσ0⇔ hc1, σi →Stmtσ0) oder
Zwei Programme sind äquivalent gdw. sie dieselbe partielle Funktion denotieren
c0∼c1iff{(σ, σ0)|hc0, σi →Stmtσ0}={(σ, σ0)|hc1, σi →Stmtσ0}
Korrekte Software 16 [27]
Denotierende Funktionen
Ijedera:Aexpdenotiert eine partielle Funktion Σ*Z Ijederb:Bexpdenotiert eine partielle Funktion Σ*B Ijedesc:Stmtdenotiert eine partielle Funktion Σ*Σ
Definition (Partielle Funktion)
Einepartielle Funktionf :X*Y ist eine Relationf ⊆X×Y so dass wenn (x,y1)∈f und (x,y2)∈f danny1=y2(Rechtseindeutigkeit) Notation: fürf:X*Y, (x,y)∈f ⇐⇒f(x) =y.
Korrekte Software 17 [27]
Denotat von Aexp
A[[a]] :Aexp→(Σ*Z) A[[n]] = {(σ,n)|σ∈Σ}
A[[x]] = {(σ, σ(x))|σ∈Σ,x∈Dom(σ)}
A[[a0+a1]] = {(σ,n0+n1)|(σ,n0)∈ A[[a0]]∧(σ,n1)∈ A[[a1]]}
A[[a0−a1]] = {(σ,n0−n1)|(σ,n0)∈ A[[a0]]∧(σ,n1)∈ A[[a1]]}
A[[a0∗a1]] = {(σ,n0∗n1)|(σ,n0)∈ A[[a0]]∧(σ,n1)∈ A[[a1]]}
A[[a0/a1]] = {(σ,n0/n1)|(σ,n0)∈ A[[a0]]∧(σ,n1)∈ A[[a1]]∧n16= 0}
Korrekte Software 18 [27]
Denotat von Bexp
B[[a]] :Bexp→(Σ*B) B[[1]] = {(σ,true)|σ∈Σ}
B[[0]] = {(σ,false)|σ∈Σ}
B[[a0==a1]] = {(σ,true)|σ∈Σ,(σ,n0)∈ A[[a0]](σ), (σ,n1)∈ A[[a1]],n0=n1}
∪{(σ,false)|σ∈Σ,(σ,n0)∈ A[[a0]](σ), (σ,n1)∈ A[[a1]],n06=n1} B[[a0<a1]] = {(σ,true)|σ∈Σ,(σ,n0)∈ A[[a0]](σ),
(σ,n1)∈ A[[a1]],n0<n1}
∪{(σ,false)|σ∈Σ,(σ,n0)∈ A[[a0]](σ), (σ,n1)∈ A[[a1]],n0≥n1}
Korrekte Software 19 [27]
Denotat von Bexp
B[[a]] :Bexp→(Σ*B) B[[!b]] = {(σ,true)|σ∈Σ,(σ,false)∈ B[[b]]}
∪{(σ,false)|σ∈Σ,(σ,true)∈ B[[b]]}
B[[b1&&b2]] = {(σ,false)|σ∈Σ,(σ,false)∈ B[[b1]]}
∪{(σ,t2)|σ∈Σ,(σ,true)∈ B[[b1]],(σ,t2)∈ B[[b2]]}
B[[b1||b2]] = {(σ,true)|σ∈Σ,(σ,true)∈ B[[b1]]}
∪{(σ,t2)|σ∈Σ,(σ,false)∈ B[[b1]],(σ,t2)∈ B[[b2]]}
Korrekte Software 20 [27]
Denotat von Stmt
C[[.]] :Stmt→(Σ*Σ)
C[[x=a]] = {(σ, σ[n/x])|σ∈Σ∧(σ,n)∈ A[[a]]}
C[[c1;c2]] = C[[c2]]◦ C[[c1]] Komposition von Relationen C[[{ }]] = Id Id:={(σ, σ)|σ∈Σ}
C[[if(b)c0 elsec1]] = {(σ, σ0)|(σ,true)∈ B[[b]]∧(σ, σ0)∈ C[[c0]]}
∪{(σ, σ0)|(σ,false)∈ B[[b]]∧(σ, σ0)∈ C[[c1]]}
Aber was ist
C[[while(b)c]] =??
Korrekte Software 21 [27]
Denotationale Semantik für while
Seiw≡while(b)c(undσ∈Σ). Operational gilt:
w ∼ if(b){c;w} else{ } C[[w]] =? C[[if(b){c;w} else{ }]]
Konstruktion: Auffalten der Schleife
Γ(s)def=C[[if(b){c;s} else{ }]]
Γ0(s)def=s,Γi+1(s)def= Γ(Γi(s)) Semantik vonw: Beliebig oft auffalten
C[[w]] =[ n∈N
Γn(?) =fix(Γ) Was ist?
Korrekte Software 22 [27]
Denotationale Semantik von while
Formale Konstruktion (sist einDenotat):
Γ(s)def=C[[if(b){c;s} else{ }]]
Γ(s)def={(σ, σ0)| ∃σ00.(σ,true)∈ B[[b]]∧(σ, σ00)∈ C[[c]]∧(σ00, σ0)∈s}
∪ {(σ, σ)|(σ,false)∈ B[[b]]}
Γ ist wie ˆR, mitRdefiniert wie folgt:
R= (σ00, σ0)
(σ, σ0) |(σ,true)∈ B[[b]]∧(σ, σ00)∈ C[[c]]
∪
(σ, σ)|(σ,false)∈ B[[b]]
Dann istC[[w]] der Fixpunkt von Γ:
C[[w]] =fix(Γ)
Korrekte Software 23 [27]
Denotation für Stmt
C[[.]] :Stmt→(Σ*Σ)
C[[x=a]] = {(σ, σ[n/x])|σ∈Σ∧(σ,n)∈ A[[a]]}
C[[c1;c2]] = C[[c2]]◦ C[[c1]] Komposition von Relationen C[[{ }]] = Id Id:={(σ, σ)|σ∈Σ}
C[[if(b)c0 elsec1]] = {(σ, σ0)|(σ,true)∈ B[[b]]∧(σ, σ0)∈ C[[c0]]}
∪ {(σ, σ0)|(σ,false)∈ B[[b]]∧(σ, σ0)∈ C[[c1]]}
C[[while(b)c]] = fix(Γ) mit
Γ(ψ) = {(σ, σ0)|(σ,true)∈ B[[b]]∧(σ, σ0)∈ψ◦ C[[c]]}
∪ {(σ, σ)|(σ,false)∈ B[[b]]}
Korrekte Software 24 [27]
Der Fixpunkt bei der Arbeit
Beispielprogramme:
x= 0 ;
w h i l e ( n > 0 ) { x= x+n ; n= n−1;
}
x= 0 ; w h i l e ( 1 ) {
x= x +1;
}
x= 0 ;
w h i l e ( n < 0 ) { x= x +1;
}
Korrekte Software 25 [27]
Weitere Intuition zur Fixpunkt Konstruktion
ISeiw≡while(b)c
IZur Erinnerung: Wir haben begonnen mitw∼if(b){c;w} else{ } IDann müsste auch gelten
C[[w]]=!C[[if(b){c;w}else { }]]
IBeweis an der Tafel.
IEs müsste ferner gelten
(σ, σ0)∈ C[[w]] =⇒(σ0,false)∈ B[[b]]
IBeweis an der Tafel.
Korrekte Software 26 [27]
Zusammenfassung
IDie denotationale Semantik bildet Programme (Ausdrücke) auf partielle FunktionenΣ*Σ ab.
IZentral ist der Begriff deskleinsten Fixpunktes, der die Semantik der while-Schleife bildet.
IUndefiniertheit wirdimplizitbehandelt (durch die Partialität von Σ*Σ).
INicht-Termination und Undefiniertheit sind semantisch äquivalent.
IGenaues Verhältnis zuroperationalen Semantik? Nächste Vorlesung
Korrekte Software 27 [27]