• Keine Ergebnisse gefunden

Korrekte Software: Grundlagen und Methoden Vorlesung 4 vom 12/14.05.20 Äquivalenz der Operationalen und Denotationalen Semantik

N/A
N/A
Protected

Academic year: 2022

Aktie "Korrekte Software: Grundlagen und Methoden Vorlesung 4 vom 12/14.05.20 Äquivalenz der Operationalen und Denotationalen Semantik"

Copied!
73
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Korrekte Software: Grundlagen und Methoden Vorlesung 4 vom 12/14.05.20

Äquivalenz der Operationalen und Denotationalen Semantik

Serge Autexier, Christoph Lüth

Universität Bremen

Sommersemester 2020

(2)

Fahrplan

I Einführung

I Operationale Semantik I Denotationale Semantik

I Äquivalenz der Operationalen und Denotationalen Semantik I Der Floyd-Hoare-Kalkül

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

I Verifikationsbedingungen I Vorwärts mit Floyd und Hoare I Modellierung

I Spezifikation von Funktionen I Referenzen und Speichermodelle

(3)

Operationale vs. denotationale Semantik

Operational ha, σi →Aexp n Denotational [[a]]A

m∈Z hm, σi →Aexp m {(σ,m)|σ ∈Σ}

x∈Loc xDom(σ)

hx, σi →Aexp σ(x) {(σ, σ(x))|σ∈Σ,xDom(σ)}

x6∈Dom(σ) hx, σi →Aexpa1a2

ha1, σi →Aexp n ha2, σi →Aexp m n,m6=⊥

ha1a2, σi →Aexp nIm {(σ,nIm)|σ∈Σ,(σ,n)∈ [[a1]]A,(σ,m)∈[[a2]]A} ha1, σi →Aexp n

ha2, σi →Aexp m n=⊥oderm=⊥ ha1a2, σi →Aexp

◦ ∈ {+,∗,−}

(4)

Operationale vs. denotationale Semantik

Operational ha, σi →Aexp n Denotational [[a]]A

a1/a2

ha1, σi →Aexp n ha2, σi →Aexp m m6= 0 m,n 6=⊥

ha1a2, σi →Aexp nIm {(σ,n/m)|σ ∈Σ,(σ,n)∈ [[a1]]A,(σ,m)∈[[a2]]A,m6=

0}

ha1, σi →Aexp n ha2, σi →Aexp m n =⊥,m=⊥oder m= 0

ha1/a2, σi →Aexp

(5)

Äquivalenz operationale und denotationale Semantik

I Für alleaAexp, für alle n∈Z, für alle Zuständeσ:

ha, σi →Aexp n ⇔(σ,n)∈[[a]]A

ha, σi →Aexp ⊥ ⇔σ6∈Dom([[a]]A)

I Beweis Prinzip?

(6)

Induktionsprinzip

Noether’sche Induktion

Sei eine wohlfundierte OrdnungüberS und P eine Aussage über Elemente von S. Dann gilt

∀v ∈S.(∀uS.v uP(u))⇒P(v)

∀x ∈S.P(x)

I Eine binäre Relation⊆S×S ist eine Ordnung wenn gilt

∀x ∈S.xx (irreflexiv)

∀x,yS.x yy x (assymetrisch)

∀x,y,zS.(x yyz)x z (transitiv) I Eine Ordnung≺ ist wohlfundiert, wenn es keine unendlich

absteigendenKetten gibt

a a a . . .

(7)

Induktionsprinzip

Noether’sche Induktion

Sei eine wohlfundierte OrdnungüberS und P eine Aussage über Elemente von S. Dann gilt

∀v ∈S.(∀uS.v uP(u))⇒P(v)

∀x ∈S.P(x)

S

Mathematische Induktion N nn+ 1

Strukturelle Induktion Aexp Aexp aa0 genau dann, wenn a0 ist Teilausdruck von a

(8)

Arbeitsblatt 4.1: Übung zu struktureller Ordnung

Die strukturelle Ordnung auf arithmetischen Ausdrücken ist definiert als:

∀a,a0AExp.aa0a0 ist Teilausdruck von a Dabei ist “Teilausdruck” formalisiert als ◦ ∈ {+,∗,−, /}:

