| # zbrar1 = BRANCH_SIZE, # zbrar0 = BRANCH_SIZE, save(zbrar0, n, m0)[n + m0, save(zbrar0[n + m0])] = save(zbrar1, n, m0)[n + m0, save(zbrar1[n + m0])], save(zbrar1, n, m0) = save(zbrar0, n, m0), n + m0 < BRANCH_SIZE, save(zbrar1, n, m0) = save(zbrar0, n, m0) → payload(zbrar1, n, m0) = payload(zbrar0, n, m0) ⊦ payload(zbrar0, n, m0) ⊕ (zbrar0[n + m0].entry? ⊃ (∅)[zbrar0[n + m0].key, zbrar0[n + m0].adr];∅) = payload(zbrar1, n, m0) ⊕ (zbrar1[n + m0].entry? ⊃ (∅)[zbrar1[n + m0].key, zbrar1[n + m0].adr];∅) |
# zbrar1 = BRANCH_SIZE, # zbrar0 = BRANCH_SIZE, payload(zbrar1, n, m0) = payload(zbrar0, n, m0), save(zbrar1, n, m0) = save(zbrar0, n, m0), save(zbrar0[n + m0]) = save(zbrar1[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];∅)
Used simplifier rules: ⊦ # save(zbrar, m, nused) = BRANCH_SIZE; (s)%put-both-eq: ⊦ brar[n, br] = brar[n, br0] ↔ ¬ ¬(n < # brar → br = br0); from specification array[branch-array]