| # ar = n2 + n0 + n1, n0 < # ar, n3 < n2 + n1, n1 ≤ n3, n0 + n1 ≤ # ar ⊦ ar[n3 + n0] = (fill(mkarray(n1), a) + subarray(ar, n0 + n1, n2))[n3], n2 = 0 |
⊦ # ar0 ≤ n ∧ n < # ar0 + # ar1 → (ar0 + ar1)[n] = ar1[n - # ar0]
# ar = n2 + n0 + n1, n3 < n2 + n1, n0 < # ar, n3 < # fill(mkarray(n1), a) + # subarray(ar, n0 + n1, n2), n0 + n1 ≤ # ar, n1 ≤ n3, # fill(mkarray(n1), a) ≤ n3 ⊦ ar[n3 + n0] = subarray(ar, n0 + n1, n2)[n3 - # fill(mkarray(n1), a)], n2 = 0
Used simplifier rules: ⊦ # fill(ar, a) = # ar; (s)% ⊦ # mkarray(n) = n; (s)% ⊦ # subarray(ar, m, n) = n; (s)%c: ⊦ m + n = n + m; from specification nat-basic Used terms: n3, subarray(ar, n0 + n1, n2), fill(mkarray(n1), a)