| apebs[n] = mkpeb(aehdr, empty, buf, m, false), aehdr.valid?, avhdr.valid?, n < # apebs, ubi-io-inv(apebs), ubi-io-write-vidhdr-pre(n, avhdr, apebs) ⊦ ⟪fail_or_success#(; ; err); if err = ESUCCESS then apebs[n].vidhdr := avhdr else choose avhdr with ¬ avhdr.valid? in apebs[n].vidhdr := avhdr⟫ ubi-io-inv(apebs) |
apebs[n] = mkpeb(aehdr, empty, buf, m, false), avhdr.valid?, aehdr.valid?, n < # apebs, ubi-io-inv(apebs) ⊦ ⟪fail_or_success#(; ; err); if err = ESUCCESS then apebs[n].vidhdr := avhdr else choose avhdr with ¬ avhdr.valid? in apebs[n].vidhdr := avhdr⟫ ubi-io-inv(apebs)
Used simplifier rules: ⊦ mkpeb(aehdr, avhdr, buf, m, boolvar).bad ↔ boolvar; (s)% ⊦ mkpeb(aehdr, avhdr, buf, m, boolvar).echdr = aehdr; (s)% ⊦ mkpeb(aehdr, avhdr, buf, m, boolvar).vidhdr = avhdr; (s)%⊦ ubi-io-write-vidhdr-pre(n, avhdr, apebs) ↔ n < # apebs ∧ ¬ apebs[n].bad ∧ avhdr.valid? ∧ apebs[n].echdr.valid? ∧ apebs[n].vidhdr = empty; (s)