• Keine Ergebnisse gefunden

Korrekte Software: Grundlagen und Methoden Vorlesung 3 vom 17.04.18: Denotationale Semantik

N/A
N/A
Protected

Academic year: 2022

Aktie "Korrekte Software: Grundlagen und Methoden Vorlesung 3 vom 17.04.18: Denotationale Semantik"

Copied!
4
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Korrekte Software: Grundlagen und Methoden Vorlesung 3 vom 17.04.18: Denotationale Semantik

Serge Autexier, Christoph Lüth Universität Bremen Sommersemester 2018

11:50:49 2018-06-05 1 [28]

Fahrplan

I Einführung

I Operationale Semantik I Denotationale Semantik

I Äquivalenz der Operationalen und Denotationalen Semantik I Die Floyd-Hoare-Logik

I Invarianten und die Korrektheit des Floyd-Hoare-Kalküls I Strukturierte Datentypen

I Modellierung und Spezifikation I Verifikationsbedingungen I Vorwärts mit Floyd und Hoare I Funktionen und Prozeduren I Referenzen

I Ausblick und Rückblick

Korrekte Software 2 [28]

Überblick

I Kleinster Fixpunkt

I Denotationale Semantik für C0

Korrekte Software 3 [28]

Fixpunkt

I Seif :AAeine Funktion. EinFixpunktvonf ist einaA, so dassf(a) =a.

I Beispiele

IFixpunkte vonf(x) =√

xsind 0 und 1; ebenfalls fürf(x) =x2.

IFür die Sortierfunktion sind alle sortierten Listen Fixpunkte

Korrekte Software 4 [28]

Regeln und Regelinstanzen

Definition

SeiReine Menge von Regelnx1...xy n,n≥0.

Die Anwendung einer Regel auf spezifischea1. . .anist eine Regelinstanz I Betrachte folgende RegelmengeR

− 22

− 23

n m

n·m

I Regelinstanzen sind

− 4

− 8

4 8

32

4 4

16

16 32

512

3 5

15 . . .

Korrekte Software 5 [28]

Induktive Definierte Mengen

Definition

SeitReine Menge von Regelinstanzen undBeine Menge. Dann definieren wir

R(B) =ˆ {y| ∃x1, . . . ,xkB.x1, . . . ,xk yR}und Rˆ0(B) =Bund ˆRi+1(B) = ˆR( ˆRi(B))

Korrekte Software 6 [28]

Beispiel

I Betrachte folgende RegelmengeR

− 22

− 23

n m

n·m

I Was 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 [28]

Induktive Definierte Mengen

Definition

SeitReine Menge von Regelinstanzen undBeine Menge. Dann definieren wir

R(B) =ˆ {y| ∃x1, . . . ,xkB.x1, . . . ,xk yR}und Rˆ0(B) =Bund ˆRi+1(B) = ˆR( ˆRi(B))

Definition (Abgeschlossen und Monoton)

I Eine MengeSisabgeschlossen unterR(R-abgeschlossen)gdw.

R(S)ˆ ⊆S

I Eine Operationf ist monotongdw.

∀A,B.ABf(A)⊆f(B)

Korrekte Software 8 [28]

(2)

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 [28]

Beweis von Lemma (a).

AistR-abgeschlossen:

Seix1,...,xy kRundx1, . . . ,xkA.

DaA=S

i∈NAigibt es einjso dassx1, . . . ,xkAj. Also auch:

yR(Aˆ j) = ˆR( ˆRj(∅))

= ˆRj+1(∅)

=Aj+1A.

Korrekte Software 10 [28]

Beweis von Lemma (b): ˆR(A) =A.

I R(A)ˆ ⊆A:

DaA R-abgeschlossen gilt auch ˆR(A)A.

I AR(A):ˆ

SeiyA. Dann∃n>0.yAnundy6∈An−1. Folglich muss es eine Regelinstanzx1,...,xy kRgeben mit x1, . . . ,xkAn−1A.

Da ˆRmonoton gilt ˆR(An−1)⊆R(A).ˆ DayAn= ˆR(An−1) folgt darausyR(A).ˆ

Korrekte Software 11 [28]

Beweis von Lemma (c).

Aist die kleinsteR-abgeschlossene Menge, d.h. für jede R-abgeschlossene MengeBgiltAB.

Beweis per Induktion überndass giltAnB:

I Basisfall:

A0=∅ ⊆B I Induktionsschritt:

DaB R-abgeschlossen ist gilt: ˆR(B)B.

Induktionsannahme:AnB.

Dann giltAn+1= ˆR(An)⊆R(B)ˆ ⊆Bweil ˆRmonoton undBist R-abgeschlossen.

Korrekte Software 12 [28]

Kleinster Fixpunkt Operator

Definition

