| (o[ls(r, x)] * true)[rs, cf, af(r; o)], (o0[r => a × r0] * true)[rs, cf, af], (o[ls(r0, x0)] * true)[rs, cf, af] ⊦ x = a ' + x0 ↔ true, o = o0 |
(o[ls(r, x)] * true)[rs, cf, af(r; o)], (o0[r => a × r0] * o[ls(r0, x0)] * true)[rs, cf, af] ⊦ o = o0, x = a ' + x0
Used simplifier rules: ⊦ (R0 * R)[rs, cf, af] → (true * R)[rs, cf, af]; (s)%⊦ (o[P] * true)[rs, cf, af] ∧ o0 ≠ o → ((o0[P0] * true)[rs, cf, af] ↔ (o[P] * o0[P0] * true)[rs, cf, af]); (s)%sep-com: ⊦ R0 * R1 = R1 * R0; from specification heap-sep[heap-aux]%sep-ass: ⊦ (R0 * R1) * R2 = R0 * R1 * R2; from specification heap-sep[heap-aux]