| f(r) = (r ∈ rs0 ⊃ f0(r);mk(rs1, f1, g1)[r]o), g(r) = (r ∈ rs0 ⊃ g0(r);mk(rs1, f1, g1)[r]a), rs0 ∩ rs1 = ∅, P0(mk(rs0, f0)), P1(mk(rs1, f1)), r ∈ rs, r ∈ rs1 → g1(r) = a, r ∈ rs0 → g0(r) = a, ∀ r. r ∈ rs0 → g0(r) = a, ∀ r. r ∈ rs1 → g1(r) = a, ∀ r0. (r0 ∈ rs ↔ r0 ∈ mk(rs0, f0, g0) ∪ mk(rs1, f1, g1)) ∧ (r0 ∈ rs → f(r0) = (mk(rs0, f0, g0) ∪ mk(rs1, f1, g1))[r0]o ∧ g(r0) = (mk(rs0, f0, g0) ∪ mk(rs1, f1, g1))[r0]a), r ∈ rs0 ∨ r ∈ rs1 ⊦ # rs = 0, g(r) = a, rs = ∅ |
Used simplifier rules: int-a: ⊦ (rs ∩ rs0) ∩ rs1 = rs ∩ rs0 ∩ rs1; from specification set-union[refset]%int-c: ⊦ rs ∩ rs0 = rs0 ∩ rs; from specification set-union[refset]% ⊦ rs ∩ rs0 = ∅ ∧ r ∈ rs → (r ∈ rs0 ↔ false); (as)% ⊦ r ∈ rs → mk(rs, f, g)[r]a = g(r); (s)% ⊦ r ∈ rs → mk(rs, f, g)[r]o = f(r); (s)