| stutf(nσ) ∧ ⌜n0⌝ < # nσ ∧ n ≤ nσ[n0] → (∃ m0. m0 ≤ n0 ∧ nσ[m0] = n), nσ[n0] = n + 1, leninv(nσ) = ∞, ⌜n0⌝ < # nσ, stutf(nσ), n0 ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = n + 1 → ¬ n0 < m, ∀ n1. ¬ ⌜n1⌝ < # nσ ∨ nσ[n1] ≠ n ⊦ |
nσ[n0] = nσ[m] + 1, leninv(nσ) = ∞, m ≤ n0, ⌜n0⌝ < # nσ, stutf(nσ), n0 ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = nσ[m]).n, m ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = nσ[m]).n, ∀ m0. ⌜m0⌝ < # nσ ∧ nσ[m0] = nσ[n0] → ¬ n0 < m0, ∀ n1. ¬ ⌜n1⌝ < # nσ ∨ nσ[n1] ≠ nσ[m] ⊦
Used simplifier rules: let: ⊦ n ≤ n0 ∧ n0 ≤ n1 → n ≤ n1; (forward) from specification nat%c: ⊦ m + n = n + m; from specification nat-basic2%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic2%lep: ⊦ m ≤ m + n; from specification nat