Top Banner
Programming Language Semantics Axiomatic Semantics Chapter 6
30

Programming Language Semantics Axiomatic Semantics

Jan 02, 2016

Download

Documents

ariana-snider

Programming Language Semantics Axiomatic Semantics. Chapter 6. Motivation. What do we need in order to prove that the program does what it supposed to do?. Specify the required behavior Compare the behavior with the one obtained by the denotational/operational semantics - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Programming Language Semantics Axiomatic Semantics

Programming Language Semantics

Axiomatic Semantics

Chapter 6

Page 2: Programming Language Semantics Axiomatic Semantics

Motivation• What do we need in order to prove that the program

does what it supposed to do?

• Specify the required behavior

• Compare the behavior with the one obtained by the denotational/operational semantics

• Develop a proof system for showing that the program satisfies a requirement

• Mechanically use the proof system to show correctness

• The meaning of a program is a set of verification rules

Page 3: Programming Language Semantics Axiomatic Semantics

Plan

• The basic idea

• An assertion language

• Semantics of assertions

• Proof rules

• An example

• Soundness

• Completeness

Page 4: Programming Language Semantics Axiomatic Semantics

Example Program

S:=0

N := 1

while (N=101) do

S := S + N ;

N :=N+1

N=101

S=∑1m100 m

Page 5: Programming Language Semantics Axiomatic Semantics

Example Program

S:=0

{S=0}

N := 1

{S=0 N=1}

while (N=101) do

S := S + N ;

N :=N+1

{N=101 S=∑1m100 m}

Page 6: Programming Language Semantics Axiomatic Semantics

Example ProgramS:=0

{S=0}

N := 1

{S=0 N=1}

while (N=101) do

S := S + N ;

N :=N+1

{N=101 S=∑1m100 m}

Page 7: Programming Language Semantics Axiomatic Semantics

Example ProgramS:=0

{S=0}

N := 1

{S=0 N=1}

while {1 N 101 S=∑1mN-1 m}(N=101) do

S := S + N ;

{1 N < 101 S=∑1mN m}

N :=N+1

{N=101 S=∑1m100 m}

Page 8: Programming Language Semantics Axiomatic Semantics

Partial Correctness

• {P}c{Q}– P and Q are assertions

(extensions of Boolean expressions)– c is a command– For all states which satisfies P, if the

execution of c from state terminates in state ’, then ’ satisfies Q

• {true}while true do skip{false}

Page 9: Programming Language Semantics Axiomatic Semantics

Total Correctness

• [P]c[Q]– P and Q are assertions

(extensions of Boolean expressions)– c is a command– For all states which satisfies P,

• the execution of c from state must terminates in a state ’

’ satisfies Q

Page 10: Programming Language Semantics Axiomatic Semantics

Formalizing Partial Correctness

A– A is true in

• {P} c {Q} , ’∑. (P & <c, > ’ ) ’ Q ∑. (P & C c) C c Q

• Convention for all A A

, ’∑. P C c Q

Page 11: Programming Language Semantics Axiomatic Semantics

The Assertion Language

• Extend Bexp

• Allow quantifications i: … i: …

i. k=il

• Import well known mathematical concepts– n! n (n-1) 2 1

Page 12: Programming Language Semantics Axiomatic Semantics

The Assertion LanguageAexpv

a:= n | X | i | a0 + a1 | a0 - a1 | a0 a1

Assn

A:= true | false | a0 = a1 | a0 a1 | A0 A1 | A0 A1 | A |

A0 A1 | i. A | i. A

Page 13: Programming Language Semantics Axiomatic Semantics

Example

while (M=N) do

if M N

then N := N – M

else M := M - N

Page 14: Programming Language Semantics Axiomatic Semantics

Free and Bound Variables• An integer variable is bound when it occurs in the

scope of a quantifier• Otherwise it is free• Examples i. k=iL (i+10077)i.j+1=i+3)

FV(n) = FV(X) = FV(i) = {i}

FV(a0 + a1)=FV(a0-a1)=FV(a0a1 ) = FV(a0) FV(a1)

FV(true)=FV(false)= FV(a0 = a1)=FV(a0 a1)= FV(a0) FV(a1)

FV(A0A1)=FV(A0A1) =FV(A0A1)= FV(A0) FV(A1)

FV(A)=FV(A)

FV(i. A)=FV(i. A)= FV(A) {i}

Page 15: Programming Language Semantics Axiomatic Semantics

Substitution

• Visualization of an assertion A ---i---i----

• Consider a “pure” arithmetic expression A[a/i] ---a---a---

n[a/i] = n X[a/i]=X

