| m + n0 < BRANCH_SIZE, m < BRANCH_SIZE, m + nused ≤ BRANCH_SIZE ⊦ save(load(save(zbrar, m, nused), m, nused), m, nused)[m + n0] = save(zbrar, m, nused)[m + n0] |
n < nused, m + nused ≤ BRANCH_SIZE ⊦ save(zbrar, m, nused)[m + n] = save(zbrar[m + n])
Used simplifier rules: at-save-out-upper: m + nused ≤ n, n < BRANCH_SIZE ⊦ save(zbrar, m, nused)[n] = mkbrarray(BRANCH_SIZE)[n];%at-load: n < nused, m + nused ≤ BRANCH_SIZE ⊦ load(brar, m, nused)[m + n] = load(brar[m + n]);%at-save: n < nused, m + nused ≤ BRANCH_SIZE ⊦ save(zbrar, m, nused)[m + n] = save(zbrar[m + n]);%save-load-save-br: ⊦ save(load(save(zbr))) = save(zbr);%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic%c: ⊦ m + n = n + m; from specification nat-basic% ⊦ m + n ≤ m + n0 ↔ n ≤ n0; (s)% ⊦ m ≤ n ↔ ¬ n < m; (ss) Used terms: n0, nused, m, load(save(zbrar, m, nused), m, nused)