| H[r2] = a × null, ((ll-trav(r0, r1, r2, x) * P))(H) ⊦ r2 = null, (r1 = null ⊃ r0 = r2 ∧ ((lls(r2, null, x) * P))(H);∃ y, b. x = y + b ' + a ' ∧ ((lls(r0, r1, y) * r1 => b × r2 * r2 => a × null * P))(H)) |
H[r2] = a × null, ((ll-trav(r0, r1, r2, x) * P))(H) ⊦ r1 = null, r2 = null, ∃ y, b. x = y + b ' + a ' ∧ ((lls(r0, r1, y) * r1 => b × r2 * r2 => a × null * 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-ass: ⊦ (P0 * P1) * P2 = P0 * P1 * P2; from specification heap-sep%sep-com: ⊦ P0 * P1 = P1 * P0; from specification heap-sep