| union(asar[n, as], 0, m0) = (union(asar, 0, m0) \ asar[n]) ∪ as, n < m0, m0 < # asar, n < # asar, n + 1 < # asar, disj(asar, 0, m0 + 1) ⊦ m0 = n, asar[m0] ∪ union(asar[n, as], 0, m0) = (asar[m0] ∪ (union(asar, 0, m0) \ asar[n])) ∪ as |
Used simplifier rules: una: ⊦ (as ∪ as0) ∪ as1 = as ∪ as0 ∪ as1; from specification set-union[address-list-set]%unc: ⊦ as ∪ as0 = as0 ∪ as; from specification set-union[address-list-set]