| 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) |
wlar[m].status = free, ¬ boolvar ↔ free-ecs(wlar, m) = ∅, boolvar0 ↔ false, m = m0, m1 = 0, m < # wlar, m ≤ # wlar, wlar[m].status = free → boolvar → m < # wlar, boolvar → n = free-ecs(wlar, m).min, ¬ boolvar ∨ wlar[m].ec < n ⊦ ⟪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)
¬ boolvar ↔ free-ecs(wlar, m) = ∅, boolvar0 ↔ false, m = m0, m1 = 0, m < # wlar, m ≤ # wlar, wlar[m].status = free → boolvar → m < # wlar, boolvar → n = free-ecs(wlar, m).min ⊦ ⟪skip; m := m + 1⟫ ((m ≤ # wlar ∧ (boolvar → n = free-ecs(wlar, m).min) ∧ (¬ boolvar ↔ free-ecs(wlar, m) = ∅)) ∧ # wlar - m < # wlar - m0), wlar[m].status = free ∧ (¬ boolvar ∨ wlar[m].ec < n)
¬ boolvar ↔ free-ecs(wlar, m) = ∅, boolvar0 ↔ false, m = m0, m1 = 0, m < # wlar, m ≤ # wlar, boolvar → n = free-ecs(wlar, m).min ⊦ m < # wlar ∧ (wlar[m].status = free → boolvar → m < # wlar)