| r ∈ H, r0 ∈ H ⊦ ((∅ ++ r)[r, H[r]] ∪ (H -- r))[r0] = H[r0] |
r ∈ H0 ∪ H1 ⊦ H0 ⊥ H1 → (H0 ∪ H1)[r] = (r ∈ H0 ⊃ H0[r];H1[r])
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]
Used simplifier rules: in-uni: ⊦ H0 ⊥ H1 → (r ∈ H0 ∪ H1 ↔ r ∈ H0 ∨ r ∈ H1);%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;%in-del: ⊦ r ∈ H -- r0 ↔ r ≠ r0 ∧ r ∈ H;%disj-singleton-write: r ≠ null ⊦ (∅ ++ r)[r, o] ⊥ H ↔ ¬ r ∈ H; Used terms: r0, H -- r, (∅ ++ r)[r, H[r]]