| mon≤(nσ) ∧ m1 ≤ m0 ∧ ⌜m0⌝ < # nσ → nσ[m1] ≤ nσ[m0], # nσ = ∞, nσ[n] = nσ[m0], m0 < n, ∞.n + m + 1 < max∞(λ n0. nσ[n0] = nσ[m0] + 1).n, nσ[m0] < nσ[m1], stutf(nσ), m0 ≤ m1, m1 < n, ∀ m0. m1 < m0 → nσ[m0] = nσ[m1] + 1 ⊦ n = 0, max∞(λ n0. nσ[n0] = nσ[m0] + 1).n = 0, nσ[∞.n + m + 1] = nσ[m0] + 1, nσ[m1] = 0 |
# nσ = ∞, nσ[n] = nσ[m0], m0 < m1, m1 < n, m0 < n, ∞.n + m + 1 < max∞(λ n0. nσ[n0] = nσ[m0] + 1).n, nσ[m0] < nσ[m1], stutf(nσ), m0 + 1 < n, ∀ m0. m1 < m0 → nσ[m0] = nσ[m1] + 1 ⊦ m1 = 0, m0 = m1, n = 0, max∞(λ n0. nσ[n0] = nσ[m0] + 1).n = 0, nσ[∞.n + m + 1] = nσ[m0] + 1, nσ[m1] = 0
Used simplifier rules: stutf-monle: ⊦ stutf(nσ) → (¬ mon≤(nσ) ↔ false);%succ: ⊦ m +1 = m + 1; from specification nat-basic2%lf: ⊦ m < n ∧ n < n0 → m +1 < n0; (forward) from specification nat-basic1%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic1%lels-02: ⊦ m ≠ n → (m ≤ n ↔ m < n); from specification nat%less-inf2: ⊦ ⌜m⌝ < ∞; from specification nat-inf%ls-le-simp: ⊦ m < n → (n ≤ m ↔ false); from specification nat%anti: ⊦ m ≤ n → (n ≤ m ↔ m = n); from specification nat