| apebs[m] = mkpeb(aehdr, avhdr, buf0, m0, boolvar0), ( (valid-sqns(v, m2, apebs) \ (valid-peb(v, m2, mkpeb(aehdr, avhdr, buf0, m0, boolvar0)) ⊃ {avhdr.sqn} ;∅)) ∪ (valid-peb(v, m2, mkpeb(aehdr, avhdr, buf1, m1, boolvar1)) ⊃ {avhdr.sqn} ;∅) ).max < n, m < # apebs, ( (valid-sqns(v, m2, apebs) \ (valid-peb(v, m2, mkpeb(aehdr, avhdr, buf0, m0, boolvar0)) ⊃ {avhdr.sqn} ;∅)) ∪ (valid-peb(v, m2, mkpeb(aehdr, avhdr, buf1, m1, boolvar1)) ⊃ {avhdr.sqn} ;∅) ).max < valid-sqns(v, m2, apebs).max, valid-peb(mkpeb(aehdr, avhdr, buf0, m0, boolvar0)), valid-peb(mkpeb(aehdr, avhdr, buf1, m1, boolvar1)), n ≤ valid-sqns(v, m2, apebs).max ⊦ valid-sqns(v, m2, apebs) = ∅ |
Used simplifier rules: ⊦ bag \ ∅ = bag; (s)%⊦ valid-peb(apeb) → (valid-peb(v, m, apeb) ↔ v = apeb.vidhdr.vol ∧ m = apeb.vidhdr.leb); (ss)% ⊦ mkpeb(aehdr, avhdr, buf, m, boolvar).vidhdr = avhdr; (s)%fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat% ⊦ ∅ ∪ 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]% ⊦ m ≤ n → (n < m ↔ false); (s)% ⊦ bag ∪ {n} = bag ++ n; (s)% ⊦ bag ≠ ∅ → (bag ++ m).max = (bag.max > m ⊃ bag.max;m); (s)% ⊦ m > n ↔ n < m; (s)% ⊦ ¬ n < n; (s)% ⊦ m < n ↔ ¬ n ≤ m; (ss)% ⊦ m < n → (n ≤ m ↔ false); (s)%n < # apebs ⊦ apebs[n] = apeb ∧ valid-peb(v, m, apeb) → valid-sqns(v, m, apebs) ≠ ∅; (s)% ⊦ bag \ {n} = bag -- n; (s)%⊦ valid-peb(v0, m0, apeb) → (valid-peb(v1, m1, apeb) ↔ v0 = v1 ∧ m0 = m1); (s)%⊦ valid-peb(v, m, mkpeb(aehdr, avhdr, buf, m0, boolvar)) → avhdr.vol = v; (s)%⊦ valid-peb(v, m, mkpeb(aehdr, avhdr, buf, m0, boolvar)) → avhdr.leb = m; (s)% ⊦ (bag -- n) ++ n = (n ∈ bag ⊃ bag;bag ++ n); (s)%n < # apebs ⊦ valid-peb(v, m, mkpeb(aehdr, avhdr, buf, m0, boolvar)) ∧ apebs[n] = mkpeb(aehdr, avhdr, buf, m0, boolvar) → avhdr.sqn ∈ valid-sqns(v, m, apebs); (ss)