| r0 ∈ H, r ∈ H, r0 ∈ (∅ ++ r)[r, H[r]] ∪ (H -- r), (∅ ++ r)[r, H[r]] ⊥ H -- r ⊦ (r0 ∈ (∅ ++ r)[r, H[r]] ⊃ (∅ ++ r)[r, H[r]][r0];(H -- r)[r0]) = H[r0] |
r0 ∈ (∅ ++ r)[r, H[r]] ∪ (H -- r), r ∈ H, r0 ∈ H ⊦ (r0 = r ⊃ H[r];H[r0]) = H[r0]
Used simplifier rules: in-write: ⊦ r ∈ H[r0, o] ↔ r ∈ H;%nonnull: ⊦ r ∈ H → r ≠ null;%in-emp: ⊦ ¬ r ∈ ∅;%in-alloc: r0 ≠ null, ¬ r0 ∈ H ⊦ r ∈ H ++ r0 ↔ r = r0 ∨ r ∈ H;%at-write: ⊦ H[r0, o][r] = (r = r0 ∧ r0 ∈ H ⊃ o;H[r]);%at-del: r ∈ H ⊦ r ≠ r0 → (H -- r0)[r] = H[r];%disj-singleton-write: r ≠ null ⊦ (∅ ++ r)[r, o] ⊥ H ↔ ¬ r ∈ H;%in-del: ⊦ r ∈ H -- r0 ↔ r ≠ r0 ∧ r ∈ H;