aTeilausdruck-von(a1a2)⇔ a=a1aTeilausdruck-vona1a=a2aTeilausdruck-vona2

!

I Argumentiert/beweist, dass die Relation “Teilausdruck-von”

4.1.1irreflexiv

4.2.2assymmetrisch und

4.3.3transitiv ist.

(9)

Besprechung

Argumentiert/beweist, die Relation “Teilausdruck-von” ist

1 irreflexiv Für Variablen und Zahlen gilt es nicht.

(a1a2) Teilausdruck-von(a1a2)

⇔(a1a2) =a1∨(a1a2) Teilausdruck-vona1 Widerspruch

2 assymmetrisch

(a1a2) Teilausdruck-von(a10a02)

∧(a01a20) Teilausdruck-von(a1a2)

⇔[(a1a2) Teilausdruck-vona01

∨(a1a2) Teilausdruck-vona02]

∧[(a01a20) Teilausdruck-vona1

∨(a01a20) Teilausdruck-vona2]

(10)

Besprechung

Argumentiert/beweist, die Relation “Teilausdruck-von” ist

3 transitiv

aTeilausdruck-von(a1a2)∧(a1a2) Teilausdruck-von(a01a20)

1. Fall:a=a1aTeilausdruck-vona1aTeilausdruck-von(a01a02) 2. Fall:a=a2aTeilausdruck-vona2aTeilausdruck-von(a01a02)

(11)

Äquivalenz operationale und denotationale Semantik

I Für alleaAexp, für alle n∈Z, für alle Zuständeσ:

ha, σi →Aexp n ⇔(σ,n)∈[[a]]A

ha, σi →Aexp ⊥ ⇔σ6∈Dom([[a]]A)

I Beweis Prinzip?

(12)

Äquivalenz operationale und denotationale Semantik

I Für alleaAexp, für alle n∈Z, für alle Zuständeσ:

ha, σi →Aexp n ⇔(σ,n)∈[[a]]A

ha, σi →Aexp ⊥ ⇔σ6∈Dom([[a]]A)

I Beweis per struktureller Induktion übera. (Warum?)

(13)

Beweis ∀aAexp.∀nZ.∀σ. ha, σi →Aexpn(σ,n)[[a]]A

ha, σi →Aexp⊥ ⇔σ6∈Dom([[a]]A) Induktionsanfänge

I am∈Z:

hm, σi →Aexp m

[[m]]A={(σ0,m)|σ0 ∈Σ} ⇒(σ,m)∈[[m]]A

#

I aXLoc:

1 X Dom(σ):

hX, σi →Aexpσ(X)

[[X]]A={(σ0, σ0(X))|σ0Σ,X Dom(σ)} ⇒(σ, σ(X))[[X]]A

2 X 6∈Dom(σ):

hX, σi →Aexp

[[X]]A={(σ0, σ0(X))|σ0Σ,X Dom(σ)} ⇒σ6∈Dom([[X]]A)

(14)

Beweis ∀aAexp.∀nZ.∀σ. ha, σi →Aexpn(σ,n)[[a]]A

ha, σi →Aexp⊥ ⇔σ6∈Dom([[a]]A) Induktionsschritte

I aa1+a2:

1 Fall:m6=undn6= Es gilt

[[a1+a2]]A={(σ0,u+v)|(σ0,u)[[a1]]Aund (σ0,v)[[a2]]A} Induktionsannahme gilt füra1unda2.

ha1+a2, σi →KS Aexp m+n

(Def.h.,.i→Aexp.)

ha1, σi →Aexpm

&

ks IA fuera1 +3(σ,m)[[a1]]A

&

ha2, σi →Aexpnks IA fuera2 +3(σ,n)[[a2]]A

KS

(Def.[[.]]A)

(15)

Beweis ∀aAexp.∀nZ.∀σ. ha, σi →Aexpn(σ,n)[[a]]A

ha, σi →Aexp⊥ ⇔σ6∈Dom([[a]]A)

Induktionsschritte

I aa1+a2: Induktionsannahme gilt für a1 und a2.

2 Fall:m=odern=

ha1, σi →Aexpn ha2, σi →Aexpm m=odern= ha1+a2, σi →Aexp

I Falln=⊥.

