Weakest Preconditions

Programming Theory
Tutorial 2: Weakest Preconditions
October 1, 2009
Example 1 Prove
wp
wp
(S ; skip;
(S ; skip;
P
) =
P
wp
(S;
P
)
)
f Definition of sequential composition g
=
(S; wp (skip; P ))
Definition of skip g
wp
f
=
wp
(S;
P
2
)
Example 2 Prove that the expression
IF1 :
if
!
!
B1
2
B2
fi;
S1
S2
S3
is equivalent to the expression
IF2 :
if
2
B1
B2
fi
!
!
S1
S2
;
;
S3
S3
Solution Prove that
wp
wp
(IF1 ;
=
S3 ; R
=
S3 ; R
) = wp (IF2 ;
R
)
)
f Definition of sequential composition g
wp
=
(IF1 ;
(IF1 ;
wp
(S3 ;
R
))
f Definition of the alternative command g
( 1 _ 2) ^ ( 1 )
( 1
( 3
))) ^ ( 2 )
f Definition of sequential composition g
( 1 _ 2) ^ ( 1 )
( 1; 3
)) ^ ( 2 )
(
B
B
B
wp
S ; wp
B
B
B
wp
S
S ; R
S ; R
1
B
B
wp
wp
S2
;
(S2 ;
wp
S3 ; R
))
(S3 ;
R
)))
f Definition of the alternative command g
(IF2
) 2
=
wp
; R
Example 3 Determine the weakest
such that
P
f g
P
IF :
if
f
fi
x
!
!
T
2
T
x
x
:= 1
:= 1
= 1g
holds.
Solution The weakest precondition of IF is
wp
(IF;
x
F
(false).
= 1)
f Definition of the alternative command g
( _ ) ^ ( )
(“ := 1”
= 1)) ^ ( )
f Definition of assignment g
( _ ) ^ ( ) 1 = 1) ^ ( ) 1 = 1)
f Left identity of ) g
( _ ) ^ 1=1 ^ 1=1
f Arithmetic g
( _ ) ^
^
f and-simplification g
2
=
=
=
=
=
T
T
T
T
T
T
T
T
T
T
T
wp
x
; x
T
wp
(“x :=
T
F
F
A Proof Method:
To prove that
1.
P
2.
P
where
f g IF f g is correct, prove the following points:
P
)
^ )
R
BB
Bi
BB
(
wp Si ; R
) for all
i
st1in
= B1 _ B2 _ : : : _ Bn
Example 4 Prove the following program correct.
P :
IF :
R
where
m
:
f _ g
if
!
2 !
x
f
fi
m
y
x
z
y
z
m
z
y
m
:=
:=
y
z
= min(x; y; z )g
= min(x; y; z ) is defined as
(m = x _ m = y _ m = z ) ^ m x ^ m y ^ m z
2
1”;
x
= 1))
Solution:
Prove
1. (x y _ x z )
2. ((x
3. ((x
)( _ )
_ ) ^ ) ) (“
_ ) ^ ) ) (“
z
y
z
y
y
x
z
z
y
wp
m
:=
y ; m
y
x
z
z
y
wp
m
:=
z ; m
Proof of 1:
Assume
x
_ y
x
”
= min(x; y; z ))
”
= min(x; y; z ))
z
z
_ = f Arithmetic g
2
y
z
y
T
Lemma 1:
((x y _ x z ) ^ y
z
)
)
y
= min(x; y; z )
Proof of Lemma 1:
Assume
Assume
y
x
y
_ y
x
z
z
= min(x; y; z )
=
f Definition of min g
( = _ = _ = )^ ^ ^ f Identity+ or-simplification g
^ ^ ^ f Arithmetic g
^ ^ ^ f Assumption: “ ” g
^ ^ ^
f and-simplification g
f Left identity of ) g
) f Assumption: “ _ ” g
( _ ) ) f Proof by cases g
) ^
) f Arithmetic: “ = ” and Lemma 2: “ )
y
=
=
=
=
=
x
=
=
y
y
z
T
y
x
y
y
T
y
x
T
y
z
y
z
T
y
x
y
x
T
=
y
y
T
y
y
y
y
z
z
x
x
y
x
y
y
x
x
z
y
x
x
z
y
y
y
x
x
z
x
x
T
^
) z
y
T
x
x
x
y
x
3
y
p
p
”
g
f and-simplification g
( ^ ) ) f Assumption: “ ” g
( ^ ) ) f Arithmetic g
( ^ ) ) f Arithmetic: “( ^ 2
=
T
=
x
z
y
y
=
=
x
z
y
z
x
z
y
x
y
z
z
x
y
x
y
z
z
x
) )
y
”
x
g
T
Proof of 2:
((x y _ x z )
=
^ ) ) (“ := ” = min(
f Definition of assignment g
(( _ ) ^ ) ) = min(
)
f Arithmetic: “ = ” g
(( _ ) ^ ) ) = min(
)
f Lemma 1: “(( _ ) ^ ) ) = min(
2
x
=
x
y
y
x
wp
z
z
y
x
=
y
z
y
z
z
x
m
y
z
y
z
y
x
y ; m
x; y; z
))
x; y; z
y
y
z
x; y; z
y
z
)”
g
= min(x; y; z )”
g
y
x; y; z
T
Proof of 3:
((x y _ x z ) ^ z y ) ) wp (“m :=
= f Definition of assignment g
”
z ; m
= min(x; y; z ))
((x y _ x z ) ^ z y ) ) z = min(x; y; z )
= f Commutativity and “min(x; y; z ) = min(x; z; y )”
((x z _ x y ) ^ z
=
f Lemma 1: “((
2
x
) ) = min(
_ )^ ) )
y
y
z
x
z
x; z; y
y
z
g
)
y
T
Example 5 Find
IF :
B1
f
and
x
if
2
f
fi
x
B2
such that
+ 2 y = zg
B1
B2
+2y
!
!
x; y
x; y
< z
:= y; x
:= 2 x + y;
x
+y
1
g
holds.
Solution Under the assumption
dition for the assignments are
wp
wp
x
+ 2 y = z we see that the weakest precon-
(“x; y :=
(“x; y := 2 x + y;
x
+y
”
y; x ; x
1”;
4
x
+2y
+2y
< z
)
=
x < y
< z
)
=
y
2<x
which we then can use as
and
B1
B2
respectively.
Prove
1.
x
+2y =z
2. (x + 2 y = z
3. (x+2y = z
Proof of 1:
Assume
x
^
)
^
y
(x < y
x < y
)
2 < x)
_
)
)
2 < x)
y
wp
wp
(“x; y :=
+2y
”
y; x ; x
(“x; y := 2 x + y;
x
< z
+y
)
1”;
+2y =z
x < y
=
_ 2
f Exercise g
2
y
< x
T
Proof of 2:
Assume
Assume
x
+2y =z
x < y
(“x; y := y; x”; x + 2 y < z )
= f Definition of multiple assignment
wp
+2
f Assumption: “ + 2 +2
+2
f Arithmetic g
2
+
f Arithmetic g
y
=
x < z
x
y
=
x < x
x < x
=
= z”
g
y
y
x < y
=
y
g
f Assumption: “
2
x < y
”
g
T
Proof of 3:
Assume
Assume
x
y
+2y =z
2<x
wp
(“x; y := 2 x + y;
=
y
=
+y
1”;
x
+2y
f Definition of multiple assignment g
2 + +2(
+
1)
f Arithmetic g
3
2
f Assumption: “ + 2 = ” g
3
2
+2
x
=
x
y
x
y
< z
x
y
< z
< x
y
y
5
z
< z
)
x
+2y
< z
)
=
f Arithmetic g
y
=
2<x
f Assumption: “
2
y
2 < x”
g
T
Note B1 = x < y and B2 = y 2 < x is not a unique solution. We could use
e.g. B1 = x < y and B2 = y 1 < x instead.
6
Exercise 1 Arrays f [0 : n] and g [0 : m] are alphabetically ordered lists of
names of people. It is known that at least one name is in both lists. Let X
represent the first (in alphabetic order) such name. Prove the program fRgS fRg
correct. Assume i and j are within the array bounds.
S
:
if
!
!
!
[ ] < g [j ]
[ ] = g [j ]
f [i] > g [j ]
f i
2
2
f i
fi
R
:
fordered(
f
^
[0 : n])
:= i + 1
skip
j := j + 1
i
^
ordered(g [0 : m])
[]X
f i
^
[ ] Xg
g j
You may use the following lemma:
ordered(b[0 : n])
^
)
[]<X
b i
[ + 1] X
b i
Solution: Prove
1.
R
2.
R
3.
R
4.
R
) ( [] [ ] _
^ [] [ ] )
^ []= [ ] )
^ [] [ ] )
f i
< g j
_
[ ] = g [j ]
f i
f i
< g j
wp
(“i :=
f i
g j
wp
(“skip”;
f i
> g j
wp
(“j :=
[ ] > g [j ])
f i
+ 1”;
i
j
R
R
)
)
+ 1”;
R
)
Hint: do them in ascending order of difficulty: first 3, then 1, then 2. The
proof of 4 is completely analogous to 2.
Proof of 1:
Assume
R
[ ] < g [j ]
f i
=
_
f Arithmetic g
[ ] [ ]_ [ ]
f Arithmetic g
2
f i
=
[ ] = g [j ]
f i
g j
f i
_
[ ] > g [j ]
f i
[ ]
> g j
T
Proof of 2:
Assume
Assume
Assume
Assume
Assume
ordered(f [0 : n])
ordered(g [0 : m])
f [i] X
g [j ] X
f [i] < g [j ]
(“i := i + 1”; ordered(f [0 : n])
= f Definition of assignment g
wp
ordered(f [0 : n])
^
^
ordered(g [0 : m])
ordered(g [0 : m])
7
^
^
[ + 1] X
f i
[]X
f i
^
^
[ ]X
g j
[ ] X ))
g j
=
f Assumptions: “ordered( [0 : ])”, “ordered( [0 : ])”, and “ [ ] and and-simplification g
[ + 1] f Left identity of ) g
) [ + 1] f and-simplification g
^ ) [ + 1] f Conditional Substitution: Assumptions: “ [ ] [ ]” and “ [ ] and Arithmetic: “(
^ ))
= ”g
^ []
) [ + 1] f Assumption: “ordered( [0 : ])” g
ordered( [0 : ]) ^ [ ]
) [ + 1] f Lemma g
2
f
f i
=
f i
T
=
=
T
f i
f i
< X
g j
f i
< g j
X
”
X
f i
y
n
z
x < z
g j
X
”
T
X
f
f
=
m
X
x < y
T
g
X
T
=
n
f i
n
< X
f i
X
T
Proof of 3:
Assume
Assume
R
[ ] = g [j ]
f i
wp
(“skip”;
=
R
)
f Definition of skip g
R
=
f Assumption: “
2
R
”
g
T
Proof of 4:
Assume
Assume
Assume
Assume
Assume
wp
(“j :=
=
ordered(f [0 : n])
ordered(g [0 : m])
f [i] X
g [j ] X
f [i] > g [j ]
j
+ 1”; ordered(f [0 : n])
T
=
n
g
f
g j
=
ordered(g [0 : m])
^
[]X
f i
^
[ ] X)
g j
f Definition of assignment g
ordered( [0 : ]) ^ ordered( [0 : ]) ^ [ ] ^ [ + 1] f Assumptions: “ordered( [0 : ])”, “ordered( [0 : ])”, and “ [ ] and and-simplification g
[ + 1] f Left identity of ) g
) [ + 1] f and-simplification g
^ ) [ + 1] f
=
^
T
m
n
T
X
g j
X
g
X
g j
f i
X
8
g j
m
X
f i
X
”
=
f Conditional Substitution: Assumptions: “ [ ] [
Arithmetic “(
)^( ) ) (
)= ”g
^ []
) [ + 1] f Assumption: “ordered( [0 : ])” g
ordered( [0 : ]) ^ [ ]
) [ + 1] f Lemma g
2
f i
x < y
T
=
g j
< X
g j
m
g j
z
x < z
T
X
g
g
=
y
< X
m
g j
T
9
> g j
X
]” and “f [i] X ” and