| ¬ n0 ≠ m0 + n, n0 < # ar0 ⊦ copy(ar, m, ar0, m0, n)[m0 + n, ar[m + n]][n0] = copy(ar, m + 1, ar0, m0 + 1, n)[m0, ar[m]][n0], # ar0 = 0 |
m0 + n < # ar0 ⊦ # ar0 = 0, ar[m + n] = copy(ar, m + 1, ar0, m0 + 1, n)[m0, ar[m]][m0 + n]
Used simplifier rules: size-copy: ⊦ # copy(ar, m, ar0, m0, n) = # ar0;%cgetput: m < # ar ⊦ ar[m, a][m] = a; from specification array%ls-le-simp: ⊦ m < n → (n ≤ m ↔ false); from specification nat%lels: ⊦ ¬ m < n ↔ n ≤ m; from specification nat