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