| H1 ++ r = H0 ∪ H4 ∪ H3, P(H4), P0(H3), rely(O1(r0), O1(r; O1(r0)), H1 ++ r, O2, H2), r0 ∈ H4, H4 ⊥ H3, H0 ⊥ H4, H0 ⊥ H3 ⊦ O2(r0) = O1(r0), r = null, r ∈ H1 |
⊦ rely(me, O1, H1, O2, H2) ↔ (∀ r. (O1(r) = me ↔ O2(r) = me) ∧ (O1(r) = me → (r ∈ H1 ↔ r ∈ H2) ∧ (r ∈ H1 → H1[r] = H2[r])))
H1 ++ r = H0 ∪ H4 ∪ H3, P(H4), P0(H3), r0 ∈ H4, H0 ⊥ H3, H0 ⊥ H4, H4 ⊥ H3, ∀ r1. (O1(r; O1(r0))(r1) = O1(r0) ↔ O2(r1) = O1(r0)) ∧ (O1(r; O1(r0))(r1) = O1(r0) → (r1 ∈ H1 ++ r ↔ r1 ∈ H2) ∧ (r1 ∈ H1 ++ r → (H1 ++ r)[r1] = H2[r1])) ⊦ O2(r0) = O1(r0), r = null, r ∈ H1
Used terms: H2, O2, H1 ++ r, O1(r; O1(r0)), O1(r0)