| g(r) = a ∧ r ∈ rs2 ∪ rs1 ↔ g0(r) = a ∧ r ∈ rs0, rs2 ∩ rs1 = ∅, P(mk(rs2, f)), r ∈ rs2, g(r) = a ∧ r ∈ rs2 ∪ rs1 → f(r) = f0(r), ∀ r. r ∈ rs2 → g(r) = a ⊦ # rs2 = 0, rs2 = ∅, rs2 ∪ (rs0 \ rs2) = rs0, r ∈ rs0 |
rs2 ∩ rs1 = ∅, P(mk(rs2, f)), r ∈ rs2, r ∈ rs2 ∪ rs1, ∀ r. r ∈ rs2 → g(r) = a ⊦ # rs2 = 0, # rs2 + # rs1 = 0, g(r) = a, rs2 = ∅, rs2 ∪ (rs0 \ rs2) = rs0, rs2 ∪ rs1 = ∅, r ∈ rs0
Used simplifier rules: ⊦ rs ∩ rs0 = ∅ → #(rs ∪ rs0) = # rs + # rs0; (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]%size-zero-01: ⊦ rs ≠ ∅ → # rs ≠ 0; (forward) from specification set-basic[refset]%ne-01: ⊦ r ∈ rs → rs ≠ ∅; (forward) from specification set-basic[refset]%unc: ⊦ rs ∪ rs0 = rs0 ∪ rs; from specification set-union[refset]%una: ⊦ (rs ∪ rs0) ∪ rs1 = rs ∪ rs0 ∪ rs1; from specification set-union[refset]% ⊦ r ∈ rs ∪ rs0 ↔ ¬(¬ r ∈ rs ∧ ¬ r ∈ rs0); (ss)