Aus Induktionsannahme folgt, dassha1, σi →Aexp⊥ ⇔σ6∈Dom([[a1]]A).

Weiterhin gilt

[[a1+a2]]A={(σ0,u+v)|(σ0,u)[[a1]]Aund (σ0,v)[[a2]]A} Somit giltσ6∈Dom([[a1+a2]]A).

I Falln6=⊥,m=⊥: analog.

(16)

Beweis ∀aAexp.∀nZ.∀σ. ha, σi →Aexpn(σ,n)[[a]]A

ha, σi →Aexp⊥ ⇔σ6∈Dom([[a]]A) Induktionsschritte

I aa1/a2:

1 Fall:m6=undn6=⊥,n6= 0 Es gilt

[[a1/a2]]A={(σ0,u/v)|(σ0,u)[[a1]]A,0,v)[[a2]]Aundv 6= 0}

Induktionsannahme gilt füra1unda2. ha1/a2, σi →KS Aexpm/n

(Def.h.,.i→Aexp.)

ha1, σi →Aexpm

&

ks IA fuera1 +3(σ,m)[[a1]]A

&

ha2, σi →Aexpnks IA fuera2 +3(σ,n)[[a2]]A

KS

(Def.[[.]]A)

(17)

Beweis ∀aAexp.∀nZ.∀σ. ha, σi →Aexpn(σ,n)[[a]]A

ha, σi →Aexp⊥ ⇔σ6∈Dom([[a]]A)

Induktionsschritte

I aa1/a2: Induktionsannahme gilt füra1 und a2.

2 Fall:

ha1, σi →Aexpm ha2, σi →Aexpn m=⊥,n= 0 odern= ha1/a2, σi →Aexp

I Falln= 0.

Aus Induktionsannahme folgt, dassha2, σi →Aexp0(σ,0)[[a2]]A. Weiterhin gilt

[[a1/a2]]A={(σ0,u/v)|(σ0,u)[[a1]]A,0,v)[[a2]]Aundv6= 0}

Somit giltσ6∈Dom([[a1/a2]]A).

I Falln=⊥,m=⊥: analog wie bei +

q.e.d.

(18)

Operationale vs. denotationale Semantik

Operational

hb, σi →Bexpfalse|true| ⊥

Denotational [[b]]B

1 h1, σi →Bexptrue {(σ,true)|σ∈Σ}

0 h0, σi →Bexp false {(σ,false)|σ ∈Σ}

(19)

Operationale vs. denotationale Semantik

Operat. hb, σi →Bexp t Denotational [[b]]B

a0 ==a1

ha0, σi →Aexp n ha1, σi →Aexp m n,m6=⊥ n=m ha0 ==a1, σi →Bexp true

ha0, σi →Aexp n ha1, σi →Aexp m n,m6=⊥ n6=m ha0==a1, σi →Bexpfalse

ha0, σi →Aexp n ha1, σi →Aexp m n=⊥oder m=⊥ ha0==a1, σi →Bexp

