| i→n(j) - 1 = n0 + i→n(i), i→n(j) ≤ n0 + i→n(i), n < # countFun(i, j - 1, intfun), i ≤ j, n→i(n) + i ≤ j, 0 ≤ i, 0 ≤ j, i < j, 0 < j, ∀ j0, i0, n, intfun. i→n(j0) - i→n(i0) < i→n(j) - i→n(i) → i0 ≤ j0 ∧ n→i(n) + i0 ≤ j0 ∧ 0 ≤ i0 ∧ 0 ≤ j0 → countFun(i0, j0, intfun)[n] = intfun(i0 + n→i(n)) ⊦ countFun(i, j - 1, intfun) = [], n = # countFun(i, j - 1, intfun), countFun(i, j - 1, intfun)[n] = intfun(i + n→i(n)), j = 1 |
Used simplifier rules: abs-zero: ⊦ i→n(i) = 0 ↔ i = 0; from specification intnat%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic2%c: ⊦ m + n = n + m; from specification nat-basic2%eq: ⊦ m = n + 1 → ¬ m ≤ n; from specification nat%lel: ⊦ i < i0 ∧ i = i1 → i1 < i0; (forward) from specification oelem[intlista]%n ≠ 0 ⊦ m = n - 1 ↔ n = m + 1; (elim) Used terms: i→n(j), m