| apebs[m] = mkpeb(aehdr, avhdr, buf, m0, boolvar) ⊦ eq-entry(m, lref).pnum < # apebs ∧ ¬ eq-entry(m, lref).pnum ∈ [] ∧ (∀ v, m0. (valid-peb(v, m0, apebs[eq-entry(m, lref).pnum]) ↔ eq-entry(m, lref).lebref = v × m0) ∧ (eq-entry(m, lref).lebref = v × m0 → apebs[eq-entry(m, lref).pnum].vidhdr.sqn ≠ valid-sqns(v, m0, apebs).max)) ∧ valid-eraseq-stronger(apebs, []) ↔ m < # apebs ∧ (lref = none → ¬ valid-peb(mkpeb(aehdr, avhdr, buf, m0, boolvar))) ∧ (lref ≠ none → valid-peb(lref.vol, lref.leb, mkpeb(aehdr, avhdr, buf, m0, boolvar)) ∧ avhdr.sqn ≠ valid-sqns(lref.vol, lref.leb, apebs).max) |
apebs[m] = mkpeb(aehdr, avhdr, buf, m0, boolvar), m < # apebs ⊦ (∀ v, m1. (valid-peb(v, m1, mkpeb(aehdr, avhdr, buf, m0, boolvar)) ↔ lref = v × m1) ∧ (lref = v × m1 → avhdr.sqn ≠ valid-sqns(v, m1, apebs).max)) ↔ (lref = none → ¬ valid-peb(mkpeb(aehdr, avhdr, buf, m0, boolvar))) ∧ (lref ≠ none → valid-peb(lref.vol, lref.leb, mkpeb(aehdr, avhdr, buf, m0, boolvar)) ∧ avhdr.sqn ≠ valid-sqns(lref.vol, lref.leb, apebs).max)
Used simplifier rules: valid-eraseq-stronger-base: ⊦ valid-eraseq-stronger(apebs, []);% ⊦ mkpeb(aehdr, avhdr, buf, m, boolvar).vidhdr = avhdr; (s)% ⊦ m < n → n ≠ 0; (s)%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic% ⊦ eq-entry(m, lref).lebref = lref; (s)% ⊦ ¬ n ∈ []; (s)% ⊦ eq-entry(m, lref).pnum = m; (s)