| ((r => o))(mk(rs, f)) ⊦ (r => o * emp)[rs, f], r ∈ rs |
((r => o))(mk(rs, f)) ⊦ mk(rs, f) = (∅ ++ r)[r, o], r = null, r ∈ rs
Used simplifier rules: apply: ⊦ P[rs, f] ↔ P(mk(rs, f));% ⊦ ¬ false(H); (s)% ⊦ ⌜false⌝ = false; (s)% ⊦ null => o = ⌜false⌝ ; (s)% ⊦ ((r => o))(H) ↔ r ≠ null ∧ H = (∅ ++ r)[r, o]; (ss)%sep-com: ⊦ P0 * P1 = P1 * P0; from specification heap-sep%sep-ass: ⊦ (P0 * P1) * P2 = P0 * P1 * P2; from specification heap-sep% ⊦ emp * P = P; (s)