| ⊦ stutf(nσ) ∧ ⌜n⌝ + ⌜1⌝ < leninv(nσ) → inv(nσ)[n] < inv(nσ)[n + 1] |
⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), ¬ inv(nσ)[n] < inv(nσ)[n + 1] ⊦
| ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), ¬ inv(nσ)[n] < inv(nσ)[n + 1] ⊦ |
⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), inv(nσ)[n + 1] ≤ inv(nσ)[n] ⊦
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss)
| ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), inv(nσ)[n + 1] ≤ inv(nσ)[n] ⊦ |
⊦ stutf(nσ) → inv(nσ) = (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ )
⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ )[n + 1] ≤ (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ )[n] ⊦
Used terms: nσ
| ⊦ stutf(nσ) → inv(nσ) = (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ ) |
| ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ )[n + 1] ≤ (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ )[n] ⊦ |
⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ )[n + 1] ≤ (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ )[n] ⊦
| ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ )[n + 1] ≤ (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ )[n] ⊦ |
max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ∞, ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ )[n + 1] ≤ (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ )[n] ⊦
max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) ≠ ∞, ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ )[n + 1] ≤ (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ )[n] ⊦
Used formulas: max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ∞
| max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ∞, ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ )[n + 1] ≤ (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ )[n] ⊦ |
leninv(nσ) = ∞, max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ∞, ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ [n + 1] ≤ (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ )[n] ⊦
max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ∞, leninv(nσ) ≠ ∞, ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), ⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ [n + 1] ≤ (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ )[n] ⊦
| leninv(nσ) = ∞, max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ∞, ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ [n + 1] ≤ (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ )[n] ⊦ |
# nσ = ∞, max∞(λ n0. nσ[n0] = n + 1) = ∞, ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), ∞.n ≤ (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n0. nσ[n0] = m).n⌝ ;⌜(λ m. max∞(λ n0. nσ[n0] = m).n) to leninv(nσ).n⌝ )[n], ∀ m. ∃ m0. m < nσ[m0], ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0] ⊦
Used simplifier rules: leninv-inf-strong: ⊦ stutf(nσ) → ( leninv(nσ) = ∞ ↔ # nσ = ∞ ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]) ∧ (∀ m. ∃ m0. m < nσ[m0])); ⊦ ⌜m⌝ < ∞; (s) ⊦ ⌜nf⌝ [n] = nf(n); (s)
| # nσ = ∞, max∞(λ n0. nσ[n0] = n + 1) = ∞, ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), ∞.n ≤ (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n0. nσ[n0] = m).n⌝ ;⌜(λ m. max∞(λ n0. nσ[n0] = m).n) to leninv(nσ).n⌝ )[n], ∀ m. ∃ m0. m < nσ[m0], ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0] ⊦ |
⊦ max∞(np) = ∞ ↔ (∀ n. ∃ n0. n < n0 ∧ np(n0)) ∨ (∀ n. ¬ np(n))
# nσ = ∞, ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), ∞.n ≤ (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n0. nσ[n0] = m).n⌝ ;⌜(λ m. max∞(λ n0. nσ[n0] = m).n) to leninv(nσ).n⌝ )[n], ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0], ∀ m. ∃ m0. m < nσ[m0], (∀ n0. ∃ n1. n0 < n1 ∧ nσ[n1] = n + 1) ∨ (∀ n0. nσ[n0] ≠ n + 1) ⊦
Used terms: λ n0. nσ[n0] = n + 1
| ⊦ max∞(np) = ∞ ↔ (∀ n. ∃ n0. n < n0 ∧ np(n0)) ∨ (∀ n. ¬ np(n)) |
| # nσ = ∞, ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), ∞.n ≤ (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n0. nσ[n0] = m).n⌝ ;⌜(λ m. max∞(λ n0. nσ[n0] = m).n) to leninv(nσ).n⌝ )[n], ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0], ∀ m. ∃ m0. m < nσ[m0], (∀ n0. ∃ n1. n0 < n1 ∧ nσ[n1] = n + 1) ∨ (∀ n0. nσ[n0] ≠ n + 1) ⊦ |
# nσ = ∞, ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), ∞.n ≤ (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n0. nσ[n0] = m).n⌝ ;⌜(λ m. max∞(λ n0. nσ[n0] = m).n) to leninv(nσ).n⌝ )[n], ∀ m. ∃ m0. m < nσ[m0], ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0], (∀ n0. ∃ n1. n0 < n1 ∧ nσ[n1] = n + 1) ∨ (∀ n0. nσ[n0] ≠ n + 1) ⊦
| # nσ = ∞, ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), ∞.n ≤ (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n0. nσ[n0] = m).n⌝ ;⌜(λ m. max∞(λ n0. nσ[n0] = m).n) to leninv(nσ).n⌝ )[n], ∀ m. ∃ m0. m < nσ[m0], ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0], (∀ n0. ∃ n1. n0 < n1 ∧ nσ[n1] = n + 1) ∨ (∀ n0. nσ[n0] ≠ n + 1) ⊦ |
⊦ stutf(nσ) → (leninv(nσ) = ∞ ↔ # nσ = ∞ ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]))
# nσ = ∞, ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0], ∀ m. ∃ m0. m < nσ[m0], (∀ n0. ∃ n1. n0 < n1 ∧ nσ[n1] = n + 1) ∨ (∀ n0. nσ[n0] ≠ n + 1), ∞.n ≤ (# nσ = ∞ ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]) ⊃ ⌜λ m. max∞(λ n0. nσ[n0] = m).n⌝ ;⌜(λ m. max∞(λ n0. nσ[n0] = m).n) to leninv(nσ).n⌝ )[n] ⊦
Used terms: nσ
| ⊦ stutf(nσ) → (leninv(nσ) = ∞ ↔ # nσ = ∞ ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0])) |
| # nσ = ∞, ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0], ∀ m. ∃ m0. m < nσ[m0], (∀ n0. ∃ n1. n0 < n1 ∧ nσ[n1] = n + 1) ∨ (∀ n0. nσ[n0] ≠ n + 1), ∞.n ≤ (# nσ = ∞ ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]) ⊃ ⌜λ m. max∞(λ n0. nσ[n0] = m).n⌝ ;⌜(λ m. max∞(λ n0. nσ[n0] = m).n) to leninv(nσ).n⌝ )[n] ⊦ |
# nσ = ∞, ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), ∞.n ≤ max∞(λ n0. nσ[n0] = n).n, ∀ m. ∃ m0. m < nσ[m0], ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0], (∀ n0. ∃ n1. n0 < n1 ∧ nσ[n1] = n + 1) ∨ (∀ n0. nσ[n0] ≠ n + 1) ⊦
Used simplifier rules: ⊦ ⌜nf⌝ [n] = nf(n); (s)
| # nσ = ∞, ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), ∞.n ≤ max∞(λ n0. nσ[n0] = n).n, ∀ m. ∃ m0. m < nσ[m0], ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0], (∀ n0. ∃ n1. n0 < n1 ∧ nσ[n1] = n + 1) ∨ (∀ n0. nσ[n0] ≠ n + 1) ⊦ |
# nσ = ∞, ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), ∞.n ≤ max∞(λ n0. nσ[n0] = n).n, ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0], ∀ m. ∃ m0. m < nσ[m0], ∀ n0. ∃ n1. n0 < n1 ∧ nσ[n1] = n + 1 ⊦
# nσ = ∞, ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), ∞.n ≤ max∞(λ n0. nσ[n0] = n).n, ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0], ∀ m. ∃ m0. m < nσ[m0], ∀ n0. nσ[n0] ≠ n + 1 ⊦
| # nσ = ∞, ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), ∞.n ≤ max∞(λ n0. nσ[n0] = n).n, ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0], ∀ m. ∃ m0. m < nσ[m0], ∀ n0. ∃ n1. n0 < n1 ∧ nσ[n1] = n + 1 ⊦ |
# nσ = ∞, ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), ∞.n ≤ max∞(λ n0. nσ[n0] = n).n, ∀ n0. ∃ n1. n0 < n1 ∧ nσ[n1] = n + 1, ∀ m. ∃ m0. m < nσ[m0], ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0], ∃ n1. 0 < n1 ∧ nσ[n1] = n + 1 ⊦
Used terms: 0
| # nσ = ∞, ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), ∞.n ≤ max∞(λ n0. nσ[n0] = n).n, ∀ n0. ∃ n1. n0 < n1 ∧ nσ[n1] = n + 1, ∀ m. ∃ m0. m < nσ[m0], ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0], ∃ n1. 0 < n1 ∧ nσ[n1] = n + 1 ⊦ |
# nσ = ∞, nσ[n1] = n + 1, n1 ≠ 0, ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), ∞.n ≤ max∞(λ n0. nσ[n0] = n).n, ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0], ∀ m. ∃ m0. m < nσ[m0], ∀ n0. ∃ n1. n0 < n1 ∧ nσ[n1] = n + 1 ⊦
Used simplifier rules: ⊦ 0 < m ↔ m ≠ 0; (s)
| # nσ = ∞, nσ[n1] = n + 1, n1 ≠ 0, ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), ∞.n ≤ max∞(λ n0. nσ[n0] = n).n, ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0], ∀ m. ∃ m0. m < nσ[m0], ∀ n0. ∃ n1. n0 < n1 ∧ nσ[n1] = n + 1 ⊦ |
# nσ = ∞, nσ[n1] = n + 1, n1 ≠ 0, ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), ∞.n ≤ max∞(λ n0. nσ[n0] = n).n, ∀ n0. ∃ n1. n0 < n1 ∧ nσ[n1] = n + 1, ∀ m. ∃ m0. m < nσ[m0], ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0], ∃ m0. n1 < m0 ∧ nσ[n1] < nσ[m0] ⊦
Used terms: n1
| # nσ = ∞, nσ[n1] = n + 1, n1 ≠ 0, ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), ∞.n ≤ max∞(λ n0. nσ[n0] = n).n, ∀ n0. ∃ n1. n0 < n1 ∧ nσ[n1] = n + 1, ∀ m. ∃ m0. m < nσ[m0], ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0], ∃ m0. n1 < m0 ∧ nσ[n1] < nσ[m0] ⊦ |
# nσ = ∞, nσ[n1] = n + 1, n1 ≠ 0, ⌜n⌝ + ⌜1⌝ < leninv(nσ), n + 1 < nσ[m0], n1 < m0, stutf(nσ), ∞.n ≤ max∞(λ n0. nσ[n0] = n).n, ∀ n0. ∃ n1. n0 < n1 ∧ nσ[n1] = n + 1, ∀ m. ∃ m0. m < nσ[m0], ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0] ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic
| # nσ = ∞, nσ[n1] = n + 1, n1 ≠ 0, ⌜n⌝ + ⌜1⌝ < leninv(nσ), n + 1 < nσ[m0], n1 < m0, stutf(nσ), ∞.n ≤ max∞(λ n0. nσ[n0] = n).n, ∀ n0. ∃ n1. n0 < n1 ∧ nσ[n1] = n + 1, ∀ m. ∃ m0. m < nσ[m0], ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0] ⊦ |
# nσ = ∞, nσ[n1] = n + 1, n1 ≠ 0, n1 < m0, n + 1 < nσ[m0], ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), ∞.n ≤ max∞(λ n0. nσ[n0] = n).n, ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0], ∀ m. ∃ m0. m < nσ[m0], ∀ n0. ∃ n1. n0 < n1 ∧ nσ[n1] = n + 1, ∃ n1. m0 < n1 ∧ nσ[n1] = n + 1 ⊦
Used terms: m0
| # nσ = ∞, nσ[n1] = n + 1, n1 ≠ 0, n1 < m0, n + 1 < nσ[m0], ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), ∞.n ≤ max∞(λ n0. nσ[n0] = n).n, ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0], ∀ m. ∃ m0. m < nσ[m0], ∀ n0. ∃ n1. n0 < n1 ∧ nσ[n1] = n + 1, ∃ n1. m0 < n1 ∧ nσ[n1] = n + 1 ⊦ |
# nσ = ∞, nσ[n1] = n + 1, nσ[n0] = n + 1, n1 ≠ 0, n1 < n0, n1 < m0, n + 1 < nσ[m0], ⌜n⌝ + ⌜1⌝ < leninv(nσ), m0 < n0, n1 + 1 < n0, stutf(nσ), ∞.n ≤ max∞(λ n0. nσ[n0] = n).n, ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0], ∀ m. ∃ m0. m < nσ[m0], ∀ n0. ∃ n1. n0 < n1 ∧ nσ[n1] = n + 1 ⊦
Used simplifier rules: ⊦ m +1 = m + 1; (s) ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic trans-nat: ⊦ n < n0 ∧ n0 < n1 → n < n1; (forward) from specification nat-basic lf: ⊦ m < n ∧ n < n0 → m +1 < n0; (forward) from specification nat-basic
| # nσ = ∞, nσ[n1] = n + 1, nσ[n0] = n + 1, n1 ≠ 0, n1 < n0, n1 < m0, n + 1 < nσ[m0], ⌜n⌝ + ⌜1⌝ < leninv(nσ), m0 < n0, n1 + 1 < n0, stutf(nσ), ∞.n ≤ max∞(λ n0. nσ[n0] = n).n, ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0], ∀ m. ∃ m0. m < nσ[m0], ∀ n0. ∃ n1. n0 < n1 ∧ nσ[n1] = n + 1 ⊦ |
⊦ mon≤(nσ) ∧ m ≤ n ∧ ⌜n⌝ < # nσ → nσ[m] ≤ nσ[n]
Used simplifier rules: stutf-monle: ⊦ stutf(nσ) → (mon≤(nσ) ↔ true); ⊦ m < n → m ≤ n; (s) ⊦ ⌜m⌝ < ∞; (s) ⊦ m < n → (n ≤ m ↔ false); (s) Used terms: nσ, m0, n0
| ⊦ mon≤(nσ) ∧ m ≤ n ∧ ⌜n⌝ < # nσ → nσ[m] ≤ nσ[n] |
| # nσ = ∞, ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), ∞.n ≤ max∞(λ n0. nσ[n0] = n).n, ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0], ∀ m. ∃ m0. m < nσ[m0], ∀ n0. nσ[n0] ≠ n + 1 ⊦ |
# nσ = ∞, stutf(nσ), ∀ n0. nσ[n0] ≠ n + 1, ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0] ⊦
| # nσ = ∞, stutf(nσ), ∀ n0. nσ[n0] ≠ n + 1, ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0] ⊦ |
# nσ = ∞, stutf(nσ), ∀ n0. nσ[n0] ≠ n + 1, ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0], ∀ n1, nσ. n1 < n → # nσ = ∞ ∧ stutf(nσ) ∧ (∀ n0. nσ[n0] ≠ n1 + 1) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]) → false ⊦
Used simplifier rules: <; (wellfounded) Used terms: n
| # nσ = ∞, stutf(nσ), ∀ n0. nσ[n0] ≠ n + 1, ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0], ∀ n1, nσ. n1 < n → # nσ = ∞ ∧ stutf(nσ) ∧ (∀ n0. nσ[n0] ≠ n1 + 1) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]) → false ⊦ |
# nσ = ∞, stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0], ∀ n0. nσ[n0] ≠ n + 1, ∀ n1, nσ. n1 < n → # nσ = ∞ ∧ stutf(nσ) ∧ (∀ n0. nσ[n0] ≠ n1 + 1) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]) → false ⊦
| # nσ = ∞, stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0], ∀ n0. nσ[n0] ≠ n + 1, ∀ n1, nσ. n1 < n → # nσ = ∞ ∧ stutf(nσ) ∧ (∀ n0. nσ[n0] ≠ n1 + 1) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]) → false ⊦ |
# nσ = ∞, n = 0, stutf(nσ), ∀ n0. nσ[n0] ≠ n + 1, ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0], ∀ n1, nσ. n1 < n → # nσ = ∞ ∧ stutf(nσ) ∧ (∀ n0. nσ[n0] ≠ n1 + 1) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]) → false ⊦
# nσ = ∞, n = n2 +1, stutf(nσ), ∀ n0. nσ[n0] ≠ n + 1, ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0], ∀ n1, nσ. n1 < n → # nσ = ∞ ∧ stutf(nσ) ∧ (∀ n0. nσ[n0] ≠ n1 + 1) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]) → false ⊦
Used simplifier rules: nat freely generated by 0, +1;;
| # nσ = ∞, n = 0, stutf(nσ), ∀ n0. nσ[n0] ≠ n + 1, ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0], ∀ n1, nσ. n1 < n → # nσ = ∞ ∧ stutf(nσ) ∧ (∀ n0. nσ[n0] ≠ n1 + 1) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]) → false ⊦ |
# nσ = ∞, stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0], ∀ n0. nσ[n0] ≠ 1, ∀ n1, nσ. n1 < 0 → # nσ = ∞ ∧ stutf(nσ) ∧ (∀ n0. nσ[n0] ≠ n1 + 1) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]) → false ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic
| # nσ = ∞, stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0], ∀ n0. nσ[n0] ≠ 1, ∀ n1, nσ. n1 < 0 → # nσ = ∞ ∧ stutf(nσ) ∧ (∀ n0. nσ[n0] ≠ n1 + 1) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]) → false ⊦ |
# nσ = ∞, stutf(nσ), ∀ n0. nσ[n0] ≠ 1, ∃ m0. 0 < m0 ∧ nσ[0] < nσ[m0], ∀ n1, nσ. n1 < 0 → # nσ = ∞ ∧ stutf(nσ) ∧ (∀ n0. nσ[n0] ≠ n1 + 1) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]) → false ⊦
Used terms: 0
| # nσ = ∞, stutf(nσ), ∀ n0. nσ[n0] ≠ 1, ∃ m0. 0 < m0 ∧ nσ[0] < nσ[m0], ∀ n1, nσ. n1 < 0 → # nσ = ∞ ∧ stutf(nσ) ∧ (∀ n0. nσ[n0] ≠ n1 + 1) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]) → false ⊦ |
# nσ = ∞, nσ[m0] ≠ 0, m0 ≠ 0, stutf(nσ), ∀ n0. nσ[n0] ≠ 1, ∀ n1, nσ. n1 < 0 → # nσ = ∞ ∧ stutf(nσ) ∧ (∀ n0. nσ[n0] ≠ n1 + 1) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]) → false ⊦
Used simplifier rules: stutf-zero: ⊦ stutf(nσ) → nσ[0] = 0; ⊦ 0 < m ↔ m ≠ 0; (s)
| # nσ = ∞, nσ[m0] ≠ 0, m0 ≠ 0, stutf(nσ), ∀ n0. nσ[n0] ≠ 1, ∀ n1, nσ. n1 < 0 → # nσ = ∞ ∧ stutf(nσ) ∧ (∀ n0. nσ[n0] ≠ n1 + 1) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]) → false ⊦ |
⊦ stutf(nσ) ∧ ⌜m⌝ < # nσ ∧ n ≤ nσ[m] → (∃ m0. m0 ≤ m ∧ nσ[m0] = n)
# nσ = ∞, nσ[m0] ≠ 0, m0 ≠ 0, stutf(nσ), stutf(nσ) ∧ ⌜m0⌝ < # nσ ∧ 1 ≤ nσ[m0] → (∃ m1. m1 ≤ m0 ∧ nσ[m1] = 1), ∀ n0. nσ[n0] ≠ 1, ∀ n1, nσ. n1 < 0 → # nσ = ∞ ∧ stutf(nσ) ∧ (∀ n0. nσ[n0] ≠ n1 + 1) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]) → false ⊦
Used terms: nσ, m0, 1
| ⊦ stutf(nσ) ∧ ⌜m⌝ < # nσ ∧ n ≤ nσ[m] → (∃ m0. m0 ≤ m ∧ nσ[m0] = n) |
| # nσ = ∞, nσ[m0] ≠ 0, m0 ≠ 0, stutf(nσ), stutf(nσ) ∧ ⌜m0⌝ < # nσ ∧ 1 ≤ nσ[m0] → (∃ m1. m1 ≤ m0 ∧ nσ[m1] = 1), ∀ n0. nσ[n0] ≠ 1, ∀ n1, nσ. n1 < 0 → # nσ = ∞ ∧ stutf(nσ) ∧ (∀ n0. nσ[n0] ≠ n1 + 1) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]) → false ⊦ |
# nσ = ∞, nσ[m1] = 1, nσ[m0] ≠ 0, m0 ≠ 0, stutf(nσ), 1 ≤ nσ[m0], m1 ≤ m0, ∀ n0. nσ[n0] ≠ 1, ∀ n1, nσ. n1 < 0 → # nσ = ∞ ∧ stutf(nσ) ∧ (∀ n0. nσ[n0] ≠ n1 + 1) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]) → false ⊦
Used simplifier rules: not-zero: 0 < n ⊦ (* n) ≤ m → m ≠ 0; (forward) from specification nat ⊦ m < 1 ↔ m = 0; (s) ⊦ m ≤ n ↔ ¬ n < m; (ss) ⊦ ⌜m⌝ < ∞; (s)
| # nσ = ∞, nσ[m1] = 1, nσ[m0] ≠ 0, m0 ≠ 0, stutf(nσ), 1 ≤ nσ[m0], m1 ≤ m0, ∀ n0. nσ[n0] ≠ 1, ∀ n1, nσ. n1 < 0 → # nσ = ∞ ∧ stutf(nσ) ∧ (∀ n0. nσ[n0] ≠ n1 + 1) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]) → false ⊦ |
Used terms: m1
| # nσ = ∞, n = n2 +1, stutf(nσ), ∀ n0. nσ[n0] ≠ n + 1, ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0], ∀ n1, nσ. n1 < n → # nσ = ∞ ∧ stutf(nσ) ∧ (∀ n0. nσ[n0] ≠ n1 + 1) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]) → false ⊦ |
# nσ = ∞, stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0], ∀ n0. nσ[n0] ≠ 2 + n2, ∀ n1, nσ. n1 < n2 +1 → # nσ = ∞ ∧ stutf(nσ) ∧ (∀ n0. nσ[n0] ≠ n1 + 1) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]) → false ⊦
Used simplifier rules: a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ m +1 = m + 1; (s)
| # nσ = ∞, stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0], ∀ n0. nσ[n0] ≠ 2 + n2, ∀ n1, nσ. n1 < n2 +1 → # nσ = ∞ ∧ stutf(nσ) ∧ (∀ n0. nσ[n0] ≠ n1 + 1) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]) → false ⊦ |
# nσ = ∞, stutf(nσ), ∀ n0. nσ[n0] ≠ 2 + n2, ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0], ∀ n1, nσ. n1 < n2 +1 → # nσ = ∞ ∧ stutf(nσ) ∧ (∀ n0. nσ[n0] ≠ n1 + 1) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]) → false ⊦ # nσ = ∞ ∧ stutf(nσ) ∧ (∀ n0. nσ[n0] ≠ n2 + 1) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0])
Used simplifier rules: ⊦ m +1 = m + 1; (s) ⊦ m < n + 1 ↔ ¬ n < m; (s) ⊦ ¬ n < n; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: n2, nσ
| # nσ = ∞, stutf(nσ), ∀ n0. nσ[n0] ≠ 2 + n2, ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0], ∀ n1, nσ. n1 < n2 +1 → # nσ = ∞ ∧ stutf(nσ) ∧ (∀ n0. nσ[n0] ≠ n1 + 1) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]) → false ⊦ # nσ = ∞ ∧ stutf(nσ) ∧ (∀ n0. nσ[n0] ≠ n2 + 1) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]) |
# nσ = ∞, nσ[n0] = n2 + 1, stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0], ∀ n0. nσ[n0] ≠ 2 + n2, ∀ n1, nσ. n1 < n2 +1 → # nσ = ∞ ∧ stutf(nσ) ∧ (∀ n0. nσ[n0] ≠ n1 + 1) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]) → false ⊦
| # nσ = ∞, nσ[n0] = n2 + 1, stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0], ∀ n0. nσ[n0] ≠ 2 + n2, ∀ n1, nσ. n1 < n2 +1 → # nσ = ∞ ∧ stutf(nσ) ∧ (∀ n0. nσ[n0] ≠ n1 + 1) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]) → false ⊦ |
# nσ = ∞, nσ[n0] = n2 + 1, stutf(nσ), ∀ n0. nσ[n0] ≠ 2 + n2, ∃ m0. n0 < m0 ∧ nσ[n0] < nσ[m0], ∀ n1, nσ. n1 < n2 +1 → # nσ = ∞ ∧ stutf(nσ) ∧ (∀ n0. nσ[n0] ≠ n1 + 1) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]) → false ⊦
Used terms: n0
| # nσ = ∞, nσ[n0] = n2 + 1, stutf(nσ), ∀ n0. nσ[n0] ≠ 2 + n2, ∃ m0. n0 < m0 ∧ nσ[n0] < nσ[m0], ∀ n1, nσ. n1 < n2 +1 → # nσ = ∞ ∧ stutf(nσ) ∧ (∀ n0. nσ[n0] ≠ n1 + 1) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]) → false ⊦ |
# nσ = ∞, nσ[n0] = n2 + 1, n2 + 1 < nσ[m0], n0 < m0, stutf(nσ), ∀ n0. nσ[n0] ≠ 2 + n2, ∀ n1, nσ. n1 < n2 +1 → # nσ = ∞ ∧ stutf(nσ) ∧ (∀ n0. nσ[n0] ≠ n1 + 1) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]) → false ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic
| # nσ = ∞, nσ[n0] = n2 + 1, n2 + 1 < nσ[m0], n0 < m0, stutf(nσ), ∀ n0. nσ[n0] ≠ 2 + n2, ∀ n1, nσ. n1 < n2 +1 → # nσ = ∞ ∧ stutf(nσ) ∧ (∀ n0. nσ[n0] ≠ n1 + 1) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]) → false ⊦ |
⊦ stutf(nσ) ∧ ⌜m⌝ < # nσ ∧ n ≤ nσ[m] → (∃ m0. m0 ≤ m ∧ nσ[m0] = n)
# nσ = ∞, nσ[n0] = n2 + 1, n0 < m0, n2 + 1 < nσ[m0], stutf(nσ), stutf(nσ) ∧ ⌜m0⌝ < # nσ ∧ 2 + n2 ≤ nσ[m0] → (∃ m1. m1 ≤ m0 ∧ nσ[m1] = 2 + n2), ∀ n0. nσ[n0] ≠ 2 + n2, ∀ n1, nσ. n1 < n2 +1 → # nσ = ∞ ∧ stutf(nσ) ∧ (∀ n0. nσ[n0] ≠ n1 + 1) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]) → false ⊦
Used terms: nσ, m0, 2 + n2
| ⊦ stutf(nσ) ∧ ⌜m⌝ < # nσ ∧ n ≤ nσ[m] → (∃ m0. m0 ≤ m ∧ nσ[m0] = n) |
| # nσ = ∞, nσ[n0] = n2 + 1, n0 < m0, n2 + 1 < nσ[m0], stutf(nσ), stutf(nσ) ∧ ⌜m0⌝ < # nσ ∧ 2 + n2 ≤ nσ[m0] → (∃ m1. m1 ≤ m0 ∧ nσ[m1] = 2 + n2), ∀ n0. nσ[n0] ≠ 2 + n2, ∀ n1, nσ. n1 < n2 +1 → # nσ = ∞ ∧ stutf(nσ) ∧ (∀ n0. nσ[n0] ≠ n1 + 1) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]) → false ⊦ |
# nσ = ∞, nσ[n0] = n2 + 1, nσ[m1] = 2 + n2, n0 < m0, n2 + 1 < nσ[m0], stutf(nσ), 2 + n2 ≤ nσ[m0], m1 ≤ m0, ∀ n0. nσ[n0] ≠ 2 + n2, ∀ n1, nσ. n1 < n2 +1 → # nσ = ∞ ∧ stutf(nσ) ∧ (∀ n0. nσ[n0] ≠ n1 + 1) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]) → false ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ ¬ n < n; (s) ⊦ m + n < m + n0 ↔ n < n0; (s) ⊦ m +1 = m + 1; (s) n < n0 ⊦ (* n) ≠ m0 + (* n0); (s) trans-nat: ⊦ n < n0 ∧ n0 < n1 → n < n1; (forward) from specification nat-basic lf: ⊦ m < n ∧ n < n0 → m +1 < n0; (forward) from specification nat-basic f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m ≤ n ↔ ¬ n < m; (ss) ⊦ ⌜m⌝ < ∞; (s)
| # nσ = ∞, nσ[n0] = n2 + 1, nσ[m1] = 2 + n2, n0 < m0, n2 + 1 < nσ[m0], stutf(nσ), 2 + n2 ≤ nσ[m0], m1 ≤ m0, ∀ n0. nσ[n0] ≠ 2 + n2, ∀ n1, nσ. n1 < n2 +1 → # nσ = ∞ ∧ stutf(nσ) ∧ (∀ n0. nσ[n0] ≠ n1 + 1) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ[m] < nσ[m0]) → false ⊦ |
Used terms: m1
| max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ∞, leninv(nσ) ≠ ∞, ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), ⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ [n + 1] ≤ (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ )[n] ⊦ |
max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ∞, leninv(nσ) ≠ ∞, ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), ((λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n)[n + 1] ≤ ((λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n)[n] ⊦
Used simplifier rules: ⊦ ⌜x⌝ [n] = x[n]; (s)
| max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ∞, leninv(nσ) ≠ ∞, ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), ((λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n)[n + 1] ≤ ((λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n)[n] ⊦ |
leninv(nσ) = ⌜n1⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ∞, leninv(nσ) ≠ ∞, ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), ((λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to n1)[n + 1] ≤ ((λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to n1)[n] ⊦
Used simplifier rules: ⊦ n∞ ≠ ∞ → (n = n∞.n ↔ n∞ = ⌜n⌝ ); (elim) Used terms: leninv(nσ), n1
| leninv(nσ) = ⌜n1⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ∞, leninv(nσ) ≠ ∞, ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), ((λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to n1)[n + 1] ≤ ((λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to n1)[n] ⊦ |
leninv(nσ) = ⌜n1⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ∞, n + 1 < n1, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic m < n ⊦ (nf to n)[m] = nf(m); (s) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ ¬ m + n < m; (s) fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ m < n → (n ≤ m ↔ false); (s) add-comm: ⊦ n∞1 + n∞2 = n∞2 + n∞1; from specification nat-inf add-assoc: ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2; from specification nat-inf ⊦ ⌜n⌝ + ⌜m⌝ < ⌜n0⌝ ↔ n + m < n0; (s) ⊦ ⌜n⌝ ≠ ∞; (s)
| leninv(nσ) = ⌜n1⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ∞, n + 1 < n1, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n ⊦ |
⊦ leninv(nσ) = max∞(λ n. n ≠ 0 → (∃ m. ⌜m⌝ < # nσ ∧ nσ[m] = n - 1 ∧ ¬(# nσ = ∞ ∧ (∀ m0. m < m0 → nσ[m0] = n - 1))))
max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ∞, n + 1 < n1, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, max∞(λ n. n ≠ 0 → (∃ m. ⌜m⌝ < # nσ ∧ nσ[m] = n - 1 ∧ ¬(# nσ = ∞ ∧ (∀ m0. m < m0 → nσ[m0] = n - 1)))) = ⌜n1⌝ ⊦
Used terms: nσ
| ⊦ leninv(nσ) = max∞(λ n. n ≠ 0 → (∃ m. ⌜m⌝ < # nσ ∧ nσ[m] = n - 1 ∧ ¬(# nσ = ∞ ∧ (∀ m0. m < m0 → nσ[m0] = n - 1)))) |
| max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ∞, n + 1 < n1, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, max∞(λ n. n ≠ 0 → (∃ m. ⌜m⌝ < # nσ ∧ nσ[m] = n - 1 ∧ ¬(# nσ = ∞ ∧ (∀ m0. m < m0 → nσ[m0] = n - 1)))) = ⌜n1⌝ ⊦ |
max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ∞, n + 1 < n1, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, max∞(λ n0. n0 ≠ 0 → (∃ m. ⌜m⌝ < # nσ ∧ nσ[m] = n0 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m0. m < m0 → nσ[m0] = n0 - 1)))) = ⌜n1⌝ ⊦
| max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ∞, n + 1 < n1, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, max∞(λ n0. n0 ≠ 0 → (∃ m. ⌜m⌝ < # nσ ∧ nσ[m] = n0 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m0. m < m0 → nσ[m0] = n0 - 1)))) = ⌜n1⌝ ⊦ |
⊦ max∞(np) = ⌜n⌝ ↔ np(n) ∧ (∀ m. np(m) → ¬ n < m)
max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ∞, n + 1 < n1, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, n1 ≠ 0 → (∃ m. ⌜m⌝ < # nσ ∧ nσ[m] = n1 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m0. m < m0 → nσ[m0] = n1 - 1))), ∀ m. (m ≠ 0 → (∃ m0. ⌜m0⌝ < # nσ ∧ nσ[m0] = m - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m1. m0 < m1 → nσ[m1] = m - 1)))) → ¬ n1 < m ⊦
Used terms: n1, λ n0. n0 ≠ 0 → (∃ m. ⌜m⌝ < # nσ ∧ nσ[m] = n0 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m0. m < m0 → nσ[m0] = n0 - 1)))
| ⊦ max∞(np) = ⌜n⌝ ↔ np(n) ∧ (∀ m. np(m) → ¬ n < m) |
| max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ∞, n + 1 < n1, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, n1 ≠ 0 → (∃ m. ⌜m⌝ < # nσ ∧ nσ[m] = n1 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m0. m < m0 → nσ[m0] = n1 - 1))), ∀ m. (m ≠ 0 → (∃ m0. ⌜m0⌝ < # nσ ∧ nσ[m0] = m - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m1. m0 < m1 → nσ[m1] = m - 1)))) → ¬ n1 < m ⊦ |
nσ[m] = n1 - 1, max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ∞, n + 1 < n1, ⌜m⌝ < # nσ, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ m. (∃ m0. ⌜m0⌝ < # nσ ∧ nσ[m0] = m - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m1. m0 < m1 → nσ[m1] = m - 1))) → ¬ n1 < m, # nσ ≠ ∞ ∨ ¬(m < m0 → nσ[m0] = n1 - 1) ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s)
| nσ[m] = n1 - 1, max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ∞, n + 1 < n1, ⌜m⌝ < # nσ, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ m. (∃ m0. ⌜m0⌝ < # nσ ∧ nσ[m0] = m - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m1. m0 < m1 → nσ[m1] = m - 1))) → ¬ n1 < m, # nσ ≠ ∞ ∨ ¬(m < m0 → nσ[m0] = n1 - 1) ⊦ |
nσ[m] = m2, max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ∞, n1 = m2 + 1, n1 ≠ 0, ⌜m⌝ < # nσ, n + 1 < n1, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ m. (∃ m0. ⌜m0⌝ < # nσ ∧ nσ[m0] = m - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m1. m0 < m1 → nσ[m1] = m - 1))) → ¬ n1 < m, # nσ ≠ ∞ ∨ ¬(m < m0 → nσ[m0] = m2) ⊦
Used simplifier rules: n0 < n ⊦ ¬ m + (* n) < (* n0); (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic n ≠ 0 ⊦ m = n - 1 ↔ n = m + 1; (elim) Used terms: n1, m2
| nσ[m] = m2, max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ∞, n1 = m2 + 1, n1 ≠ 0, ⌜m⌝ < # nσ, n + 1 < n1, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ m. (∃ m0. ⌜m0⌝ < # nσ ∧ nσ[m0] = m - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m1. m0 < m1 → nσ[m1] = m - 1))) → ¬ n1 < m, # nσ ≠ ∞ ∨ ¬(m < m0 → nσ[m0] = m2) ⊦ |
max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ∞, n < nσ[m], ⌜m⌝ < # nσ, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ m0. (∃ m1. ⌜m1⌝ < # nσ ∧ nσ[m1] = m0 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m1 < m2 → nσ[m2] = m0 - 1))) → ¬ nσ[m] + 1 < m0, # nσ ≠ ∞ ∨ ¬(m < m0 → nσ[m0] = nσ[m]) ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) 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 ⊦ m + n < m + n0 ↔ n < n0; (s) ⊦ m + 1 ≠ 0; (s)
| max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ∞, n < nσ[m], ⌜m⌝ < # nσ, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ m0. (∃ m1. ⌜m1⌝ < # nσ ∧ nσ[m1] = m0 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m1 < m2 → nσ[m2] = m0 - 1))) → ¬ nσ[m] + 1 < m0, # nσ ≠ ∞ ∨ ¬(m < m0 → nσ[m0] = nσ[m]) ⊦ |
⊦ max∞(np) = ∞ ↔ (∀ n. ∃ n0. n < n0 ∧ np(n0)) ∨ (∀ n. ¬ np(n))
⌜m⌝ < # nσ, n < nσ[m], stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ m0. (∃ m1. ⌜m1⌝ < # nσ ∧ nσ[m1] = m0 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m1 < m2 → nσ[m2] = m0 - 1))) → ¬ nσ[m] + 1 < m0, # nσ ≠ ∞ ∨ ¬(m < m0 → nσ[m0] = nσ[m]), (∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1) ∨ (∀ n0. ¬(⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1)) ⊦
Used terms: λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1
| ⊦ max∞(np) = ∞ ↔ (∀ n. ∃ n0. n < n0 ∧ np(n0)) ∨ (∀ n. ¬ np(n)) |
| ⌜m⌝ < # nσ, n < nσ[m], stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ m0. (∃ m1. ⌜m1⌝ < # nσ ∧ nσ[m1] = m0 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m1 < m2 → nσ[m2] = m0 - 1))) → ¬ nσ[m] + 1 < m0, # nσ ≠ ∞ ∨ ¬(m < m0 → nσ[m0] = nσ[m]), (∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1) ∨ (∀ n0. ¬(⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1)) ⊦ |
n < nσ[m], ⌜m⌝ < # nσ, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ m0. (∃ m1. ⌜m1⌝ < # nσ ∧ nσ[m1] = m0 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m1 < m2 → nσ[m2] = m0 - 1))) → ¬ nσ[m] + 1 < m0, # nσ ≠ ∞ ∨ ¬(m < m0 → nσ[m0] = nσ[m]), (∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1) ∨ (∀ n0. ¬ ⌜n0⌝ < # nσ ∨ nσ[n0] ≠ n + 1) ⊦
| n < nσ[m], ⌜m⌝ < # nσ, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ m0. (∃ m1. ⌜m1⌝ < # nσ ∧ nσ[m1] = m0 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m1 < m2 → nσ[m2] = m0 - 1))) → ¬ nσ[m] + 1 < m0, # nσ ≠ ∞ ∨ ¬(m < m0 → nσ[m0] = nσ[m]), (∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1) ∨ (∀ n0. ¬ ⌜n0⌝ < # nσ ∨ nσ[n0] ≠ n + 1) ⊦ |
⌜m⌝ < # nσ, n < nσ[m], stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ m0. (∃ m1. ⌜m1⌝ < # nσ ∧ nσ[m1] = m0 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m1 < m2 → nσ[m2] = m0 - 1))) → ¬ nσ[m] + 1 < m0, ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1, # nσ ≠ ∞ ∨ ¬(m < m0 → nσ[m0] = nσ[m]) ⊦
⌜m⌝ < # nσ, n < nσ[m], stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ m0. (∃ m1. ⌜m1⌝ < # nσ ∧ nσ[m1] = m0 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m1 < m2 → nσ[m2] = m0 - 1))) → ¬ nσ[m] + 1 < m0, ∀ n0. ¬ ⌜n0⌝ < # nσ ∨ nσ[n0] ≠ n + 1, # nσ ≠ ∞ ∨ ¬(m < m0 → nσ[m0] = nσ[m]) ⊦
| ⌜m⌝ < # nσ, n < nσ[m], stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ m0. (∃ m1. ⌜m1⌝ < # nσ ∧ nσ[m1] = m0 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m1 < m2 → nσ[m2] = m0 - 1))) → ¬ nσ[m] + 1 < m0, ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1, # nσ ≠ ∞ ∨ ¬(m < m0 → nσ[m0] = nσ[m]) ⊦ |
# nσ ≠ ∞, n < nσ[m], ⌜m⌝ < # nσ, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1, ∀ m0. (∃ m1. ⌜m1⌝ < # nσ ∧ nσ[m1] = m0 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m1 < m2 → nσ[m2] = m0 - 1))) → ¬ nσ[m] + 1 < m0 ⊦
nσ[m0] ≠ nσ[m], m < m0, n < nσ[m], ⌜m⌝ < # nσ, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1, ∀ m0. (∃ m1. ⌜m1⌝ < # nσ ∧ nσ[m1] = m0 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m1 < m2 → nσ[m2] = m0 - 1))) → ¬ nσ[m] + 1 < m0 ⊦
| # nσ ≠ ∞, n < nσ[m], ⌜m⌝ < # nσ, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1, ∀ m0. (∃ m1. ⌜m1⌝ < # nσ ∧ nσ[m1] = m0 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m1 < m2 → nσ[m2] = m0 - 1))) → ¬ nσ[m] + 1 < m0 ⊦ |
# nσ ≠ ∞, ⌜m⌝ < # nσ, n < nσ[m], stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1, ∀ m0. (∃ m1. ⌜m1⌝ < # nσ ∧ nσ[m1] = m0 - 1) → ¬ nσ[m] + 1 < m0 ⊦
| # nσ ≠ ∞, ⌜m⌝ < # nσ, n < nσ[m], stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1, ∀ m0. (∃ m1. ⌜m1⌝ < # nσ ∧ nσ[m1] = m0 - 1) → ¬ nσ[m] + 1 < m0 ⊦ |
⊦ n∞ = ∞ ↔ ¬(∃ n. n∞ = ⌜n⌝ )
n < nσ[m], ⌜m⌝ < # nσ, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ m0. (∃ m1. ⌜m1⌝ < # nσ ∧ nσ[m1] = m0 - 1) → ¬ nσ[m] + 1 < m0, ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1, ∃ n. # nσ = ⌜n⌝ ⊦
Used terms: # nσ
| ⊦ n∞ = ∞ ↔ ¬(∃ n. n∞ = ⌜n⌝ ) |
| n < nσ[m], ⌜m⌝ < # nσ, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ m0. (∃ m1. ⌜m1⌝ < # nσ ∧ nσ[m1] = m0 - 1) → ¬ nσ[m] + 1 < m0, ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1, ∃ n. # nσ = ⌜n⌝ ⊦ |
# nσ = ⌜n0⌝ , m < n0, n < nσ[m], stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ m0. (∃ m1. m1 < n0 ∧ nσ[m1] = m0 - 1) → ¬ nσ[m] + 1 < m0, ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1 ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s)
| # nσ = ⌜n0⌝ , m < n0, n < nσ[m], stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ m0. (∃ m1. m1 < n0 ∧ nσ[m1] = m0 - 1) → ¬ nσ[m] + 1 < m0, ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1 ⊦ |
Used simplifier rules: eqle-one: ⊦ m = n + 1 ∧ n < n0 → m ≤ n0; (forward) from specification nat a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic lf: ⊦ m < n ∧ n < n0 → m +1 < n0; (forward) from specification nat-basic trans-nat: ⊦ n < n0 ∧ n0 < n1 → n < n1; (forward) from specification nat-basic f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m < n → n ≠ 0; (s) ⊦ m +1 = m + 1; (s) ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ m < n → ¬ n < m; (s) Used terms: n0
| nσ[m0] ≠ nσ[m], m < m0, n < nσ[m], ⌜m⌝ < # nσ, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1, ∀ m0. (∃ m1. ⌜m1⌝ < # nσ ∧ nσ[m1] = m0 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m1 < m2 → nσ[m2] = m0 - 1))) → ¬ nσ[m] + 1 < m0 ⊦ |
nσ[m0] ≠ nσ[m], m < m0, n < nσ[m], ⌜m⌝ < # nσ, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1, ∀ m0. (∃ m1. ⌜m1⌝ < # nσ ∧ nσ[m1] = m0 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m1 < m2 → nσ[m2] = m0 - 1))) → ¬ nσ[m] + 1 < m0 ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| nσ[m0] ≠ nσ[m], m < m0, n < nσ[m], ⌜m⌝ < # nσ, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1, ∀ m0. (∃ m1. ⌜m1⌝ < # nσ ∧ nσ[m1] = m0 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m1 < m2 → nσ[m2] = m0 - 1))) → ¬ nσ[m] + 1 < m0 ⊦ |
nσ[m0] ≠ nσ[m], ⌜m⌝ < # nσ, n < nσ[m], m < m0, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ m0. (∃ m1. ⌜m1⌝ < # nσ ∧ nσ[m1] = m0 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m1 < m2 → nσ[m2] = m0 - 1))) → ¬ nσ[m] + 1 < m0, ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1, ∃ n1. m < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1 ⊦
Used terms: m
| nσ[m0] ≠ nσ[m], ⌜m⌝ < # nσ, n < nσ[m], m < m0, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ m0. (∃ m1. ⌜m1⌝ < # nσ ∧ nσ[m1] = m0 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m1 < m2 → nσ[m2] = m0 - 1))) → ¬ nσ[m] + 1 < m0, ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1, ∃ n1. m < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1 ⊦ |
nσ[n1] = n + 1, nσ[m0] ≠ nσ[m], m < n1, ⌜n1⌝ < # nσ, m < m0, ⌜m⌝ < # nσ, n < nσ[m], stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1, ∀ m0. (∃ m1. ⌜m1⌝ < # nσ ∧ nσ[m1] = m0 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m1 < m2 → nσ[m2] = m0 - 1))) → ¬ nσ[m] + 1 < m0 ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m + 1 ≤ n ↔ m < n; (s) ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic eqle-one: ⊦ m = n + 1 ∧ n < n0 → m ≤ n0; (forward) from specification nat
| nσ[n1] = n + 1, nσ[m0] ≠ nσ[m], m < n1, ⌜n1⌝ < # nσ, m < m0, ⌜m⌝ < # nσ, n < nσ[m], stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1, ∀ m0. (∃ m1. ⌜m1⌝ < # nσ ∧ nσ[m1] = m0 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m1 < m2 → nσ[m2] = m0 - 1))) → ¬ nσ[m] + 1 < m0 ⊦ |
⊦ mon≤(nσ) ∧ m ≤ n ∧ ⌜n⌝ < # nσ → nσ[m] ≤ nσ[n]
nσ[n1] = n + 1, nσ[m0] ≠ nσ[m], n < nσ[m], ⌜m⌝ < # nσ, m < m0, ⌜n1⌝ < # nσ, m < n1, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, mon≤(nσ) ∧ m ≤ n1 ∧ ⌜n1⌝ < # nσ → nσ[m] ≤ nσ[n1], ∀ m0. (∃ m1. ⌜m1⌝ < # nσ ∧ nσ[m1] = m0 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m1 < m2 → nσ[m2] = m0 - 1))) → ¬ nσ[m] + 1 < m0, ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1 ⊦
Used terms: nσ, m, n1
| ⊦ mon≤(nσ) ∧ m ≤ n ∧ ⌜n⌝ < # nσ → nσ[m] ≤ nσ[n] |
| nσ[n1] = n + 1, nσ[m0] ≠ nσ[m], n < nσ[m], ⌜m⌝ < # nσ, m < m0, ⌜n1⌝ < # nσ, m < n1, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, mon≤(nσ) ∧ m ≤ n1 ∧ ⌜n1⌝ < # nσ → nσ[m] ≤ nσ[n1], ∀ m0. (∃ m1. ⌜m1⌝ < # nσ ∧ nσ[m1] = m0 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m1 < m2 → nσ[m2] = m0 - 1))) → ¬ nσ[m] + 1 < m0, ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1 ⊦ |
nσ[n1] = n + 1, nσ[m] = n + 1, nσ[m0] ≠ n + 1, ⌜m⌝ < # nσ, m < m0, ⌜n1⌝ < # nσ, m < n1, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ m1. (∃ m. ⌜m⌝ < # nσ ∧ nσ[m] = m1 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m < m2 → nσ[m2] = m1 - 1))) → ¬ 2 + n < m1, ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1 ⊦
Used simplifier rules: stutf-monle: ⊦ stutf(nσ) → (mon≤(nσ) ↔ true); c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ ¬ n < n; (s) ⊦ m < n + 1 ↔ ¬ n < m; (s) ⊦ m < n → (n ≤ m + 1 ↔ n = m + 1); (s) ⊦ m + 1 ≠ 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 eqle-one: ⊦ m = n + 1 ∧ n < n0 → m ≤ n0; (forward) from specification nat ⊦ m ≤ m; (s) fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat le-one: ⊦ m ≤ n + 1 ∧ n < n0 → m ≤ n0; (forward) from specification nat ⊦ m < n → m ≤ n; (s)
| nσ[n1] = n + 1, nσ[m] = n + 1, nσ[m0] ≠ n + 1, ⌜m⌝ < # nσ, m < m0, ⌜n1⌝ < # nσ, m < n1, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ m1. (∃ m. ⌜m⌝ < # nσ ∧ nσ[m] = m1 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m < m2 → nσ[m2] = m1 - 1))) → ¬ 2 + n < m1, ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1 ⊦ |
⊦ mon≤(nσ) ∧ m ≤ n ∧ ⌜n⌝ < # nσ → nσ[m] ≤ nσ[n]
nσ[m] = n + 1, nσ[n1] = n + 1, nσ[m0] ≠ n + 1, m < n1, ⌜n1⌝ < # nσ, m < m0, ⌜m⌝ < # nσ, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, mon≤(nσ) ∧ m ≤ m0 ∧ ⌜m0⌝ < # nσ → nσ[m] ≤ nσ[m0], ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1, ∀ m1. (∃ m. ⌜m⌝ < # nσ ∧ nσ[m] = m1 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m < m2 → nσ[m2] = m1 - 1))) → ¬ 2 + n < m1 ⊦
Used terms: nσ, m, m0
| ⊦ mon≤(nσ) ∧ m ≤ n ∧ ⌜n⌝ < # nσ → nσ[m] ≤ nσ[n] |
| nσ[m] = n + 1, nσ[n1] = n + 1, nσ[m0] ≠ n + 1, m < n1, ⌜n1⌝ < # nσ, m < m0, ⌜m⌝ < # nσ, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, mon≤(nσ) ∧ m ≤ m0 ∧ ⌜m0⌝ < # nσ → nσ[m] ≤ nσ[m0], ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1, ∀ m1. (∃ m. ⌜m⌝ < # nσ ∧ nσ[m] = m1 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m < m2 → nσ[m2] = m1 - 1))) → ¬ 2 + n < m1 ⊦ |
nσ[m] = n + 1, nσ[n1] = n + 1, nσ[m0] ≠ n + 1, m < n1, ⌜n1⌝ < # nσ, m < m0, ⌜m⌝ < # nσ, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ⌜m0⌝ < # nσ → n < nσ[m0], ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1, ∀ m1. (∃ m. ⌜m⌝ < # nσ ∧ nσ[m] = m1 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m < m2 → nσ[m2] = m1 - 1))) → ¬ 2 + n < m1 ⊦
Used simplifier rules: stutf-monle: ⊦ stutf(nσ) → (mon≤(nσ) ↔ true); c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m + 1 ≤ n ↔ m < n; (s) ⊦ m < n → m ≤ n; (s)
| nσ[m] = n + 1, nσ[n1] = n + 1, nσ[m0] ≠ n + 1, m < n1, ⌜n1⌝ < # nσ, m < m0, ⌜m⌝ < # nσ, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ⌜m0⌝ < # nσ → n < nσ[m0], ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1, ∀ m1. (∃ m. ⌜m⌝ < # nσ ∧ nσ[m] = m1 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m < m2 → nσ[m2] = m1 - 1))) → ¬ 2 + n < m1 ⊦ |
nσ[n1] = n + 1, nσ[m] = n + 1, nσ[m0] ≠ n + 1, ⌜m⌝ < # nσ, m < m0, ⌜n1⌝ < # nσ, m < n1, ⌜m0⌝ < # nσ, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ⌜m0⌝ < # nσ → n < nσ[m0], ∀ m1. (∃ m. ⌜m⌝ < # nσ ∧ nσ[m] = m1 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m < m2 → nσ[m2] = m1 - 1))) → ¬ 2 + n < m1, ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1 ⊦
nσ[n1] = n + 1, nσ[m] = n + 1, nσ[m0] ≠ n + 1, ⌜m⌝ < # nσ, m < m0, ⌜n1⌝ < # nσ, m < n1, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ¬ ⌜m0⌝ < # nσ, ⌜m0⌝ < # nσ → n < nσ[m0], ∀ m1. (∃ m. ⌜m⌝ < # nσ ∧ nσ[m] = m1 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m < m2 → nσ[m2] = m1 - 1))) → ¬ 2 + n < m1, ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1 ⊦
Used formulas: ⌜m0⌝ < # nσ
| nσ[n1] = n + 1, nσ[m] = n + 1, nσ[m0] ≠ n + 1, ⌜m⌝ < # nσ, m < m0, ⌜n1⌝ < # nσ, m < n1, ⌜m0⌝ < # nσ, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ⌜m0⌝ < # nσ → n < nσ[m0], ∀ m1. (∃ m. ⌜m⌝ < # nσ ∧ nσ[m] = m1 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m < m2 → nσ[m2] = m1 - 1))) → ¬ 2 + n < m1, ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1 ⊦ |
nσ[m] = n + 1, nσ[n1] = n + 1, nσ[m0] ≠ n + 1, ⌜m0⌝ < # nσ, m < n1, ⌜n1⌝ < # nσ, m < m0, ⌜m⌝ < # nσ, n + 1 < nσ[m0], n < nσ[m0], stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1, ∀ m1. (∃ m. ⌜m⌝ < # nσ ∧ nσ[m] = m1 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m < m2 → nσ[m2] = m1 - 1))) → ¬ 2 + n < m1 ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m + 1 ≤ n ↔ m < n; (s) lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic ⊦ m < n → n ≠ 0; (s) succ-03: ⊦ m < n ∧ m + 1 ≠ n → m + 1 < n; (forward) from specification nat-basic f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic eqle-one: ⊦ m = n + 1 ∧ n < n0 → m ≤ n0; (forward) from specification nat
| nσ[m] = n + 1, nσ[n1] = n + 1, nσ[m0] ≠ n + 1, ⌜m0⌝ < # nσ, m < n1, ⌜n1⌝ < # nσ, m < m0, ⌜m⌝ < # nσ, n + 1 < nσ[m0], n < nσ[m0], stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1, ∀ m1. (∃ m. ⌜m⌝ < # nσ ∧ nσ[m] = m1 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m < m2 → nσ[m2] = m1 - 1))) → ¬ 2 + n < m1 ⊦ |
nσ[n1] = n + 1, nσ[m] = n + 1, nσ[m0] ≠ n + 1, n < nσ[m0], n + 1 < nσ[m0], ⌜m⌝ < # nσ, m < m0, ⌜n1⌝ < # nσ, m < n1, ⌜m0⌝ < # nσ, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ m1. (∃ m. ⌜m⌝ < # nσ ∧ nσ[m] = m1 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m < m2 → nσ[m2] = m1 - 1))) → ¬ 2 + n < m1, ∃ n1. m0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1 ⊦
Used terms: m0
| nσ[n1] = n + 1, nσ[m] = n + 1, nσ[m0] ≠ n + 1, n < nσ[m0], n + 1 < nσ[m0], ⌜m⌝ < # nσ, m < m0, ⌜n1⌝ < # nσ, m < n1, ⌜m0⌝ < # nσ, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ m1. (∃ m. ⌜m⌝ < # nσ ∧ nσ[m] = m1 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m < m2 → nσ[m2] = m1 - 1))) → ¬ 2 + n < m1, ∃ n1. m0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1 ⊦ |
nσ[n1] = n + 1, nσ[m] = n + 1, nσ[n0] = n + 1, nσ[m0] ≠ n + 1, m < n0, n < nσ[m0], ⌜m⌝ < # nσ, m < m0, ⌜n1⌝ < # nσ, m < n1, ⌜m0⌝ < # nσ, ⌜n0⌝ < # nσ, m0 < n0, n + 1 < nσ[m0], m + 1 < n0, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ m1. (∃ m. ⌜m⌝ < # nσ ∧ nσ[m] = m1 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m < m2 → nσ[m2] = m1 - 1))) → ¬ 2 + n < m1 ⊦
Used simplifier rules: ⊦ m +1 = m + 1; (s) ⊦ m < n → m ≤ n; (s) ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic trans-nat: ⊦ n < n0 ∧ n0 < n1 → n < n1; (forward) from specification nat-basic lf: ⊦ m < n ∧ n < n0 → m +1 < n0; (forward) from specification nat-basic lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (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
| nσ[n1] = n + 1, nσ[m] = n + 1, nσ[n0] = n + 1, nσ[m0] ≠ n + 1, m < n0, n < nσ[m0], ⌜m⌝ < # nσ, m < m0, ⌜n1⌝ < # nσ, m < n1, ⌜m0⌝ < # nσ, ⌜n0⌝ < # nσ, m0 < n0, n + 1 < nσ[m0], m + 1 < n0, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ m1. (∃ m. ⌜m⌝ < # nσ ∧ nσ[m] = m1 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m < m2 → nσ[m2] = m1 - 1))) → ¬ 2 + n < m1 ⊦ |
⊦ mon≤(nσ) ∧ m ≤ n ∧ ⌜n⌝ < # nσ → nσ[m] ≤ nσ[n]
Used simplifier rules: stutf-monle: ⊦ stutf(nσ) → (mon≤(nσ) ↔ true); ⊦ m < n → m ≤ n; (s) le-one: ⊦ m ≤ n + 1 ∧ n < n0 → m ≤ n0; (forward) from specification nat a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat ⊦ m < n → (n ≤ m ↔ false); (s) Used terms: nσ, m0, n0
| ⊦ mon≤(nσ) ∧ m ≤ n ∧ ⌜n⌝ < # nσ → nσ[m] ≤ nσ[n] |
| nσ[n1] = n + 1, nσ[m] = n + 1, nσ[m0] ≠ n + 1, ⌜m⌝ < # nσ, m < m0, ⌜n1⌝ < # nσ, m < n1, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ¬ ⌜m0⌝ < # nσ, ⌜m0⌝ < # nσ → n < nσ[m0], ∀ m1. (∃ m. ⌜m⌝ < # nσ ∧ nσ[m] = m1 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m < m2 → nσ[m2] = m1 - 1))) → ¬ 2 + n < m1, ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1 ⊦ |
nσ[m] = n + 1, nσ[n1] = n + 1, nσ[m0] ≠ n + 1, n1 < m0, m < n1, ⌜n1⌝ < # nσ, m < m0, ⌜m⌝ < # nσ, m + 1 < m0, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ¬ ⌜m0⌝ < # nσ, ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1, ∀ m1. (∃ m. ⌜m⌝ < # nσ ∧ nσ[m] = m1 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m < m2 → nσ[m2] = m1 - 1))) → ¬ 2 + n < m1 ⊦
Used simplifier rules: ⊦ m +1 = m + 1; (s) trans-nat: ⊦ n < n0 ∧ n0 < n1 → n < n1; (forward) from specification nat-basic lf: ⊦ m < n ∧ n < n0 → m +1 < n0; (forward) from specification nat-basic ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) lsle-trans: ⊦ n∞ < n∞1 ∧ ¬ n∞2 < n∞1 → n∞ < n∞2; (forward) from specification nat-inf
| nσ[m] = n + 1, nσ[n1] = n + 1, nσ[m0] ≠ n + 1, n1 < m0, m < n1, ⌜n1⌝ < # nσ, m < m0, ⌜m⌝ < # nσ, m + 1 < m0, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ¬ ⌜m0⌝ < # nσ, ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n + 1, ∀ m1. (∃ m. ⌜m⌝ < # nσ ∧ nσ[m] = m1 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m < m2 → nσ[m2] = m1 - 1))) → ¬ 2 + n < m1 ⊦ |
Used simplifier rules: lf: ⊦ m < n ∧ n < n0 → m +1 < n0; (forward) from specification nat-basic trans-nat: ⊦ n < n0 ∧ n0 < n1 → n < n1; (forward) from specification nat-basic lsle-trans: ⊦ n∞ < n∞1 ∧ ¬ n∞2 < n∞1 → n∞ < n∞2; (forward) from specification nat-inf f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m < n → n ≠ 0; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ m +1 = m + 1; (s) ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ m < n → ¬ n < m; (s) Used terms: m0
| ⌜m⌝ < # nσ, n < nσ[m], stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ m0. (∃ m1. ⌜m1⌝ < # nσ ∧ nσ[m1] = m0 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m1 < m2 → nσ[m2] = m0 - 1))) → ¬ nσ[m] + 1 < m0, ∀ n0. ¬ ⌜n0⌝ < # nσ ∨ nσ[n0] ≠ n + 1, # nσ ≠ ∞ ∨ ¬(m < m0 → nσ[m0] = nσ[m]) ⊦ |
# nσ ≠ ∞, n < nσ[m], ⌜m⌝ < # nσ, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ n0. ¬ ⌜n0⌝ < # nσ ∨ nσ[n0] ≠ n + 1, ∀ m0. (∃ m1. ⌜m1⌝ < # nσ ∧ nσ[m1] = m0 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m1 < m2 → nσ[m2] = m0 - 1))) → ¬ nσ[m] + 1 < m0 ⊦
nσ[m0] ≠ nσ[m], m < m0, n < nσ[m], ⌜m⌝ < # nσ, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ n0. ¬ ⌜n0⌝ < # nσ ∨ nσ[n0] ≠ n + 1, ∀ m0. (∃ m1. ⌜m1⌝ < # nσ ∧ nσ[m1] = m0 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m1 < m2 → nσ[m2] = m0 - 1))) → ¬ nσ[m] + 1 < m0 ⊦
| # nσ ≠ ∞, n < nσ[m], ⌜m⌝ < # nσ, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ n0. ¬ ⌜n0⌝ < # nσ ∨ nσ[n0] ≠ n + 1, ∀ m0. (∃ m1. ⌜m1⌝ < # nσ ∧ nσ[m1] = m0 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m1 < m2 → nσ[m2] = m0 - 1))) → ¬ nσ[m] + 1 < m0 ⊦ |
# nσ ≠ ∞, ⌜m⌝ < # nσ, n < nσ[m], stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ n0. ¬ ⌜n0⌝ < # nσ ∨ nσ[n0] ≠ n + 1, ∀ m0. (∃ m1. ⌜m1⌝ < # nσ ∧ nσ[m1] = m0 - 1) → ¬ nσ[m] + 1 < m0 ⊦
| # nσ ≠ ∞, ⌜m⌝ < # nσ, n < nσ[m], stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ n0. ¬ ⌜n0⌝ < # nσ ∨ nσ[n0] ≠ n + 1, ∀ m0. (∃ m1. ⌜m1⌝ < # nσ ∧ nσ[m1] = m0 - 1) → ¬ nσ[m] + 1 < m0 ⊦ |
⊦ n∞ = ∞ ↔ ¬(∃ n. n∞ = ⌜n⌝ )
n < nσ[m], ⌜m⌝ < # nσ, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ m0. (∃ m1. ⌜m1⌝ < # nσ ∧ nσ[m1] = m0 - 1) → ¬ nσ[m] + 1 < m0, ∀ n0. ¬ ⌜n0⌝ < # nσ ∨ nσ[n0] ≠ n + 1, ∃ n. # nσ = ⌜n⌝ ⊦
Used terms: # nσ
| ⊦ n∞ = ∞ ↔ ¬(∃ n. n∞ = ⌜n⌝ ) |
| n < nσ[m], ⌜m⌝ < # nσ, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ m0. (∃ m1. ⌜m1⌝ < # nσ ∧ nσ[m1] = m0 - 1) → ¬ nσ[m] + 1 < m0, ∀ n0. ¬ ⌜n0⌝ < # nσ ∨ nσ[n0] ≠ n + 1, ∃ n. # nσ = ⌜n⌝ ⊦ |
# nσ = ⌜n0⌝ , m < n0, n < nσ[m], stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ m0. (∃ m1. m1 < n0 ∧ nσ[m1] = m0 - 1) → ¬ nσ[m] + 1 < m0, ∀ n0. ¬ ⌜n0⌝ < # nσ ∨ nσ[n0] ≠ n + 1 ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s)
| # nσ = ⌜n0⌝ , m < n0, n < nσ[m], stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ m0. (∃ m1. m1 < n0 ∧ nσ[m1] = m0 - 1) → ¬ nσ[m] + 1 < m0, ∀ n0. ¬ ⌜n0⌝ < # nσ ∨ nσ[n0] ≠ n + 1 ⊦ |
⊦ stutf(nσ) ∧ ⌜m⌝ < # nσ ∧ n ≤ nσ[m] → (∃ m0. m0 ≤ m ∧ nσ[m0] = n)
# nσ = ⌜n0⌝ , n < nσ[m], m < n0, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, stutf(nσ) ∧ ⌜m⌝ < # nσ ∧ n + 1 ≤ nσ[m] → (∃ m0. m0 ≤ m ∧ nσ[m0] = n + 1), ∀ n0. ¬ ⌜n0⌝ < # nσ ∨ nσ[n0] ≠ n + 1, ∀ m0. (∃ m1. m1 < n0 ∧ nσ[m1] = m0 - 1) → ¬ nσ[m] + 1 < m0 ⊦
Used terms: nσ, m, n + 1
| ⊦ stutf(nσ) ∧ ⌜m⌝ < # nσ ∧ n ≤ nσ[m] → (∃ m0. m0 ≤ m ∧ nσ[m0] = n) |
| # nσ = ⌜n0⌝ , n < nσ[m], m < n0, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, stutf(nσ) ∧ ⌜m⌝ < # nσ ∧ n + 1 ≤ nσ[m] → (∃ m0. m0 ≤ m ∧ nσ[m0] = n + 1), ∀ n0. ¬ ⌜n0⌝ < # nσ ∨ nσ[n0] ≠ n + 1, ∀ m0. (∃ m1. m1 < n0 ∧ nσ[m1] = m0 - 1) → ¬ nσ[m] + 1 < m0 ⊦ |
# nσ = ⌜n0⌝ , nσ[m0] = n + 1, m < n0, m0 < n0, n < nσ[m], stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, m0 ≤ m, ∀ n0. ¬ ⌜n0⌝ < # nσ ∨ nσ[n0] ≠ n + 1, ∀ m0. (∃ m1. m1 < n0 ∧ nσ[m1] = m0 - 1) → ¬ nσ[m] + 1 < m0 ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m + 1 ≤ n ↔ m < n; (s) fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat eqle-one: ⊦ m = n + 1 ∧ n < n0 → m ≤ n0; (forward) from specification nat ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s)
| # nσ = ⌜n0⌝ , nσ[m0] = n + 1, m < n0, m0 < n0, n < nσ[m], stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, m0 ≤ m, ∀ n0. ¬ ⌜n0⌝ < # nσ ∨ nσ[n0] ≠ n + 1, ∀ m0. (∃ m1. m1 < n0 ∧ nσ[m1] = m0 - 1) → ¬ nσ[m] + 1 < m0 ⊦ |
# nσ = ⌜n0⌝ , nσ[m0] = n + 1, n < nσ[m], m0 < n0, m < n0, stutf(nσ), m0 ≤ m, ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, (∃ m1. m1 < n0 ∧ nσ[m1] = n0 - 1) → ¬ nσ[m] + 1 < n0, ∀ n0. ¬ ⌜n0⌝ < # nσ ∨ nσ[n0] ≠ n + 1 ⊦
Used terms: n0
| # nσ = ⌜n0⌝ , nσ[m0] = n + 1, n < nσ[m], m0 < n0, m < n0, stutf(nσ), m0 ≤ m, ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, (∃ m1. m1 < n0 ∧ nσ[m1] = n0 - 1) → ¬ nσ[m] + 1 < n0, ∀ n0. ¬ ⌜n0⌝ < # nσ ∨ nσ[n0] ≠ n + 1 ⊦ |
# nσ = ⌜n0⌝ , nσ[m0] = n + 1, n0 = m2 + 1, n0 ≠ 0, m < n0, m0 < n0, n < nσ[m], stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, m0 ≤ m, (∃ m1. m1 < n0 ∧ nσ[m1] = m2) → ¬ nσ[m] + 1 < n0, ∀ n0. ¬ ⌜n0⌝ < # nσ ∨ nσ[n0] ≠ n + 1 ⊦
Used simplifier rules: stutf-nonempty: ⊦ stutf(nσ) → (nσ = [] ↔ false); ⊦ # σ = ⌜0⌝ ↔ σ = []; (s) n ≠ 0 ⊦ m = n - 1 ↔ n = m + 1; (elim) Used terms: n0, m2
| # nσ = ⌜n0⌝ , nσ[m0] = n + 1, n0 = m2 + 1, n0 ≠ 0, m < n0, m0 < n0, n < nσ[m], stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, m0 ≤ m, (∃ m1. m1 < n0 ∧ nσ[m1] = m2) → ¬ nσ[m] + 1 < n0, ∀ n0. ¬ ⌜n0⌝ < # nσ ∨ nσ[n0] ≠ n + 1 ⊦ |
# nσ = ⌜m2⌝ + ⌜1⌝ , nσ[m0] = n + 1, n < nσ[m], stutf(nσ), m0 ≤ m, ∞.n ≤ max∞(λ n0. ¬ m2 < n0 ∧ nσ[n0] = n).n, m ≤ m2, m0 ≤ m2, (∃ m1. ¬ nσ[m1] < m1 ∧ nσ[m1] = m2) → ¬ nσ[m] < m2, ∀ n0. m2 < n0 ∨ nσ[n0] ≠ n + 1 ⊦
Used simplifier rules: let: ⊦ n ≤ n0 ∧ n0 ≤ n1 → n ≤ n1; (forward) from specification nat c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m + n < m + n0 ↔ n < n0; (s) ⊦ m < n + 1 ↔ ¬ n < m; (s) ⊦ n∞ = ⌜m⌝ + ⌜n0⌝ → (⌜n⌝ < n∞ ↔ n < m + n0); (s) ⊦ m < n ↔ ¬ n ≤ m; (ss) add-comm: ⊦ n∞1 + n∞2 = n∞2 + n∞1; from specification nat-inf add-assoc: ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2; from specification nat-inf ⊦ m + 1 ≠ 0; (s) ⊦ ⌜m + n⌝ = ⌜m⌝ + ⌜n⌝ ; (s)
| # nσ = ⌜m2⌝ + ⌜1⌝ , nσ[m0] = n + 1, n < nσ[m], stutf(nσ), m0 ≤ m, ∞.n ≤ max∞(λ n0. ¬ m2 < n0 ∧ nσ[n0] = n).n, m ≤ m2, m0 ≤ m2, (∃ m1. ¬ nσ[m1] < m1 ∧ nσ[m1] = m2) → ¬ nσ[m] < m2, ∀ n0. m2 < n0 ∨ nσ[n0] ≠ n + 1 ⊦ |
Used simplifier rules: ⊦ m ≤ n → (n < m ↔ false); (s) Used terms: m0
| nσ[m0] ≠ nσ[m], m < m0, n < nσ[m], ⌜m⌝ < # nσ, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ n0. ¬ ⌜n0⌝ < # nσ ∨ nσ[n0] ≠ n + 1, ∀ m0. (∃ m1. ⌜m1⌝ < # nσ ∧ nσ[m1] = m0 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m1 < m2 → nσ[m2] = m0 - 1))) → ¬ nσ[m] + 1 < m0 ⊦ |
nσ[m0] ≠ nσ[m], m < m0, n < nσ[m], ⌜m⌝ < # nσ, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ n0. ¬ ⌜n0⌝ < # nσ ∨ nσ[n0] ≠ n + 1, ∀ m0. (∃ m1. ⌜m1⌝ < # nσ ∧ nσ[m1] = m0 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m1 < m2 → nσ[m2] = m0 - 1))) → ¬ nσ[m] + 1 < m0 ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| nσ[m0] ≠ nσ[m], m < m0, n < nσ[m], ⌜m⌝ < # nσ, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ n0. ¬ ⌜n0⌝ < # nσ ∨ nσ[n0] ≠ n + 1, ∀ m0. (∃ m1. ⌜m1⌝ < # nσ ∧ nσ[m1] = m0 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m1 < m2 → nσ[m2] = m0 - 1))) → ¬ nσ[m] + 1 < m0 ⊦ |
⊦ stutf(nσ) ∧ ⌜m⌝ < # nσ ∧ n ≤ nσ[m] → (∃ m0. m0 ≤ m ∧ nσ[m0] = n)
nσ[m0] ≠ nσ[m], ⌜m⌝ < # nσ, n < nσ[m], m < m0, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, stutf(nσ) ∧ ⌜m⌝ < # nσ ∧ n + 1 ≤ nσ[m] → (∃ m0. m0 ≤ m ∧ nσ[m0] = n + 1), ∀ m0. (∃ m1. ⌜m1⌝ < # nσ ∧ nσ[m1] = m0 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m1 < m2 → nσ[m2] = m0 - 1))) → ¬ nσ[m] + 1 < m0, ∀ n0. ¬ ⌜n0⌝ < # nσ ∨ nσ[n0] ≠ n + 1 ⊦
Used terms: nσ, m, n + 1
| ⊦ stutf(nσ) ∧ ⌜m⌝ < # nσ ∧ n ≤ nσ[m] → (∃ m0. m0 ≤ m ∧ nσ[m0] = n) |
| nσ[m0] ≠ nσ[m], ⌜m⌝ < # nσ, n < nσ[m], m < m0, stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, stutf(nσ) ∧ ⌜m⌝ < # nσ ∧ n + 1 ≤ nσ[m] → (∃ m0. m0 ≤ m ∧ nσ[m0] = n + 1), ∀ m0. (∃ m1. ⌜m1⌝ < # nσ ∧ nσ[m1] = m0 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m1 < m2 → nσ[m2] = m0 - 1))) → ¬ nσ[m] + 1 < m0, ∀ n0. ¬ ⌜n0⌝ < # nσ ∨ nσ[n0] ≠ n + 1 ⊦ |
nσ[m1] = n + 1, nσ[m0] ≠ nσ[m], m < m0, ⌜m⌝ < # nσ, m1 < m0, n < nσ[m], stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, m1 ≤ m, ∀ n0. ¬ ⌜n0⌝ < # nσ ∨ nσ[n0] ≠ n + 1, ∀ m0. (∃ m1. ⌜m1⌝ < # nσ ∧ nσ[m1] = m0 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m1 < m2 → nσ[m2] = m0 - 1))) → ¬ nσ[m] + 1 < m0 ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m + 1 ≤ n ↔ m < n; (s) fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat eqle-one: ⊦ m = n + 1 ∧ n < n0 → m ≤ n0; (forward) from specification nat
| nσ[m1] = n + 1, nσ[m0] ≠ nσ[m], m < m0, ⌜m⌝ < # nσ, m1 < m0, n < nσ[m], stutf(nσ), ∞.n ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, m1 ≤ m, ∀ n0. ¬ ⌜n0⌝ < # nσ ∨ nσ[n0] ≠ n + 1, ∀ m0. (∃ m1. ⌜m1⌝ < # nσ ∧ nσ[m1] = m0 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m2. m1 < m2 → nσ[m2] = m0 - 1))) → ¬ nσ[m] + 1 < m0 ⊦ |
Used simplifier rules: lsle-trans: ⊦ n∞ < n∞1 ∧ ¬ n∞2 < n∞1 → n∞ < n∞2; (forward) from specification nat-inf ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ m ≤ n → (n < m ↔ false); (s) Used terms: m1
| max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) ≠ ∞, ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ )[n + 1] ≤ (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ )[n] ⊦ |
⊦ n∞ = ∞ ↔ ¬(∃ n. n∞ = ⌜n⌝ )
⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ )[n + 1] ≤ (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ )[n], ∃ n0. max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ⌜n0⌝ ⊦
Used terms: max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1)
| ⊦ n∞ = ∞ ↔ ¬(∃ n. n∞ = ⌜n⌝ ) |
| ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ )[n + 1] ≤ (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ )[n], ∃ n0. max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ⌜n0⌝ ⊦ |
max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ⌜n0⌝ , ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ )[n + 1] ≤ (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ )[n] ⊦
| max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ⌜n0⌝ , ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ )[n + 1] ≤ (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ )[n] ⊦ |
leninv(nσ) = ∞, max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ⌜n0⌝ , ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ [n + 1] ≤ (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ )[n] ⊦
max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ⌜n0⌝ , leninv(nσ) ≠ ∞, ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), ⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ [n + 1] ≤ (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ )[n] ⊦
| leninv(nσ) = ∞, max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ⌜n0⌝ , ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ [n + 1] ≤ (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ )[n] ⊦ |
leninv(nσ) = ∞, max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ⌜n0⌝ , stutf(nσ), n0 ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n ⊦
Used simplifier rules: add-comm: ⊦ n∞1 + n∞2 = n∞2 + n∞1; from specification nat-inf add-assoc: ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2; from specification nat-inf ⊦ ⌜n⌝ ≠ ∞; (s) ⊦ ⌜m⌝ + n∞ = ∞ ↔ n∞ = ∞; (s) ⊦ n∞ < ∞ ↔ n∞ ≠ ∞; (s) ⊦ ⌜n⌝ .n = n; (s) ⊦ ⌜nf⌝ [n] = nf(n); (s)
| leninv(nσ) = ∞, max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ⌜n0⌝ , stutf(nσ), n0 ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n ⊦ |
⊦ max∞(np) = ⌜n⌝ ↔ np(n) ∧ (∀ m. np(m) → ¬ n < m)
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 ⊦
Used terms: n0, λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1
| ⊦ max∞(np) = ⌜n⌝ ↔ np(n) ∧ (∀ m. np(m) → ¬ n < m) |
| 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 ⊦ |
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 ⊦
| 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 ⊦ |
nσ[n0] = n + 1, leninv(nσ) = ∞, max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n) = ∞, ⌜n0⌝ < # nσ, stutf(nσ), n0 ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = n + 1 → ¬ n0 < m ⊦
nσ[n0] = n + 1, leninv(nσ) = ∞, max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n) ≠ ∞, ⌜n0⌝ < # nσ, stutf(nσ), n0 ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = n + 1 → ¬ n0 < m ⊦
Used formulas: max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n) = ∞
| nσ[n0] = n + 1, leninv(nσ) = ∞, max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n) = ∞, ⌜n0⌝ < # nσ, stutf(nσ), n0 ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = n + 1 → ¬ n0 < m ⊦ |
⊦ max∞(np) = ∞ ↔ (∀ n. ∃ n0. n < n0 ∧ np(n0)) ∨ (∀ n. ¬ np(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, (∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n) ∨ (∀ n0. ¬(⌜n0⌝ < # nσ ∧ nσ[n0] = n)) ⊦
Used terms: λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n
| ⊦ max∞(np) = ∞ ↔ (∀ n. ∃ n0. n < n0 ∧ np(n0)) ∨ (∀ n. ¬ np(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, (∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n) ∨ (∀ n0. ¬(⌜n0⌝ < # nσ ∧ nσ[n0] = 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, ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = 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, ∀ n0. ¬(⌜n0⌝ < # nσ ∧ nσ[n0] = 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, ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n ⊦ |
nσ[n0] = n + 1, leninv(nσ) = ∞, ⌜n0⌝ < # nσ, stutf(nσ), n0 ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = n + 1 → ¬ n0 < m, ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n ⊦
Used terms: n0
| nσ[n0] = n + 1, leninv(nσ) = ∞, ⌜n0⌝ < # nσ, stutf(nσ), n0 ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = n + 1 → ¬ n0 < m, ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n ⊦ |
nσ[n0] = nσ[n1] + 1, leninv(nσ) = ∞, ⌜n0⌝ < # nσ, ⌜n1⌝ < # nσ, n0 < n1, stutf(nσ), n0 ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = nσ[n1]).n, ∀ n0. ∃ n2. n0 < n2 ∧ ⌜n2⌝ < # nσ ∧ nσ[n2] = nσ[n1], ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = nσ[n0] → ¬ n0 < m ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| nσ[n0] = nσ[n1] + 1, leninv(nσ) = ∞, ⌜n0⌝ < # nσ, ⌜n1⌝ < # nσ, n0 < n1, stutf(nσ), n0 ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = nσ[n1]).n, ∀ n0. ∃ n2. n0 < n2 ∧ ⌜n2⌝ < # nσ ∧ nσ[n2] = nσ[n1], ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = nσ[n0] → ¬ n0 < m ⊦ |
⊦ mon≤(nσ) ∧ m ≤ n ∧ ⌜n⌝ < # nσ → nσ[m] ≤ nσ[n]
Used simplifier rules: stutf-monle: ⊦ stutf(nσ) → (mon≤(nσ) ↔ true); ⊦ m < n → m ≤ n; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ m = n + 1 → ¬ m ≤ n; (s) Used terms: nσ, n0, n1
| ⊦ mon≤(nσ) ∧ m ≤ n ∧ ⌜n⌝ < # nσ → nσ[m] ≤ nσ[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, ∀ n0. ¬(⌜n0⌝ < # nσ ∧ nσ[n0] = 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 + 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 ⊦ |
⊦ stutf(nσ) ∧ ⌜m⌝ < # nσ ∧ n ≤ nσ[m] → (∃ m0. m0 ≤ m ∧ nσ[m0] = n)
nσ[n0] = n + 1, leninv(nσ) = ∞, ⌜n0⌝ < # nσ, stutf(nσ), n0 ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, stutf(nσ) ∧ ⌜n0⌝ < # nσ ∧ n ≤ nσ[n0] → (∃ m0. m0 ≤ n0 ∧ nσ[m0] = n), ∀ n1. ¬ ⌜n1⌝ < # nσ ∨ nσ[n1] ≠ n, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = n + 1 → ¬ n0 < m ⊦
Used terms: nσ, n0, n
| ⊦ stutf(nσ) ∧ ⌜m⌝ < # nσ ∧ n ≤ nσ[m] → (∃ m0. m0 ≤ m ∧ nσ[m0] = n) |
| nσ[n0] = n + 1, leninv(nσ) = ∞, ⌜n0⌝ < # nσ, stutf(nσ), n0 ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, stutf(nσ) ∧ ⌜n0⌝ < # nσ ∧ n ≤ nσ[n0] → (∃ m0. m0 ≤ n0 ∧ nσ[m0] = n), ∀ n1. ¬ ⌜n1⌝ < # nσ ∨ nσ[n1] ≠ n, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = n + 1 → ¬ n0 < m ⊦ |
nσ[n0] = nσ[m0] + 1, leninv(nσ) = ∞, ⌜n0⌝ < # nσ, stutf(nσ), m0 ≤ n0, n0 ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = nσ[m0]).n, m0 ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = nσ[m0]).n, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = nσ[n0] → ¬ n0 < m, ∀ n1. ¬ ⌜n1⌝ < # nσ ∨ nσ[n1] ≠ nσ[m0] ⊦
Used simplifier rules: let: ⊦ n ≤ n0 ∧ n0 ≤ n1 → n ≤ n1; (forward) from specification nat c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m ≤ m + n; (s)
| nσ[n0] = nσ[m0] + 1, leninv(nσ) = ∞, ⌜n0⌝ < # nσ, stutf(nσ), m0 ≤ n0, n0 ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = nσ[m0]).n, m0 ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = nσ[m0]).n, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = nσ[n0] → ¬ n0 < m, ∀ n1. ¬ ⌜n1⌝ < # nσ ∨ nσ[n1] ≠ nσ[m0] ⊦ |
Used simplifier rules: lsle-trans: ⊦ n∞ < n∞1 ∧ ¬ n∞2 < n∞1 → n∞ < n∞2; (forward) from specification nat-inf ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ m ≤ n → (n < m ↔ false); (s) Used terms: m0
| nσ[n0] = n + 1, leninv(nσ) = ∞, max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n) ≠ ∞, ⌜n0⌝ < # nσ, stutf(nσ), n0 ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = n + 1 → ¬ n0 < m ⊦ |
nσ[n0] = n + 1, leninv(nσ) = ∞, max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n) = ⌜n1⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n) ≠ ∞, ⌜n0⌝ < # nσ, stutf(nσ), n0 ≤ n1, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = n + 1 → ¬ n0 < m ⊦
Used simplifier rules: ⊦ n∞ ≠ ∞ → (n = n∞.n ↔ n∞ = ⌜n⌝ ); (elim) Used terms: max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n), n1
| nσ[n0] = n + 1, leninv(nσ) = ∞, max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n) = ⌜n1⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n) ≠ ∞, ⌜n0⌝ < # nσ, stutf(nσ), n0 ≤ n1, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = n + 1 → ¬ n0 < m ⊦ |
nσ[n0] = n + 1, leninv(nσ) = ∞, max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n) = ⌜n1⌝ , ⌜n0⌝ < # nσ, stutf(nσ), n0 ≤ n1, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = n + 1 → ¬ n0 < m ⊦
Used simplifier rules: ⊦ ⌜n⌝ ≠ ∞; (s)
| nσ[n0] = n + 1, leninv(nσ) = ∞, max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n) = ⌜n1⌝ , ⌜n0⌝ < # nσ, stutf(nσ), n0 ≤ n1, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = n + 1 → ¬ n0 < m ⊦ |
⊦ max∞(np) = ⌜n⌝ ↔ np(n) ∧ (∀ m. np(m) → ¬ n < m)
nσ[n1] = n, nσ[n0] = n + 1, leninv(nσ) = ∞, ⌜n0⌝ < # nσ, ⌜n1⌝ < # nσ, stutf(nσ), n0 ≤ n1, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = n + 1 → ¬ n0 < m, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = n → ¬ n1 < m ⊦
Used terms: n1, λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n
| ⊦ max∞(np) = ⌜n⌝ ↔ np(n) ∧ (∀ m. np(m) → ¬ n < m) |
| nσ[n1] = n, nσ[n0] = n + 1, leninv(nσ) = ∞, ⌜n0⌝ < # nσ, ⌜n1⌝ < # nσ, stutf(nσ), n0 ≤ n1, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = n + 1 → ¬ n0 < m, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = n → ¬ n1 < m ⊦ |
nσ[n0] = nσ[n1] + 1, leninv(nσ) = ∞, ⌜n1⌝ < # nσ, ⌜n0⌝ < # nσ, stutf(nσ), n0 ≤ n1, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = nσ[n1] → ¬ n1 < m, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = nσ[n0] → ¬ n0 < m ⊦
| nσ[n0] = nσ[n1] + 1, leninv(nσ) = ∞, ⌜n1⌝ < # nσ, ⌜n0⌝ < # nσ, stutf(nσ), n0 ≤ n1, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = nσ[n1] → ¬ n1 < m, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = nσ[n0] → ¬ n0 < m ⊦ |
⊦ mon≤(nσ) ∧ m ≤ n ∧ ⌜n⌝ < # nσ → nσ[m] ≤ nσ[n]
Used simplifier rules: stutf-monle: ⊦ stutf(nσ) → (mon≤(nσ) ↔ true); a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ m = n + 1 → ¬ m ≤ n; (s) Used terms: nσ, n0, n1
| ⊦ mon≤(nσ) ∧ m ≤ n ∧ ⌜n⌝ < # nσ → nσ[m] ≤ nσ[n] |
| max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ⌜n0⌝ , leninv(nσ) ≠ ∞, ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), ⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ [n + 1] ≤ (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n⌝ )[n] ⊦ |
max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ⌜n0⌝ , leninv(nσ) ≠ ∞, ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), ((λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n)[n + 1] ≤ ((λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n)[n] ⊦
Used simplifier rules: ⊦ ⌜x⌝ [n] = x[n]; (s)
| max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ⌜n0⌝ , leninv(nσ) ≠ ∞, ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), ((λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n)[n + 1] ≤ ((λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to leninv(nσ).n)[n] ⊦ |
leninv(nσ) = ⌜n1⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ⌜n0⌝ , leninv(nσ) ≠ ∞, ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), ((λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to n1)[n + 1] ≤ ((λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to n1)[n] ⊦
Used simplifier rules: ⊦ n∞ ≠ ∞ → (n = n∞.n ↔ n∞ = ⌜n⌝ ); (elim) Used terms: leninv(nσ), n1
| leninv(nσ) = ⌜n1⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ⌜n0⌝ , leninv(nσ) ≠ ∞, ⌜n⌝ + ⌜1⌝ < leninv(nσ), stutf(nσ), ((λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to n1)[n + 1] ≤ ((λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ[n] = m).n) to n1)[n] ⊦ |
leninv(nσ) = ⌜n1⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ⌜n0⌝ , n + 1 < n1, stutf(nσ), n0 ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n ⊦
Used simplifier rules: ⊦ ⌜n⌝ .n = n; (s) ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic m < n ⊦ (nf to n)[m] = nf(m); (s) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ ¬ m + n < m; (s) fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ m < n → (n ≤ m ↔ false); (s) add-comm: ⊦ n∞1 + n∞2 = n∞2 + n∞1; from specification nat-inf add-assoc: ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2; from specification nat-inf ⊦ ⌜n⌝ + ⌜m⌝ < ⌜n0⌝ ↔ n + m < n0; (s) ⊦ ⌜n⌝ ≠ ∞; (s)
| leninv(nσ) = ⌜n1⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ⌜n0⌝ , n + 1 < n1, stutf(nσ), n0 ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n ⊦ |
leninv(nσ) = ⌜n1⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ⌜n0⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n) = ∞, n + 1 < n1, stutf(nσ), n0 ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n ⊦
leninv(nσ) = ⌜n1⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ⌜n0⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n) ≠ ∞, n + 1 < n1, stutf(nσ), n0 ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n ⊦
Used formulas: max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n) = ∞
| leninv(nσ) = ⌜n1⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ⌜n0⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n) = ∞, n + 1 < n1, stutf(nσ), n0 ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n ⊦ |
leninv(nσ) = ⌜n1⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n) = ∞, max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ⌜n0⌝ , n + 1 < n1, stutf(nσ), n0 ≤ ∞.n ⊦
| leninv(nσ) = ⌜n1⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n) = ∞, max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ⌜n0⌝ , n + 1 < n1, stutf(nσ), n0 ≤ ∞.n ⊦ |
⊦ max∞(np) = ∞ ↔ (∀ n. ∃ n0. n < n0 ∧ np(n0)) ∨ (∀ n. ¬ np(n))
leninv(nσ) = ⌜n1⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ⌜n0⌝ , n + 1 < n1, stutf(nσ), n0 ≤ ∞.n, (∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n) ∨ (∀ n0. ¬(⌜n0⌝ < # nσ ∧ nσ[n0] = n)) ⊦
Used terms: λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n
| ⊦ max∞(np) = ∞ ↔ (∀ n. ∃ n0. n < n0 ∧ np(n0)) ∨ (∀ n. ¬ np(n)) |
| leninv(nσ) = ⌜n1⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ⌜n0⌝ , n + 1 < n1, stutf(nσ), n0 ≤ ∞.n, (∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n) ∨ (∀ n0. ¬(⌜n0⌝ < # nσ ∧ nσ[n0] = n)) ⊦ |
leninv(nσ) = ⌜n1⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ⌜n0⌝ , n + 1 < n1, stutf(nσ), n0 ≤ ∞.n, (∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n) ∨ (∀ n2. ¬ ⌜n2⌝ < # nσ ∨ nσ[n2] ≠ n) ⊦
| leninv(nσ) = ⌜n1⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ⌜n0⌝ , n + 1 < n1, stutf(nσ), n0 ≤ ∞.n, (∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n) ∨ (∀ n2. ¬ ⌜n2⌝ < # nσ ∨ nσ[n2] ≠ n) ⊦ |
⊦ max∞(np) = ⌜n⌝ ↔ np(n) ∧ (∀ m. np(m) → ¬ n < m)
nσ[n0] = n + 1, leninv(nσ) = ⌜n1⌝ , n + 1 < n1, ⌜n0⌝ < # nσ, stutf(nσ), n0 ≤ ∞.n, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = n + 1 → ¬ n0 < m, (∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n) ∨ (∀ n2. ¬ ⌜n2⌝ < # nσ ∨ nσ[n2] ≠ n) ⊦
Used terms: n0, λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1
| ⊦ max∞(np) = ⌜n⌝ ↔ np(n) ∧ (∀ m. np(m) → ¬ n < m) |
| nσ[n0] = n + 1, leninv(nσ) = ⌜n1⌝ , n + 1 < n1, ⌜n0⌝ < # nσ, stutf(nσ), n0 ≤ ∞.n, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = n + 1 → ¬ n0 < m, (∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n) ∨ (∀ n2. ¬ ⌜n2⌝ < # nσ ∨ nσ[n2] ≠ n) ⊦ |
nσ[n0] = n + 1, leninv(nσ) = ⌜n1⌝ , n + 1 < n1, ⌜n0⌝ < # nσ, stutf(nσ), n0 ≤ ∞.n, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = n + 1 → ¬ n0 < m, (∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n) ∨ (∀ n2. ¬ ⌜n2⌝ < # nσ ∨ nσ[n2] ≠ n) ⊦
Used simplifier rules: lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic
| nσ[n0] = n + 1, leninv(nσ) = ⌜n1⌝ , n + 1 < n1, ⌜n0⌝ < # nσ, stutf(nσ), n0 ≤ ∞.n, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = n + 1 → ¬ n0 < m, (∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n) ∨ (∀ n2. ¬ ⌜n2⌝ < # nσ ∨ nσ[n2] ≠ n) ⊦ |
nσ[n0] = n + 1, leninv(nσ) = ⌜n1⌝ , ⌜n0⌝ < # nσ, n + 1 < n1, stutf(nσ), n0 ≤ ∞.n, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = n + 1 → ¬ n0 < m, ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n ⊦
nσ[n0] = n + 1, leninv(nσ) = ⌜n1⌝ , ⌜n0⌝ < # nσ, n + 1 < n1, stutf(nσ), n0 ≤ ∞.n, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = n + 1 → ¬ n0 < m, ∀ n2. ¬ ⌜n2⌝ < # nσ ∨ nσ[n2] ≠ n ⊦
| nσ[n0] = n + 1, leninv(nσ) = ⌜n1⌝ , ⌜n0⌝ < # nσ, n + 1 < n1, stutf(nσ), n0 ≤ ∞.n, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = n + 1 → ¬ n0 < m, ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n ⊦ |
nσ[n0] = n + 1, leninv(nσ) = ⌜n1⌝ , n + 1 < n1, ⌜n0⌝ < # nσ, stutf(nσ), n0 ≤ ∞.n, ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = n + 1 → ¬ n0 < m, ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n ⊦
Used terms: n0
| nσ[n0] = n + 1, leninv(nσ) = ⌜n1⌝ , n + 1 < n1, ⌜n0⌝ < # nσ, stutf(nσ), n0 ≤ ∞.n, ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = n + 1 → ¬ n0 < m, ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = n ⊦ |
nσ[n0] = nσ[n2] + 1, leninv(nσ) = ⌜n1⌝ , nσ[n0] < n1, ⌜n0⌝ < # nσ, ⌜n2⌝ < # nσ, n0 < n2, stutf(nσ), n0 ≤ ∞.n, ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = nσ[n2], ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = nσ[n0] → ¬ n0 < m ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic
| nσ[n0] = nσ[n2] + 1, leninv(nσ) = ⌜n1⌝ , nσ[n0] < n1, ⌜n0⌝ < # nσ, ⌜n2⌝ < # nσ, n0 < n2, stutf(nσ), n0 ≤ ∞.n, ∀ n0. ∃ n1. n0 < n1 ∧ ⌜n1⌝ < # nσ ∧ nσ[n1] = nσ[n2], ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = nσ[n0] → ¬ n0 < m ⊦ |
⊦ mon≤(nσ) ∧ m ≤ n ∧ ⌜n⌝ < # nσ → nσ[m] ≤ nσ[n]
Used simplifier rules: stutf-monle: ⊦ stutf(nσ) → (mon≤(nσ) ↔ true); ⊦ m < n → m ≤ n; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ m = n + 1 → ¬ m ≤ n; (s) Used terms: nσ, n0, n2
| ⊦ mon≤(nσ) ∧ m ≤ n ∧ ⌜n⌝ < # nσ → nσ[m] ≤ nσ[n] |
| nσ[n0] = n + 1, leninv(nσ) = ⌜n1⌝ , ⌜n0⌝ < # nσ, n + 1 < n1, stutf(nσ), n0 ≤ ∞.n, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = n + 1 → ¬ n0 < m, ∀ n2. ¬ ⌜n2⌝ < # nσ ∨ nσ[n2] ≠ n ⊦ |
⊦ stutf(nσ) ∧ ⌜m⌝ < # nσ ∧ n ≤ nσ[m] → (∃ m0. m0 ≤ m ∧ nσ[m0] = n)
nσ[n0] = n + 1, leninv(nσ) = ⌜n1⌝ , n + 1 < n1, ⌜n0⌝ < # nσ, stutf(nσ), n0 ≤ ∞.n, stutf(nσ) ∧ ⌜n0⌝ < # nσ ∧ n ≤ nσ[n0] → (∃ m0. m0 ≤ n0 ∧ nσ[m0] = n), ∀ n2. ¬ ⌜n2⌝ < # nσ ∨ nσ[n2] ≠ n, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = n + 1 → ¬ n0 < m ⊦
Used terms: nσ, n0, n
| ⊦ stutf(nσ) ∧ ⌜m⌝ < # nσ ∧ n ≤ nσ[m] → (∃ m0. m0 ≤ m ∧ nσ[m0] = n) |
| nσ[n0] = n + 1, leninv(nσ) = ⌜n1⌝ , n + 1 < n1, ⌜n0⌝ < # nσ, stutf(nσ), n0 ≤ ∞.n, stutf(nσ) ∧ ⌜n0⌝ < # nσ ∧ n ≤ nσ[n0] → (∃ m0. m0 ≤ n0 ∧ nσ[m0] = n), ∀ n2. ¬ ⌜n2⌝ < # nσ ∨ nσ[n2] ≠ n, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = n + 1 → ¬ n0 < m ⊦ |
nσ[n0] = nσ[m0] + 1, leninv(nσ) = ⌜n1⌝ , nσ[n0] < n1, ⌜n0⌝ < # nσ, stutf(nσ), n0 ≤ ∞.n, m0 ≤ n0, m0 ≤ ∞.n, ∀ n2. ¬ ⌜n2⌝ < # nσ ∨ nσ[n2] ≠ nσ[m0], ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = nσ[n0] → ¬ n0 < m ⊦
Used simplifier rules: lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic let: ⊦ n ≤ n0 ∧ n0 ≤ n1 → n ≤ n1; (forward) from specification nat c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m ≤ m + n; (s)
| nσ[n0] = nσ[m0] + 1, leninv(nσ) = ⌜n1⌝ , nσ[n0] < n1, ⌜n0⌝ < # nσ, stutf(nσ), n0 ≤ ∞.n, m0 ≤ n0, m0 ≤ ∞.n, ∀ n2. ¬ ⌜n2⌝ < # nσ ∨ nσ[n2] ≠ nσ[m0], ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = nσ[n0] → ¬ n0 < m ⊦ |
Used simplifier rules: lsle-trans: ⊦ n∞ < n∞1 ∧ ¬ n∞2 < n∞1 → n∞ < n∞2; (forward) from specification nat-inf ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ m ≤ n → (n < m ↔ false); (s) Used terms: m0
| leninv(nσ) = ⌜n1⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ⌜n0⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n) ≠ ∞, n + 1 < n1, stutf(nσ), n0 ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n ⊦ |
leninv(nσ) = ⌜n1⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ⌜n0⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n) ≠ ∞, n + 1 < n1, stutf(nσ), n0 ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n ⊦
| leninv(nσ) = ⌜n1⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ⌜n0⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n) ≠ ∞, n + 1 < n1, stutf(nσ), n0 ≤ max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n).n ⊦ |
leninv(nσ) = ⌜n1⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ⌜n0⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n) = ⌜n2⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n) ≠ ∞, n + 1 < n1, stutf(nσ), n0 ≤ n2 ⊦
Used simplifier rules: ⊦ n∞ ≠ ∞ → (n = n∞.n ↔ n∞ = ⌜n⌝ ); (elim) Used terms: max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n), n2
| leninv(nσ) = ⌜n1⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ⌜n0⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n) = ⌜n2⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n) ≠ ∞, n + 1 < n1, stutf(nσ), n0 ≤ n2 ⊦ |
leninv(nσ) = ⌜n1⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ⌜n0⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n) = ⌜n2⌝ , n + 1 < n1, stutf(nσ), n0 ≤ n2 ⊦
Used simplifier rules: ⊦ ⌜n⌝ ≠ ∞; (s)
| leninv(nσ) = ⌜n1⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1) = ⌜n0⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n) = ⌜n2⌝ , n + 1 < n1, stutf(nσ), n0 ≤ n2 ⊦ |
⊦ max∞(np) = ⌜n⌝ ↔ np(n) ∧ (∀ m. np(m) → ¬ n < m)
nσ[n0] = n + 1, leninv(nσ) = ⌜n1⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n) = ⌜n2⌝ , n + 1 < n1, ⌜n0⌝ < # nσ, stutf(nσ), n0 ≤ n2, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = n + 1 → ¬ n0 < m ⊦
Used terms: n0, λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n + 1
| ⊦ max∞(np) = ⌜n⌝ ↔ np(n) ∧ (∀ m. np(m) → ¬ n < m) |
| nσ[n0] = n + 1, leninv(nσ) = ⌜n1⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n) = ⌜n2⌝ , n + 1 < n1, ⌜n0⌝ < # nσ, stutf(nσ), n0 ≤ n2, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = n + 1 → ¬ n0 < m ⊦ |
nσ[n0] = n + 1, leninv(nσ) = ⌜n1⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n) = ⌜n2⌝ , n + 1 < n1, ⌜n0⌝ < # nσ, stutf(nσ), n0 ≤ n2, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = n + 1 → ¬ n0 < m ⊦
Used simplifier rules: lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic
| nσ[n0] = n + 1, leninv(nσ) = ⌜n1⌝ , max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n) = ⌜n2⌝ , n + 1 < n1, ⌜n0⌝ < # nσ, stutf(nσ), n0 ≤ n2, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = n + 1 → ¬ n0 < m ⊦ |
⊦ max∞(np) = ⌜n⌝ ↔ np(n) ∧ (∀ m. np(m) → ¬ n < m)
nσ[n2] = n, nσ[n0] = n + 1, leninv(nσ) = ⌜n1⌝ , ⌜n0⌝ < # nσ, n + 1 < n1, ⌜n2⌝ < # nσ, stutf(nσ), n0 ≤ n2, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = n + 1 → ¬ n0 < m, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = n → ¬ n2 < m ⊦
Used terms: n2, λ n0. ⌜n0⌝ < # nσ ∧ nσ[n0] = n
| ⊦ max∞(np) = ⌜n⌝ ↔ np(n) ∧ (∀ m. np(m) → ¬ n < m) |
| nσ[n2] = n, nσ[n0] = n + 1, leninv(nσ) = ⌜n1⌝ , ⌜n0⌝ < # nσ, n + 1 < n1, ⌜n2⌝ < # nσ, stutf(nσ), n0 ≤ n2, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = n + 1 → ¬ n0 < m, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = n → ¬ n2 < m ⊦ |
nσ[n0] = nσ[n2] + 1, leninv(nσ) = ⌜n1⌝ , ⌜n0⌝ < # nσ, nσ[n0] < n1, ⌜n2⌝ < # nσ, stutf(nσ), n0 ≤ n2, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = nσ[n0] → ¬ n0 < m, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = nσ[n2] → ¬ n2 < m ⊦
Used simplifier rules: lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic
| nσ[n0] = nσ[n2] + 1, leninv(nσ) = ⌜n1⌝ , ⌜n0⌝ < # nσ, nσ[n0] < n1, ⌜n2⌝ < # nσ, stutf(nσ), n0 ≤ n2, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = nσ[n0] → ¬ n0 < m, ∀ m. ⌜m⌝ < # nσ ∧ nσ[m] = nσ[n2] → ¬ n2 < m ⊦ |
⊦ mon≤(nσ) ∧ m ≤ n ∧ ⌜n⌝ < # nσ → nσ[m] ≤ nσ[n]
Used simplifier rules: stutf-monle: ⊦ stutf(nσ) → (mon≤(nσ) ↔ true); a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ m = n + 1 → ¬ m ≤ n; (s) Used terms: nσ, n0, n2
| ⊦ mon≤(nσ) ∧ m ≤ n ∧ ⌜n⌝ < # nσ → nσ[m] ≤ nσ[n] |
The following image shows the proof tree of sequent calculus. The proved goal is at the bottom. You can click on the nodes to view additional rules. See here for details on colors in a proof tree.