| ⊦ r = null, r ∈ H0, r ∈ rs, modify(rs)(H0 ++ r, H0) |
⊦ modify(rs)(H0, H1) ↔ (∃ r. ¬ r ∈ rs ∧ r ≠ null ∧ ¬ r ∈ H0 ∧ H1 = H0 ++ r) ∨ (∃ r, o. ¬ r ∈ rs ∧ r ∈ H0 ∧ H1 = H0[r, o]) ∨ (∃ r. ¬ r ∈ rs ∧ r ∈ H0 ∧ H1 = H0 -- r)
⊦ 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)
Used terms: H0, H0 ++ r, rs