| n < # asar, disj(asar, 0, n + 1), ∀ n0, asar, as. n0 < n ∧ n0 < # asar ∧ disj(asar, 0, n) ∧ n ≤ # asar → union(asar[n0, as], 0, n) = (union(asar, 0, n) \ asar[n0]) ∪ as ⊦ union(asar, 0, n) ∩ asar[n] = ∅, as ∪ union(asar, 0, n) = (union(asar, 0, n) \ asar[n]) ∪ as |
n < # asar, disj(asar, 0, n + 1), ∀ n0, asar, as. n0 < n ∧ n0 < # asar ∧ disj(asar, 0, n) ∧ n ≤ # asar → union(asar[n0, as], 0, n) = (union(asar, 0, n) \ asar[n0]) ∪ as ⊦ #(union(asar, 0, n) ∩ asar[n]) = 0, union(asar, 0, n) ∩ asar[n] = ∅, as ∪ union(asar, 0, n) = (union(asar, 0, n) \ asar[n]) ∪ as
Used simplifier rules: size-zero: ⊦ # as ≠ 0 → as ≠ ∅; (forward) from specification set-basic[address-list-set]%size-zero-01: ⊦ as ≠ ∅ → # as ≠ 0; (forward) from specification set-basic[address-list-set]