| n < # ar0 + # ar1 ⊦ copy(ar, m, ar0 + ar1, n0 + # ar0, m1)[n] = (ar0 + copy(ar, m, ar1, n0, m1))[n] |
⊦ m0 < # ar1 → copy(ar0, n, ar1, n0, m)[m0] = (m0 < n0 ∨ n0 + m ≤ m0 ⊃ ar1[m0];ar0[m0 + n - n0])
⊦ #(ar0 + ar1) = # ar0 + # ar1
⊦ (ar + ar0) + ar1 = ar + ar0 + ar1
n < # ar0 + # ar1, n < #(ar0 + ar1) ⊦ (n < n0 + # ar0 ∨ (n0 + # ar0) + m1 ≤ n ⊃ (ar0 + ar1)[n];ar[n + m - n0 + # ar0]) = (ar0 + copy(ar, m, ar1, n0, m1))[n]
Used simplifier rules: append-len: ⊦ #(ar0 + ar1) = # ar0 + # ar1;%append-a: ⊦ (ar + ar0) + ar1 = ar + ar0 + ar1;% ⊦ m < n ↔ ¬ n ≤ m; (ss)% ⊦ m < n → (n ≤ m ↔ false); (s) Used terms: n, m1, n0 + # ar0, ar0 + ar1, m, ar