| (((r1 => a0 × r * lls(r, null, y)) * lls(r0, r1, x0) * P))(H) ⊦ r1 = null, ((_∃(λ r1. lls(r0, r1, x0) * r1 => a0 × r) * lls(r, null, y) * P))(H) |
(((r1 => a0 × r * lls(r, null, y)) * lls(r0, r1, x0) * P))(H) ⊦ r1 = null, ∃ r1. (((lls(r0, r1, x0) * r1 => a0 × r) * lls(r, null, y) * P))(H)
Used simplifier rules: sep-com: ⊦ P0 * P1 = P1 * P0; from specification heap-sep%sep-ass: ⊦ (P0 * P1) * P2 = P0 * P1 * P2; from specification heap-sep% ⊦ ((_∃ rP * P))(H) ↔ (∃ r. ((rP(r) * P))(H)); (s)