| n0 < # apebs, valid-peb(v, m, apebs[n0]), ∀ apebs, v, m. n0 ≤ # apebs → valid-sqns(v, m, apebs, n0) = ∅ ∨ (∃ n1. n1 < n0 ∧ valid-peb(v, m, apebs[n1]) ∧ apebs[n1].vidhdr.sqn = valid-sqns(v, m, apebs, n0).max) ⊦ valid-sqns(v, m, apebs, n0) ∪ (valid-peb(v, m, apebs[n0]) ⊃ {apebs[n0].vidhdr.sqn} ;∅) = ∅, ∃ n. ¬ n0 < n ∧ valid-peb(v, m, apebs[n]) ∧ apebs[n].vidhdr.sqn = (valid-sqns(v, m, apebs, n0) ∪ (valid-peb(v, m, apebs[n0]) ⊃ {apebs[n0].vidhdr.sqn} ;∅)).max |
n0 < # apebs, valid-peb(v, m, apebs[n0]), ∀ apebs, v, m. n0 ≤ # apebs → valid-sqns(v, m, apebs, n0) = ∅ ∨ (∃ n1. n1 < n0 ∧ valid-peb(v, m, apebs[n1]) ∧ apebs[n1].vidhdr.sqn = valid-sqns(v, m, apebs, n0).max) ⊦ ∃ n. ¬ n0 < n ∧ valid-peb(v, m, apebs[n]) ∧ apebs[n].vidhdr.sqn = (valid-sqns(v, m, apebs, n0) ++ apebs[n0].vidhdr.sqn).max
Used simplifier rules: ⊦ ∅ ≠ bag ++ n; (s)%union-com: ⊦ bag ∪ bag2 = bag2 ∪ bag; from specification bag-union[nat-bag]%union-ass: ⊦ bag ∪ bag3 ∪ bag4 = (bag ∪ bag3) ∪ bag4; from specification bag-union[nat-bag]% ⊦ bag ∪ {n} = bag ++ n; (s)%⊦ valid-peb(v0, m0, apeb) → (valid-peb(v1, m1, apeb) ↔ v0 = v1 ∧ m0 = m1); (s)