| boolvar ↔ false, m = 0 ⊦ ⟪while m < # wlar do {/* (prepost-wl-get-free-min : invariant m ≤ # wlar ∧ (boolvar → n = free-ecs(wlar, m).min) ∧ (¬ boolvar ↔ free-ecs(wlar, m) = ∅) wfbound # wlar - m) */; if wlar[m].status = free ∧ (¬ boolvar ∨ wlar[m].ec < n) then {boolvar := true; n := wlar[m].ec}; m := m + 1}⟫ ((boolvar → n = free-ecs(wlar).min) ∧ (¬ boolvar ↔ free-ecs(wlar) = ∅)) |
boolvar0 ↔ false, ¬ boolvar ↔ free-ecs(wlar, m) = ∅, m = m0, m1 = 0, m < # wlar, m ≤ # wlar, boolvar → n = free-ecs(wlar, m).min ⊦ ⟪if wlar[m].status = free ∧ (¬ boolvar ∨ wlar[m].ec < n) then {boolvar := true; n := wlar[m].ec}; m := m + 1⟫ ((m ≤ # wlar ∧ (boolvar → n = free-ecs(wlar, m).min) ∧ (¬ boolvar ↔ free-ecs(wlar, m) = ∅)) ∧ # wlar - m < # wlar - m0)
boolvar0 ↔ false, ¬ boolvar ↔ free-ecs(wlar, m) = ∅, m1 = 0, m ≤ # wlar, boolvar → n = free-ecs(wlar, m).min ⊦ m < # wlar, (boolvar → n = free-ecs(wlar).min) ∧ (¬ boolvar ↔ free-ecs(wlar) = ∅)
Used simplifier rules: ⊦ 0 ≤ m; (s)% ⊦ free-ecs(wlar, 0) = ∅; (s) Used formulas: m ≤ # wlar ∧ (boolvar → n = free-ecs(wlar, m).min) ∧ (¬ boolvar ↔ free-ecs(wlar, m) = ∅), # wlar - m = # wlar - m