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