• Keine Ergebnisse gefunden

Korrekte Software: Grundlagen und Methoden Vorlesung 4 vom 23.04.19 Äquivalenz der Operationalen und Denotationalen Semantik

N/A
N/A
Protected

Academic year: 2022

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

Copied!
20
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Korrekte Software: Grundlagen und Methoden Vorlesung 4 vom 23.04.19

Äquivalenz der Operationalen und Denotationalen Semantik

Serge Autexier, Christoph Lüth

Universität Bremen

Sommersemester 2019

(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

I Funktionsaufrufe und das Framing-Problem I Ausblick und Rückblick

(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)∈ A[[a1]],(σ,m)∈ A[[a2]]}

ha1, σi →Aexp n ha2, σi →Aexp m n=⊥oderm=⊥ ha ◦a , σi →

(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)∈ A[[a1]],(σ,m)∈ A[[a2]],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)

Ä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?)

(7)

Operationale vs. denotationale Semantik

Operational hb, σi →Bexp 0|1 Denotational B[[b]]

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

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

(8)

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 →Bexp1

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

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

{(σ,1)|σ∈Σ,

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

{(σ,0)|σ∈Σ,

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

a1<=a2 analog

(9)

Operationale vs. denotationale Semantik

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

b1&&b0

hb1, σi →Bexp0

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

hb1, σi →Bexp1 hb2, σi →Bexpb

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

hb1, σi →Bexp⊥ hb1&&b2, σi → ⊥

b1||b2 analog

!n . . .

(10)

Ä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?

(11)

Ä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?)

(12)

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

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

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

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

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

(13)

Operationale vs. denotationale Semantik

Operational hc, σi →Stmt σ0|⊥

Denotational C[[c]]

if(b) c0

hb, σi →Bexp ⊥ hc, σi →Stmt ⊥ hb, σi →Bexp 1 hc0, σi →Stmt σ0

hc, σi →Stmt σ0

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

else c1

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

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

(14)

Operationale vs. denotationale Semantik

Operational hc, σi →Stmt σ0|⊥

Denotational C[[c]]

while(b) c

| {z }

w

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

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

hb, σi →Bexp1 hc, σi →Stmt σ06=⊥ hw, σ0i →Stmt σ00 hw, σi →Stmt σ00

fix(Γ)

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

mit

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

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

(15)

Ä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?

(16)

Ä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 per Induktion über die Ableitung in der operationalen Semantik (Warum?)

I ⇐Beweis Prinzip?

(17)

Ä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 per Induktion über die Ableitung in der operationalen Semantik (Warum?)

I ⇐Beweis per struktureller Induktion überc (Verwendung der Äquivalenz für arithmetische und boolsche Ausdrücke). Für die While-Schleife Rückgriff auf Definition des Fixpunkts und Induktion über die Teilmengen Γi(∅) des Fixpunkts. (Warum?)

(18)

Knackpunkt

C[[w]] =fix(Γ) = Γ(fix(Γ)) = Γ([

i≥0

Γi(∅)) = [

i≥0

Γ(Γi(∅))

=[

i≥0

{(σ, σ0)|(σ,1)∈ B[[b]],(σ, σ00)∈ C[[c]],00, σ0)Γi(∅)}

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

mitw while(b)c Induktion überi0 {(σ, σ0)| (σ,1)∈ B[[b]]

| {z }

hb,σi→Bexp1

, (σ, σ00)∈ C[[c]]

| {z }

(strukt.IH)hc,σi→Stmtσ0

, 00, σ0)Γi(∅)

| {z }

(≤i IH)hw,σ00i→Stmtσ0

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

| {z }

hw,σi→Stmtσ

}

hw, σi →Stmtσ0

(19)

Ä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 Gegenbeispiel fürin der zweiten Aussage: wählecwhile(1){}:

C[[c]] =aberhc, σi →Stmtgilt nicht (sondern?).

(20)

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

I Funktionsaufrufe und das Framing-Problem I Ausblick und Rückblick

Referenzen

ÄHNLICHE DOKUMENTE

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,

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