| # ar1 = (n2 + m) + n1, n1 ≤ # ar1, n1 + m ≤ # ar1, n0 + m ≤ # ar0, m + n1 ≤ # ar1 ⊦ copy(ar0, n0, ar1, n1, m) = subarray(ar1, 0, n1) + subarray(ar0, n0, m) + subarray(ar1, n1 + m, n2) |
⊦ ar1 = ar2 ↔ # ar1 = # ar2 ∧ (∀ n. n < # ar1 → ar1[n] = ar2[n])
# ar1 = (n2 + m) + n1, m + n1 ≤ # ar1, n0 + m ≤ # ar0, n1 + m ≤ # ar1, n1 ≤ # ar1 ⊦ # copy(ar0, n0, ar1, n1, m) = #(subarray(ar1, 0, n1) + subarray(ar0, n0, m) + subarray(ar1, n1 + m, n2)) ∧ (∀ n. n < # copy(ar0, n0, ar1, n1, m) → copy(ar0, n0, ar1, n1, m)[n] = (subarray(ar1, 0, n1) + subarray(ar0, n0, m) + subarray(ar1, n1 + m, n2))[n])
Used terms: subarray(ar1, 0, n1) + subarray(ar0, n0, m) + subarray(ar1, n1 + m, n2), copy(ar0, n0, ar1, n1, m)