| ⊦ r = null, unmodified (@(n, m0, m1), mkznode(null, mkzbrarray(BRANCH_SIZE), true, false, 0), nodes((∅)[n, indexblock(indexnode(mkbrarray(BRANCH_SIZE), true, 0) ', @(m0, m1) ', m1)])) ∧ ((true * r => mkznode(null, mkzbrarray(BRANCH_SIZE), true, false, 0)))((∅ ++ r)[r, mkznode(null, mkzbrarray(BRANCH_SIZE), true, false, 0)]) |
⊦ r = null, unmodified (@(n, m0, m1), mkznode(null, mkzbrarray(BRANCH_SIZE), true, false, 0), nodes((∅)[n, indexblock(indexnode(mkbrarray(BRANCH_SIZE), true, 0) ', @(m0, m1) ', m1)]))
Used simplifier rules: in-emp: ⊦ ¬ r ∈ ∅; from specification heap[zheap]%in-alloc: r0 ≠ null, ¬ r0 ∈ zh ⊦ r ∈ zh ++ r0 ↔ ¬ ¬(r = r0 ∨ r ∈ zh); from specification heap[zheap]%map-putex-simp: r ∈ zh ⊦ ¬ ((r => znd * P0))(zh[r, znd0]) ↔ ¬(znd = znd0 ∧ ((r =>_ * P0))(zh)); from specification maplet[zheap]%sep-ass: ⊦ (P * P3) * P4 = P * P3 * P4; from specification heap-sep[zheap]%sep-com: ⊦ P * P2 = P2 * P; from specification heap-sep[zheap]%mapex-new-rw: ¬ r ∈ zh, r ≠ null ⊦ ¬ ((r =>_ * P0))(zh ++ r) ↔ ¬ P0(zh); from specification maplet[zheap]%trueH: ⊦ true(zh); from specification heap-sep[zheap]