fix( ˆR) = [ n∈N

Rˆn(∅) ist derkleinste Fixpunkt.

Korrekte Software 13 [28]

Kleinster Fixpunkt

I Betrachte folgende RegelmengeR

− 22

− 23

n m

n·m

I Was sind

Rˆ1(∅) = ˆR(∅) ={4,8}

Rˆ2(∅) =?

Rˆ3(∅) =?

Rˆi+1(∅) =?

I Wie siehtfix( ˆR) aus?

Korrekte Software 14 [28]

Denotationale Semantik - Motivation

I Operationale Semantik

Eine Menge von Regeln, die einen Zustand und ein Programm in einen neuen Zustand oder Fehler überführen

hc, σi →Stmtσ0|⊥

I Denotationale Semantik

Eine Menge von Regeln, die ein Programm in einepartielle Funktion

| {z } Denotat von Zustand nach Zustand überführen

C[[c]] : Σ*Σ

Korrekte Software 15 [28]

Denotationale Semantik - Motivation

Zwei Programme sind äquivalent gdw. sie immer zum selben Zustand (oder Fehler) auswerten

c0c1iff (∀σ, σ0.hc0, σi →Stmtσ0⇔ hc1, σi →Stmtσ0) oder

Zwei Programme sind äquivalent gdw. sie die selbe partielle Funktion denotieren

c0c1iff{(σ, σ0)|hc0, σi →Stmtσ0}={(σ, σ0)|hc1, σi →Stmtσ0}

Korrekte Software 16 [28]

(3)

Denotierte Funktionen

I jedera:Aexpdenotiert eine partielle Funktion Σ*Z

I jederb:Bexpdenotiert eine partielle Funktion Σ*T

I jedesc:Stmtdenotiert eine partielle Funktion Σ*Σ

Korrekte Software 17 [28]

Denotat von Aexp

A[[a]] :Aexp→(Σ*Z) A[[n]] = {(σ,n)|σ∈Σ}

A[[x]] = {(σ, σ(x))|σ∈Σ,xDom(σ)}

A[[a0+a1]] = {(σ,n0+n1)|(σ,n0)∈ A[[a0]]∧(σ,n1)∈ A[[a1]]}

A[[a0−a1]] = {(σ,n0n1)|(σ,n0)∈ A[[a0]]∧(σ,n1)∈ A[[a1]]}

A[[a0a1]] = {(σ,n0n1)|(σ,n0)∈ A[[a0]]∧(σ,n1)∈ A[[a1]]}

A[[a0/a1]] = {(σ,n0/n1)|(σ,n0)∈ A[[a0]]∧(σ,n1)∈ A[[a1]]∧n16= 0}

Korrekte Software 18 [28]

Denotat von Bexp

B[[a]] :Bexp→(Σ*T) B[[1]] = {(σ,1)|σ∈Σ}

B[[0]] = {(σ,0)|σ∈Σ}

B[[a0==a1]] = {(σ,1)|σ∈Σ,(σ,n0)∈ A[[a0]](σ), (σ,n1)∈ A[[a1]],n0=n1}

∪{(σ,0)|σ∈Σ,(σ,n0)∈ A[[a0]](σ), (σ,n1)∈ A[[a1]],n06=n1} B[[a0<a1]] = {(σ,1)|σ∈Σ,(σ,n0)∈ A[[a0]](σ),

(σ,n1)∈ A[[a1]],n0<n1}

∪{(σ,0)|σ∈Σ,(σ,n0)∈ A[[a0]](σ), (σ,n1)∈ A[[a1]],n0n1}

Korrekte Software 19 [28]

Denotat von Bexp

B[[a]] :Bexp→(Σ*T) B[[!b]] = {(σ,1)|σ∈Σ,(σ,0)∈ B[[b]]}

∪{(σ,0)|σ∈Σ,(σ,1)∈ B[[b]]}

B[[b1&&b2]] = {(σ,0)|σ∈Σ,(σ,0)∈ B[[b1]]}

∪{(σ,t2)|σ∈Σ,(σ,1)∈ B[[b1]],(σ,t2)∈ B[[b2]]}

B[[b1||b2]] = {(σ,1)|σ∈Σ,(σ,1)∈ B[[b1]]}

∪{(σ,t2)|σ∈Σ,(σ,0)∈ B[[b1]],(σ,t2)∈ B[[b2]]}

Korrekte Software 20 [28]

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)|(σ,1)∈ B[[b]]∧(σ, σ0)∈ C[[c0]]}

∪{(σ, σ0)|(σ,0)∈ B[[b]]∧(σ, σ0)∈ C[[c1]]}

Aber was ist

C[[while(b)c]] =??

Korrekte Software 21 [28]

Denotationale Semantik für while

Seiwwhile(b)c(undσ∈Σ). Wir wissen bereits, dass gilt wif(b){c;w} else{ }

C[[w]] = {(σ, σ0)|(σ,1)∈ B[[b]]∧(σ, σ0)∈ C[[{c;w}]]}

∪{(σ, σ)|(σ,0)∈ B[[b]]}

= {(σ, σ0)|(σ,1)∈ B[[b]]∧(σ, σ0)∈ C[[w]]◦ C[[c]]}

∪{(σ, σ)|(σ,0)∈ B[[b]]}

= {(σ, σ0)| ∃σ00.(σ,1)∈ B[[b]]∧(σ, σ00)∈ C[[c]]∧(σ00, σ0)∈ C[[w]]}

∪{(σ, σ)|(σ,0)∈ B[[b]]}

