| n0 < # apebs, ∀ 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} ;∅) = ∅, valid-peb(v, m, apebs[n0]), ∃ 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, ∀ 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]), ∃ n. ¬ n0 < n ∧ valid-peb(v, m, apebs[n]) ∧ apebs[n].vidhdr.sqn = valid-sqns(v, m, apebs, n0).max
Used simplifier rules: 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]% ⊦ ∅ ∪ bag0 = bag0; (s)