| # save(zbrar1, 0, nused) = # save(zbrar0, 0, nused), # zbrar0 = BRANCH_SIZE, BRANCH_SIZE = # zbrar1, zbrar0[n] = mkzbranch(key0, adr0, r0), zbrar1[n] = mkzbranch(key1, adr1, r1), iast0[adr] = indexnode(save(zbrar1, 0, nused), bv, nused), iast1[adr] = indexnode(save(zbrar1, 0, nused), bv, nused), n < BRANCH_SIZE, n < nused, adr ∈ iast0, adr ∈ iast1, nused ≤ BRANCH_SIZE, ∀ n. n < # save(zbrar1, 0, nused) → save(zbrar1, 0, nused)[n] = save(zbrar0, 0, nused)[n] ⊦ key1 = key0 ∧ adr1 = adr0 |
# zbrar0 = BRANCH_SIZE, BRANCH_SIZE = # zbrar1, iast1[adr] = indexnode(save(zbrar1, 0, nused), bv, nused), iast0[adr] = indexnode(save(zbrar1, 0, nused), bv, nused), zbrar1[n] = mkzbranch(key1, adr1, r1), zbrar0[n] = mkzbranch(key0, adr0, r0), n < nused, n < BRANCH_SIZE, adr ∈ iast1, adr ∈ iast0, nused ≤ BRANCH_SIZE, ∀ n0. n0 < BRANCH_SIZE → save(zbrar1, 0, nused)[n0] = save(zbrar0, 0, nused)[n0] ⊦ key1 = key0 ∧ adr1 = adr0
Used simplifier rules: ⊦ # save(zbrar, m, nused) = BRANCH_SIZE; (s)