| # nσ = ⌜m⌝ + ⌜1⌝ , leninv(nσ) = ⌜n⌝ + ⌜1⌝ , stutf(nσ) ⊦ inv(nσ)[n] = m |
⊦ stutf(nσ) → (leninv(nσ) = ⌜n⌝ + ⌜1⌝ ↔ (# nσ = ∞ ⊃ ∃ m. nσ[m] = n ∧ (∀ m0. m < m0 → nσ[m0] = n + 1);nσ[(# nσ).n - 1] = n))
Used simplifier rules: inv-inverts-last: ⊦ stutf(nσ) ∧ # nσ = ⌜n⌝ + ⌜1⌝ → inv(nσ)[nσ[n]] = n;%add-assoc: ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2; from specification nat-inf%add-comm: ⊦ n∞1 + n∞2 = n∞2 + n∞1; from specification nat-inf%sum-notinf: ⊦ n∞ = ⌜m⌝ + ⌜n⌝ → (n∞ = ∞ ↔ false); from specification nat-inf%rem-seln-on-add: ⊦ n∞ = ⌜m⌝ + ⌜n⌝ → n∞.n = m + n; from specification nat-inf%add-01: ⊦ n ≤ m → m + n0 - n = (m - n) + n0; from specification nat%z: ⊦ 0 + m = m; from specification nat-basic2%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic2%c: ⊦ m + n = n + m; from specification nat-basic2 Used terms: n, nσ