| rely(me, O1, H1[r, o1], O2, H2) ⊦ ((!(me, O2, r =>_) * P0))(H1) ↔ ((!(me, O2, r => o1) * P0))(H1[r, o1]) ∧ r ∈ H1 |
⊦ rely(me, O1, H1[r, o1], O2, H2) → (((!(me, O2, r =>_ * P) * P0))(H1) ↔ ((!(me, O2, r => o1 * P) * P0))(H1[r, o1]) ∧ r ∈ H1)
Used simplifier rules: ⊦ emp * P = P; (s)%sep-ass: ⊦ (P0 * P1) * P2 = P0 * P1 * P2; from specification heap-sep%sep-com: ⊦ P0 * P1 = P1 * P0; from specification heap-sep Used terms: me, O1, H1, r, o1, O2, H2, emp, P0