| # ar0 < n0 + m1, m1 ≤ m0, n + m0 ≤ # ar, n1 ≤ n0 ⊦ range=(ar2, n2, splice(ar, n, ar0, n0, m0), n1, m1) ↔ range=(ar2, n2, splice(ar, n, ar0, n0, m1), n1, m1), m1 = 0 |
⊦ # ar1 < n1 + m ∧ m ≠ 0 → splice(ar0, n0, ar1, n1, m) = copy(ar0, n0, resize(ar1, n1 + m), n1, m)
# ar0 < n0 + m1, m1 ≤ m0, n + m0 ≤ # ar, n1 ≤ n0 ⊦ range=(ar2, n2, splice(ar, n, ar0, n0, m0), n1, m1) ↔ range=(ar2, n2, copy(ar, n, resize(ar0, n0 + m1), n0, m1), n1, m1), m1 = 0
Used simplifier rules: splice-resize: ⊦ # ar1 < n1 + m ∧ m ≠ 0 → splice(ar0, n0, ar1, n1, m) = copy(ar0, n0, resize(ar1, n1 + m), n1, m);% ⊦ m < n → n ≠ 0; (s)%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic%c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic