| m < # apebs, abs(pebs, apebs), mtd-cons(pebs), ubi-io-inv(apebs) ⊦ ⟪if m < # pebs then {fail_or_success#(; ; err); if err = ESUCCESS then isbad := pebs[m].bad else isbad := ?} else abort⟫ ⟨aubi_io_isbad#(m, apebs; ; isbad0, err0)⟩ ((isbad ↔ isbad0) ∧ err = err0) |
m < # apebs, abs(pebs, apebs), mtd-cons(pebs), ubi-io-inv(apebs) ⊦ ⟪fail_or_success#(; ; err); if err = ESUCCESS then isbad := pebs[m].bad else isbad := ?⟫ ⟨aubi_io_isbad#(m, apebs; ; isbad0, err0)⟩ ((isbad ↔ isbad0) ∧ err = err0)
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss)%fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat% ⊦ abs(pebs, apebs) → ¬ # pebs < # apebs; (s)