| mk(rs1, f) = (∅ ++ r)[r, o], rs1 ∩ rs0 = ∅, R[rs0, f, g], ∀ r0. r0 ∈ rs1 → (r = r0 ⊃ a1;g(r0)) = a1 ⊦ r = null, (g(r)[r => o] * R)[rs1 ∪ rs0, f, g], r ∈ rs0, ((r => o))(mk(rs1, f)) ∧ (∀ r0. r0 ∈ rs1 → g(r0) = g(r)) |
mk(rs1, f) = (∅ ++ r)[r, o], rs1 ∩ rs0 = ∅, ((r => o))((∅ ++ r)[r, o]), R[rs0, f, g], r0 ∈ rs1, ∀ r0. r0 ∈ rs1 → (r = r0 ⊃ a1;g(r0)) = a1 ⊦ # rs1 = 0, g(r0) = g(r), r = null, rs1 = ∅, (g(r)[r => o] * R)[rs1 ∪ rs0, f, g], r ∈ rs0
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]% ⊦ ((r => o))(H) ↔ r ≠ null ∧ H = (∅ ++ r)[r, o]; (ss)