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