| wlar[m0] = wl-entry(m1, free), vtblpnum = m, m0 < # wlar, m1 < n ⊦ ⟪let boolvar = false, m = 0 in while m < # wlar do {/* (prepost-wl-free-max-below : invariant m ≤ # wlar ∧ (boolvar → vtblpnum < # wlar ∧ wlar[vtblpnum].status = free ∧ wlar[vtblpnum].ec = below(free-ecs(wlar, m), n).max) ∧ (¬ boolvar ↔ below(free-ecs(wlar, m), n) = ∅) wfbound # wlar - m) */; if wlar[m].status = free ∧ wlar[m].ec < n ∧ (¬ boolvar ∨ wlar[m].ec > wlar[vtblpnum].ec) then {boolvar := true; vtblpnum := m}; m := m + 1}⟫ (vtblpnum < # wlar ∧ wlar[vtblpnum].status = free ∧ wlar[vtblpnum].ec = below(free-ecs(wlar), n).max) |
boolvar ↔ false, wlar[m0] = wl-entry(m1, free), m = 0, vtblpnum = m2, m1 < n, m0 < # wlar ⊦ ⟪while m < # wlar do {/* (prepost-wl-free-max-below : invariant m ≤ # wlar ∧ (boolvar → vtblpnum < # wlar ∧ wlar[vtblpnum].status = free ∧ wlar[vtblpnum].ec = below(free-ecs(wlar, m), n).max) ∧ (¬ boolvar ↔ below(free-ecs(wlar, m), n) = ∅) wfbound # wlar - m) */; if wlar[m].status = free ∧ wlar[m].ec < n ∧ (¬ boolvar ∨ wlar[m].ec > wlar[vtblpnum].ec) then {boolvar := true; vtblpnum := m}; m := m + 1}⟫ (vtblpnum < # wlar ∧ wlar[vtblpnum].status = free ∧ wlar[vtblpnum].ec = below(free-ecs(wlar), n).max)