{(σ,true)|σ ∈Σ,

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

{(σ,false)|σ ∈Σ,

(σ,n0)∈[[a0]]A, (σ,n1)∈[[a1]]A, n06=n1 }

a1<a2 analog

(20)

Operationale vs. denotationale Semantik

Operational ha, σi →Bexp b Denotational [[b]]B

b1&&b0

hb1, σi →Bexpfalse

hb1&&b2, σi →false {(σ,false)|(σ,false)∈ [[b1]]B}

hb1, σi →Bexp true hb2, σi →Bexpb

hb1&&b2, σi →b {(σ,b)|(σ,true)∈ [[b1]]B,(σ,b)∈[[b2]]B} hb1, σi →Bexp

hb1&&b2, σi → ⊥

b1||b2 analog

!n . . .

(21)

Äquivalenz operationale und denotationale Semantik

I Für allebBexp, für allet ∈B, for alle Zuständeσ:

hb, σi →Bexpt ⇔(σ,t)∈[[b]]B

hb, σi →Bexp⊥ ⇔σ6∈Dom([[b]]B)

I Beweis Prinzip?

(22)

Äquivalenz operationale und denotationale Semantik

I Für allebBexp, für allet ∈B, for alle Zuständeσ:

hb, σi →Bexpt ⇔(σ,t)∈[[b]]B

hb, σi →Bexp⊥ ⇔σ6∈Dom([[b]]B)

I Beweis per struktureller Induktion überb (unter Verwendung der Äquivalenz für AExp). (Warum?)

(23)

Beweis ∀aBexp.∀nZ.∀σ. hb, σi →Bexpt (σ,t)[[b]]B

hb, σi →Bexp⊥ ⇔σ6∈Dom([[b]]B)

Induktionsanfänge I b0:

h0, σi →Bexp false

[[0]]A ={(σ0,false)|σ0 ∈Σ} ⇒(σ,false)∈[[b]]B

#

I b1:

h1, σi →Bexp true

[[1]]A ={(σ0,true)|σ0 ∈Σ} ⇒(σ,true)∈[[b]]B

#

(24)

Beweis ∀aBexp.∀nZ.∀σ. hb, σi →Bexpt (σ,t)[[b]]B

hb, σi →Bexp⊥ ⇔σ6∈Dom([[b]]B) Induktionsschritte

I bb1&&b2: Es gilt

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

∪ {(σ0,t2)|(σ0,true)∈[[b1]]B und (σ0,t2)∈[[b2]]B} Induktionsannahme gilt fürb1 und b2.

I Fallhb1, σi →Bexp hb1&&b2, σi →Bexp

KS

(Def.h.,.i→Bexp.)

hb1, σi →BexpksIA fuerb1+3σ6∈Dom([[b1]]B)

Def. [[.]]B

σ6∈[[b &&b ]]

(25)

Beweis ∀aBexp.∀nZ.∀σ. hb, σi →Bexpt (σ,t)[[b]]B

hb, σi →Bexp⊥ ⇔σ6∈Dom([[b]]B) Induktionsschritte

I bb1&&b2: Es gilt

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

∪ {(σ0,t2)|(σ0,true)∈[[b1]]B und (σ0,t2)∈[[b2]]B} Induktionsannahme gilt fürb1 und b2.

I Fallhb1, σi →Bexpfalse hb1&&b2, σi →Bexpfalse

KS

(Def.h.,.i→Bexp.)

hb1, σi →Bexpfalseks IA fuerb1 +3(σ,false)[[b1]]B Def. [[.]]B

(σ,false)[[b1&&b2]]B

(26)

Beweis ∀aBexp.∀nZ.∀σ. hb, σi →Bexpt (σ,t)[[b]]B

hb, σi →Bexp⊥ ⇔σ6∈Dom([[b]]B) Induktionsschritte

I bb1&&b2:

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

∪ {(σ0,t2)|(σ0,true)∈[[b1]]B und (σ0,t2)∈[[b2]]B} Induktionsannahme gilt fürb1 und b2.

I Fallhb1, σi →Bexptrue,hb2, σi →Bexp false hb1&&b2, σi →KS Bexpfalse

(Def.h.,.i→Bexp.)

hb1, σi →Bexp true

&

ks IA fuerb1 +3(σ,true)[[b1]]B

&

hb2, σi →Bexpfalseks IA fuerb2 +3(σ,false)[[b2]]B

Def. [[.]]B

(27)

Beweis ∀aBexp.∀nZ.∀σ. hb, σi →Bexpt (σ,t)[[b]]B

hb, σi →Bexp⊥ ⇔σ6∈Dom([[b]]B) Induktionsschritte

I bb1&&b2:

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

∪ {(σ0,t2)|(σ0,true)∈[[b1]]B und (σ0,t2)∈[[b2]]B} Induktionsannahme gilt fürb1 und b2.

I Fallhb1, σi →Bexptrue,hb2, σi →Bexp true hb1&&b2, σi →Bexptrue

KS

(Def.h.,.i→Bexp.)

hb1, σi →Bexptrue

&

ks IA fuerb1 +3(σ,true)[[b1]]B

&

hb2, σi →Bexptrueks IA fuerb2 +3(σ,true)KS[[b2]]B

Def. [[.]]B

(σ,true)[[b1&&b2]]B

(28)

Beweis ∀aBexp.∀nZ.∀σ. hb, σi →Bexpt (σ,t)[[b]]B

hb, σi →Bexp⊥ ⇔σ6∈Dom([[b]]B) Induktionsschritte

I bb1&&b2:

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

∪ {(σ0,t2)|(σ0,true)∈[[b1]]B und (σ0,t2)∈[[b2]]B} Induktionsannahme gilt fürb1 und b2.

I Fallhb1, σi →Bexptrue,hb2, σi →Bexp hb1&&b2, σi →KS Bexp

(Def.h.,.i→Bexp.)

hb1, σi →Bexp true

&

ks IA fuerb1 +3(σ,true)[[b1]]B

&

hb2, σi →Bexpks IA fuerb2 +3σ6∈Dom([[b2]]B)

Def. [[.]]B

(29)

Beweis ∀aBexp.∀nZ.∀σ. hb, σi →Bexp t (σ,t)[[b]]B

hb, σi →Bexp ⊥ ⇔σ6∈Dom([[b]]B)

I (σ,true)∈[[b1&&b2]]BDef. [[.]]ks +3B(σ,true)∈[[b1]]B und (σ,true)∈[[b2]]B

I Siehe Folie 24

I

(σ,false)∈[[b1&&b2]]BDef. [[.]]ks +3B (σ,false)∈[[b1]]B oder

(σ,true)∈[[b1]]B und (σ,false)∈[[b2]]B

I Siehe Folie 22 und 23

I σ6∈Dom([[b1&&b2]]B)Def. [[.]]ks +3B σ6∈Dom([[b1]]B) oderσ6∈Dom([[b2]]B) I Siehe Folie 21 und 25

Somit gilt dann auch⇔ q.e.d.

(30)

Arbeitsblatt 4.2:

Beweis Induktionsanfang 1. ha1==a2, σi →Bexpfalse(σ,false)[[a1==a2]]B 2. ha1==a2, σi →Bexptrue(σ,true)[[a1==a2]]B 3. ha1==a2, σi →Bexp⊥ ⇔σ6∈Dom([[a1==a2]]B)

Beweist obige drei Aussagen unter Verwendung des für arithmetische Ausdrücke geltenden Lemmas

∀a∈Aexp.∀n∈Z.∀σ. ha, σi →Aexp n⇔(σ,n)∈[[a]]A

∧ hb, σi →Bexp⊥ ⇔σ 6∈Dom([[a]]A)

(31)

Beweis 1. ha1==a2, σi →Bexp false(σ,false)[[a1==a2]]B 2. ha1==a2, σi →Bexp true(σ,true)[[a1==a2]]B 3. ha1==a2, σi →Bexp ⊥ ⇔σ6∈Dom([[a1==a2]]B)

[[a1 ==a2]]B ={(σ0,true)|(σ0,m)∈[[a1]]A,0,n)∈[[a2]]A,m=n}

