| BRANCH_SIZE = # zbrar, iast[adr] = indexnode(brar, bv1, nused), zbrar[n] = mkzentry(key, adr0), indexnode(brar, bv1, nused) = save(mkznode(rp, zbrar, bv1, false, nused)), n < nused, n < BRANCH_SIZE, sorted(zbrar, 0, nused), key ∈ payload(load(brar, 0, nused), 0, nused), adr ∈ iast, nused ≤ BRANCH_SIZE, ∀ n0. n0 < n ∧ zbrar[n0].entry? → zbrar[n0].key ≠ key ⊦ payload(load(brar, 0, nused), 0, nused)[key] = adr0, load(brar[n]) = mkzentry(key, adr0) ∧ (n0 < n ∧ load(brar[n0]).entry? → load(brar[n0]).key ≠ key) |
⊦ save(znd) = indexnode(save(znd.zbranches, 0, znd.usedsize), znd.leaf, znd.usedsize)
BRANCH_SIZE = # zbrar, zbrar[n] = mkzentry(key, adr0), iast[adr] = indexnode(brar, bv1, nused), indexnode(brar, bv1, nused) = indexnode (save(mkznode(rp, zbrar, bv1, false, nused).zbranches, 0, mkznode(rp, zbrar, bv1, false, nused).usedsize), mkznode(rp, zbrar, bv1, false, nused).leaf, mkznode(rp, zbrar, bv1, false, nused).usedsize), n < BRANCH_SIZE, n < nused, sorted(zbrar, 0, nused), adr ∈ iast, key ∈ payload(load(brar, 0, nused), 0, nused), nused ≤ BRANCH_SIZE, ∀ n0. n0 < n ∧ zbrar[n0].entry? → zbrar[n0].key ≠ key ⊦ payload(load(brar, 0, nused), 0, nused)[key] = adr0, load(brar[n]) = mkzentry(key, adr0) ∧ (n0 < n ∧ load(brar[n0]).entry? → load(brar[n0]).key ≠ key)
Used terms: mkznode(rp, zbrar, bv1, false, nused)