| ⊦ r = null, r ∈ H0, r ∈ rs, (∃ r0. ¬ r0 ∈ rs ∧ r0 ≠ null ∧ ¬ r0 ∈ H0 ++ r ∧ H0 = H0 ++ r ++ r0) ∨ (∃ r0, o. ¬ r0 ∈ rs ∧ r0 ∈ H0 ++ r ∧ H0 = (H0 ++ r)[r0, o]) ∨ (∃ r0. ¬ r0 ∈ rs ∧ r0 ∈ H0 ++ r ∧ H0 = (H0 ++ r) -- r0) |
⊦ r = null, r ∈ H0, r ∈ rs, ∃ r0. ¬ r0 ∈ rs ∧ r0 ≠ null ∧ r0 ≠ r ∧ ¬ r0 ∈ H0 ∧ H0 = H0 ++ r ++ r0, ∃ r0, o. ¬ r0 ∈ rs ∧ (r0 = r ∨ r0 ∈ H0) ∧ H0 = (H0 ++ r)[r0, o], ∃ r0. ¬ r0 ∈ rs ∧ (r0 = r ∨ r0 ∈ H0) ∧ H0 = (H0 ++ r) -- r0
Used simplifier rules: in-alloc: r0 ≠ null, ¬ r0 ∈ H ⊦ r ∈ H ++ r0 ↔ ¬ ¬(r = r0 ∨ r ∈ H); from specification heap