| nx < # ar, n < # ar ⊦ ar.mapIndices(nx + n ', f) = ar.mapIndices(nx, f)[n, f(ar[n])], n ∈ nx |
⊦ n < # ar → ar.mapIndices(n ', f) = ar[n, f(ar[n])]
⊦ ar.mapIndices([], f) = ar
n < # ar, m + nx0 < # ar, ∀ ar, n, f. nx0 < # ar ∧ n < # ar → ar.mapIndices(nx0 + n ', f) = ar.mapIndices(nx0, f)[n, f(ar[n])] ∨ n ∈ nx0 ⊦ ar.mapIndices((m + nx0) + n ', f) = ar.mapIndices(m + nx0, f)[n, f(ar[n])], n ∈ m + nx0
Used simplifier rules: map-indices-one: ⊦ n < # ar → ar.mapIndices(n ', f) = ar[n, f(ar[n])];%mapindices-base: ⊦ ar.mapIndices([], f) = ar;%nat-list freely generated by [], +;;% ⊦ [] + nx = nx; (s)%a: ⊦ (nx + nx0) + nx1 = nx + nx0 + nx1; from specification list[nat-list-set]