| # apebs = # wlar, avhdr0.sqn = valid-sqns(v, n, apebs, m).max, wlar[m] = wl-entry(m7, stat0), apebs[m0] = mkpeb(aehdr0, avhdr0, buf0, m4, boolvar0), apebs[m] = mkpeb(aehdr1, avhdr1, buf1, m5, false), m0 < # wlar, avhdr0.sqn < avhdr1.sqn, m0 < m, m < # wlar, m0 + 1 < # wlar, valid-peb(v, n, mkpeb(aehdr1, avhdr1, buf1, m5, false)), valid-peb(v, n, mkpeb(aehdr0, avhdr0, buf0, m4, boolvar0)), ∀ v, m. unique-elems(valid-sqns(v, m, apebs)) ⊦ m = m0, aehdr1 = aechdr(aehdr1.ec) ∧ (∃ v0, m2. valid-peb(v0, m2, mkpeb(aechdr(aehdr1.ec), avhdr1, buf1, m5, false)) ∧ avhdr1.sqn = (valid-sqns(v0, m2, apebs, m) ∪ (v = v0 ∧ n = m2 ⊃ {avhdr1.sqn} ;∅)).max) |
# apebs = # wlar, avhdr0.sqn = valid-sqns(v, n, apebs, m).max, apebs[m] = mkpeb(aehdr1, avhdr1, buf1, m5, false), apebs[m0] = mkpeb(aehdr0, avhdr0, buf0, m4, boolvar0), wlar[m] = wl-entry(m7, stat0), m0 + 1 < # wlar, m < # wlar, m0 < m, avhdr0.sqn < avhdr1.sqn, m0 < # wlar, valid-peb(v, n, mkpeb(aehdr0, avhdr0, buf0, m4, boolvar0)), valid-peb(v, n, mkpeb(aehdr1, avhdr1, buf1, m5, false)), ∀ v, m. unique-elems(valid-sqns(v, m, apebs)) ⊦ aehdr1 = aechdr(aehdr1.ec), m = m0, aehdr1 = aechdr(aehdr1.ec) ∧ (∃ v0, m2. valid-peb(v0, m2, mkpeb(aechdr(aehdr1.ec), avhdr1, buf1, m5, false)) ∧ avhdr1.sqn = (valid-sqns(v0, m2, apebs, m) ∪ (v = v0 ∧ n = m2 ⊃ {avhdr1.sqn} ;∅)).max)
Used simplifier rules: ⊦ valid-peb(v0, m0, apeb) → (valid-peb(v1, m1, apeb) ↔ v0 = v1 ∧ m0 = m1); (s)% ⊦ bag ∪ {n} = bag ++ n; (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]% ⊦ m = (bag ++ m).max ↔ ¬(bag ≠ ∅ ∧ m < bag.max); (s)%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic%lf: ⊦ m < n ∧ n < n0 → m +1 < n0; (forward) from specification nat-basic%lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic%transitivity: ⊦ n < n0 ∧ n0 < n1 → n < n1; (forward) from specification oelem[nat-set]% ⊦ m < n → n ≠ 0; (s)% ⊦ m +1 = m + 1; (s)% ⊦ ¬ m + n < m; (s)%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic%c: ⊦ m + n = n + m; from specification nat-basic Used formulas: aehdr1 = aechdr(aehdr1.ec)