| # ar = m + 1, n ≤ m ⊦ ar = [], ar[n] = copy(ar, 1, mkarray(m + 1), 1, m)[0, ar[0]][n] |
⊦ m ≠ n → ar[n, a][m] = ar[m]
n ≠ 0, # ar = m + 1, n ≤ m ⊦ ar = [], ar[n] = copy(ar, 1, mkarray(m + 1), 1, m)[n]
Used simplifier rules: size-copy: ⊦ # copy(ar, m, ar0, m0, n) = # ar0; from specification array-copy%Size-mkarray: ⊦ # mkarray(n) = n; from specification array%zero: ⊦ 0 < m ↔ m ≠ 0; from specification nat-basic1%oz: ⊦ m + 1 ≠ 0; from specification nat-basic2%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic2%c: ⊦ m + n = n + m; from specification nat-basic2%cgetput: m < # ar ⊦ ar[m, a][m] = a; from specification array Used terms: n, ar[0], 0, copy(ar, 1, mkarray(m + 1), 1, m)