| mk(rs1, f, g) = (∅ ++ r)[r, o, a], rs1 ∩ rs0 = ∅, R[rs0, f, g] ⊦ r = null, ∃ o. (a[r => o] * R)[rs1 ∪ rs0, f, g], (∃ o. ((r => o))(mk(rs1, f))) ∧ (r0 ∈ rs1 → g(r0) = a) |
⊦ Ha0 = Ha1 ↔ (∀ r. (r ∈ Ha0 ↔ r ∈ Ha1) ∧ (r ∈ Ha0 → Ha0[r]o = Ha1[r]o ∧ Ha0[r]a = Ha1[r]a))
rs1 ∩ rs0 = ∅, R[rs0, f, g], ∀ r0. (r0 ∈ mk(rs1, f, g) ↔ r0 ∈ (∅ ++ r)[r, o, a]) ∧ (r0 ∈ mk(rs1, f, g) → mk(rs1, f, g)[r0]o = (∅ ++ r)[r, o, a][r0]o ∧ mk(rs1, f, g)[r0]a = (∅ ++ r)[r, o, a][r0]a) ⊦ r = null, ∃ o. (a[r => o] * R)[rs1 ∪ rs0, f, g], (∃ o. ((r => o))(mk(rs1, f))) ∧ (r0 ∈ rs1 → g(r0) = a)
Used terms: (∅ ++ r)[r, o, a], mk(rs1, f, g)