Korrekte Software 22 [28]

Denotationale Semantik von while

Seiwwhile(b)c(undσ∈Σ). Wir wissen bereits, dass gilt wif(b){c;w} else{ }

C[[w]]0 = {(σ, σ)|(σ,0)∈ B[[b]](σ)}

C[[w]]1 = {(σ, σ0)| ∃σ00.(σ,1)∈ B[[b]]∧(σ, σ00)∈ C[[c]]

∧(σ00, σ0)∈ C[[w]]0}

C[[w]]2 = {(σ, σ0)| ∃σ00.(σ,1)∈ B[[b]]∧(σ, σ00)∈ C[[c]]

∧(σ00, σ0)∈ C[[w]]1} ...

C[[w]]i+1 = {(σ, σ0)| ∃σ00.(σ,1)∈ B[[b]]∧(σ, σ00)∈ C[[c]]

∧(σ00, σ0)∈ C[[w]]i}

Γ(ϕ) = {(σ, σ0)| ∃σ00.B[[b]](σ) = 1∧(σ, σ00)∈ C[[c]]∧(σ00, σ0)∈ϕ}

∪{(σ, σ)| B[[b]](σ) = 0}

Korrekte Software 23 [28]

Denotationale Semantik von while

Seiwwhile(b)c(undσ∈Σ). Wir wissen bereits, dass gilt wif(b){c;w} else{ }

Γ(ψ) = {(σ, σ0)| ∃σ00.(σ,1)∈ B[[b]]∧(σ, σ00)∈ C[[c]]∧(σ00, σ0)∈ψ}

∪{(σ, σ)|(σ,0)∈ B[[b]]}

Γ ist wie ˆR, wobeiRdefiniert ist wie folgt:

R =

00, σ0)

(σ, σ0) |(σ,1)∈ B[[b]]∧(σ, σ00)∈ C[[c]]

(σ, σ)|(σ,0)∈ B[[b]]

und die Semantik vonwist der Fixpunkt von Γ, d.h.C[[w]] =fix(Γ)

Korrekte Software 24 [28]

(4)

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)|(σ,1)∈ B[[b]]∧(σ, σ0)∈ C[[c0]]}

∪ {(σ, σ0)|(σ,0)∈ B[[b]]∧(σ, σ0)∈ C[[c1]]}

C[[while(b)c]] = fix(Γ) mit

Γ(ψ) = {(σ, σ0)|(σ,1)∈ B[[b]]∧(σ, σ0)∈ψ◦ C[[c]]}

∪ {(σ, σ)|(σ,0)∈ B[[b]]}

Korrekte Software 25 [28]

Weitere Intuition zur Fixpunkt Konstruktion

I Seiwwhile(b)c

I Zur Erinnerung: Wir haben begonnen mitwif(b){c;w} else{ } I Dann müsste auch gelten

C[[w]]=!C[[if(b){c;w}else { }]]

I Beweis an der Tafel

Korrekte Software 26 [28]

Beweis C[[w]] =

!

C[[if (b) {c; w} else { }]]

C[[w]] =fix(Γ)

= Γ(fix(Γ))

= Γ(C[[w]])

={(σ, σ0)|(σ,1)∈ B[[b]]∧(σ, σ0)∈ C[[w]]◦ C[[c]]}

∪ {(σ, σ)|(σ,0)∈ B[[b]]}

={(σ, σ0)|(σ,1)∈ B[[b]]∧(σ, σ0)∈ C[[c;w]]}

∪ {(σ, σ)|(σ,0)∈ B[[b]]}

=C[[if(b){c;w} else{ }]]

Korrekte Software 27 [28]

Fahrplan

I Einführung

I Operationale Semantik I Denotationale Semantik

I Äquivalenz der Operationalen und Denotationalen Semantik I Die Floyd-Hoare-Logik

I Invarianten und die Korrektheit des Floyd-Hoare-Kalküls I Strukturierte Datentypen

I Modellierung und Spezifikation I Verifikationsbedingungen I Vorwärts mit Floyd und Hoare I Funktionen und Prozeduren I Referenzen

I Ausblick und Rückblick

Korrekte Software 28 [28]

Referenzen

ÄHNLICHE DOKUMENTE

[r]

aber mit erheblichen Konsequenzen: Substitution. Korrekte Software

I Die (operationale) Semantik einer imperativen Sprache wie C0 ist ein Zustandsübergang: das System hat einen impliziten Zustand, der durch Zuweisung von Werten an Adressen

Zu zeigen ist, dass sowohl w also auch if (b) {c; w} else { } zu dem selben Programmzustand auswerten oder beide zu

Korrekte Software: Grundlagen und Methoden Vorlesung 3 vom 17.04.18: Denotationale Semantik.. Serge Autexier,

Für die While-Schleife Rückgriff auf Definition des Fixpunkts und Induktion über die Teilmengen Γ i (∅) des Fixpunkts.. Für die While-Schleife Rückgriff auf Definition des

Korrekte Software: Grundlagen und Methoden Vorlesung 4 vom 24.04.17: Denotationale Semantik.. Serge Autexier,

[r]