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