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