| m < # apebs, abs(pebs, apebs), mtd-cons(pebs), ubi-io-inv(apebs) ⊦ ⟪mtd_asm_isbad#(m, pebs; ; isbad, err)⟫ ⟨aubi_io_isbad#(m, apebs; ; isbad0, err0)⟩ ((isbad ↔ isbad0) ∧ err = err0) |
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)
Used simplifier rules: mtd_asm_isbad#(PNUM, PEBS; ; ISBAD, ERR) {if PNUM < # PEBS then {fail_or_success#(; ; ERR); if ERR = ESUCCESS then ISBAD := PEBS[PNUM].bad else ISBAD := ?} else abort };