| apebs[m] = mkpeb(aehdr, avhdr, buf0, m0, boolvar0), m < # apebs, unique-elems ( (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} ;∅)), valid-peb(mkpeb(aehdr, avhdr, buf0, m0, boolvar0)), valid-peb(mkpeb(aehdr, avhdr, buf1, m1, boolvar1)) ⊦ unique-elems(valid-sqns(v, m2, apebs)) |
apebs[m] = mkpeb(aehdr, avhdr, buf0, m0, boolvar0), m < # apebs, unique-elems((valid-sqns(v, m2, apebs) \ ∅) ∪ (valid-peb(v, m2, mkpeb(aehdr, avhdr, buf1, m1, boolvar1)) ⊃ {avhdr.sqn} ;∅)), valid-peb(mkpeb(aehdr, avhdr, buf1, m1, boolvar1)), valid-peb(mkpeb(aehdr, avhdr, buf0, m0, boolvar0)) ⊦ unique-elems(valid-sqns(v, m2, apebs)), valid-peb(v, m2, mkpeb(aehdr, avhdr, buf0, m0, boolvar0))
Used simplifier rules: ⊦ bag \ {n} = bag -- n; (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)%⊦ 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} = bag ++ n; (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)%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]