Programming Notes – Programming Solutions Part 1
Definition
1: cond.r.R = dom.r.R – dom.r.~R
(Reflexive
Property of Í)
WP.r.R Í WP.r.R
º(Weakest Precondition Axiom 2)
WP.r.R {r} R
End of Proof
WP.r.R = cond.r.R
Þ(A = B Þ B Í A)
cond.r.R Í WP.r.R
º(Weakest
Preconditon Axiom 2)
cond.r.R {r} R
End of Proof
Theorem 3: r is a function Þ dom.r.R {r} R
(Given r is a function, prove S(r) Þ dom.r.R {r} R)
(Theorem 2)
cond.r.R {r} R
dom.r.R {r} R
End of Proof
Theorem 4: (dom.r.R Ç
dom.r.~R = Æ) Þ dom.r.R {r}
R
(Given dom.r.R Ç dom.r.~R = Æ, prove dom.r.R {r} R)
(Theorem 2)
cond.r.R {r} R
dom.r.R {r} R
End of Proof
Theorem
5: R Í S Þ (P {r} R Þ P {r} S)
(given R Í S, show LHS Þ RHS)
P {r} R
P Í WP.r.R
P Í WP.r.R Ù (WP.r.R Í WP.r.S)
Þ(transitivity of Í)
P Í WP.r.S
P {r} S
End of Proof
Corollary: (R Í S Ù P r R) Þ P {r} S
(Theorem 5)
R Í S Þ (P {r} R Þ P {r} S)
º(shunting)
(R Í S Ù P {r} R) Þ P {r} S
End of Proof
Theorem
6: P Í Q Þ (Q {r} R Þ P {r} R)
(given P Í Q, show LHS Þ RHS)
Q {r} R
Q Í WP.r.R
º(Given, identity of Ù)
P Í Q Ù Q Í WP.r.R
Þ(transitivity of Í)
P Í WP.r.R
P {r} R
End of Proof
Corollary: (P Í Q Ù Q {r} R)
Þ
P {r} R
(Theorem 6)
P Í Q Þ (Q {r} R Þ P {r} R)
º(shunting)
(P Í Q Ù Q {r} R) Þ P {r} R
End of Proof
Theorem 7: P {r} R Ù Q {r} S Þ (PÇQ) {r} (RÇS)
(prove LHS Þ RHS)
P {r} R Ù Q {r} S
P Í WP.r.R Ù Q Í WP.r.S
Þ(monotonicity of Ç)
(PÇQ) Í (WP.r.R Ç WP.r.S)
(PÇQ) Í WP.r.(RÇS)
(PÇQ) {r} (RÇS)
End of Proof
Theorem 8: P {r} R Ù Q {r} S Þ (PÈQ) {r} (RÈS)
(prove LHS Þ RHS)
P {r} R Ù Q {r} S
P Í WP.r.R Ù Q Í WP.r.S
Þ(monotonicity of È)
(PÈQ) Í (WP.r.R È WP.r.S)
(PÈQ) Í WP.r.(RÈS)
(PÈQ) {r} (RÈS)
End of Proof
Theorem 9: P {r} R Ù P {r} S º P {r} (RÇS)
(Use ((PÞQ) Ù (QÞP)) º PºQ)
Part 1 Prove P {r} R Ù P {r} S Þ P {r} (RÇS)
P {r} R Ù P {r} S
Þ(Theorem 7)
(PÇP) {r} (RÇS)
º(Idempotence of Ç
P {r} (RÇS)
End of Part 1 Proof
Part 2 Prove P {r} (RÇS) Þ P {r} R Ù P {r} S
P {r} (RÇS)
Þ(RÇSÍR, Theorem 5)
P {r} R
Þ(RÇSÍS, Theorem 5, identity of Ù)
P {r} R Ù P {r} S
End of Part 2 Proof
End of Proof
Theorem 10: P {r} R Ù Q {r} R º (PÈQ) {r} R
(Use ((PÞQ) Ù (QÞP)) º PºQ)
Part 1 Prove P r R Ù Q r R Þ (PÈQ) r R
P {r} R Ù Q {r} R
Þ(Theorem 8)
(PÈQ) {r} (RÈR)
º(Idempotence of È
(PÈQ) {r} R
End of Part 1 Proof
Part 2 Prove (PÈQ) {r} R Þ P {r} R Ù Q {r} R
(PÈQ) {r} R
Þ(PÍPÈQ, Theorem 6)
P {r} R
Þ(QÍPÈQ, Theorem 6, identity of Ù)
P {r} R Ù Q {r} R
End of Part 2 Proof
End of Proof
Theorem 11: B Í WLP.r.R Þ (B Ç T.r) {r} R
(prove LHS Þ RHS)
B Í WLP.r.R
º(Í is reflexive, identity of Ù)
B Í WLP.r.R Ù T.rÍ T.r
Þ(Ç is monotonic)
B Ç T.rÍ WLP.r.R Ç T.r
B Ç T.rÍ WP.r.R
(B Ç T.r) {r} R
End of
Proof
Theorem 12: WP.r.R = WP.s.R º ("A|A {r} R º A {s} R:A)
(Prove LHS Þ RHS Ù RHS Þ LHS)
Part 1
(Given WP.r.R = WP.s.R, prove ("A|A {r} R º A {s} R:A))
(º is reflexive)
("A|A {r} R º A {r} R:A)
("A|A {r} R º A Í WP.r.R:A)
º(Given)
("A|A {r} R º A Í WP.s.R:A)
("A|A {r} R º A {s} R:A)
End of Part 1 Proof
Part 2
(Given ("A|A {r} R º A {s} R:A), prove WP.r.R = WP.s.R)
(instance of
given)
WP.r.R {r} R º WP.r.R {s} R
º(instance of given,
identity of Ù)
WP.r.R r R º WP.r.R {s} R Ù WP.s.R {r} R º WP.s.R s R
º(Theorem 1, identity of º)
WP.r.R {s} R Ù WP.s.R {r} R
WP.r.R Í WP.s.R Ù WP.s.R Í WP.r.R
º(Set equality)
WP.r.R = WP.s.R
End of Part 2 Proof
End
of Proof
Corollary: WP.r.R
= WP.s.R Þ
P {r} R º
P {s} R
(Prove
LHS Þ RHS)
WP.r.R = WP.s.R
º(Theorem 12)
("A|A {r} R º A {s} R:A)
(Instance)
P {r} R º P {s} R
End of Proof
Theorem 13: ("B|WP.r.B = WP.s.B:B) º ("B|("A|A {r} B º A {s} B:A):B)
(Prove LHS º RHS)
("B|WP.r.B = WP.s.B:B)
º(Theorem 12)
("B|("A|A {r} B º
A {s} B:A):B)
End
of Proof
(proof uses ((True Þ P) º P)
(Theorem
1)
WP.r.R {r} R
Þ(BÇP Í P, Theorem 6)
(B Ç WP.r.R) {r} R
End
of Proof
Theorem 15: (P Ç WP.r.R) {s} R Ù (P Ç WP.s.R) {r} R Þ
P Ç WP.r.R = P Ç WP.s.R
(Given (P Ç WP.r.R) {s}
R,Prove LHS Í RHS)
(Given, Weakest
Precondition Axiom 2)
P Ç WP.r.R Í
WP.s.R
Þ(Reflexive property of Í, monotonicity of Ç)
P Ç P Ç WP.r.R
Í P Ç WP.s.R
º(Idempotency of Ç)
P Ç WP.r.R Í
P Ç WP.s.R
End of Proof
Theorem 16: Æ {r} R
(Null set is subset of any set)
ÆÍ WP.r.R
º(Weakest Precondition Axiom 2)
Æ {r} R
End of Proof
Theorem 17: (P Í S Ù S {r} Q) Þ (P {r} R º P {r} (RÇQ))
(Given
P Í S Ù S {r}
Q, prove LHS º RHS)
P {r} R
º(Given, Corollary to Theorem
6, identity of Ù)
P {r} R Ù P {r}
Q
º(Theorem 9)
P {r} (R Ç Q)
End
of Proof
Corollary: (U {r} Q)
Þ
(P {r} R º P {r} (RÇQ))
(Given
U {r} Q, prove LHS º RHS)
P {r} R
º(Given, P Í U, Theorem 17)
P {r} (R Ç Q)
End
of Proof
Theorem 18: P = ƺ P {r}
Æ
(Prove
RHS º LHS)
P {r} Æ
º(Weakest
Precondition Axiom 2)
P Í WP.r.Æ
º(Weakest
Precondition Theorem 7)
P ÍÆ
º(ÆÍ P, identity of Ù)
P ÍÆÙÆÍ P
º(Set equality)
P = Æ
End of Proof
(Prove LHS º RHS)
P {r} Q Ù P {r}
~Q
º(Theorem 9)
P {r} (Q Ç ~Q)
º(QÇ~Q = Æ)
P {r} Æ
º(Theorem 18)
P = Æ
End
of Proof
References:
Dijkstra, Edsgar, 1976, A Discipline of
Programming, Englewood Cliffs, NJ: Prentice-Hall
Gries, David, 1981, The
Science of Programming, New York, NY: Springer-Verlag
Gries, David and Schneider,
Fred B., 1993, A Logical Approach to Discrete Math, New York, NY:
Springer-Verlag