∪ {(σ0,false)|(σ0,m)∈[[a1]]A,0,n)∈[[a2]]A,m6=n}

I Fallha1, σi →Bexp m,hb2, σi →Bexpn,m=n ha1 ==a2, σi →Bexptrue

KS

(Def.h.,.i→Bexp.)

ha1, σi →Bexp m

&

ks IA fuera1 +3(σ,m)∈[[a2]]A

&

ha2, σi →Bexp mks IA fuera2 +3(σ,m)KS [[a1]]A Def. [[.]]B

(σ,true)[[a ==a ]]

(32)

Beweis 1. ha1==a2, σi →Bexp false(σ,false)[[a1==a2]]B 2. ha1==a2, σi →Bexp true(σ,true)[[a1==a2]]B 3. ha1==a2, σi →Bexp ⊥ ⇔σ6∈Dom([[a1==a2]]B)

[[a1 ==a2]]B ={(σ0,true)|(σ0,m)∈[[a1]]A,0,n)∈[[a2]]A,m=n}

∪ {(σ0,false)|(σ0,m)∈[[a1]]A,0,n)∈[[a2]]A,m6=n}

I Fallha1, σi →Bexp m,hb2, σi →Bexpn,m6=n ha1 ==a2, σi →Bexpfalse

KS

(Def.h.,.i→Bexp.)

ha1, σi →Aexp m

&

ksLemma fuera1 +3(σ,m)∈[[a1]]A

&

