| # nσ = ∞, stutf(nσ), stutf(nσ) ∧ ⌜m⌝ < # nσ ∧ 1 ≤ nσ[m] → (∃ m0. m0 ≤ m ∧ nσ[m0] = 1), ∀ n. nσ[n] ≠ 1, ∀ n0, nσ. n0 < 0 → # nσ = ∞ ∧ stutf(nσ) ∧ (∀ n1. nσ[n1] ≠ n0 + 1) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]) → false ⊦ nσ[m] = 0, m = 0 |
# nσ = ∞, nσ[m0] = 1, stutf(nσ), 1 ≤ nσ[m], m0 ≤ m, ∀ n. nσ[n] ≠ 1, ∀ n0, nσ. n0 < 0 → # nσ = ∞ ∧ stutf(nσ) ∧ (∀ n1. nσ[n1] ≠ n0 + 1) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]) → false ⊦ nσ[m] = 0, m = 0
Used simplifier rules: not-zero: 0 < n ⊦ (* n) ≤ m → m ≠ 0; (forward) from specification nat% ⊦ m < 1 ↔ m = 0; (s)% ⊦ m ≤ n ↔ ¬ n < m; (ss)% ⊦ ⌜m⌝ < ∞; (s)