i[a/i] = a j[a/i] = j

(a0 + a1)[a/i] = a0[a/i] + a1/[a/i] (a0 - a1)[a/i] = a0[a/i] – a1[a/i]

(a0 a1 )[a/i]= a0[a/i] a1[a/i]

Page 16: Programming Language Semantics Axiomatic Semantics

Substitution

• Visualization of an assertion A ---i---i----

• Consider a “pure” arithmetic expression A[a/i] ---a---a---

true[a/i] = true false[a/i]=false

(a0 = a1)[a/i] = (a0/[a/i] = a1[a/i]) (a0 a1)[a/i] = (a0/[a/i] a1[a/i])(A0 A1)[a/i] = (A0[a/i] A1[a/i]) (A0 A1)[a/i]= (A0[a/i]A1[a/i])

(A0 A1)[a/i] = (A0[a/i] A1[a/i])[a/i] (A)[a/i] = (A[a/i]) (i. A)[a/i] =i. A (j. A)[a/i] = (i. A[a/i]) (i. A)[a/i] =i. A (j. A)[a/i] =(i. A[a/j])

Page 17: Programming Language Semantics Axiomatic Semantics

Location Substitution

• Visualization of an assertion A ---X---X----

• Consider a “pure” arithmetic expression A[a/X] ---a---a---

Page 18: Programming Language Semantics Axiomatic Semantics

Example Assertions

• i is a prime number

• i is the least common multiple of j and k

Page 19: Programming Language Semantics Axiomatic Semantics

Semantics of Assertions

• An interpretation I:intvar N• The meaning of Aexpv

– AvnI=n– AvXI= (X)– AviI= I(i)– Ava0+a1 I = Ava0I +Av a1 I– …

• For all a Aexp states and Interpretations I– Aa=AvaI

Page 20: Programming Language Semantics Axiomatic Semantics

Semantics of Assertions (II)

• I[n/i] change i in I to n• For I and , define I A by

structural induction I true I (a0 = a1) if Ava0 I= Ava1 I I (A B) if I A and I B I A if not I A I AB if (not I A) or I B)– I iA I[n/i] A for all nN– A

Page 21: Programming Language Semantics Axiomatic Semantics

Proposition 6.4

For all b Bexp states and Interpretations I Bb= true iff I b Bb= false iff not I b

Page 22: Programming Language Semantics Axiomatic Semantics

Partial Correctness Assertions

• {P}c{Q} – P, Q Assn and c Com

• For a state and interpretation I I {P}c{Q} if ( I P C c I Q)

• Validity– When , I {P}c{Q} we write

I {P}c{Q}

– When , and I I {P}c{Q} we write {P}c{Q}• {P}c{Q} is valid

Page 23: Programming Language Semantics Axiomatic Semantics

The extension of an assertion

AI { | I A }

Page 24: Programming Language Semantics Axiomatic Semantics

The extension of assertionsSuppose that (PQ)

Then for any interpretation I . I P I Q

PIQI

QI

PI

Page 25: Programming Language Semantics Axiomatic Semantics

The extension of assertionsSuppose that {P}c{Q}

Then for any interpretation I . I P C c I Q

C cPIQI

QI

PI

C c

Page 26: Programming Language Semantics Axiomatic Semantics

Hoare Proof Rules for Partial Correctness

{A} skip {A}

{B[a/X]} X:=a {B}

{P} c0 {C} {C} c1 {Q}

{P} c0;c1{Q}

{Pb} c0 {Q} {P b} c1 {Q}

{P} if b then c0 else c1{Q}

{Ib} c {I}

{I} while b do c{Ib}

P P’ {P’} c {Q’} Q’ Q

{P} c {Q}

Page 27: Programming Language Semantics Axiomatic Semantics

Example

while X > 0 do

Y := X Y;

X := X – 1

Page 28: Programming Language Semantics Axiomatic Semantics

Soundness

• Every theorem obtained by the rule system is valid {P} c {Q} {P} c {Q}

• The system can be implemented (HOL, LCF)– Requires user assistance

• Proof of soundness– Every rule preserves validity (Theorem 6.1)

Page 29: Programming Language Semantics Axiomatic Semantics

Completeness

• Every valid theorem can be derived by the rule system is valid {P} c {Q} {P} c {Q}

• But what about Gödel’s incompleteness?• Relative completeness

– Assume that every math theorem is valid

• Chapter 7– Uses Weakest Preconditions

Page 30: Programming Language Semantics Axiomatic Semantics

Summary

• Axiomatic semantics provides an abstract semantics

• Can be used to explain programming

• Can be automated

• More effort is required to make it practical