| n1 < # ar1, n1 < n0, m0 + n0 ≤ m, m + n ≤ # ar, n0 ≤ # ar1, n ≤ # ar0, # ar ≤ n1 + m0, m + n ≤ n1 + m0 ⊦ copy(ar0, 0, ar, m, n)[n1 + m0] = ar[n1 + m0] |
∀ n1, ar1, n0, m0, m, ar, ar0. n1 < # ar1 ∧ n1 < n0 ∧ m0 + n0 ≤ m ∧ m + n2 ≤ # ar ∧ n0 ≤ # ar1 ∧ n2 ≤ # ar0 ∧ # ar ≤ n1 + m0 ∧ m + n2 ≤ n1 + m0 → copy(ar0, 0, ar, m, n2)[n1 + m0] = ar[n1 + m0], n1 < # ar1, n1 < n0, m0 + n0 ≤ m, m + n2 +1 ≤ # ar, n0 ≤ # ar1, n2 +1 ≤ # ar0, # ar ≤ n1 + m0, m + n2 +1 ≤ n1 + m0 ⊦ copy(ar0, 0, ar, m, n2 +1)[n1 + m0] = ar[n1 + m0]
Used simplifier rules: Copy-zero: ⊦ copy(ar, m, ar0, m0, 0) = ar0;%nat freely generated by 0, +1;;