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