c
play

c } false loop body P (postcondition) Loop Invariant Defn : A - PowerPoint PPT Presentation

while (c) { loop body true c } false loop body P (postcondition) Loop Invariant Defn : A boolean condition that is checked immediately before every evaluation of the loop guard . while (c) I //@loop_invariant I; true c { loop


  1. while (c) { loop body true c } false loop body P (postcondition)

  2. Loop Invariant • Def’n : A boolean condition that is checked immediately before every evaluation of the loop guard .

  3. while (c) I //@loop_invariant I; true c { loop body false } //@assert P; loop body P (postcondition)

  4. Loop Invariant • Def’n : A boolean condition that is checked immediately before every evaluation of the loop guard . • It is true even if the loop runs 0 times (i.e. is skipped). • It is true immediately before each evaluation of the loop guard, including the last evaluation if the loop terminates. • It is true immediately after the loop terminates, if the loop terminates.

  5. 1. INIT I Show that the loop true c invariant I is true immediately before false the first evaluation of the loop guard C. loop body P (postcondition)

  6. 2. PRESERVATION I Show that if the loop invariant I is true true c immediately before the evaluation of the false loop guard C, then I is true immediately loop before the next body evaluation of the loop guard C. P (postcondition)

  7. 3. EXIT I Once we have a true c valid loop invariant, we can show that the false logical conjunction of the loop invariant I and the negation of loop the loop guard C body implies the desired postcondition P: P (postcondition) I ^ ~ C  P

  8. 4. TERMINATION Show that the loop true c will always terminate (i.e. that C must false eventually be false). loop body P (postcondition)

Recommend


More recommend