| r ∈ H0, ∀ H2, r, H0. # H2 < # (H ++ r0)[r0, o] → r ∈ H0 → (H0 \ H2)[r] = H0[r] ∨ r ∈ H2 ⊦ ((H0 -- r0) \ H)[r] = H0[r], r = r0, r0 = null, r0 ∈ H, r ∈ H |
Used simplifier rules: in-alloc: r0 ≠ null, ¬ r0 ∈ H ⊦ r ∈ H ++ r0 ↔ r = r0 ∨ r ∈ H;%size-write: r ∈ H ⊦ # H[r, o] = # H;%size-alloc: ¬ r ∈ H, r ≠ null ⊦ #(H ++ r) = # H + 1;%in-del: ⊦ r ∈ H -- r0 ↔ r ≠ r0 ∧ r ∈ H;%at-del: r ∈ H ⊦ r ≠ r0 → (H -- r0)[r] = H[r];% ⊦ m < n + 1 ↔ ¬ n < m; (s)% ⊦ ¬ n < n; (s)%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic%c: ⊦ m + n = n + m; from specification nat-basic Used terms: H, r, H0 -- r0