| ⊦ r = null, 0 < BRANCH_SIZE ∧ unmodified (@(n, m0, m1), mkznode(null, mkzbrarray(BRANCH_SIZE), true, false, 0), nodes((∅)[n, indexblock(indexnode(mkbrarray(BRANCH_SIZE), true, 0) ', @(m0, m1) ', m1)])) ∧ 0 ≤ # mkzbrarray(BRANCH_SIZE) ∧ # mkzbrarray(BRANCH_SIZE) = BRANCH_SIZE ∧ sorted(mkzbrarray(BRANCH_SIZE), 0, 0) ∧ ((⌜∅ = payload(mkzbrarray(BRANCH_SIZE), 0, 0)⌝ * 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)])) ∧ ((true * r => mkznode(null, mkzbrarray(BRANCH_SIZE), true, false, 0)))((∅ ++ r)[r, mkznode(null, mkzbrarray(BRANCH_SIZE), true, false, 0)])
Used simplifier rules: true-rev: ⊦ ⌜true⌝ = true; from specification heap-sep[zheap]% ⊦ payload(zbrar, m, 0) = ∅; (s)% ⊦ sorted(zbrar, n, 0); (s)%lez: ⊦ 0 ≤ m; from specification nat%Size-mkarray: ⊦ # mkzbrarray(n) = n; from specification array[zbranch-array]% ⊦ BRANCH_SIZE ≠ 0; (s)%zero: ⊦ 0 < m ↔ m ≠ 0; from specification nat-basic1