| # nσ = ∞, nσ[n + 1] = nσ[n] + 1, nσ[m] < nσ[n], stutf(nσ), m < n → nσ[n] = nσ[m] + 1, mon≤(nσ) ∧ n ≤ m ∧ ⌜m⌝ < # nσ → nσ[n] ≤ nσ[m], ∀ m1. m < m1 → nσ[m1] = nσ[m] + 1 ⊦ |
# nσ = ∞, nσ[n] = nσ[m] + 1, nσ[n + 1] = nσ[n] + 1, m < n, nσ[m] < nσ[n], stutf(nσ), ∀ m1. m < m1 → nσ[m1] = nσ[n] ⊦
Used simplifier rules: stutf-monle: ⊦ stutf(nσ) → (mon≤(nσ) ↔ true);% ⊦ ¬ n < n; (s)% ⊦ m < n + 1 ↔ ¬ n < m; (s)% ⊦ m ≤ m; (s)% ⊦ m < n → n ≠ 0; (s)%lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic%c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic%eqle-one: ⊦ m = n + 1 ∧ n < n0 → m ≤ n0; (forward) from specification nat% ⊦ m ≤ n ↔ ¬ n < m; (ss)% ⊦ ⌜m⌝ < ∞; (s)% ⊦ m < n → (n ≤ m ↔ false); (s)