| n1 ≤ n, m1 + n ≤ # ar1 ⊦ # copy(copy(ar0, m0, ar1, m1, n), m1, mkarray(n1), 0, n1) = # copy(ar0, m0, mkarray(n1), 0, n1) ∧ (∀ n0. n0 < # copy(copy(ar0, m0, ar1, m1, n), m1, mkarray(n1), 0, n1) → copy(copy(ar0, m0, ar1, m1, n), m1, mkarray(n1), 0, n1)[n0] = copy(ar0, m0, mkarray(n1), 0, n1)[n0]) |
n0 < n, n0 < n1, m1 + n ≤ # ar1, n1 ≤ n ⊦ n1 = 0, copy(copy(ar0, m0, ar1, m1, n), m1, mkarray(n1), 0, n1)[n0] = copy(ar0, m0, mkarray(n1), 0, n1)[n0], n = 0
Used simplifier rules: size-copy: ⊦ # copy(ar, m, ar0, m0, n) = # ar0;%fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic1%Size-mkarray: ⊦ # mkarray(n) = n; from specification array