| rs1 ∩ rs0 = ∅, a[P][rs1, f, g], ∃ rs2, rs1. rs2 ∪ rs1 = rs0 ∧ rs2 ∩ rs1 = ∅ ∧ a0[P0][rs2, f, g] ∧ R[rs1, f, g] ⊦ g(r) = a, g(r) = a0, (a[P] * a0[P0] * true)[rs1 ∪ rs0, f(r; o), g] |
rs2 ∩ rs = ∅, rs1 ∩ rs2 = ∅, rs1 ∩ rs = ∅, a0[P0][rs2, f, g], R[rs, f, g], a[P][rs1, f, g] ⊦ g(r) = a0, g(r) = a, (a[P] * a0[P0] * true)[rs1 ∪ rs2 ∪ rs, f(r; o), g]
Used simplifier rules: int-c: ⊦ rs ∩ rs0 = rs0 ∩ rs; from specification set-union[refset]%int-a: ⊦ (rs ∩ rs0) ∩ rs1 = rs ∩ rs0 ∩ rs1; from specification set-union[refset]%unc: ⊦ rs ∪ rs0 = rs0 ∪ rs; from specification set-union[refset]%una: ⊦ (rs ∪ rs0) ∪ rs1 = rs ∪ rs0 ∪ rs1; from specification set-union[refset]% ⊦ rs ∩ (rs0 ∪ rs1) = ∅ ↔ rs ∩ rs0 = ∅ ∧ rs ∩ rs1 = ∅; (ws)