| apebs[m1] = mkpeb(aehdr, avhdr, buf, m2, boolvar), m1 < # apebs, m < # apebs, m1 < m, m1 + 1 < # apebs, valid-eraseq-stronger(subarray(apebs, 0, m), q0), ∀ m, apebs. m < # apebs ∧ valid-eraseq-stronger(subarray(apebs, 0, m), q0) → (valid-eraseq-stronger(subarray(apebs, 0, m + 1), q0 + eq-entry(m, none) ') ↔ ¬ valid-peb(apebs[m])), ∀ v, m0. (valid-peb(v, m0, mkpeb(aehdr, avhdr, buf, m2, boolvar)) ↔ lref = v × m0) ∧ (lref = v × m0 → avhdr.sqn ≠ valid-sqns(v, m0, apebs, m).max) ⊦ m1 ≠ m ∧ (∀ v, m0. (valid-peb(v, m0, mkpeb(aehdr, avhdr, buf, m2, boolvar)) ↔ lref = v × m0) ∧ (lref = v × m0 → avhdr.sqn ≠ (valid-sqns(v, m0, apebs, m) ∪ (valid-peb(v, m0, apebs[m]) ⊃ {apebs[m].vidhdr.sqn} ;∅)).max)) ∧ valid-eraseq-stronger(subarray(apebs, 0, m + 1), q0 + eq-entry(m, none) ') ↔ ¬ valid-peb(apebs[m]), m1 ∈ q0 |
Used simplifier rules: ⊦ valid-peb(v, m, apeb) → valid-peb(apeb); (ss)% ⊦ ∅ ∪ bag0 = bag0; (s)%union-ass: ⊦ bag ∪ bag3 ∪ bag4 = (bag ∪ bag3) ∪ bag4; from specification bag-union[nat-bag]%union-com: ⊦ bag ∪ bag2 = bag2 ∪ bag; from specification bag-union[nat-bag]%lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic%lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic% ⊦ ¬ n < n; (s)%# apebs = n ⊦ subarray(apebs, 0, n) = apebs; (s)%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic%c: ⊦ m + n = n + m; from specification nat-basic%succ-03: ⊦ m < n ∧ m + 1 ≠ n → m + 1 < n; (forward) from specification nat-basic% ⊦ m < n → ¬ n < m; (s) Used terms: m, apebs