| stutf(nσ) ∧ ⌜m⌝ < # nσ ∧ 1 ≤ nσ[m] → (∃ m0. m0 ≤ m ∧ nσ[m0] = 1), # nσ = ∞, stutf(nσ), ∀ n. nσ[n] ≠ 1, ∀ n0, nσ. n0 < 0 → (∀ n1. nσ[n1] ≠ n0 + 1) ∧ # nσ = ∞ ∧ stutf(nσ) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]) → false ⊦ m = 0, nσ[m] = 0 |
# nσ = ∞, nσ[m0] = 1, stutf(nσ), 1 ≤ nσ[m], m0 ≤ m, ∀ n. nσ[n] ≠ 1, ∀ n0, nσ. n0 < 0 → (∀ n1. nσ[n1] ≠ n0 + 1) ∧ # nσ = ∞ ∧ stutf(nσ) ∧ (∀ 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%one-01: ⊦ m < 1 ↔ m = 0; from specification nat-basic1%lels-01: ⊦ ¬ m ≤ n ↔ n < m; from specification nat%less-inf2: ⊦ ⌜m⌝ < ∞; from specification nat-inf