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