ha2, σi →Aexp nks Lemma fuera2 +3(σ,n)KS [[a2]]A Def. [[.]]B

(33)

Beweis 1. ha1==a2, σi →Bexp false(σ,false)[[a1==a2]]B 2. ha1==a2, σi →Bexp true(σ,true)[[a1==a2]]B 3. ha1==a2, σi →Bexp ⊥ ⇔σ6∈Dom([[a1==a2]]B)

[[a1 ==a2]]B ={(σ0,true)|(σ0,m)∈[[a1]]A,0,n)∈[[a1]]A,m=n}

∪ {(σ0,false)|(σ0,m)∈[[a1]]A,0,n)∈[[a2]]A,m6=n}

I Fallha1, σi →Bexp ⊥:

ha1 ==a2, σi →Bexp

KS

(Def.h.,.i→Bexp.)

ha1, σi →Aexp

&

ks Lemma fuera+3σ6∈Dom([[a1]]A)

Def. [[.]]B

σ6∈Dom([[a1 ==a2]]B)

(34)

Beweis 1. ha1==a2, σi →Bexp false(σ,false)[[a1==a2]]B 2. ha1==a2, σi →Bexp true(σ,true)[[a1==a2]]B 3. ha1==a2, σi →Bexp ⊥ ⇔σ6∈Dom([[a1==a2]]B)

[[a1 ==a2]]B ={(σ0,true)|(σ0,m)∈[[a1]]A,0,n)∈[[a1]]A,m=n}

∪ {(σ0,false)|(σ0,m)∈[[a1]]A,0,n)∈[[a2]]A,m6=n}

I Fallha2, σi →Bexp ⊥:

ha1 ==a2, σi →Bexp

KS

(Def.h.,.i→Bexp.)

ha2, σi →Aexp

&

ks Lemma fuera+3σ6∈Dom([[a2]]A)

Def. [[.]]B

σ6∈Dom([[a1 ==a2]]B)

(35)

Beweis 1. ha1==a2, σi →Bexp false(σ,false)[[a1==a2]]B 2. ha1==a2, σi →Bexp true(σ,true)[[a1==a2]]B 3. ha1==a2, σi →Bexp ⊥ ⇔σ6∈Dom([[a1==a2]]B)

[[a1 ==a2]]B ={(σ0,true)|(σ0,m)∈[[a1]]A,0,n)∈[[a1]]A,m=n}

∪ {(σ0,false)|(σ0,m)∈[[a1]]A,0,n)∈[[a2]]A,m6=n}

I σ6∈Dom([[a1 ==a2]]B)Def. [[.]]ks B+3 σ 6∈Dom([[a1]]A) oderσ 6∈

Dom([[a2]]A)

I Siehe die beiden Fälle auf den beiden vorangegangenen Folien.

(36)

Operationale vs. denotationale Semantik

Operational hc, σi →Stmt σ0|⊥ Denotational [[c]]C

{ } h{}, σi →Stmt σ [[{ }]]C =Id

c1;c2

hc1, σi →Stmt σ0 6=⊥ hc2, σ0i →Stmt σ00 hc1;c2, σi →Stmt σ00

hc1, σi →Stmt ⊥ hc1;c2, σi →Stmt

[[c1]]C◦[[c2]]C

x =a ha, σi →Aexp n hx =a, σi →Stmt σ[n/x]

ha, σi →Aexp ⊥ hx =a, σi →Stmt

{(σ, σ[n/x])|(σ,n)∈[[a]]A}

(37)

Operationale vs. denotationale Semantik

Operational hc, σi →Stmt σ0|⊥

Denotational [[c]]C

if(b) c0

hb, σi →Bexp ⊥ hc, σi →Stmt ⊥ hb, σi →Bexptrue

hc0, σi →Stmt σ0 hc, σi →Stmt σ0

{(σ, σ0)|(σ,true)∈ [[b]]B,(σ, σ0)∈[[c0]]C}

else c1

hb, σi →Bexp false hc1, σi →Stmt σ0

hc, σi →Stmt σ0 {(σ, σ0)|(σ,false)∈ [[b]]B,(σ, σ0)∈[[c1]]C}

(38)

Operationale vs. denotationale Semantik

Operational hc, σi →Stmt σ0 | ⊥

