| H[r0] = a0 × r3, True(r3 = r1), ∃ r. (((r0 => a × r * lls(r, r2, x)) * P))(H) ⊦ ((r0 => a × r1 * lls(r1, r2, x) * P))(H) |
(((r0 => a × r3 * lls(r3, r2, x)) * P))(H), True(false) ⊦ ((r0 => a × r1 * lls(r1, r2, x) * P))(H)
Used simplifier rules: ⊦ a × r = a0 × r0 ↔ a = a0 ∧ r = r0; (ws)% ⊦ ((r => ce * P))(H) → (H[r] = ce0 ↔ ce = ce0); (s)%sep-com: ⊦ P0 * P1 = P1 * P0; from specification heap-sep%sep-ass: ⊦ (P0 * P1) * P2 = P0 * P1 * P2; from specification heap-sep