| mon≤(nσ) ∧ n + 1 ≤ n0 ∧ ⌜n0⌝ < # nσ → nσ[n + 1] ≤ nσ[n0], nσ[n + 1] = nσ[n] + 1, nσ[n0] = nσ[n], ⌜n0⌝ < # nσ, ⌜n⌝ + ⌜1⌝ < # nσ, stutf(nσ), ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = nσ[n] → ¬ n0 < m ⊦ (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ )[nσ[n]] = n, n0 = n |
nσ[n0] = nσ[n], nσ[n + 1] = nσ[n] + 1, stutf(nσ), ⌜n⌝ + ⌜1⌝ < # nσ, ⌜n0⌝ < # nσ, n0 < n, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = nσ[n] → ¬ n0 < m ⊦ n0 = n, (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ )[nσ[n]] = n, n = 0
Used simplifier rules: stutf-monle: ⊦ stutf(nσ) → (¬ mon≤(nσ) ↔ false);%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic1%neq-01: ⊦ m ≠ n → (¬ m < n ↔ n < m); from specification nat-basic1%ref-1: ⊦ ¬ n < n; from specification nat-basic1%c: ⊦ m + n = n + m; from specification nat-basic2%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic2%succ-01: ⊦ m + 1 ≤ n ↔ m < n; from specification nat