| # zbrar0 = BRANCH_SIZE, # zbrar1 = BRANCH_SIZE, save(zbrar0, n, m0 +1) = save(zbrar1, n, m0 +1), n + m0 +1 ≤ 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 +1) = payload(zbrar1, n, m0 +1) |
# zbrar0 = BRANCH_SIZE, # zbrar1 = BRANCH_SIZE, save(zbrar0, n, m0 + 1) = save(zbrar1, n, m0 + 1), 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 + 1) = payload(zbrar1, n, m0 + 1)
Used simplifier rules: ⊦ BRANCH_SIZE ≠ 0; (s)%lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic1%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic1%c: ⊦ m + n = n + m; from specification nat-basic2%succ-01: ⊦ m + 1 ≤ n ↔ m < n; from specification nat%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic2%succ: ⊦ m +1 = m + 1; from specification nat-basic2