| # zbrar0 = BRANCH_SIZE, # zbrar1 = BRANCH_SIZE, mkzbranch(key', adr, rp) = zbrar0[n + m0], payload(zbrar1, n, m0) = payload(zbrar0, n, m0), save(zbrar0[n + m0]) = save(zbrar1[n + m0]), save(zbrar1, n, m0) = save(zbrar0, n, m0), n + m0 < BRANCH_SIZE ⊦ payload(zbrar0, n, m0) ⊕ (zbrar0[n + m0].entry? ⊃ (∅)[zbrar0[n + m0].key, zbrar0[n + m0].adr];∅) = payload(zbrar0, n, m0) ⊕ (zbrar1[n + m0].entry? ⊃ (∅)[zbrar1[n + m0].key, zbrar1[n + m0].adr];∅) |
# zbrar0 = BRANCH_SIZE, # zbrar1 = BRANCH_SIZE, mkbranch(key', adr) = save(zbrar1[n + m0]), mkzbranch(key', adr, rp) = zbrar0[n + m0], payload(zbrar1, n, m0) = payload(zbrar0, n, m0), save(zbrar1, n, m0) = save(zbrar0, n, m0), n + m0 < BRANCH_SIZE ⊦ payload(zbrar0, n, m0) = payload(zbrar0, n, m0) ⊕ (zbrar1[n + m0].entry? ⊃ (∅)[zbrar1[n + m0].key, zbrar1[n + m0].adr];∅)
Used simplifier rules: oplus-empty: ⊦ ri ⊕ ∅ = ri; from specification store+set[node-index]% ⊦ ¬ mkzbranch(key, adr, r).entry?; (s)% ⊦ save(mkzbranch(key, adr, r)) = mkbranch(key, adr); (s)