# Exercises 05

We call relation functional if , if and then . For each of the following statements either give a counterexample or prove it:

- if is functional,
- if is functional,
- for any ,
- if is functional,

### Rules for guarded commands

see sav07_homework_4 and its solution

Using the previously defined wp and as the set of good states, define the relation on commands by

Note that this means that if we prove correct, then is correct as well.

**3.** Is a partial order? Prove or give a counterexample.

Define as .

**4.** Show

In other words, holds iff for every execution of from a state there is either the same execution in , or can produce an error.

**5.** Define command skip as assert(True). Prove

assume(F) skip assert(F)

assert(F); assume(F) assert(F)

assume(F); assert(F) assume(F)

**6.** Prove the following shunting rules:

**7.** Let P be a guarded language program containing a statement c1. Suppose that

assume(pre); c1; assert(post) havoc(x)

Then show that if c2 is given by

assert(pre); havoc(x); assume(post)

then

P P[c1:=c2]

where P[c1:=c2] denotes the result of substuting c2 instead of c1.