| m + nx0 < # ar, ∀ ar, f. nx0 < # ar → # ar.mapIndices(nx0, f) = # ar ⊦ # ar.mapIndices(m + nx0, f) = # ar |
⊦ n < # ar → ar.mapIndices(n ' + nx, f) = (n < # ar ⊃ ar[n, f(ar[n])];ar).mapIndices(nx, f)
nx0 < # ar, m < # ar, ∀ ar, f. nx0 < # ar → # ar.mapIndices(nx0, f) = # ar ⊦ # ar[m, f(ar[m])].mapIndices(nx0, f) = # ar
Used simplifier rules: mapindices-rec: ⊦ n < # ar → ar.mapIndices(n ' + nx, f) = (n < # ar ⊃ ar[n, f(ar[n])];ar).mapIndices(nx, f);% ⊦ m < n → n ≠ 0; (s)%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic%a: ⊦ (nx + nx0) + nx1 = nx + nx0 + nx1; from specification list[nat-list-set]% ⊦ m ' + nx < n ↔ m < n ∧ nx < n; (ws)% ⊦ n + nx = n ' + nx; (s)