| modify(rs)(H0, H1) ⊦ modify*(rs)(H1, 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. ¬ 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) ⊦ modify*(rs)(H1, H0)
Used terms: H1, H0, rs