Denotational [[c]]C

while(b) c

| {z }

w

hb, σi →Bexpfalse hw, σi →Stmt σ

hb, σi →Bexp⊥ hw, σi →Stmt

hb, σi →Bexptrue hc, σi →Stmt σ0 6=⊥ hw, σ0i →Stmt σ00 hw, σi →Stmt σ00

fix(Γ)

hb, σi →Bexptrue hc, σi →Stmt ⊥ hw, σi →Stmt

mit

Γ(ϕ) = {(σ, σ0)|(σ,true)∈[[b]]B,(σ, σ0)∈[[c]]Cϕ}

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

(39)

Äquivalenz operationale und denotationale Semantik

I Für allecStmt, für alle Zuständeσ, σ0:

hc, σi →Stmt σ0⇔(σ, σ0)∈[[c]]C

hc, σi →Stmt ⊥ ⇒σ 6∈Dom([[c]]C)

I ⇒Beweis Prinzip?

I ⇐Beweis Prinzip?

(40)

Operationale Semantik: C0 Programme

I Stmtc ::=Idt=Exp|if (b) c1 else c2|while(b)c |c1;c2| { } Regeln:

h{ }, σi →Stmt σ ha, σi →Aexp n∈Z

hx =a, σi →Stmt σ[n/x]

ha, σi →Aexp ⊥ hx =a, σi →Stmt ⊥ hc1, σi →Stmt σ0 6=⊥ hc2, σ0i →Stmt σ006=⊥

hc1;c2, σi →Stmt σ00 hc1, σi →Stmt ⊥ hc1;c2, σi →Stmt

hc1, σi →Stmt σ0 6=⊥ hc2, σ0i →Stmt ⊥ hc1;c2, σi →Stmt

(41)

Operationale Semantik: C0 Programme

I Stmtc ::=Idt=Exp|if (b) c1 else c2|while(b)c |c1;c2| { } Regeln:

hb, σi →Bexptrue hc1, σi →Stmt σ0 hif(b) c1 else c2, σi →Stmt σ0 hb, σi →Bexpfalse hc2, σi →Stmt σ0

hif(b) c1 else c2, σi →Stmt σ0 hb, σi →Bexp

hif(b) c1 else c2, σi →Stmt

(42)

Operationale Semantik: C0 Programme

I Stmtc ::=Idt=Exp|if (b) c1 else c2|while(b)c |c1;c2| { } Regeln:

hb, σi →Bexpfalse hwhile (b) c, σi →Stmt σ

hb, σi →Bexp true hc, σi →Stmt σ0 hwhile(b) c, σ0i →Stmt σ00 hwhile (b) c, σi →Stmt σ00

hb, σi →Bexptrue hc, σi →Stmt ⊥ hwhile (b) c, σi →Stmt

hb, σi →Bexp⊥ hwhile(b) c, σi →Stmt

(43)

Ableitungstiefe für Programme

I Die Ableitungstiefe einer Programmauswertung mittels Regeln der operationaler Semantik ist die Anzahl der Regelanwendungenmit Conclusion der Form h., .i →Stmt ..

...

Prämisse1 . . . ... Prämissen Conclusion

(44)

Operationale Semantik: C0 Programme

I Stmtc ::=Idt=Exp|if (b) c1 else c2|while(b)c |c1;c2| { } Regeln:

hc1, σi →Stmtσ06= hc2, σ0i →Stmtσ006=

hc1;c2, σi →Stmtσ00

hb, σi →Bexptrue hc1, σi →Stmtσ0 hif(b)c1 else c2, σi →Stmtσ0

hb, σi →Bexpfalse hc2, σi →Stmtσ0 hif(b)c1 else c2, σi →Stmtσ0

hb, σi →Bexptrue hc, σi →Stmtσ0 hwhile(b)c, σ0i →Stmtσ00

hwhile(b)c, σi →Stmtσ00

hb, σi →Bexptrue hc, σi →Stmt

Programmstruktur

&

&

&

&

Referenzen

ÄHNLICHE DOKUMENTE

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,

[r]

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

sie die gleichen

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

[r]

Vorlesung 5 vom 04.05.17: Äquivalenz der Operationalen und Denotationalen Semantik. Serge Autexier,