| r ∈ rs1 ↔ r = r, rs1 ∩ rs0 = ∅, R[rs0, f, g], r ∈ rs1 → f(r) = (r = r ⊃ o;(∅ ++ r)[r]o) ∧ g(r) = (r = r ⊃ a;(∅ ++ r)[r]a), ∀ r1. (r1 ∈ rs1 ↔ r1 = r) ∧ (r1 ∈ rs1 → f(r1) = (r1 = r ⊃ o;(∅ ++ r)[r1]o) ∧ g(r1) = (r1 = r ⊃ a;(∅ ++ r)[r1]a)) ⊦ r = null, ∃ o. (a[r => o] * R)[rs1 ∪ rs0, f, g], (∃ o. ((r => o))(mk(rs1, f))) ∧ (r0 ∈ rs1 → g(r0) = a) |
rs1 ∩ rs0 = ∅, R[rs0, f, g], r ∈ rs1, ∀ r1. (r1 ∈ rs1 → r1 = r) ∧ (r1 ∈ rs1 → f(r1) = (r1 = r ⊃ f(r);(∅ ++ r)[r1]o) ∧ g(r1) = (r1 = r ⊃ g(r);(∅ ++ r)[r1]a)) ⊦ # rs1 = 0, r = null, rs1 = ∅, ∃ o. (g(r)[r => o] * R)[rs1 ∪ rs0, f, g], (∃ o. ((r => o))(mk(rs1, f))) ∧ (r0 ∈ rs1 → g(r0) = g(r))
Used simplifier rules: size-zero-01: ⊦ rs ≠ ∅ → # rs ≠ 0; (forward) from specification set-basic[refset]%ne-01: ⊦ r ∈ rs → rs ≠ ∅; (forward) from specification set-basic[refset]