| H[r2] = a × r, r1 = null, ((ll-trav(r0, r1, r2, x) * P))(H) ⊦ r2 = null, ∃ x0, x1, a0. x = x0 + a0 ' + x1 ∧ ((lls(r0, r2, x0) * r2 => a0 × r * lls(r, null, x1) * P))(H) |
H[r0] = a × r, ((lls(r0, null, x) * P))(H) ⊦ r0 = null, ∃ x0, x1, a0. x = x0 + a0 ' + x1 ∧ ((lls(r0, r0, x0) * r0 => a0 × r * lls(r, null, x1) * P))(H)
Used simplifier rules: ll-trav2-null-def: ⊦ ((ll-trav(r0, null, r2, x) * P))(H) ↔ r2 = r0 ∧ ((lls(r0, null, x) * P))(H);%sep-com: ⊦ P0 * P1 = P1 * P0; from specification heap-sep%sep-ass: ⊦ (P0 * P1) * P2 = P0 * P1 * P2; from specification heap-sep