| n < # ar0 + # ar1, n < n0 + # ar0 ∨ (n0 + # ar0) + m1 ≤ n ⊦ (ar0 + ar1)[n] = (n < # ar0 ⊃ ar0[n];copy(ar, m, ar1, n0, m1)[n - # ar0]) |
⊦ n < # ar0 → (ar0 + ar1)[n] = ar0[n]
⊦ (ar + ar0) + ar1 = ar + ar0 + ar1
n < # ar0 + # ar1, n < n0 + # ar0 ∨ (n0 + # ar0) + m1 ≤ n ⊦ (ar0 + ar1)[n] = copy(ar, m, ar1, n0, m1)[n - # ar0], n < # ar0
Used simplifier rules: append-at1: ⊦ n < # ar0 → (ar0 + ar1)[n] = ar0[n];%append-a: ⊦ (ar + ar0) + ar1 = ar + ar0 + ar1;