| r ∈ rs, ∀ r0. r0 ∈ rs ∧ r0 ≠ r → g(r0) ≠ g(r) ⊦ # rs = 0, r = null, rs = ∅, {r} ∪ (rs -- r) = rs ∧ {r} ∩ (rs -- r) = ∅ ∧ g(r)[r => f(r)][{r} , f, g] |
r ∈ rs, ∀ r0. r0 ∈ rs ∧ r0 ≠ r → g(r0) ≠ g(r) ⊦ # rs = 0, r = null, rs = ∅, g(r)[r => f(r)][∅ ++ r, f, g]
Used simplifier rules: ⊦ ∅ -- r = ∅; (s)%int-c: ⊦ rs ∩ rs0 = rs0 ∩ rs; from specification set-union[refset]%int-a: ⊦ (rs ∩ rs0) ∩ rs1 = rs ∩ rs0 ∩ rs1; from specification set-union[refset]% ⊦ rs ∩ ∅ = ∅; (s)% ⊦ (rs ++ r) ∩ (rs0 -- r) = (rs ∩ rs0) -- r; (s)% ⊦ r ∈ rs → (rs -- r) ++ r = rs; (s)%unc: ⊦ rs ∪ rs0 = rs0 ∪ rs; from specification set-union[refset]%una: ⊦ (rs ∪ rs0) ∪ rs1 = rs ∪ rs0 ∪ rs1; from specification set-union[refset]% ⊦ rs ∪ ∅ = rs; (s)% ⊦ (rs ++ r) ∪ rs0 = (rs ∪ rs0) ++ r; (s)% ⊦ {r} = ∅ ++ r; (s)