| ⊦ stutf(nσ) ∧ ⌜n⌝ < leninv(nσ) ∧ ⌜inv(nσ)(n)⌝ + ⌜1⌝ < # nσ → nσ(inv(nσ)(n) + 1) = n + 1 |
nσ(inv(nσ)(n) + 1) ≠ n + 1, ⌜inv(nσ)(n)⌝ + ⌜1⌝ < # nσ, ⌜n⌝ < leninv(nσ), stutf(nσ) ⊦
| nσ(inv(nσ)(n) + 1) ≠ n + 1, ⌜inv(nσ)(n)⌝ + ⌜1⌝ < # nσ, ⌜n⌝ < leninv(nσ), stutf(nσ) ⊦ |
nσ(inv(nσ)(n) + 1) ≠ n + 1, ⌜inv(nσ)(n)⌝ + ⌜1⌝ < # nσ, ⌜n⌝ < leninv(nσ), stutf(nσ) ⊦
| nσ(inv(nσ)(n) + 1) ≠ n + 1, ⌜inv(nσ)(n)⌝ + ⌜1⌝ < # nσ, ⌜n⌝ < leninv(nσ), stutf(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).take(leninv(nσ).n)⌝ )
nσ ( (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ(n) = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ(n) = m).n).take(leninv(nσ).n)⌝ ) (n) + 1) ≠ n + 1, ⌜(leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ(n) = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ(n) = m).n).take(leninv(nσ).n)⌝ ) (n) ⌝ + ⌜1⌝ < # nσ, ⌜n⌝ < leninv(nσ), stutf(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).take(leninv(nσ).n)⌝ ) |
| nσ ( (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ(n) = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ(n) = m).n).take(leninv(nσ).n)⌝ ) (n) + 1) ≠ n + 1, ⌜(leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ(n) = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ(n) = m).n).take(leninv(nσ).n)⌝ ) (n) ⌝ + ⌜1⌝ < # nσ, ⌜n⌝ < leninv(nσ), stutf(nσ) ⊦ |
nσ ( (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ(n) = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ(n) = m).n).take(leninv(nσ).n)⌝ ) (n) + 1) ≠ n + 1, ⌜(leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ(n) = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ(n) = m).n).take(leninv(nσ).n)⌝ ) (n) ⌝ + ⌜1⌝ < # nσ, ⌜n⌝ < leninv(nσ), stutf(nσ) ⊦
| nσ ( (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ(n) = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ(n) = m).n).take(leninv(nσ).n)⌝ ) (n) + 1) ≠ n + 1, ⌜(leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ(n) = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ(n) = m).n).take(leninv(nσ).n)⌝ ) (n) ⌝ + ⌜1⌝ < # nσ, ⌜n⌝ < leninv(nσ), stutf(nσ) ⊦ |
leninv(nσ) = ∞, nσ ( (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ(n) = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ(n) = m).n).take(leninv(nσ).n)⌝ ) (n) + 1) ≠ n + 1, ⌜⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ(n) = m).n⌝ (n)⌝ + ⌜1⌝ < # nσ, ⌜n⌝ < leninv(nσ), stutf(nσ) ⊦
leninv(nσ) ≠ ∞, nσ ( (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ(n) = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ(n) = m).n).take(leninv(nσ).n)⌝ ) (n) + 1) ≠ n + 1, ⌜⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ(n) = m).n).take(leninv(nσ).n)⌝ (n)⌝ + ⌜1⌝ < # nσ, ⌜n⌝ < leninv(nσ), stutf(nσ) ⊦
| leninv(nσ) = ∞, nσ ( (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ(n) = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ(n) = m).n).take(leninv(nσ).n)⌝ ) (n) + 1) ≠ n + 1, ⌜⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ(n) = m).n⌝ (n)⌝ + ⌜1⌝ < # nσ, ⌜n⌝ < leninv(nσ), stutf(nσ) ⊦ |
# nσ = ∞, nσ((leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n0. nσ(n0) = m).n⌝ ;⌜(λ m. max∞(λ n0. nσ(n0) = m).n).take(leninv(nσ).n)⌝ )(n) + 1) ≠ n + 1, ⌜n⌝ < leninv(nσ), stutf(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))); 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) ⊦ ⌜m⌝ < ∞; (s) ⊦ ⌜nf⌝ (n) = nf(n); (s)
| # nσ = ∞, nσ((leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n0. nσ(n0) = m).n⌝ ;⌜(λ m. max∞(λ n0. nσ(n0) = m).n).take(leninv(nσ).n)⌝ )(n) + 1) ≠ n + 1, ⌜n⌝ < leninv(nσ), stutf(nσ), ∀ m. ∃ m0. m < nσ(m0), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0) ⊦ |
⊦ stutf(nσ) → (leninv(nσ) = ∞ ↔ # nσ = ∞ ∧ (∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0)))
# nσ = ∞, ⌜n⌝ < leninv(nσ), stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), ∀ m. ∃ m0. m < nσ(m0) ⊦ nσ ( (# nσ = ∞ ∧ (∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0)) ⊃ ⌜λ m. max∞(λ n0. nσ(n0) = m).n⌝ ;⌜(λ m. max∞(λ n0. nσ(n0) = m).n).take(leninv(nσ).n)⌝ ) (n) + 1) = n + 1
Used terms: nσ
| ⊦ stutf(nσ) → (leninv(nσ) = ∞ ↔ # nσ = ∞ ∧ (∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0))) |
| # nσ = ∞, ⌜n⌝ < leninv(nσ), stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), ∀ m. ∃ m0. m < nσ(m0) ⊦ nσ ( (# nσ = ∞ ∧ (∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0)) ⊃ ⌜λ m. max∞(λ n0. nσ(n0) = m).n⌝ ;⌜(λ m. max∞(λ n0. nσ(n0) = m).n).take(leninv(nσ).n)⌝ ) (n) + 1) = n + 1 |
# nσ = ∞, nσ(max∞(λ n0. nσ(n0) = n).n + 1) ≠ n + 1, ⌜n⌝ < leninv(nσ), stutf(nσ), ∀ m. ∃ m0. m < nσ(m0), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0) ⊦
Used simplifier rules: ⊦ ⌜nf⌝ (n) = nf(n); (s)
| # nσ = ∞, nσ(max∞(λ n0. nσ(n0) = n).n + 1) ≠ n + 1, ⌜n⌝ < leninv(nσ), stutf(nσ), ∀ m. ∃ m0. m < nσ(m0), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0) ⊦ |
# nσ = ∞, max∞(λ n0. nσ(n0) = n) = ∞, nσ(max∞(λ n0. nσ(n0) = n).n + 1) ≠ n + 1, ⌜n⌝ < leninv(nσ), stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), ∀ m. ∃ m0. m < nσ(m0) ⊦
# nσ = ∞, max∞(λ n0. nσ(n0) = n) ≠ ∞, nσ(max∞(λ n0. nσ(n0) = n).n + 1) ≠ n + 1, ⌜n⌝ < leninv(nσ), stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), ∀ m. ∃ m0. m < nσ(m0) ⊦
Used formulas: max∞(λ n0. nσ(n0) = n) = ∞
| # nσ = ∞, max∞(λ n0. nσ(n0) = n) = ∞, nσ(max∞(λ n0. nσ(n0) = n).n + 1) ≠ n + 1, ⌜n⌝ < leninv(nσ), stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), ∀ m. ∃ m0. m < nσ(m0) ⊦ |
# nσ = ∞, max∞(λ n0. nσ(n0) = n) = ∞, nσ(∞.n + 1) ≠ n + 1, ⌜n⌝ < leninv(nσ), stutf(nσ), ∀ m. ∃ m0. m < nσ(m0), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0) ⊦
| # nσ = ∞, max∞(λ n0. nσ(n0) = n) = ∞, nσ(∞.n + 1) ≠ n + 1, ⌜n⌝ < leninv(nσ), stutf(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σ(∞.n + 1) ≠ n + 1, ⌜n⌝ < leninv(nσ), stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), ∀ m. ∃ m0. m < nσ(m0), (∀ n0. ∃ n1. n0 < n1 ∧ nσ(n1) = n) ∨ (∀ n0. nσ(n0) ≠ n) ⊦
Used terms: λ n0. nσ(n0) = n
| ⊦ max∞(np) = ∞ ↔ (∀ n. ∃ n0. n < n0 ∧ np(n0)) ∨ (∀ n. ¬ np(n)) |
| # nσ = ∞, nσ(∞.n + 1) ≠ n + 1, ⌜n⌝ < leninv(nσ), stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), ∀ m. ∃ m0. m < nσ(m0), (∀ n0. ∃ n1. n0 < n1 ∧ nσ(n1) = n) ∨ (∀ n0. nσ(n0) ≠ n) ⊦ |
# nσ = ∞, stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), (∀ n0. ∃ n1. n0 < n1 ∧ nσ(n1) = n) ∨ (∀ n0. nσ(n0) ≠ n) ⊦
| # nσ = ∞, stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), (∀ n0. ∃ n1. n0 < n1 ∧ nσ(n1) = n) ∨ (∀ n0. nσ(n0) ≠ n) ⊦ |
# nσ = ∞, stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), ∀ n. ∃ m. nσ(m) = n, (∀ n0. ∃ n1. n0 < n1 ∧ nσ(n1) = n) ∨ (∀ n0. nσ(n0) ≠ n) ⊦
# nσ = ∞, stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), (∀ n0. ∃ n1. n0 < n1 ∧ nσ(n1) = n) ∨ (∀ n0. nσ(n0) ≠ n) ⊦ ∀ n. ∃ m. nσ(m) = n
Used formulas: ∀ n. ∃ m. nσ(m) = n
| # nσ = ∞, stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), ∀ n. ∃ m. nσ(m) = n, (∀ n0. ∃ n1. n0 < n1 ∧ nσ(n1) = n) ∨ (∀ n0. nσ(n0) ≠ n) ⊦ |
# nσ = ∞, stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), ∀ n. ∃ m. nσ(m) = n, ∀ n0. ∃ n1. n0 < n1 ∧ nσ(n1) = n ⊦
# nσ = ∞, stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), ∀ n. ∃ m. nσ(m) = n, ∀ n0. nσ(n0) ≠ n ⊦
| # nσ = ∞, stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), ∀ n. ∃ m. nσ(m) = n, ∀ n0. ∃ n1. n0 < n1 ∧ nσ(n1) = n ⊦ |
# nσ = ∞, stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), ∀ n. ∃ m. nσ(m) = n, ∀ n0. ∃ n1. n0 < n1 ∧ nσ(n1) = n, ∃ n1. 0 < n1 ∧ nσ(n1) = n ⊦
Used terms: 0
| # nσ = ∞, stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), ∀ n. ∃ m. nσ(m) = n, ∀ n0. ∃ n1. n0 < n1 ∧ nσ(n1) = n, ∃ n1. 0 < n1 ∧ nσ(n1) = n ⊦ |
# nσ = ∞, n1 ≠ 0, stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), ∀ n. ∃ m. nσ(m) = n, ∀ n0. ∃ n2. n0 < n2 ∧ nσ(n2) = nσ(n1) ⊦
Used simplifier rules: ⊦ 0 < m ↔ m ≠ 0; (s)
| # nσ = ∞, n1 ≠ 0, stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), ∀ n. ∃ m. nσ(m) = n, ∀ n0. ∃ n2. n0 < n2 ∧ nσ(n2) = nσ(n1) ⊦ |
# nσ = ∞, n1 ≠ 0, stutf(nσ), ∃ m0. n1 < m0 ∧ nσ(n1) < nσ(m0), ∀ n. ∃ m. nσ(m) = n, ∀ n0. ∃ n2. n0 < n2 ∧ nσ(n2) = nσ(n1) ⊦
Used terms: n1
| # nσ = ∞, n1 ≠ 0, stutf(nσ), ∃ m0. n1 < m0 ∧ nσ(n1) < nσ(m0), ∀ n. ∃ m. nσ(m) = n, ∀ n0. ∃ n2. n0 < n2 ∧ nσ(n2) = nσ(n1) ⊦ |
# nσ = ∞, n1 ≠ 0, n1 < m0, nσ(n1) < nσ(m0), stutf(nσ), ∀ n. ∃ m. nσ(m) = n, ∀ n0. ∃ n2. n0 < n2 ∧ nσ(n2) = nσ(n1) ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| # nσ = ∞, n1 ≠ 0, n1 < m0, nσ(n1) < nσ(m0), stutf(nσ), ∀ n. ∃ m. nσ(m) = n, ∀ n0. ∃ n2. n0 < n2 ∧ nσ(n2) = nσ(n1) ⊦ |
# nσ = ∞, n1 ≠ 0, n1 < m0, nσ(n1) < nσ(m0), stutf(nσ), ∀ n. ∃ m. nσ(m) = n, ∃ n2. m0 < n2 ∧ nσ(n2) = nσ(n1) ⊦
Used terms: m0
| # nσ = ∞, n1 ≠ 0, n1 < m0, nσ(n1) < nσ(m0), stutf(nσ), ∀ n. ∃ m. nσ(m) = n, ∃ n2. m0 < n2 ∧ nσ(n2) = nσ(n1) ⊦ |
# nσ = ∞, nσ(n2) = nσ(n1), n1 ≠ 0, m0 < n2, n1 < n2, n1 < m0, n1 + 1 < n2, nσ(n1) < nσ(m0), stutf(nσ), ∀ n. ∃ m. nσ(m) = n ⊦
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σ(n2) = nσ(n1), n1 ≠ 0, m0 < n2, n1 < n2, n1 < m0, n1 + 1 < n2, nσ(n1) < nσ(m0), stutf(nσ), ∀ n. ∃ m. nσ(m) = n ⊦ |
⊦ mon≤(nσ) ∧ m ≤ n ∧ ⌜n⌝ < # nσ → nσ(m) ≤ nσ(n)
# nσ = ∞, nσ(n2) = nσ(n1), n1 ≠ 0, m0 < n2, n1 + 1 < n2, n1 < m0, n1 < n2, nσ(n1) < nσ(m0), stutf(nσ), mon≤(nσ) ∧ m0 ≤ n1 ∧ ⌜n1⌝ < # nσ → nσ(m0) ≤ nσ(n1), ∀ n. ∃ m. nσ(m) = n ⊦
Used terms: nσ, m0, n1
| ⊦ mon≤(nσ) ∧ m ≤ n ∧ ⌜n⌝ < # nσ → nσ(m) ≤ nσ(n) |
| # nσ = ∞, nσ(n2) = nσ(n1), n1 ≠ 0, m0 < n2, n1 + 1 < n2, n1 < m0, n1 < n2, nσ(n1) < nσ(m0), stutf(nσ), mon≤(nσ) ∧ m0 ≤ n1 ∧ ⌜n1⌝ < # nσ → nσ(m0) ≤ nσ(n1), ∀ n. ∃ m. nσ(m) = n ⊦ |
# nσ = ∞, nσ(n2) = nσ(n1), n1 ≠ 0, m0 < n2, n1 < n2, n1 < m0, n1 + 1 < n2, nσ(n1) < nσ(m0), stutf(nσ), ∀ n. ∃ m. nσ(m) = n ⊦
Used simplifier rules: stutf-monle: ⊦ stutf(nσ) → (mon≤(nσ) ↔ true); ⊦ m < n → (n ≤ m ↔ false); (s)
| # nσ = ∞, nσ(n2) = nσ(n1), n1 ≠ 0, m0 < n2, n1 < n2, n1 < m0, n1 + 1 < n2, nσ(n1) < nσ(m0), stutf(nσ), ∀ n. ∃ m. nσ(m) = n ⊦ |
⊦ 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, n2
| ⊦ mon≤(nσ) ∧ m ≤ n ∧ ⌜n⌝ < # nσ → nσ(m) ≤ nσ(n) |
| # nσ = ∞, stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), ∀ n. ∃ m. nσ(m) = n, ∀ n0. nσ(n0) ≠ n ⊦ |
# nσ = ∞, stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), ∃ m. nσ(m) = n, ∀ n0. nσ(n0) ≠ n ⊦
Used terms: n
| # nσ = ∞, stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), ∃ m. nσ(m) = n, ∀ n0. nσ(n0) ≠ n ⊦ |
# nσ = ∞, stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), ∀ n0. nσ(n0) ≠ nσ(m) ⊦
| # nσ = ∞, stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), ∀ n0. nσ(n0) ≠ nσ(m) ⊦ |
Used terms: m
| # nσ = ∞, stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), (∀ n0. ∃ n1. n0 < n1 ∧ nσ(n1) = n) ∨ (∀ n0. nσ(n0) ≠ n) ⊦ ∀ n. ∃ m. nσ(m) = n |
# nσ = ∞, stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), (∀ n0. ∃ n1. n0 < n1 ∧ nσ(n1) = n) ∨ (∀ n0. nσ(n0) ≠ n) ⊦ ∃ m. nσ(m) = n0
| # nσ = ∞, stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), (∀ n0. ∃ n1. n0 < n1 ∧ nσ(n1) = n) ∨ (∀ n0. nσ(n0) ≠ n) ⊦ ∃ m. nσ(m) = n0 |
# nσ = ∞, stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0) ⊦ ∃ m. nσ(m) = n0
| # nσ = ∞, stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0) ⊦ ∃ m. nσ(m) = n0 |
# nσ = ∞, stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0) ⊦ ∃ m. nσ(m) = 0
# nσ = ∞, stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), ∀ nσ. # nσ = ∞ ∧ stutf(nσ) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0)) → (∃ m. nσ(m) = n) ⊦ ∃ m. nσ(m) = n.+1
Used simplifier rules: Nat freely generated by 0, +1;
| # nσ = ∞, stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0) ⊦ ∃ m. nσ(m) = 0 |
Used simplifier rules: stutf-zero: ⊦ stutf(nσ) → nσ(0) = 0; Used terms: 0
| # nσ = ∞, stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), ∀ nσ. # nσ = ∞ ∧ stutf(nσ) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0)) → (∃ m. nσ(m) = n) ⊦ ∃ m. nσ(m) = n.+1 |
# nσ = ∞, stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), ∀ nσ. # nσ = ∞ ∧ stutf(nσ) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0)) → (∃ m. nσ(m) = n) ⊦ ∃ m. nσ(m) = n + 1
Used simplifier rules: ⊦ m.+1 = m + 1; (s)
| # nσ = ∞, stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), ∀ nσ. # nσ = ∞ ∧ stutf(nσ) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0)) → (∃ m. nσ(m) = n) ⊦ ∃ m. nσ(m) = n + 1 |
# nσ = ∞, stutf(nσ), # nσ = ∞ ∧ stutf(nσ) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0)) → (∃ m. nσ(m) = n), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0) ⊦ ∃ m. nσ(m) = n + 1
Used terms: nσ
| # nσ = ∞, stutf(nσ), # nσ = ∞ ∧ stutf(nσ) ∧ (∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0)) → (∃ m. nσ(m) = n), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0) ⊦ ∃ m. nσ(m) = n + 1 |
# nσ = ∞, stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0) ⊦ ∃ m0. nσ(m0) = nσ(m) + 1
| # nσ = ∞, stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0) ⊦ ∃ m0. nσ(m0) = nσ(m) + 1 |
# nσ = ∞, stutf(nσ), ∃ m0. m < m0 ∧ nσ(m) < nσ(m0) ⊦ ∃ m0. nσ(m0) = nσ(m) + 1
Used terms: m
| # nσ = ∞, stutf(nσ), ∃ m0. m < m0 ∧ nσ(m) < nσ(m0) ⊦ ∃ m0. nσ(m0) = nσ(m) + 1 |
# nσ = ∞, m < m0, nσ(m) < nσ(m0), stutf(nσ) ⊦ ∃ m0. nσ(m0) = nσ(m) + 1
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| # nσ = ∞, m < m0, nσ(m) < nσ(m0), stutf(nσ) ⊦ ∃ m0. nσ(m0) = nσ(m) + 1 |
⊦ stutf(nσ) ∧ ⌜m⌝ < # nσ ∧ n ≤ nσ(m) → (∃ m0. m0 ≤ m ∧ nσ(m0) = n)
# nσ = ∞, m < m0, nσ(m) < nσ(m0), stutf(nσ), stutf(nσ) ∧ ⌜m0⌝ < # nσ ∧ nσ(m) + 1 ≤ nσ(m0) → (∃ m1. m1 ≤ m0 ∧ nσ(m1) = nσ(m) + 1) ⊦ ∃ m0. nσ(m0) = nσ(m) + 1
Used terms: nσ, m0, nσ(m) + 1
| ⊦ stutf(nσ) ∧ ⌜m⌝ < # nσ ∧ n ≤ nσ(m) → (∃ m0. m0 ≤ m ∧ nσ(m0) = n) |
| # nσ = ∞, m < m0, nσ(m) < nσ(m0), stutf(nσ), stutf(nσ) ∧ ⌜m0⌝ < # nσ ∧ nσ(m) + 1 ≤ nσ(m0) → (∃ m1. m1 ≤ m0 ∧ nσ(m1) = nσ(m) + 1) ⊦ ∃ m0. nσ(m0) = nσ(m) + 1 |
# nσ = ∞, nσ(m1) = nσ(m) + 1, m < m0, m1 ≤ m0, nσ(m) < nσ(m0), nσ(m1) ≤ nσ(m0), stutf(nσ) ⊦ ∃ m0. nσ(m0) = 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 eqle-one: ⊦ m = n + 1 ∧ n < n0 → m ≤ n0; (forward) from specification nat ⊦ ⌜m⌝ < ∞; (s) ⊦ m + 1 ≤ n ↔ m < n; (s)
| # nσ = ∞, nσ(m1) = nσ(m) + 1, m < m0, m1 ≤ m0, nσ(m) < nσ(m0), nσ(m1) ≤ nσ(m0), stutf(nσ) ⊦ ∃ m0. nσ(m0) = nσ(m1) |
Used terms: m1
| # nσ = ∞, max∞(λ n0. nσ(n0) = n) ≠ ∞, nσ(max∞(λ n0. nσ(n0) = n).n + 1) ≠ n + 1, ⌜n⌝ < leninv(nσ), stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), ∀ m. ∃ m0. m < nσ(m0) ⊦ |
⊦ n∞ = ∞ ↔ ¬(∃ n. n∞ = ⌜n⌝ )
# nσ = ∞, nσ(max∞(λ n0. nσ(n0) = n).n + 1) ≠ n + 1, ⌜n⌝ < leninv(nσ), stutf(nσ), ∀ m. ∃ m0. m < nσ(m0), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), ∃ n0. max∞(λ n0. nσ(n0) = n) = ⌜n0⌝ ⊦
Used terms: max∞(λ n0. nσ(n0) = n)
| ⊦ n∞ = ∞ ↔ ¬(∃ n. n∞ = ⌜n⌝ ) |
| # nσ = ∞, nσ(max∞(λ n0. nσ(n0) = n).n + 1) ≠ n + 1, ⌜n⌝ < leninv(nσ), stutf(nσ), ∀ m. ∃ m0. m < nσ(m0), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), ∃ n0. max∞(λ n0. nσ(n0) = n) = ⌜n0⌝ ⊦ |
# nσ = ∞, max∞(λ n0. nσ(n0) = n) = ⌜n0⌝ , nσ(n0 + 1) ≠ n + 1, ⌜n⌝ < leninv(nσ), stutf(nσ), ∀ m. ∃ m0. m < nσ(m0), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0) ⊦
Used simplifier rules: ⊦ ⌜n⌝ .n = n; (s)
| # nσ = ∞, max∞(λ n0. nσ(n0) = n) = ⌜n0⌝ , nσ(n0 + 1) ≠ n + 1, ⌜n⌝ < leninv(nσ), stutf(nσ), ∀ m. ∃ m0. m < nσ(m0), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0) ⊦ |
⊦ max∞(np) = ⌜n⌝ ↔ np(n) ∧ (∀ m. np(m) → ¬ n < m)
# nσ = ∞, nσ(n0) = n, nσ(n0 + 1) ≠ n + 1, ⌜n⌝ < leninv(nσ), stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), ∀ m. ∃ m0. m < nσ(m0), ∀ m. nσ(m) = n → ¬ n0 < m ⊦
Used terms: n0, λ n0. nσ(n0) = n
| ⊦ max∞(np) = ⌜n⌝ ↔ np(n) ∧ (∀ m. np(m) → ¬ n < m) |
| # nσ = ∞, nσ(n0) = n, nσ(n0 + 1) ≠ n + 1, ⌜n⌝ < leninv(nσ), stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), ∀ m. ∃ m0. m < nσ(m0), ∀ m. nσ(m) = n → ¬ n0 < m ⊦ |
# nσ = ∞, nσ(n0 + 1) ≠ nσ(n0) + 1, ⌜nσ(n0)⌝ < leninv(nσ), stutf(nσ), ∀ m. nσ(m) = nσ(n0) → ¬ n0 < m, ∀ m. ∃ m0. m < nσ(m0), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0) ⊦
| # nσ = ∞, nσ(n0 + 1) ≠ nσ(n0) + 1, ⌜nσ(n0)⌝ < leninv(nσ), stutf(nσ), ∀ m. nσ(m) = nσ(n0) → ¬ n0 < m, ∀ m. ∃ m0. m < nσ(m0), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0) ⊦ |
# nσ = ∞, nσ(n0 + 1) ≠ nσ(n0) + 1, ⌜nσ(n0)⌝ < leninv(nσ), stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), ∀ m. ∃ m0. m < nσ(m0), ∀ m. nσ(m) = nσ(n0) → ¬ n0 < m, nσ(n0.+1) = nσ(n0) → ¬ n0 < n0.+1 ⊦
Used terms: n0.+1
| # nσ = ∞, nσ(n0 + 1) ≠ nσ(n0) + 1, ⌜nσ(n0)⌝ < leninv(nσ), stutf(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), ∀ m. ∃ m0. m < nσ(m0), ∀ m. nσ(m) = nσ(n0) → ¬ n0 < m, nσ(n0.+1) = nσ(n0) → ¬ n0 < n0.+1 ⊦ |
# nσ = ∞, nσ(n0 + 1) ≠ nσ(n0) + 1, nσ(n0 + 1) ≠ nσ(n0), ⌜nσ(n0)⌝ < leninv(nσ), stutf(nσ), ∀ m. nσ(m) = nσ(n0) → ¬ n0 < m, ∀ m. ∃ m0. m < nσ(m0), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0) ⊦
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 + 1 ↔ ¬ n < m; (s) ⊦ m.+1 = m + 1; (s)
| # nσ = ∞, nσ(n0 + 1) ≠ nσ(n0) + 1, nσ(n0 + 1) ≠ nσ(n0), ⌜nσ(n0)⌝ < leninv(nσ), stutf(nσ), ∀ m. nσ(m) = nσ(n0) → ¬ n0 < m, ∀ m. ∃ m0. m < nσ(m0), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0) ⊦ |
⊦ stutf(nσ) ↔ nσ ≠ [] ∧ nσ(0) = 0 ∧ (∀ n. ⌜n⌝ + ⌜1⌝ < # nσ → nσ(n + 1) = nσ(n) ∨ nσ(n + 1) = nσ(n) + 1)
# nσ = ∞, nσ(0) = 0, nσ(n0 + 1) ≠ nσ(n0) + 1, nσ(n0 + 1) ≠ nσ(n0), nσ ≠ [], ⌜nσ(n0)⌝ < leninv(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), ∀ m. ∃ m0. m < nσ(m0), ∀ m. nσ(m) = nσ(n0) → ¬ n0 < m, ∀ n. ⌜n⌝ + ⌜1⌝ < # nσ → nσ(n + 1) = nσ(n) ∨ nσ(n + 1) = nσ(n) + 1 ⊦
Used terms: nσ
| ⊦ stutf(nσ) ↔ nσ ≠ [] ∧ nσ(0) = 0 ∧ (∀ n. ⌜n⌝ + ⌜1⌝ < # nσ → nσ(n + 1) = nσ(n) ∨ nσ(n + 1) = nσ(n) + 1) |
| # nσ = ∞, nσ(0) = 0, nσ(n0 + 1) ≠ nσ(n0) + 1, nσ(n0 + 1) ≠ nσ(n0), nσ ≠ [], ⌜nσ(n0)⌝ < leninv(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), ∀ m. ∃ m0. m < nσ(m0), ∀ m. nσ(m) = nσ(n0) → ¬ n0 < m, ∀ n. ⌜n⌝ + ⌜1⌝ < # nσ → nσ(n + 1) = nσ(n) ∨ nσ(n + 1) = nσ(n) + 1 ⊦ |
# nσ = ∞, nσ(0) = 0, nσ ≠ [], nσ(n0 + 1) ≠ nσ(n0), nσ(n0 + 1) ≠ nσ(n0) + 1, ⌜nσ(n0)⌝ < leninv(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), ∀ m. ∃ m0. m < nσ(m0), ∀ m. nσ(m) = nσ(n0) → ¬ n0 < m, ∀ n. nσ(n + 1) = nσ(n) ∨ nσ(n + 1) = nσ(n) + 1 ⊦
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σ(0) = 0, nσ ≠ [], nσ(n0 + 1) ≠ nσ(n0), nσ(n0 + 1) ≠ nσ(n0) + 1, ⌜nσ(n0)⌝ < leninv(nσ), ∀ m. ∃ m0. m < m0 ∧ nσ(m) < nσ(m0), ∀ m. ∃ m0. m < nσ(m0), ∀ m. nσ(m) = nσ(n0) → ¬ n0 < m, ∀ n. nσ(n + 1) = nσ(n) ∨ nσ(n + 1) = nσ(n) + 1 ⊦ |
Used terms: n0
| leninv(nσ) ≠ ∞, nσ ( (leninv(nσ) = ∞ ⊃ ⌜λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ(n) = m).n⌝ ;⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ(n) = m).n).take(leninv(nσ).n)⌝ ) (n) + 1) ≠ n + 1, ⌜⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ(n) = m).n).take(leninv(nσ).n)⌝ (n)⌝ + ⌜1⌝ < # nσ, ⌜n⌝ < leninv(nσ), stutf(nσ) ⊦ |
leninv(nσ) ≠ ∞, nσ((λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ(n) = m).n).take(leninv(nσ).n)(n) + 1) ≠ n + 1, ⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ(n) = m).n).take(leninv(nσ).n)(n)⌝ + ⌜1⌝ < # nσ, ⌜n⌝ < leninv(nσ), stutf(nσ) ⊦
Used simplifier rules: ⊦ ⌜x⌝ (n) = x(n); (s)
| leninv(nσ) ≠ ∞, nσ((λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ(n) = m).n).take(leninv(nσ).n)(n) + 1) ≠ n + 1, ⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ(n) = m).n).take(leninv(nσ).n)(n)⌝ + ⌜1⌝ < # nσ, ⌜n⌝ < leninv(nσ), stutf(nσ) ⊦ |
leninv(nσ) = ⌜n0⌝ , leninv(nσ) ≠ ∞, nσ((λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ(n) = m).n).take(n0)(n) + 1) ≠ n + 1, ⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ(n) = m).n).take(n0)(n)⌝ + ⌜1⌝ < # nσ, ⌜n⌝ < leninv(nσ), stutf(nσ) ⊦
Used simplifier rules: ⊦ n∞ ≠ ∞ → (n = n∞.n ↔ n∞ = ⌜n⌝ ); (elim) Used terms: leninv(nσ), n0
| leninv(nσ) = ⌜n0⌝ , leninv(nσ) ≠ ∞, nσ((λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ(n) = m).n).take(n0)(n) + 1) ≠ n + 1, ⌜(λ m. max∞(λ n. ⌜n⌝ < # nσ ∧ nσ(n) = m).n).take(n0)(n)⌝ + ⌜1⌝ < # nσ, ⌜n⌝ < leninv(nσ), stutf(nσ) ⊦ |
leninv(nσ) = ⌜n0⌝ , nσ(max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ(n0) = n).n + 1) ≠ n + 1, ⌜max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ(n0) = n).n⌝ + ⌜1⌝ < # nσ, n < n0, stutf(nσ) ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) m < n ⊦ nf.take(n)(m) = nf(m); (s) ⊦ m ≤ n → (n < m ↔ false); (s) ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ ⌜n⌝ ≠ ∞; (s)
| leninv(nσ) = ⌜n0⌝ , nσ(max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ(n0) = n).n + 1) ≠ n + 1, ⌜max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ(n0) = n).n⌝ + ⌜1⌝ < # nσ, n < n0, stutf(nσ) ⊦ |
leninv(nσ) = ⌜n0⌝ , n0 = n1.+1, nσ(max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ(n0) = n).n + 1) ≠ n + 1, ⌜max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ(n0) = n).n⌝ + ⌜1⌝ < # nσ, n < n0, stutf(nσ) ⊦
Used simplifier rules: Nat freely generated by 0, +1; ⊦ ¬ n < 0; (s)
| leninv(nσ) = ⌜n0⌝ , n0 = n1.+1, nσ(max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ(n0) = n).n + 1) ≠ n + 1, ⌜max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ(n0) = n).n⌝ + ⌜1⌝ < # nσ, n < n0, stutf(nσ) ⊦ |
leninv(nσ) = ⌜n1⌝ + ⌜1⌝ , nσ(max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ(n0) = n).n + 1) ≠ n + 1, ⌜max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ(n0) = n).n⌝ + ⌜1⌝ < # nσ, n ≤ n1, stutf(nσ) ⊦
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m < n + 1 ↔ ¬ n < m; (s) ⊦ m.+1 = m + 1; (s) ⊦ ⌜m + n⌝ = ⌜m⌝ + ⌜n⌝ ; (s)
| leninv(nσ) = ⌜n1⌝ + ⌜1⌝ , nσ(max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ(n0) = n).n + 1) ≠ n + 1, ⌜max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ(n0) = n).n⌝ + ⌜1⌝ < # nσ, n ≤ n1, stutf(nσ) ⊦ |
⊦ stutf(nσ) → (leninv(nσ) = ⌜n⌝ + ⌜1⌝ ↔ (# nσ = ∞ ⊃ ∃ m. nσ(m) = n ∧ (∀ m0. m < m0 → nσ(m0) = n + 1);nσ((# nσ).n - 1) = n))
nσ(max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ(n0) = n).n + 1) ≠ n + 1, ⌜max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ(n0) = n).n⌝ + ⌜1⌝ < # nσ, n ≤ n1, stutf(nσ), (# nσ = ∞ ⊃ ∃ m. nσ(m) = n1 ∧ (∀ m0. m < m0 → nσ(m0) = n1 + 1);nσ((# nσ).n - 1) = n1) ⊦
Used terms: n1, nσ
| ⊦ stutf(nσ) → (leninv(nσ) = ⌜n⌝ + ⌜1⌝ ↔ (# nσ = ∞ ⊃ ∃ m. nσ(m) = n ∧ (∀ m0. m < m0 → nσ(m0) = n + 1);nσ((# nσ).n - 1) = n)) |
| nσ(max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ(n0) = n).n + 1) ≠ n + 1, ⌜max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ(n0) = n).n⌝ + ⌜1⌝ < # nσ, n ≤ n1, stutf(nσ), (# nσ = ∞ ⊃ ∃ m. nσ(m) = n1 ∧ (∀ m0. m < m0 → nσ(m0) = n1 + 1);nσ((# nσ).n - 1) = n1) ⊦ |
nσ(max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ(n0) = n).n + 1) ≠ n + 1, ⌜max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ(n0) = n).n⌝ + ⌜1⌝ < # nσ, n ≤ n1, stutf(nσ), (# nσ = ∞ ⊃ nσ(m) = n1 ∧ (∀ m0. m < m0 → nσ(m0) = nσ(m) + 1);nσ((# nσ).n - 1) = n1) ⊦
| nσ(max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ(n0) = n).n + 1) ≠ n + 1, ⌜max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ(n0) = n).n⌝ + ⌜1⌝ < # nσ, n ≤ n1, stutf(nσ), (# nσ = ∞ ⊃ nσ(m) = n1 ∧ (∀ m0. m < m0 → nσ(m0) = nσ(m) + 1);nσ((# nσ).n - 1) = n1) ⊦ |
# nσ = ∞, nσ(m) = n1, nσ(max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ(n0) = n).n + 1) ≠ n + 1, ⌜max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ(n0) = n).n⌝ + ⌜1⌝ < # nσ, n ≤ n1, stutf(nσ), ∀ m0. m < m0 → nσ(m0) = nσ(m) + 1 ⊦
nσ((# nσ).n - 1) = n1, # nσ ≠ ∞, nσ(max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ(n0) = n).n + 1) ≠ n + 1, ⌜max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ(n0) = n).n⌝ + ⌜1⌝ < # nσ, n ≤ n1, stutf(nσ) ⊦
| # nσ = ∞, nσ(m) = n1, nσ(max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ(n0) = n).n + 1) ≠ n + 1, ⌜max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ(n0) = n).n⌝ + ⌜1⌝ < # nσ, n ≤ n1, stutf(nσ), ∀ m0. m < m0 → nσ(m0) = nσ(m) + 1 ⊦ |
# nσ = ∞, nσ(max∞(λ n0. nσ(n0) = n).n + 1) ≠ n + 1, n ≤ nσ(m), stutf(nσ), ∀ m0. m < m0 → nσ(m0) = nσ(m) + 1 ⊦
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) ⊦ ⌜m⌝ < ∞; (s)
| # nσ = ∞, nσ(max∞(λ n0. nσ(n0) = n).n + 1) ≠ n + 1, n ≤ nσ(m), stutf(nσ), ∀ m0. m < m0 → nσ(m0) = nσ(m) + 1 ⊦ |
# nσ = ∞, max∞(λ n0. nσ(n0) = n) = ∞, nσ(max∞(λ n0. nσ(n0) = n).n + 1) ≠ n + 1, n ≤ nσ(m), stutf(nσ), ∀ m0. m < m0 → nσ(m0) = nσ(m) + 1 ⊦
# nσ = ∞, max∞(λ n0. nσ(n0) = n) ≠ ∞, nσ(max∞(λ n0. nσ(n0) = n).n + 1) ≠ n + 1, n ≤ nσ(m), stutf(nσ), ∀ m0. m < m0 → nσ(m0) = nσ(m) + 1 ⊦
Used formulas: max∞(λ n0. nσ(n0) = n) = ∞
| # nσ = ∞, max∞(λ n0. nσ(n0) = n) = ∞, nσ(max∞(λ n0. nσ(n0) = n).n + 1) ≠ n + 1, n ≤ nσ(m), stutf(nσ), ∀ m0. m < m0 → nσ(m0) = nσ(m) + 1 ⊦ |
# nσ = ∞, max∞(λ n0. nσ(n0) = n) = ∞, nσ(∞.n + 1) ≠ n + 1, n ≤ nσ(m), stutf(nσ), ∀ m0. m < m0 → nσ(m0) = nσ(m) + 1 ⊦
| # nσ = ∞, max∞(λ n0. nσ(n0) = n) = ∞, nσ(∞.n + 1) ≠ n + 1, n ≤ nσ(m), stutf(nσ), ∀ m0. m < m0 → nσ(m0) = nσ(m) + 1 ⊦ |
⊦ max∞(np) = ∞ ↔ (∀ n. ∃ n0. n < n0 ∧ np(n0)) ∨ (∀ n. ¬ np(n))
# nσ = ∞, nσ(∞.n + 1) ≠ n + 1, n ≤ nσ(m), stutf(nσ), ∀ m0. m < m0 → nσ(m0) = nσ(m) + 1, (∀ n0. ∃ n1. n0 < n1 ∧ nσ(n1) = n) ∨ (∀ n0. nσ(n0) ≠ n) ⊦
Used terms: λ n0. nσ(n0) = n
| ⊦ max∞(np) = ∞ ↔ (∀ n. ∃ n0. n < n0 ∧ np(n0)) ∨ (∀ n. ¬ np(n)) |
| # nσ = ∞, nσ(∞.n + 1) ≠ n + 1, n ≤ nσ(m), stutf(nσ), ∀ m0. m < m0 → nσ(m0) = nσ(m) + 1, (∀ n0. ∃ n1. n0 < n1 ∧ nσ(n1) = n) ∨ (∀ n0. nσ(n0) ≠ n) ⊦ |
# nσ = ∞, nσ(∞.n + 1) ≠ n + 1, n ≤ nσ(m), stutf(nσ), ∀ m0. m < m0 → nσ(m0) = nσ(m) + 1, ∀ n0. ∃ n1. n0 < n1 ∧ nσ(n1) = n ⊦
# nσ = ∞, nσ(∞.n + 1) ≠ n + 1, n ≤ nσ(m), stutf(nσ), ∀ m0. m < m0 → nσ(m0) = nσ(m) + 1, ∀ n0. nσ(n0) ≠ n ⊦
| # nσ = ∞, nσ(∞.n + 1) ≠ n + 1, n ≤ nσ(m), stutf(nσ), ∀ m0. m < m0 → nσ(m0) = nσ(m) + 1, ∀ n0. ∃ n1. n0 < n1 ∧ nσ(n1) = n ⊦ |
# nσ = ∞, nσ(∞.n + 1) ≠ n + 1, n ≤ nσ(m), stutf(nσ), ∀ m0. m < m0 → nσ(m0) = nσ(m) + 1, ∃ n1. m + 1 < n1 ∧ nσ(n1) = n ⊦
Used terms: m + 1
| # nσ = ∞, nσ(∞.n + 1) ≠ n + 1, n ≤ nσ(m), stutf(nσ), ∀ m0. m < m0 → nσ(m0) = nσ(m) + 1, ∃ n1. m + 1 < n1 ∧ nσ(n1) = n ⊦ |
# nσ = ∞, nσ(∞.n + 1) ≠ nσ(n1) + 1, m + 1 < n1, nσ(n1) ≤ nσ(m), stutf(nσ), ∀ m0. m < m0 → nσ(m0) = nσ(m) + 1 ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| # nσ = ∞, nσ(∞.n + 1) ≠ nσ(n1) + 1, m + 1 < n1, nσ(n1) ≤ nσ(m), stutf(nσ), ∀ m0. m < m0 → nσ(m0) = nσ(m) + 1 ⊦ |
Used simplifier rules: ⊦ ¬ m < n → ¬ m + m0 < 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: n1
| # nσ = ∞, nσ(∞.n + 1) ≠ n + 1, n ≤ nσ(m), stutf(nσ), ∀ m0. m < m0 → nσ(m0) = nσ(m) + 1, ∀ n0. nσ(n0) ≠ n ⊦ |
⊦ stutf(nσ) ∧ ⌜m⌝ < # nσ ∧ n ≤ nσ(m) → (∃ m0. m0 ≤ m ∧ nσ(m0) = n)
# nσ = ∞, nσ(∞.n + 1) ≠ n + 1, n ≤ nσ(m), stutf(nσ), ∀ m0. m < m0 → nσ(m0) = nσ(m) + 1, ∀ n0. nσ(n0) ≠ n, stutf(nσ) ∧ ⌜m⌝ < # nσ ∧ n ≤ nσ(m) → (∃ m0. m0 ≤ m ∧ nσ(m0) = n) ⊦
Used terms: nσ, m, n
| ⊦ stutf(nσ) ∧ ⌜m⌝ < # nσ ∧ n ≤ nσ(m) → (∃ m0. m0 ≤ m ∧ nσ(m0) = n) |
| # nσ = ∞, nσ(∞.n + 1) ≠ n + 1, n ≤ nσ(m), stutf(nσ), ∀ m0. m < m0 → nσ(m0) = nσ(m) + 1, ∀ n0. nσ(n0) ≠ n, stutf(nσ) ∧ ⌜m⌝ < # nσ ∧ n ≤ nσ(m) → (∃ m0. m0 ≤ m ∧ nσ(m0) = n) ⊦ |
# nσ = ∞, nσ(∞.n + 1) ≠ nσ(m0) + 1, m0 ≤ m, nσ(m0) ≤ nσ(m), stutf(nσ), ∀ m0. m < m0 → nσ(m0) = nσ(m) + 1, ∀ n0. nσ(n0) ≠ nσ(m0) ⊦
Used simplifier rules: ⊦ ⌜m⌝ < ∞; (s)
| # nσ = ∞, nσ(∞.n + 1) ≠ nσ(m0) + 1, m0 ≤ m, nσ(m0) ≤ nσ(m), stutf(nσ), ∀ m0. m < m0 → nσ(m0) = nσ(m) + 1, ∀ n0. nσ(n0) ≠ nσ(m0) ⊦ |
Used terms: m0
| # nσ = ∞, max∞(λ n0. nσ(n0) = n) ≠ ∞, nσ(max∞(λ n0. nσ(n0) = n).n + 1) ≠ n + 1, n ≤ nσ(m), stutf(nσ), ∀ m0. m < m0 → nσ(m0) = nσ(m) + 1 ⊦ |
⊦ n∞ = ∞ ↔ ¬(∃ n. n∞ = ⌜n⌝ )
# nσ = ∞, nσ(max∞(λ n0. nσ(n0) = n).n + 1) ≠ n + 1, n ≤ nσ(m), stutf(nσ), ∀ m0. m < m0 → nσ(m0) = nσ(m) + 1, ∃ n0. max∞(λ n0. nσ(n0) = n) = ⌜n0⌝ ⊦
Used terms: max∞(λ n0. nσ(n0) = n)
| ⊦ n∞ = ∞ ↔ ¬(∃ n. n∞ = ⌜n⌝ ) |
| # nσ = ∞, nσ(max∞(λ n0. nσ(n0) = n).n + 1) ≠ n + 1, n ≤ nσ(m), stutf(nσ), ∀ m0. m < m0 → nσ(m0) = nσ(m) + 1, ∃ n0. max∞(λ n0. nσ(n0) = n) = ⌜n0⌝ ⊦ |
# nσ = ∞, max∞(λ n0. nσ(n0) = n) = ⌜n0⌝ , nσ(n0 + 1) ≠ n + 1, n ≤ nσ(m), stutf(nσ), ∀ m0. m < m0 → nσ(m0) = nσ(m) + 1 ⊦
Used simplifier rules: ⊦ ⌜n⌝ .n = n; (s)
| # nσ = ∞, max∞(λ n0. nσ(n0) = n) = ⌜n0⌝ , nσ(n0 + 1) ≠ n + 1, n ≤ nσ(m), stutf(nσ), ∀ m0. m < m0 → nσ(m0) = nσ(m) + 1 ⊦ |
⊦ max∞(np) = ⌜n⌝ ↔ np(n) ∧ (∀ m. np(m) → ¬ n < m)
# nσ = ∞, nσ(n0) = n, nσ(n0 + 1) ≠ n + 1, n ≤ nσ(m), stutf(nσ), ∀ m. nσ(m) = n → ¬ n0 < m, ∀ m0. m < m0 → nσ(m0) = nσ(m) + 1 ⊦
Used terms: n0, λ n0. nσ(n0) = n
| ⊦ max∞(np) = ⌜n⌝ ↔ np(n) ∧ (∀ m. np(m) → ¬ n < m) |
| # nσ = ∞, nσ(n0) = n, nσ(n0 + 1) ≠ n + 1, n ≤ nσ(m), stutf(nσ), ∀ m. nσ(m) = n → ¬ n0 < m, ∀ m0. m < m0 → nσ(m0) = nσ(m) + 1 ⊦ |
# nσ = ∞, nσ(n0 + 1) ≠ nσ(n0) + 1, nσ(n0) ≤ nσ(m), stutf(nσ), ∀ m. nσ(m) = nσ(n0) → ¬ n0 < m, ∀ m0. m < m0 → nσ(m0) = nσ(m) + 1 ⊦
| # nσ = ∞, nσ(n0 + 1) ≠ nσ(n0) + 1, nσ(n0) ≤ nσ(m), stutf(nσ), ∀ m. nσ(m) = nσ(n0) → ¬ n0 < m, ∀ m0. m < m0 → nσ(m0) = nσ(m) + 1 ⊦ |
# nσ = ∞, nσ(n0 + 1) ≠ nσ(n0) + 1, nσ(n0) ≤ nσ(m), stutf(nσ), ∀ m. nσ(m) = nσ(n0) → ¬ n0 < m, m < m + 1 → nσ(m + 1) = nσ(m) + 1 ⊦
Used terms: m + 1
| # nσ = ∞, nσ(n0 + 1) ≠ nσ(n0) + 1, nσ(n0) ≤ nσ(m), stutf(nσ), ∀ m. nσ(m) = nσ(n0) → ¬ n0 < m, m < m + 1 → nσ(m + 1) = nσ(m) + 1 ⊦ |
# nσ = ∞, nσ(m + 1) = nσ(m) + 1, nσ(n0 + 1) ≠ nσ(n0) + 1, nσ(n0) ≤ nσ(m), stutf(nσ), ∀ m. nσ(m) = nσ(n0) → ¬ n0 < m ⊦
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 + 1 ↔ ¬ n < m; (s)
| # nσ = ∞, nσ(m + 1) = nσ(m) + 1, nσ(n0 + 1) ≠ nσ(n0) + 1, nσ(n0) ≤ nσ(m), stutf(nσ), ∀ m. nσ(m) = nσ(n0) → ¬ n0 < m ⊦ |
⊦ stutf(nσ) ↔ nσ ≠ [] ∧ nσ(0) = 0 ∧ (∀ n. ⌜n⌝ + ⌜1⌝ < # nσ → nσ(n + 1) = nσ(n) ∨ nσ(n + 1) = nσ(n) + 1)
# nσ = ∞, nσ(0) = 0, nσ(m + 1) = nσ(m) + 1, nσ(n0 + 1) ≠ nσ(n0) + 1, nσ ≠ [], nσ(n0) ≤ nσ(m), ∀ m. nσ(m) = nσ(n0) → ¬ n0 < m, ∀ n. ⌜n⌝ + ⌜1⌝ < # nσ → nσ(n + 1) = nσ(n) ∨ nσ(n + 1) = nσ(n) + 1 ⊦
Used terms: nσ
| ⊦ stutf(nσ) ↔ nσ ≠ [] ∧ nσ(0) = 0 ∧ (∀ n. ⌜n⌝ + ⌜1⌝ < # nσ → nσ(n + 1) = nσ(n) ∨ nσ(n + 1) = nσ(n) + 1) |
| # nσ = ∞, nσ(0) = 0, nσ(m + 1) = nσ(m) + 1, nσ(n0 + 1) ≠ nσ(n0) + 1, nσ ≠ [], nσ(n0) ≤ nσ(m), ∀ m. nσ(m) = nσ(n0) → ¬ n0 < m, ∀ n. ⌜n⌝ + ⌜1⌝ < # nσ → nσ(n + 1) = nσ(n) ∨ nσ(n + 1) = nσ(n) + 1 ⊦ |
# nσ = ∞, nσ(0) = 0, nσ(m + 1) = nσ(m) + 1, nσ ≠ [], nσ(n0 + 1) ≠ nσ(n0) + 1, nσ(n0) ≤ nσ(m), ∀ m. nσ(m) = nσ(n0) → ¬ n0 < m, ∀ n. nσ(n + 1) = nσ(n) ∨ nσ(n + 1) = nσ(n) + 1 ⊦
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σ(0) = 0, nσ(m + 1) = nσ(m) + 1, nσ ≠ [], nσ(n0 + 1) ≠ nσ(n0) + 1, nσ(n0) ≤ nσ(m), ∀ m. nσ(m) = nσ(n0) → ¬ n0 < m, ∀ n. nσ(n + 1) = nσ(n) ∨ nσ(n + 1) = nσ(n) + 1 ⊦ |
# nσ = ∞, nσ(m + 1) = nσ(m) + 1, nσ(0) = 0, nσ ≠ [], nσ(n0 + 1) ≠ nσ(n0) + 1, nσ(n0) ≤ nσ(m), ∀ m. nσ(m) = nσ(n0) → ¬ n0 < m, nσ(n0 + 1) = nσ(n0) ∨ nσ(n0 + 1) = nσ(n0) + 1 ⊦
Used terms: n0
| # nσ = ∞, nσ(m + 1) = nσ(m) + 1, nσ(0) = 0, nσ ≠ [], nσ(n0 + 1) ≠ nσ(n0) + 1, nσ(n0) ≤ nσ(m), ∀ m. nσ(m) = nσ(n0) → ¬ n0 < m, nσ(n0 + 1) = nσ(n0) ∨ nσ(n0 + 1) = nσ(n0) + 1 ⊦ |
# nσ = ∞, nσ(n0 + 1) = nσ(n0), nσ(m + 1) = nσ(m) + 1, nσ(0) = 0, nσ ≠ [], nσ(n0) ≤ nσ(m), ∀ m. nσ(m) = nσ(n0) → ¬ n0 < m ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m = m + n ↔ n = 0; (s)
| # nσ = ∞, nσ(n0 + 1) = nσ(n0), nσ(m + 1) = nσ(m) + 1, nσ(0) = 0, nσ ≠ [], nσ(n0) ≤ nσ(m), ∀ m. nσ(m) = nσ(n0) → ¬ n0 < m ⊦ |
Used simplifier rules: ⊦ 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: n0 + 1
| nσ((# nσ).n - 1) = n1, # nσ ≠ ∞, nσ(max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ(n0) = n).n + 1) ≠ n + 1, ⌜max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ(n0) = n).n⌝ + ⌜1⌝ < # nσ, n ≤ n1, stutf(nσ) ⊦ |
# nσ ≠ ∞, nσ(max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ(n0) = n).n + 1) ≠ n + 1, ⌜max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ(n0) = n).n⌝ + ⌜1⌝ < # nσ, n ≤ nσ((# nσ).n - 1), stutf(nσ) ⊦
| # nσ ≠ ∞, nσ(max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ(n0) = n).n + 1) ≠ n + 1, ⌜max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ(n0) = n).n⌝ + ⌜1⌝ < # nσ, n ≤ nσ((# nσ).n - 1), stutf(nσ) ⊦ |
# nσ = ⌜n1⌝ , # nσ ≠ ∞, nσ(max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ(n0) = n).n + 1) ≠ n + 1, ⌜max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ(n0) = n).n⌝ + ⌜1⌝ < # nσ, n ≤ nσ(n1 - 1), stutf(nσ) ⊦
Used simplifier rules: ⊦ n∞ ≠ ∞ → (n = n∞.n ↔ n∞ = ⌜n⌝ ); (elim) Used terms: # nσ, n1
| # nσ = ⌜n1⌝ , # nσ ≠ ∞, nσ(max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ(n0) = n).n + 1) ≠ n + 1, ⌜max∞(λ n0. ⌜n0⌝ < # nσ ∧ nσ(n0) = n).n⌝ + ⌜1⌝ < # nσ, n ≤ nσ(n1 - 1), stutf(nσ) ⊦ |
# nσ = ⌜n1⌝ , nσ(max∞(λ n0. n0 < n1 ∧ nσ(n0) = n).n + 1) ≠ n + 1, max∞(λ n0. n0 < n1 ∧ nσ(n0) = n).n + 1 < n1, n ≤ nσ(n1 - 1), stutf(nσ) ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic 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) ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ ⌜n⌝ ≠ ∞; (s)
| # nσ = ⌜n1⌝ , nσ(max∞(λ n0. n0 < n1 ∧ nσ(n0) = n).n + 1) ≠ n + 1, max∞(λ n0. n0 < n1 ∧ nσ(n0) = n).n + 1 < n1, n ≤ nσ(n1 - 1), stutf(nσ) ⊦ |
# nσ = ⌜n1⌝ , n1 = m + 1, n1 ≠ 0, nσ(max∞(λ n0. n0 < n1 ∧ nσ(n0) = n).n + 1) ≠ n + 1, max∞(λ n0. n0 < n1 ∧ nσ(n0) = n).n + 1 < n1, n ≤ nσ(m), stutf(nσ) ⊦
Used simplifier rules: stutf-nonempty: ⊦ stutf(nσ) → (nσ = [] ↔ false); ⊦ # σ = ⌜0⌝ ↔ σ = []; (s) n ≠ 0 ⊦ m = n - 1 ↔ n = m + 1; (elim) Used terms: n1, m
| # nσ = ⌜n1⌝ , n1 = m + 1, n1 ≠ 0, nσ(max∞(λ n0. n0 < n1 ∧ nσ(n0) = n).n + 1) ≠ n + 1, max∞(λ n0. n0 < n1 ∧ nσ(n0) = n).n + 1 < n1, n ≤ nσ(m), stutf(nσ) ⊦ |
# nσ = ⌜m⌝ + ⌜1⌝ , nσ(max∞(λ n0. ¬ m < n0 ∧ nσ(n0) = n).n + 1) ≠ n + 1, max∞(λ n0. ¬ m < n0 ∧ nσ(n0) = n).n < m, n ≤ nσ(m), stutf(nσ) ⊦
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 < n + 1 ↔ ¬ n < m; (s) ⊦ m + 1 ≠ 0; (s) ⊦ ⌜m + n⌝ = ⌜m⌝ + ⌜n⌝ ; (s)
| # nσ = ⌜m⌝ + ⌜1⌝ , nσ(max∞(λ n0. ¬ m < n0 ∧ nσ(n0) = n).n + 1) ≠ n + 1, max∞(λ n0. ¬ m < n0 ∧ nσ(n0) = n).n < m, n ≤ nσ(m), stutf(nσ) ⊦ |
# nσ = ⌜m⌝ + ⌜1⌝ , max∞(λ n0. ¬ m < n0 ∧ nσ(n0) = n) = ∞, nσ(max∞(λ n0. ¬ m < n0 ∧ nσ(n0) = n).n + 1) ≠ n + 1, max∞(λ n0. ¬ m < n0 ∧ nσ(n0) = n).n < m, n ≤ nσ(m), stutf(nσ) ⊦
# nσ = ⌜m⌝ + ⌜1⌝ , max∞(λ n0. ¬ m < n0 ∧ nσ(n0) = n) ≠ ∞, nσ(max∞(λ n0. ¬ m < n0 ∧ nσ(n0) = n).n + 1) ≠ n + 1, max∞(λ n0. ¬ m < n0 ∧ nσ(n0) = n).n < m, n ≤ nσ(m), stutf(nσ) ⊦
Used formulas: max∞(λ n0. ¬ m < n0 ∧ nσ(n0) = n) = ∞
| # nσ = ⌜m⌝ + ⌜1⌝ , max∞(λ n0. ¬ m < n0 ∧ nσ(n0) = n) = ∞, nσ(max∞(λ n0. ¬ m < n0 ∧ nσ(n0) = n).n + 1) ≠ n + 1, max∞(λ n0. ¬ m < n0 ∧ nσ(n0) = n).n < m, n ≤ nσ(m), stutf(nσ) ⊦ |
# nσ = ⌜m⌝ + ⌜1⌝ , max∞(λ n0. ¬ m < n0 ∧ nσ(n0) = n) = ∞, nσ(∞.n + 1) ≠ n + 1, n ≤ nσ(m), stutf(nσ), ∞.n < m ⊦
| # nσ = ⌜m⌝ + ⌜1⌝ , max∞(λ n0. ¬ m < n0 ∧ nσ(n0) = n) = ∞, nσ(∞.n + 1) ≠ n + 1, n ≤ nσ(m), stutf(nσ), ∞.n < m ⊦ |
⊦ max∞(np) = ∞ ↔ (∀ n. ∃ n0. n < n0 ∧ np(n0)) ∨ (∀ n. ¬ np(n))
# nσ = ⌜m⌝ + ⌜1⌝ , nσ(∞.n + 1) ≠ n + 1, n ≤ nσ(m), stutf(nσ), ∞.n < m, (∀ n0. ∃ n1. n0 < n1 ∧ ¬ m < n1 ∧ nσ(n1) = n) ∨ (∀ n0. ¬(¬ m < n0 ∧ nσ(n0) = n)) ⊦
Used terms: λ n0. ¬ m < n0 ∧ nσ(n0) = n
| ⊦ max∞(np) = ∞ ↔ (∀ n. ∃ n0. n < n0 ∧ np(n0)) ∨ (∀ n. ¬ np(n)) |
| # nσ = ⌜m⌝ + ⌜1⌝ , nσ(∞.n + 1) ≠ n + 1, n ≤ nσ(m), stutf(nσ), ∞.n < m, (∀ n0. ∃ n1. n0 < n1 ∧ ¬ m < n1 ∧ nσ(n1) = n) ∨ (∀ n0. ¬(¬ m < n0 ∧ nσ(n0) = n)) ⊦ |
# nσ = ⌜m⌝ + ⌜1⌝ , nσ(∞.n + 1) ≠ n + 1, n ≤ nσ(m), stutf(nσ), ∞.n < m, (∀ n0. ∃ n1. n0 < n1 ∧ ¬ m < n1 ∧ nσ(n1) = n) ∨ (∀ n0. m < n0 ∨ nσ(n0) ≠ n) ⊦
| # nσ = ⌜m⌝ + ⌜1⌝ , nσ(∞.n + 1) ≠ n + 1, n ≤ nσ(m), stutf(nσ), ∞.n < m, (∀ n0. ∃ n1. n0 < n1 ∧ ¬ m < n1 ∧ nσ(n1) = n) ∨ (∀ n0. m < n0 ∨ nσ(n0) ≠ n) ⊦ |
⊦ stutf(nσ) ∧ ⌜m⌝ < # nσ ∧ n ≤ nσ(m) → (∃ m0. m0 ≤ m ∧ nσ(m0) = n)
# nσ = ⌜m⌝ + ⌜1⌝ , nσ(∞.n + 1) ≠ n + 1, n ≤ nσ(m), stutf(nσ), ∞.n < m, (∀ n0. ∃ n1. n0 < n1 ∧ ¬ m < n1 ∧ nσ(n1) = n) ∨ (∀ n0. m < n0 ∨ nσ(n0) ≠ n), stutf(nσ) ∧ ⌜m⌝ < # nσ ∧ n ≤ nσ(m) → (∃ m0. m0 ≤ m ∧ nσ(m0) = n) ⊦
Used terms: nσ, m, n
| ⊦ stutf(nσ) ∧ ⌜m⌝ < # nσ ∧ n ≤ nσ(m) → (∃ m0. m0 ≤ m ∧ nσ(m0) = n) |
| # nσ = ⌜m⌝ + ⌜1⌝ , nσ(∞.n + 1) ≠ n + 1, n ≤ nσ(m), stutf(nσ), ∞.n < m, (∀ n0. ∃ n1. n0 < n1 ∧ ¬ m < n1 ∧ nσ(n1) = n) ∨ (∀ n0. m < n0 ∨ nσ(n0) ≠ n), stutf(nσ) ∧ ⌜m⌝ < # nσ ∧ n ≤ nσ(m) → (∃ m0. m0 ≤ m ∧ nσ(m0) = n) ⊦ |
# nσ = ⌜m⌝ + ⌜1⌝ , nσ(∞.n + 1) ≠ nσ(m0) + 1, m0 ≤ m, nσ(m0) ≤ nσ(m), stutf(nσ), ∞.n < m, (∀ n0. ∃ n1. n0 < n1 ∧ ¬ m < n1 ∧ nσ(n1) = nσ(m0)) ∨ (∀ n0. m < n0 ∨ nσ(n0) ≠ nσ(m0)) ⊦
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 + 1 ↔ ¬ n < m; (s) ⊦ n∞ = ⌜m⌝ + ⌜n0⌝ → (⌜n⌝ < n∞ ↔ n < m + n0); (s) add-assoc: ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2; from specification nat-inf add-comm: ⊦ n∞1 + n∞2 = n∞2 + n∞1; from specification nat-inf
| # nσ = ⌜m⌝ + ⌜1⌝ , nσ(∞.n + 1) ≠ nσ(m0) + 1, m0 ≤ m, nσ(m0) ≤ nσ(m), stutf(nσ), ∞.n < m, (∀ n0. ∃ n1. n0 < n1 ∧ ¬ m < n1 ∧ nσ(n1) = nσ(m0)) ∨ (∀ n0. m < n0 ∨ nσ(n0) ≠ nσ(m0)) ⊦ |
# nσ = ⌜m⌝ + ⌜1⌝ , nσ(∞.n + 1) ≠ nσ(m0) + 1, m0 ≤ m, nσ(m0) ≤ nσ(m), stutf(nσ), ∞.n < m, ∀ n0. ∃ n1. n0 < n1 ∧ ¬ m < n1 ∧ nσ(n1) = nσ(m0) ⊦
# nσ = ⌜m⌝ + ⌜1⌝ , nσ(∞.n + 1) ≠ nσ(m0) + 1, m0 ≤ m, nσ(m0) ≤ nσ(m), stutf(nσ), ∞.n < m, ∀ n0. m < n0 ∨ nσ(n0) ≠ nσ(m0) ⊦
| # nσ = ⌜m⌝ + ⌜1⌝ , nσ(∞.n + 1) ≠ nσ(m0) + 1, m0 ≤ m, nσ(m0) ≤ nσ(m), stutf(nσ), ∞.n < m, ∀ n0. ∃ n1. n0 < n1 ∧ ¬ m < n1 ∧ nσ(n1) = nσ(m0) ⊦ |
Used terms: m
| # nσ = ⌜m⌝ + ⌜1⌝ , nσ(∞.n + 1) ≠ nσ(m0) + 1, m0 ≤ m, nσ(m0) ≤ nσ(m), stutf(nσ), ∞.n < m, ∀ n0. m < n0 ∨ nσ(n0) ≠ nσ(m0) ⊦ |
Used simplifier rules: ⊦ m ≤ n → (n < m ↔ false); (s) Used terms: m0
| # nσ = ⌜m⌝ + ⌜1⌝ , max∞(λ n0. ¬ m < n0 ∧ nσ(n0) = n) ≠ ∞, nσ(max∞(λ n0. ¬ m < n0 ∧ nσ(n0) = n).n + 1) ≠ n + 1, max∞(λ n0. ¬ m < n0 ∧ nσ(n0) = n).n < m, n ≤ nσ(m), stutf(nσ) ⊦ |
# nσ = ⌜m⌝ + ⌜1⌝ , max∞(λ n0. ¬ m < n0 ∧ nσ(n0) = n) = ⌜n1⌝ , max∞(λ n0. ¬ m < n0 ∧ nσ(n0) = n) ≠ ∞, nσ(n1 + 1) ≠ n + 1, n ≤ nσ(m), n1 < m, stutf(nσ) ⊦
Used simplifier rules: ⊦ n∞ ≠ ∞ → (n = n∞.n ↔ n∞ = ⌜n⌝ ); (elim) Used terms: max∞(λ n0. ¬ m < n0 ∧ nσ(n0) = n), n1
| # nσ = ⌜m⌝ + ⌜1⌝ , max∞(λ n0. ¬ m < n0 ∧ nσ(n0) = n) = ⌜n1⌝ , max∞(λ n0. ¬ m < n0 ∧ nσ(n0) = n) ≠ ∞, nσ(n1 + 1) ≠ n + 1, n ≤ nσ(m), n1 < m, stutf(nσ) ⊦ |
# nσ = ⌜m⌝ + ⌜1⌝ , max∞(λ n0. ¬ m < n0 ∧ nσ(n0) = n) = ⌜n1⌝ , nσ(n1 + 1) ≠ n + 1, n ≤ nσ(m), n1 < m, stutf(nσ) ⊦
Used simplifier rules: ⊦ ⌜n⌝ ≠ ∞; (s)
| # nσ = ⌜m⌝ + ⌜1⌝ , max∞(λ n0. ¬ m < n0 ∧ nσ(n0) = n) = ⌜n1⌝ , nσ(n1 + 1) ≠ n + 1, n ≤ nσ(m), n1 < m, stutf(nσ) ⊦ |
⊦ max∞(np) = ⌜n⌝ ↔ np(n) ∧ (∀ m. np(m) → ¬ n < m)
# nσ = ⌜m⌝ + ⌜1⌝ , nσ(n1) = n, nσ(n1 + 1) ≠ n + 1, n ≤ nσ(m), n1 < m, stutf(nσ), ¬ m < n1, ∀ m0. ¬ m < m0 ∧ nσ(m0) = n → ¬ n1 < m0 ⊦
Used terms: n1, λ n0. ¬ m < n0 ∧ nσ(n0) = n
| ⊦ max∞(np) = ⌜n⌝ ↔ np(n) ∧ (∀ m. np(m) → ¬ n < m) |
| # nσ = ⌜m⌝ + ⌜1⌝ , nσ(n1) = n, nσ(n1 + 1) ≠ n + 1, n ≤ nσ(m), n1 < m, stutf(nσ), ¬ m < n1, ∀ m0. ¬ m < m0 ∧ nσ(m0) = n → ¬ n1 < m0 ⊦ |
# nσ = ⌜m⌝ + ⌜1⌝ , nσ(n1 + 1) ≠ nσ(n1) + 1, n1 < m, nσ(n1) ≤ nσ(m), stutf(nσ), ∀ m0. ¬ m < m0 ∧ nσ(m0) = nσ(n1) → ¬ n1 < m0 ⊦
Used simplifier rules: ⊦ m < n → ¬ n < m; (s)
| # nσ = ⌜m⌝ + ⌜1⌝ , nσ(n1 + 1) ≠ nσ(n1) + 1, n1 < m, nσ(n1) ≤ nσ(m), stutf(nσ), ∀ m0. ¬ m < m0 ∧ nσ(m0) = nσ(n1) → ¬ n1 < m0 ⊦ |
# nσ = ⌜m⌝ + ⌜1⌝ , nσ(n1 + 1) ≠ nσ(n1) + 1, n1 < m, nσ(n1) ≤ nσ(m), stutf(nσ), ∀ m0. ¬ m < m0 ∧ nσ(m0) = nσ(n1) → ¬ n1 < m0, ¬ m < n1 + 1 ∧ nσ(n1 + 1) = nσ(n1) → ¬ n1 < n1 + 1 ⊦
Used terms: n1 + 1
| # nσ = ⌜m⌝ + ⌜1⌝ , nσ(n1 + 1) ≠ nσ(n1) + 1, n1 < m, nσ(n1) ≤ nσ(m), stutf(nσ), ∀ m0. ¬ m < m0 ∧ nσ(m0) = nσ(n1) → ¬ n1 < m0, ¬ m < n1 + 1 ∧ nσ(n1 + 1) = nσ(n1) → ¬ n1 < n1 + 1 ⊦ |
# nσ = ⌜m⌝ + ⌜1⌝ , nσ(n1 + 1) ≠ nσ(n1) + 1, nσ(n1 + 1) ≠ nσ(n1), n1 < m, nσ(n1) ≤ nσ(m), stutf(nσ), ∀ m0. ¬ m < m0 ∧ nσ(m0) = nσ(n1) → ¬ n1 < m0 ⊦
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 + 1 ↔ ¬ n < m; (s)
| # nσ = ⌜m⌝ + ⌜1⌝ , nσ(n1 + 1) ≠ nσ(n1) + 1, nσ(n1 + 1) ≠ nσ(n1), n1 < m, nσ(n1) ≤ nσ(m), stutf(nσ), ∀ m0. ¬ m < m0 ∧ nσ(m0) = nσ(n1) → ¬ n1 < m0 ⊦ |
⊦ stutf(nσ) ↔ nσ ≠ [] ∧ nσ(0) = 0 ∧ (∀ n. ⌜n⌝ + ⌜1⌝ < # nσ → nσ(n + 1) = nσ(n) ∨ nσ(n + 1) = nσ(n) + 1)
# nσ = ⌜m⌝ + ⌜1⌝ , nσ(0) = 0, nσ(n1 + 1) ≠ nσ(n1) + 1, nσ(n1 + 1) ≠ nσ(n1), nσ ≠ [], n1 < m, nσ(n1) ≤ nσ(m), ∀ m0. ¬ m < m0 ∧ nσ(m0) = nσ(n1) → ¬ n1 < m0, ∀ n. ⌜n⌝ + ⌜1⌝ < # nσ → nσ(n + 1) = nσ(n) ∨ nσ(n + 1) = nσ(n) + 1 ⊦
Used terms: nσ
| ⊦ stutf(nσ) ↔ nσ ≠ [] ∧ nσ(0) = 0 ∧ (∀ n. ⌜n⌝ + ⌜1⌝ < # nσ → nσ(n + 1) = nσ(n) ∨ nσ(n + 1) = nσ(n) + 1) |
| # nσ = ⌜m⌝ + ⌜1⌝ , nσ(0) = 0, nσ(n1 + 1) ≠ nσ(n1) + 1, nσ(n1 + 1) ≠ nσ(n1), nσ ≠ [], n1 < m, nσ(n1) ≤ nσ(m), ∀ m0. ¬ m < m0 ∧ nσ(m0) = nσ(n1) → ¬ n1 < m0, ∀ n. ⌜n⌝ + ⌜1⌝ < # nσ → nσ(n + 1) = nσ(n) ∨ nσ(n + 1) = nσ(n) + 1 ⊦ |
# nσ = ⌜m⌝ + ⌜1⌝ , nσ(0) = 0, nσ(n1 + 1) ≠ nσ(n1) + 1, nσ(n1 + 1) ≠ nσ(n1), nσ ≠ [], n1 < m, nσ(n1) ≤ nσ(m), ∀ m0. ¬ m < m0 ∧ nσ(m0) = nσ(n1) → ¬ n1 < m0, ∀ n. n < m → nσ(n + 1) = nσ(n) ∨ nσ(n + 1) = nσ(n) + 1 ⊦
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 ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ n∞0 + ⌜1⌝ = n∞ → (⌜n⌝ + ⌜1⌝ < n∞ ↔ ⌜n⌝ < n∞0); (s)
| # nσ = ⌜m⌝ + ⌜1⌝ , nσ(0) = 0, nσ(n1 + 1) ≠ nσ(n1) + 1, nσ(n1 + 1) ≠ nσ(n1), nσ ≠ [], n1 < m, nσ(n1) ≤ nσ(m), ∀ m0. ¬ m < m0 ∧ nσ(m0) = nσ(n1) → ¬ n1 < m0, ∀ n. n < m → nσ(n + 1) = nσ(n) ∨ nσ(n + 1) = nσ(n) + 1 ⊦ |
Used terms: n1
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.