| rs1 ∩ rs = ∅, rs1 ∩ rs2 = ∅, rs2 ∩ rs = ∅, a[P][rs1, f, g], R[rs, f, g], a0[P0][rs2, f, g] ⊦ g(r) = a, g(r) = a0, (a[P] * a0[P0] * true)[rs1 ∪ rs2 ∪ rs, f(r; o), g], a[P][rs1, f(r; o), g] ∧ (a0[P0] * true)[rs2 ∪ rs, f(r; o), g] ∧ rs1 ∩ (rs2 ∪ rs) = ∅ |
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], a[P][rs1, f(r; o), g] ∧ (a0[P0] * true)[rs2 ∪ rs, f(r; o), g]
Used simplifier rules: 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)%int-c: ⊦ rs ∩ rs0 = rs0 ∩ rs; from specification set-union[refset]%int-a: ⊦ (rs ∩ rs0) ∩ rs1 = rs ∩ rs0 ∩ rs1; from specification set-union[refset]