| n = m + 1, n ≤ # ints0, ∀ n, intfun. n < # ints0 → mapFun(intfun, ints0)[n] = intfun(ints0[n]) ∨ ints0 = [] ⊦ n = 0, mapFun(intfun, ints0)[m] = intfun((i ' + ints0)[n]) |
m < # ints0, ∀ n, intfun0. n < # ints0 → mapFun(intfun0, ints0)[n] = intfun0(ints0[n]) ⊦ mapFun(intfun, ints0)[m] = intfun(ints0[m]), ints0 = []
Used simplifier rules: l: ⊦ # ints = 0 ↔ ints = []; from specification list-data[intlista]%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic1%succ-01: ⊦ m + 1 ≤ n ↔ m < n; from specification nat%a: ⊦ (ints + ints0) + ints1 = ints + ints0 + ints1; from specification list[intlista]%get-succ: ⊦ (i ' + ints)[n + 1] = ints[n]; from specification list-del[intlista]%c: ⊦ m + n = n + m; from specification nat-basic2%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic2%oz: ⊦ m + 1 ≠ 0; from specification nat-basic2