| ubi_wl_find_free_max_below#(N, WLARRAY; PNUM) {let FOUND = false, M = 0 in while M < # WLARRAY do {/* (prepost-wl-free-max-below : invariant M ≤ # WLARRAY ∧ (FOUND → PNUM < # WLARRAY ∧ WLARRAY[PNUM].status = free ∧ WLARRAY[PNUM].ec = below(free-ecs(WLARRAY, M), N).max) ∧ (¬ FOUND ↔ below(free-ecs(WLARRAY, M), N) = ∅) wfbound # WLARRAY - M) */; if WLARRAY[M].status = free ∧ WLARRAY[M].ec < N ∧ (¬ FOUND ∨ WLARRAY[M].ec > WLARRAY[PNUM].ec) then {FOUND := true; PNUM := M}; M := M + 1} } |