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