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