| # 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])], n + m0 < BRANCH_SIZE, m0 ≤ m0 + 1, n + m0 + 1 ≤ # zbrar1, ∀ zbrar1, zbrar0, n. # zbrar1 = BRANCH_SIZE ∧ # zbrar0 = BRANCH_SIZE ∧ save(zbrar0, n, m0) = save(zbrar1, n, m0) ∧ n + m0 ≤ BRANCH_SIZE → payload(zbrar0, n, m0) = payload(zbrar1, n, m0) ⊦ payload(zbrar0, n, m0) ⊕ (zbrar0[n + m0].entry? ⊃ (∅)[zbrar0[n + m0].key, zbrar0[n + m0].adr];∅) = payload(zbrar1, n, m0) ⊕ payload(zbrar1, n + m0, m0 + 1 - m0) |
# zbrar0 = BRANCH_SIZE, # zbrar1 = BRANCH_SIZE, save(zbrar0, n, m0)[n + m0, save(zbrar0[n + m0])] = save(zbrar1, n, m0)[n + m0, save(zbrar1[n + m0])], n + m0 < BRANCH_SIZE, ∀ zbrar1, zbrar0, n. # zbrar1 = BRANCH_SIZE ∧ # zbrar0 = BRANCH_SIZE ∧ save(zbrar0, n, m0) = save(zbrar1, n, m0) ∧ n + m0 ≤ BRANCH_SIZE → payload(zbrar0, n, m0) = payload(zbrar1, 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];∅)
Used simplifier rules: payload-one: ⊦ m < # zbrar → payload(zbrar, m, 1) = (zbrar[m].entry? ⊃ (∅)[zbrar[m].key, zbrar[m].adr];∅);%lep: ⊦ m ≤ m + n; from specification nat%succ-01: ⊦ m + 1 ≤ n ↔ m < n; from specification nat%c: ⊦ m + n = n + m; from specification nat-basic2%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic2%eq-01: ⊦ m + n - m = n; from specification nat