• Keine Ergebnisse gefunden

Korrekte Software: Grundlagen und Methoden Vorlesung 3 vom 11.04.19

N/A
N/A
Protected

Academic year: 2022

Aktie "Korrekte Software: Grundlagen und Methoden Vorlesung 3 vom 11.04.19"

Copied!
4
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

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 aA, 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, . . . ,xkB.x1, . . . ,xk yR}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, . . . ,xkB.x1, . . . ,xk yR}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.ABf(A)⊆f(B)

Korrekte Software 8 [27]

(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 [27]

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

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

IR(A)ˆ ⊆A:

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

IAR(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 [27]

Beweis von Lemma (c).

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

Beweis per Induktion überndass giltAnB:

IBasisfall:

A0=∅ ⊆B IInduktionsschritt:

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

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

Zwei Programme sind äquivalent gdw. sie dieselbe partielle Funktion denotieren

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

Korrekte Software 16 [27]

(3)

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 RelationfX×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))|σ∈Σ,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 [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]],n0n1}

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

Seiwwhile(b)c(undσ∈Σ). Operational gilt:

wif(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]

(4)

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

ISeiwwhile(b)c

IZur Erinnerung: Wir haben begonnen mitwif(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]

Referenzen

ÄHNLICHE DOKUMENTE

I Für Iterationen wird eine Invariante benötigt (die nicht hergeleitet werden kann).. Korrekte Software

3 Beweise innerhalb der Schleife

aber mit erheblichen Konsequenzen: Substitution. Korrekte Software

I Funktionen sind zentrales Modularisierungskonzept I Wir müssen Funktionen modular verifizieren können I Erweiterung der Semantik:. I Semantik von Deklarationen und Parameter

−→ Genauere Unterscheidung in der Semantik Kontrollstrukturen:. I switch −→ Ist im allgemeinen Fall

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

[r]

I return ohne Argument darf nur bei einer Nachbedingung Q auftreten, die kein \result enthält. I Bei return mit Argument ersetzt der Rückgabewert den \result in