| stutf(nσ) ⊦ (n + 1 ≠ 0 → (∃ m. ⌜m⌝ < # nσ ∧ nσ[m] = n + 1 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m0. m < m0 → nσ[m0] = n + 1 - 1)))) ∧ (∀ m. (m ≠ 0 → (∃ m0. ⌜m0⌝ < # nσ ∧ nσ[m0] = m - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m1. m0 < m1 → nσ[m1] = m - 1)))) → ¬ n + 1 < m) ↔ (# nσ = ∞ ⊃ ∃ m. nσ[m] = n ∧ (∀ m0. m < m0 → nσ[m0] = nσ[m] + 1);nσ[(# nσ).n - 1] = n) |
stutf(nσ) ⊦ (∃ m. ⌜m⌝ < # nσ ∧ nσ[m] = n ∧ (# nσ ≠ ∞ ∨ ¬(∀ m0. m < m0 → nσ[m0] = nσ[m]))) ∧ (∀ m. (m ≠ 0 → (∃ m0. ⌜m0⌝ < # nσ ∧ nσ[m0] = m - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m1. m0 < m1 → nσ[m1] = m - 1)))) → ¬ n + 1 < m) ↔ (# nσ = ∞ ⊃ ∃ m. nσ[m] = n ∧ (∀ m0. m < m0 → nσ[m0] = nσ[m] + 1);nσ[(# nσ).n - 1] = n)
Used simplifier rules: add-base: ⊦ n + 0 = n; from specification nat-basic2%add-01: ⊦ n ≤ m → m + n0 - n = (m - n) + n0; from specification nat%c: ⊦ m + n = n + m; from specification nat-basic2%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic2%oz: ⊦ m + 1 ≠ 0; from specification nat-basic2