| # zbrar = BRANCH_SIZE, ((r => mkznode(rp0, zbrar, true, false, height0) * P))(zh), nsize(height0, nstat), sorted(zbrar, 0, height0), unmodified(adr, mkznode(rp0, zbrar, true, false, height0), iast), adr ∈ iast, height0 ≤ BRANCH_SIZE ⊦ ∃ zbrar0, nused. nsize(nused, nstat) ∧ nused ≤ # zbrar0 ∧ # zbrar0 = BRANCH_SIZE ∧ sorted(zbrar0, 0, nused) ∧ payload(zbrar, 0, height0) = payload(zbrar0, 0, nused) ∧ ((P * r => mkznode(rp0, zbrar0, true, true, nused)))(zh[r, mkznode(rp0, zbrar, true, true, height0)]) |
Used simplifier rules: sep-ass: ⊦ (P * P3) * P4 = P * P3 * P4; from specification heap-sep[zheap]%sep-com: ⊦ P * P2 = P2 * P; from specification heap-sep[zheap]% ⊦ ((r => znd * P0))(zh) → r ∈ zh; (s)%r ∈ zh ⊦ ((r => znd * P0))(zh) → (((r => znd0 * P0))(zh[r, znd1]) ↔ znd0 = znd1); (ss) Used terms: zbrar, height0