| ⊦ stutf(nσ) → (leninv(nσ) = ⌜0⌝ ↔ nσ = ⌜λ n. 0⌝ ) |
¬(leninv(nσ) = ⌜0⌝ ↔ nσ = ⌜λ n. 0⌝ ), stutf(nσ) ⊦
| ¬(leninv(nσ) = ⌜0⌝ ↔ nσ = ⌜λ n. 0⌝ ), stutf(nσ) ⊦ |
¬(leninv(nσ) = ⌜0⌝ ↔ nσ = ⌜λ n. 0⌝ ), stutf(nσ) ⊦
| ¬(leninv(nσ) = ⌜0⌝ ↔ nσ = ⌜λ n. 0⌝ ), stutf(nσ) ⊦ |
⊦ leninv(nσ) = max∞(λ n. n ≠ 0 → (∃ m. ⌜m⌝ < # nσ ∧ nσ[m] = n - 1 ∧ ¬(# nσ = ∞ ∧ (∀ m0. m < m0 → nσ[m0] = n - 1))))
stutf(nσ) ⊦ max∞(λ n. n ≠ 0 → (∃ m. ⌜m⌝ < # nσ ∧ nσ[m] = n - 1 ∧ ¬(# nσ = ∞ ∧ (∀ m0. m < m0 → nσ[m0] = n - 1)))) = ⌜0⌝ ↔ nσ = ⌜λ n. 0⌝
Used terms: nσ
| ⊦ leninv(nσ) = max∞(λ n. n ≠ 0 → (∃ m. ⌜m⌝ < # nσ ∧ nσ[m] = n - 1 ∧ ¬(# nσ = ∞ ∧ (∀ m0. m < m0 → nσ[m0] = n - 1)))) |
| stutf(nσ) ⊦ max∞(λ n. n ≠ 0 → (∃ m. ⌜m⌝ < # nσ ∧ nσ[m] = n - 1 ∧ ¬(# nσ = ∞ ∧ (∀ m0. m < m0 → nσ[m0] = n - 1)))) = ⌜0⌝ ↔ nσ = ⌜λ n. 0⌝ |
stutf(nσ) ⊦ max∞(λ n. n ≠ 0 → (∃ m. ⌜m⌝ < # nσ ∧ nσ[m] = n - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m0. m < m0 → nσ[m0] = n - 1)))) = ⌜0⌝ ↔ nσ = ⌜λ n. 0⌝
| stutf(nσ) ⊦ max∞(λ n. n ≠ 0 → (∃ m. ⌜m⌝ < # nσ ∧ nσ[m] = n - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m0. m < m0 → nσ[m0] = n - 1)))) = ⌜0⌝ ↔ nσ = ⌜λ n. 0⌝ |
⊦ max∞(np) = ⌜n⌝ ↔ np(n) ∧ (∀ m. np(m) → ¬ n < m)
stutf(nσ) ⊦ (0 ≠ 0 → (∃ m. ⌜m⌝ < # nσ ∧ nσ[m] = 0 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m0. m < m0 → nσ[m0] = 0 - 1)))) ∧ (∀ m. (m ≠ 0 → (∃ m0. ⌜m0⌝ < # nσ ∧ nσ[m0] = m - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m1. m0 < m1 → nσ[m1] = m - 1)))) → ¬ 0 < m) ↔ nσ = ⌜λ n. 0⌝
Used terms: 0, λ n. n ≠ 0 → (∃ m. ⌜m⌝ < # nσ ∧ nσ[m] = n - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m0. m < m0 → nσ[m0] = n - 1)))
| ⊦ max∞(np) = ⌜n⌝ ↔ np(n) ∧ (∀ m. np(m) → ¬ n < m) |
| stutf(nσ) ⊦ (0 ≠ 0 → (∃ m. ⌜m⌝ < # nσ ∧ nσ[m] = 0 - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m0. m < m0 → nσ[m0] = 0 - 1)))) ∧ (∀ m. (m ≠ 0 → (∃ m0. ⌜m0⌝ < # nσ ∧ nσ[m0] = m - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m1. m0 < m1 → nσ[m1] = m - 1)))) → ¬ 0 < m) ↔ nσ = ⌜λ n. 0⌝ |
nσ ≠ ⌜λ n. 0⌝ , stutf(nσ), ∀ m. (∃ m0. ⌜m0⌝ < # nσ ∧ nσ[m0] = m - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m1. m0 < m1 → nσ[m1] = m - 1))) → m = 0 ⊦
Used simplifier rules: ⊦ ⌜nf⌝ [n] = nf(n); (s) ⊦ # ⌜nf⌝ = ∞; (s) ⊦ ⌜m⌝ < ∞; (s) ⊦ m < n → n ≠ 0; (s) ⊦ 0 < m ↔ m ≠ 0; (s)
| nσ ≠ ⌜λ n. 0⌝ , stutf(nσ), ∀ m. (∃ m0. ⌜m0⌝ < # nσ ∧ nσ[m0] = m - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m1. m0 < m1 → nσ[m1] = m - 1))) → m = 0 ⊦ |
⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0[n] = σ1[n])
stutf(nσ), ∀ m. (∃ m0. ⌜m0⌝ < # nσ ∧ nσ[m0] = m - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m1. m0 < m1 → nσ[m1] = m - 1))) → m = 0, # nσ ≠ # ⌜λ n. 0⌝ ∨ (∃ n. ¬(⌜n⌝ < # nσ → nσ[n] = ⌜λ n. 0⌝ [n])) ⊦
Used terms: nσ, ⌜λ n. 0⌝ , ⌜λ n. 0⌝ , nσ
| ⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0[n] = σ1[n]) |
| stutf(nσ), ∀ m. (∃ m0. ⌜m0⌝ < # nσ ∧ nσ[m0] = m - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m1. m0 < m1 → nσ[m1] = m - 1))) → m = 0, # nσ ≠ # ⌜λ n. 0⌝ ∨ (∃ n. ¬(⌜n⌝ < # nσ → nσ[n] = ⌜λ n. 0⌝ [n])) ⊦ |
stutf(nσ), ∀ m. (∃ m0. ⌜m0⌝ < # nσ ∧ nσ[m0] = m - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m1. m0 < m1 → nσ[m1] = m - 1))) → m = 0, # nσ ≠ ∞ ∨ ¬(⌜n⌝ < # nσ → nσ[n] = 0) ⊦
Used simplifier rules: ⊦ ⌜nf⌝ [n] = nf(n); (s) ⊦ # ⌜nf⌝ = ∞; (s)
| stutf(nσ), ∀ m. (∃ m0. ⌜m0⌝ < # nσ ∧ nσ[m0] = m - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m1. m0 < m1 → nσ[m1] = m - 1))) → m = 0, # nσ ≠ ∞ ∨ ¬(⌜n⌝ < # nσ → nσ[n] = 0) ⊦ |
# nσ = ∞, stutf(nσ), ∀ m. (∃ m0. ⌜m0⌝ < # nσ ∧ nσ[m0] = m - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m1. m0 < m1 → nσ[m1] = m - 1))) → m = 0, # nσ ≠ ∞ ∨ ¬(⌜n⌝ < # nσ → nσ[n] = 0) ⊦
# nσ ≠ ∞, stutf(nσ), ∀ m. (∃ m0. ⌜m0⌝ < # nσ ∧ nσ[m0] = m - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m1. m0 < m1 → nσ[m1] = m - 1))) → m = 0, # nσ ≠ ∞ ∨ ¬(⌜n⌝ < # nσ → nσ[n] = 0) ⊦
Used formulas: # nσ = ∞
| # nσ = ∞, stutf(nσ), ∀ m. (∃ m0. ⌜m0⌝ < # nσ ∧ nσ[m0] = m - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m1. m0 < m1 → nσ[m1] = m - 1))) → m = 0, # nσ ≠ ∞ ∨ ¬(⌜n⌝ < # nσ → nσ[n] = 0) ⊦ |
# nσ = ∞, nσ[n] ≠ 0, stutf(nσ), ∀ m. (∃ m0. nσ[m0] = m - 1 ∧ ¬(∀ m1. m0 < m1 → nσ[m1] = m - 1)) → m = 0 ⊦
Used simplifier rules: ⊦ ⌜m⌝ < ∞; (s)
| # nσ = ∞, nσ[n] ≠ 0, stutf(nσ), ∀ m. (∃ m0. nσ[m0] = m - 1 ∧ ¬(∀ m1. m0 < m1 → nσ[m1] = m - 1)) → m = 0 ⊦ |
# nσ = ∞, nσ[n] ≠ 0, stutf(nσ), (∃ m0. nσ[m0] = 0 +1 - 1 ∧ ¬(∀ m1. m0 < m1 → nσ[m1] = 0 +1 - 1)) → 0 +1 = 0, ∀ m. (∃ m0. nσ[m0] = m - 1 ∧ ¬(∀ m1. m0 < m1 → nσ[m1] = m - 1)) → m = 0 ⊦
Used terms: 0 +1
| # nσ = ∞, nσ[n] ≠ 0, stutf(nσ), (∃ m0. nσ[m0] = 0 +1 - 1 ∧ ¬(∀ m1. m0 < m1 → nσ[m1] = 0 +1 - 1)) → 0 +1 = 0, ∀ m. (∃ m0. nσ[m0] = m - 1 ∧ ¬(∀ m1. m0 < m1 → nσ[m1] = m - 1)) → m = 0 ⊦ |
# nσ = ∞, nσ[n] ≠ 0, stutf(nσ), ∀ m. (∃ m0. nσ[m0] = m - 1 ∧ ¬(∀ m1. m0 < m1 → nσ[m1] = m - 1)) → m = 0 ⊦ ∃ m0. nσ[m0] = 0 ∧ ¬(∀ m1. m0 < m1 → nσ[m1] = 0)
| # nσ = ∞, nσ[n] ≠ 0, stutf(nσ), ∀ m. (∃ m0. nσ[m0] = m - 1 ∧ ¬(∀ m1. m0 < m1 → nσ[m1] = m - 1)) → m = 0 ⊦ ∃ m0. nσ[m0] = 0 ∧ ¬(∀ m1. m0 < m1 → nσ[m1] = 0) |
# nσ = ∞, nσ[n] ≠ 0, stutf(nσ), ∀ m. (∃ m0. nσ[m0] = m - 1 ∧ ¬(∀ m1. m0 < m1 → nσ[m1] = m - 1)) → m = 0 ⊦ ∃ m0. nσ[m0] = 0 ∧ ¬(∀ m1. m0 < m1 → nσ[m1] = 0), nσ[0] = 0 ∧ ¬(∀ m1. 0 < m1 → nσ[m1] = 0)
Used terms: 0
| # nσ = ∞, nσ[n] ≠ 0, stutf(nσ), ∀ m. (∃ m0. nσ[m0] = m - 1 ∧ ¬(∀ m1. m0 < m1 → nσ[m1] = m - 1)) → m = 0 ⊦ ∃ m0. nσ[m0] = 0 ∧ ¬(∀ m1. m0 < m1 → nσ[m1] = 0), nσ[0] = 0 ∧ ¬(∀ m1. 0 < m1 → nσ[m1] = 0) |
# nσ = ∞, nσ[n] ≠ 0, stutf(nσ), ∀ m. (∃ m0. nσ[m0] = m - 1 ∧ ¬(∀ m1. m0 < m1 → nσ[m1] = m - 1)) → m = 0, ∀ m1. m1 ≠ 0 → nσ[m1] = 0 ⊦ ∃ m0. nσ[m0] = 0 ∧ ¬(∀ m1. m0 < m1 → nσ[m1] = 0)
Used simplifier rules: stutf-zero: ⊦ stutf(nσ) → nσ[0] = 0; ⊦ 0 < m ↔ m ≠ 0; (s)
| # nσ = ∞, nσ[n] ≠ 0, stutf(nσ), ∀ m. (∃ m0. nσ[m0] = m - 1 ∧ ¬(∀ m1. m0 < m1 → nσ[m1] = m - 1)) → m = 0, ∀ m1. m1 ≠ 0 → nσ[m1] = 0 ⊦ ∃ m0. nσ[m0] = 0 ∧ ¬(∀ m1. m0 < m1 → nσ[m1] = 0) |
Used simplifier rules: stutf-zero: ⊦ stutf(nσ) → nσ[0] = 0; Used terms: n
| # nσ ≠ ∞, stutf(nσ), ∀ m. (∃ m0. ⌜m0⌝ < # nσ ∧ nσ[m0] = m - 1 ∧ (# nσ ≠ ∞ ∨ ¬(∀ m1. m0 < m1 → nσ[m1] = m - 1))) → m = 0, # nσ ≠ ∞ ∨ ¬(⌜n⌝ < # nσ → nσ[n] = 0) ⊦ |
# nσ ≠ ∞, stutf(nσ), ∀ m. (∃ m0. ⌜m0⌝ < # nσ ∧ nσ[m0] = m - 1) → m = 0 ⊦
| # nσ ≠ ∞, stutf(nσ), ∀ m. (∃ m0. ⌜m0⌝ < # nσ ∧ nσ[m0] = m - 1) → m = 0 ⊦ |
⊦ n∞ = ∞ ↔ ¬(∃ n. n∞ = ⌜n⌝ )
stutf(nσ), ∀ m. (∃ m0. ⌜m0⌝ < # nσ ∧ nσ[m0] = m - 1) → m = 0, ∃ n. # nσ = ⌜n⌝ ⊦
Used terms: # nσ
| ⊦ n∞ = ∞ ↔ ¬(∃ n. n∞ = ⌜n⌝ ) |
| stutf(nσ), ∀ m. (∃ m0. ⌜m0⌝ < # nσ ∧ nσ[m0] = m - 1) → m = 0, ∃ n. # nσ = ⌜n⌝ ⊦ |
# nσ = ⌜n⌝ , stutf(nσ), ∀ m. (∃ m0. m0 < n ∧ nσ[m0] = m - 1) → m = 0 ⊦
Used simplifier rules: ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s)
| # nσ = ⌜n⌝ , stutf(nσ), ∀ m. (∃ m0. m0 < n ∧ nσ[m0] = m - 1) → m = 0 ⊦ |
# nσ = ⌜n⌝ , n = n0 +1, stutf(nσ), ∀ m. (∃ m0. m0 < n ∧ nσ[m0] = m - 1) → m = 0 ⊦
Used simplifier rules: stutf-nonempty: ⊦ stutf(nσ) → (nσ = [] ↔ false); nat freely generated by 0, +1;; ⊦ # σ = ⌜0⌝ ↔ σ = []; (s)
| # nσ = ⌜n⌝ , n = n0 +1, stutf(nσ), ∀ m. (∃ m0. m0 < n ∧ nσ[m0] = m - 1) → m = 0 ⊦ |
# nσ = ⌜n0⌝ + ⌜1⌝ , stutf(nσ), ∀ m. (∃ m0. ¬ n0 < m0 ∧ nσ[m0] = m - 1) → m = 0 ⊦
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 + 1 ↔ ¬ n < m; (s) ⊦ m +1 = m + 1; (s) ⊦ ⌜m + n⌝ = ⌜m⌝ + ⌜n⌝ ; (s)
| # nσ = ⌜n0⌝ + ⌜1⌝ , stutf(nσ), ∀ m. (∃ m0. ¬ n0 < m0 ∧ nσ[m0] = m - 1) → m = 0 ⊦ |
# nσ = ⌜n0⌝ + ⌜1⌝ , stutf(nσ), (∃ m0. ¬ n0 < m0 ∧ nσ[m0] = nσ[n0] + 1 - 1) → nσ[n0] + 1 = 0, ∀ m. (∃ m0. ¬ n0 < m0 ∧ nσ[m0] = m - 1) → m = 0 ⊦
Used terms: nσ[n0] + 1
| # nσ = ⌜n0⌝ + ⌜1⌝ , stutf(nσ), (∃ m0. ¬ n0 < m0 ∧ nσ[m0] = nσ[n0] + 1 - 1) → nσ[n0] + 1 = 0, ∀ m. (∃ m0. ¬ n0 < m0 ∧ nσ[m0] = m - 1) → m = 0 ⊦ |
# nσ = ⌜n0⌝ + ⌜1⌝ , stutf(nσ), ∀ m. (∃ m0. ¬ n0 < m0 ∧ nσ[m0] = m - 1) → m = 0 ⊦ ∃ m0. ¬ n0 < m0 ∧ nσ[m0] = nσ[n0]
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m + 1 ≠ 0; (s) ⊦ n + 0 = n; (s) ⊦ n ≤ m → m + n0 - n = (m - n) + n0; (s)
| # nσ = ⌜n0⌝ + ⌜1⌝ , stutf(nσ), ∀ m. (∃ m0. ¬ n0 < m0 ∧ nσ[m0] = m - 1) → m = 0 ⊦ ∃ m0. ¬ n0 < m0 ∧ nσ[m0] = nσ[n0] |
Used simplifier rules: ⊦ ¬ n < n; (s) Used terms: n0
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.