| ⊦ ((r =>_ * P))(H) ↔ ((r => o1 * P))(H[r, o1]) ∧ r ∈ H |
r ∈ H ⊦ ((r => o0 * P))(H[r, o1]) ↔ o0 = o1 ∧ ((r =>_ * P))(H)
Used simplifier rules: mapex: ⊦ r =>_ = _∃(λ o. r => o);%ex3-shift: ⊦ ((_∃ oP * P))(H) ↔ (∃ o. ((oP(o) * P))(H));%map-in: ⊦ ((r => o * P))(H) → r ∈ H;%mapex: ⊦ r =>_ = _∃(λ o. r => o);%ex3-shift: ⊦ ((_∃ oP * P))(H) ↔ (∃ o. ((oP(o) * P))(H));%sep-ass: ⊦ (P0 * P1) * P2 = P0 * P1 * P2; from specification heap-sep%sep-com: ⊦ P0 * P1 = P1 * P0; from specification heap-sep Used terms: o1, H, P, o1, r