Unformatted text preview:

3/10/10 1 Proving Program Correctness The Axiomatic Approach What is Correctness? • Correctness: – partial correctness + termination • Partial correctness: – Program implements its specification3/10/10 2 Proving Partial Correctness • Goal: prove that program is partially correct • Approach: model computation with predicates – Predicates are boolean functions over program state • Simple example – {odd(x)} a = x {odd(a)} • Generally: {P} S {Q}, where – P is a precondition – Q is a postcondition – S is a set of programming language statements Proof System • Two elements of proof system • Axioms – Capture the effect of individual programming language statements • Inference rules – Compose the effect of individual statements and extrinsic knowledge to build up proofs of entire program3/10/10 3 Axioms • Axioms explain the effect of executing a single statement – Assignment – If – If then else – While loop Assignment Axiom • Rule: • Application: Replace all free occurences of x with y – e.g., {odd(x)} a = x {odd(a)3/10/10 4 Inference Rules • Inference rules allow us to compose the effects of individual statements and extrinsic knowledge to build up proofs of entire program • 3 inference rules – Composition – Consequence 1 – Consequence 2 Composition • Rule: • Consider two predicates – {odd(x)} a = x {odd(a)} – {odd(x+1)} x = x+1 {odd(x)} • What is the effect of executing both stmts? – {odd(x+1)} x = x+1 ; a = x {odd(a)}3/10/10 5 Consequence 1 • Rule • Ex: – {odd(x)} a = x {odd(a)} and – Postcondition Q ≡ {a ≠ 4} • What can we say about this program? Consequence 2 • Rule: • Ex: – Precondition P ≡ {x=1} and – {odd(x)} a = x {odd(a)} • What can we say about this program?3/10/10 6 Axioms (cont.) • Axioms explain the effect of executing a single statement – Assignment – If – If then else – While loop Assignment Axiom • Rule: • Application: Replace all free occurences of x with y – e.g., {odd(x)} a = x {odd(a)}3/10/10 7 if Axiom • Rule: Bif S {P} {P ∧ ¬Bif} {P ∧ Bif } {Q} Application • Example: 1. if even(x) then { 2. x = x +1 3. } {odd(x) ∧ x > 3} • else part: need to show {(P ∧ ¬even(x)) ⇒ (odd(x) ∧ x>3)} {P ⇒ (x>3)} • then part: need to show {P ^ even(x)} x=x+1 {odd(x) ∧ x>3} {odd(x+1) ∧ x>2} x = x+1 {odd(x) ∧ x > 3} {(P ∧ even(x)) ⇒ (odd(x+1) ∧ x>2)} {P ⇒ (x>2)} • Need to choose a predicate P consistent with implications above • P ≡ x>2 – x > 39 works as well3/10/10 8 if then else Axiom • Rule {P} {P ∧ ¬Bif} {Q} S2 S1 {P ∧ Bif } Bif Conditional Stmt 2 Axiom • Example: 1. if x < 0 then { 2. x = -x; 3. y = x 4. } else { 5. y = x 6. } {y = |x|} • Then part: need to show {P ∧ (x<0)} x=-x;y=x {y = |x|} {x = |x|} y = x {y = |x|} {-x = |x|} x = -x {x = |x|} ( P ∧ x <0) ⇒ -x = |x| • Else part: need to show {P ∧ ¬ (x<0)} y=x {y = |x|} {x =|x|} y=x {y=|x|} ( P ∧ ¬(x < 0)) ⇒ x = |x| • P ≡ true3/10/10 9 While Loop Axiom • Rule • Infinite number of paths, so we need one predicate for that captures the effect of 0 or more loop traversals • P is called a loop invariant € {P ∧ B} S {P} {P} while B do S {P ∧ ¬B}Bif S {P} {P ∧ ¬B} Proving Partial Correctness • Handle termination separately • Axioms and inference rules are applied in reverse during proof – Start with postcondition and work backwards to determine what must precondition must be3/10/10 10 Partial Correctness Proof IN ≡ {B ≥ 0} a = A b = B y = 0 while b > 0 do { y = y + a b = b - 1 } OUT ≡ {y = AB} While Loop IN ≡ {B ≥ 0} a = A b = B y = 0 while b > 0 do { y = y + a b = b - 1 } OUT ≡ {y = AB} • From while loop axiom need to show {P∧B} S {P} • P ≡ y + ab = AB ∧ b ≥ 0 • Bw ≡ b > 0 • {y + ab = AB ∧ b ≥ 0} y=y+a; b=b-1 {P} • {y+a(b-1) = AB ∧ b-1 ≥ 0} b = b - 1 {P} • {y+a+a(b-1) = AB ∧ b-1 ≥ 0} y = y+a {….} • {y +ab = AB ∧ b-1 ≥ 0} loop body {P} • {y + ab = AB ∧ b ≥ 0 ∧ b > 0} • ⇒ {y +ab = AB ∧ b-1 ≥ 0} • From while loop axiom can conclude {P} while loop {P∧¬ Bw}3/10/10 11 While Loop IN ≡ {B ≥ 0} a = A b = B y = 0 while b > 0 do { y = y + a b = b - 1 } OUT ≡ {y = AB} • Now need to show P ∧ ¬ Bw ⇒ OUT • P ≡ y + ab = AB ∧ b ≥ 0 • Bw ≡ b > 0 • y + ab = AB ∧ b ≥ 0 ∧ ¬(b > 0) • y + ab = AB ∧ b = 0 • y = AB • So {P ∧ ¬ Bw} ⇒ OUT • From consequence rule we can conclude {P} while loop {OUT} While Loop IN ≡ {B ≥ 0} a = A b = B y = 0 while b > 0 do { y = y + a b = b - 1 } OUT ≡ {y = AB} • P ≡ y + ab = AB ∧ b ≥ 0 • Establish {IN} a=A;b=B;y=0 {P} • {ab = AB ∧ b ≥ 0} y=0 { P} • {aB = AB ∧ B ≥ 0} b = B {….} • {AB = AB ∧ B ≥ 0} a = A {….} • So {IN} a=A;b=B;y=0 {P}3/10/10 12 While Loop Axiom • So – {IN} lines 1-3 {P}, – {P} while loop {P ∧ ¬ Bw }, and – {P ∧ ¬ Bw} ⇒ OUT • Therefore – {IN} program {OUT} Total correctness • After you have shown partial correctness – Need to prove that program terminates • Usually a progress argument. For previous program – Loop terminates if b ≤ 0 – b starts positive and is decremented by 1 every iteration – So loop must eventually terminate3/10/10 13 Now You Try It r = 1; i = 0; while i < m do { r = r * n; i = i + 1 } Postcondition: r =


View Full Document
Download Proving Program Correctness
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Proving Program Correctness and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Proving Program Correctness 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?