| ⊦ ⌜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, n0 ≤ n, stutf(nσ) ⊦
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss)
| # nσ = ∞, nσ(n) = 0, nσ(n0) ≠ 0, n0 ≤ n, stutf(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)⌝ ≠ leninv(nσ), nσ(n) ≠ 0, ⌜n⌝ < # nσ, stutf(nσ), ∀ m. n < m ∧ ⌜m⌝ < # nσ → 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))) ⊦
| 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 < 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 < m ∧ ⌜m⌝ < # nσ → nσ(m) = nσ(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 < m ∧ ⌜m⌝ < # nσ → nσ(m) = n1 + 1)
| ⌜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 < m ∧ ⌜m⌝ < # nσ → nσ(m) = n1 + 1) |
⊦ ⌜m + n⌝ = ⌜m⌝ + ⌜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 < m ∧ ⌜m⌝ < # nσ → nσ(m) = n1 + 1)
Used terms: 1, n1
| ⊦ ⌜m + n⌝ = ⌜m⌝ + ⌜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 < m ∧ ⌜m⌝ < # nσ → nσ(m) = n1 + 1) |
⌜n1⌝ + ⌜1⌝ = leninv(nσ), n1 + 1 = nσ(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 < 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)
| ⌜n1⌝ + ⌜1⌝ = leninv(nσ), n1 + 1 = nσ(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 < 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))
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 < m ∧ ⌜m⌝ < # nσ → 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)) |
| 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 < m ∧ ⌜m⌝ < # nσ → nσ(m) = nσ(n)) |
n1 + 1 = nσ(n), ⌜n⌝ < # nσ, stutf(nσ), (# nσ = ∞ ⊃ nσ(m0) = n1 ∧ (∀ m1. m0 < m1 → nσ(m1) = nσ(m0) + 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 < m ∧ ⌜m⌝ < # nσ → nσ(m) = nσ(n))
| n1 + 1 = nσ(n), ⌜n⌝ < # nσ, stutf(nσ), (# nσ = ∞ ⊃ nσ(m0) = n1 ∧ (∀ m1. m0 < m1 → nσ(m1) = nσ(m0) + 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 < m ∧ ⌜m⌝ < # nσ → nσ(m) = nσ(n)) |
# nσ = ∞, n1 + 1 = nσ(n), nσ(m0) = n1, ⌜n⌝ < # nσ, stutf(nσ), ∀ m1. m0 < m1 → nσ(m1) = nσ(m0) + 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σ = ∞ ∧ (n < m ∧ ⌜m⌝ < # 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 < m ∧ ⌜m⌝ < # nσ → nσ(m) = nσ(n))
| # nσ = ∞, n1 + 1 = nσ(n), nσ(m0) = n1, ⌜n⌝ < # nσ, stutf(nσ), ∀ m1. m0 < m1 → nσ(m1) = nσ(m0) + 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σ = ∞ ∧ (n < m ∧ ⌜m⌝ < # nσ → nσ(m) = nσ(n)) |
# nσ = ∞, nσ(m0) + 1 = nσ(n), nσ(m) ≠ nσ(n), n < m, stutf(nσ), ∀ m1. m0 < m1 → nσ(m1) = nσ(n), ∀ nσ0, n. nσ(m0) = 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⌝ < ∞; (s) ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| # nσ = ∞, nσ(m0) + 1 = nσ(n), nσ(m) ≠ nσ(n), n < m, stutf(nσ), ∀ m1. m0 < m1 → nσ(m1) = nσ(n), ∀ nσ0, n. nσ(m0) = 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σ(m0) + 1 = nσ(n), nσ(m) ≠ nσ(n), n < m, stutf(nσ), m0 < n → nσ(n) = nσ(n), ∀ m1. m0 < m1 → nσ(m1) = nσ(n), ∀ nσ0, n. nσ(m0) = 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σ(m0) + 1 = nσ(n), nσ(m) ≠ nσ(n), n < m, stutf(nσ), m0 < n → nσ(n) = nσ(n), ∀ m1. m0 < m1 → nσ(m1) = nσ(n), ∀ nσ0, n. nσ(m0) = 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σ(m0) + 1 = nσ(n), nσ(m) ≠ nσ(n), n < m, stutf(nσ), ∀ m1. m0 < m1 → nσ(m1) = nσ(n), ∀ nσ0, n. nσ(m0) = 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σ(m0) + 1 = nσ(n), nσ(m) ≠ nσ(n), n < m, stutf(nσ), ∀ m1. m0 < m1 → nσ(m1) = nσ(n), ∀ nσ0, n. nσ(m0) = 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σ(m0) + 1 = nσ(n), nσ(m) ≠ nσ(n), n < m, stutf(nσ), ∀ m1. m0 < m1 → nσ(m1) = nσ(n), mon≤(nσ) ∧ n ≤ m ∧ ⌜m⌝ < # nσ → nσ(n) ≤ nσ(m), ∀ nσ0, n. nσ(m0) = 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, m
| ⊦ mon≤(nσ) ∧ m ≤ n ∧ ⌜n⌝ < # nσ → nσ(m) ≤ nσ(n) |
| # nσ = ∞, nσ(m0) + 1 = nσ(n), nσ(m) ≠ nσ(n), n < m, stutf(nσ), ∀ m1. m0 < m1 → nσ(m1) = nσ(n), mon≤(nσ) ∧ n ≤ m ∧ ⌜m⌝ < # nσ → nσ(n) ≤ nσ(m), ∀ nσ0, n. nσ(m0) = 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σ(m0) + 1 = nσ(n), nσ(m) ≠ nσ(n), n < m, nσ(n) < nσ(m), stutf(nσ), ∀ m1. m0 < m1 → nσ(m1) = nσ(n), ∀ nσ0, n. nσ(m0) = 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-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σ(m0) + 1 = nσ(n), nσ(m) ≠ nσ(n), n < m, nσ(n) < nσ(m), stutf(nσ), ∀ m1. m0 < m1 → nσ(m1) = nσ(n), ∀ nσ0, n. nσ(m0) = 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σ(m0) + 1 = nσ(n), nσ(m) ≠ nσ(n), n < m, nσ(n) < nσ(m), stutf(nσ), m0 < m → nσ(m) = nσ(n), ∀ m1. m0 < m1 → nσ(m1) = nσ(n), ∀ nσ0, n. nσ(m0) = 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: m
| # nσ = ∞, nσ(m0) + 1 = nσ(n), nσ(m) ≠ nσ(n), n < m, nσ(n) < nσ(m), stutf(nσ), m0 < m → nσ(m) = nσ(n), ∀ m1. m0 < m1 → nσ(m1) = nσ(n), ∀ nσ0, n. nσ(m0) = 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σ(m0) + 1 = nσ(n), nσ(m) ≠ nσ(n), m ≤ m0, n < m, n < m0, nσ(n) < nσ(m), stutf(nσ), ∀ m1. m0 < m1 → nσ(m1) = nσ(n), ∀ nσ0, n. nσ(m0) = 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 fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat ⊦ m < n ↔ ¬ n ≤ m; (ss)
| # nσ = ∞, nσ(m0) + 1 = nσ(n), nσ(m) ≠ nσ(n), m ≤ m0, n < m, n < m0, nσ(n) < nσ(m), stutf(nσ), ∀ m1. m0 < m1 → nσ(m1) = nσ(n), ∀ nσ0, n. nσ(m0) = 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); ⊦ ⌜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σ, m, m0
| ⊦ 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 < m ∧ ⌜m⌝ < # nσ → nσ(m) = 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⌝ , n0 = m0 + 1, nσ(m0) + 1 = nσ(n), n0 ≠ 0, n < n0, stutf(nσ), ∀ nσ0, n. nσ(m0) = 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⌝ , n0 = m0 + 1, nσ(m0) + 1 = nσ(n), n0 ≠ 0, n < n0, stutf(nσ), ∀ nσ0, n. nσ(m0) = 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σ = ⌜m0⌝ + ⌜1⌝ , nσ(m0) + 1 = nσ(n), n ≤ m0, stutf(nσ), ∀ nσ0, n. nσ(m0) = 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σ = ⌜m0⌝ + ⌜1⌝ , nσ(m0) + 1 = nσ(n), n ≤ m0, stutf(nσ), ∀ nσ0, n. nσ(m0) = 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-comm: ⊦ n∞1 + n∞2 = n∞2 + n∞1; from specification nat-inf add-assoc: ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2; from specification nat-inf ⊦ n∞ = ⌜m⌝ + ⌜n0⌝ → (⌜n⌝ < 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, m0
| ⊦ mon≤(nσ) ∧ m ≤ n ∧ ⌜n⌝ < # nσ → nσ(m) ≤ nσ(n) |
| # nσ = ∞, n1 + 1 = nσ(n), ⌜nσ(n)⌝ ≠ leninv(nσ), nσ(n) ≠ 0, ⌜n⌝ < # nσ, stutf(nσ), ∀ m. n < m ∧ ⌜m⌝ < # nσ → 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))) ⊦ |
# nσ = ∞, n1 + 1 = nσ(n), nσ(n) ≠ 0, ⌜nσ(n)⌝ ≠ 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: ⊦ ⌜m⌝ < ∞; (s)
| # nσ = ∞, n1 + 1 = nσ(n), nσ(n) ≠ 0, ⌜nσ(n)⌝ ≠ 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))) ⊦ |
# 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σ), ∀ 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))) ⊦
Used terms: 1, n1
| ⊦ ⌜m + n⌝ = ⌜m⌝ + ⌜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⌝ ≠ 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), ∀ 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 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), ∀ 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))) ⊦ |
# nσ = ∞, n1 + 1 = nσ(n), stutf(nσ), ∀ m. n < m → nσ(m) = nσ(n), ∀ 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))) ⊦
| # nσ = ∞, n1 + 1 = nσ(n), stutf(nσ), ∀ m. n < m → nσ(m) = nσ(n), ∀ 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))) ⊦ |
⊦ 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σ), ∀ m. nσ(m) ≠ n1 ∨ ¬(∀ m0. m < m0 → nσ(m0) = nσ(m) + 1), ∀ 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σ) ∧ ⌜n⌝ < # nσ ∧ n1 < nσ(n) → (∃ m0. m0 < n ∧ nσ(m0) = n1 ∧ nσ(m0 + 1) = n1 + 1) ⊦
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σ), ∀ m. nσ(m) ≠ n1 ∨ ¬(∀ m0. m < m0 → nσ(m0) = nσ(m) + 1), ∀ 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σ) ∧ ⌜n⌝ < # nσ ∧ n1 < nσ(n) → (∃ m0. m0 < n ∧ nσ(m0) = n1 ∧ nσ(m0 + 1) = n1 + 1) ⊦ |
# nσ = ∞, nσ(m0) + 1 = nσ(n), nσ(m0 + 1) = nσ(n), m0 < n, nσ(m0) < nσ(n), stutf(nσ), ∀ m. nσ(m) ≠ nσ(m0) ∨ ¬(∀ m0. m < m0 → nσ(m0) = nσ(m) + 1), ∀ m. n < m → nσ(m) = nσ(n), ∀ nσ0, n. nσ(m0) = 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: 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σ(m0) + 1 = nσ(n), nσ(m0 + 1) = nσ(n), m0 < n, nσ(m0) < nσ(n), stutf(nσ), ∀ m. nσ(m) ≠ nσ(m0) ∨ ¬(∀ m0. m < m0 → nσ(m0) = nσ(m) + 1), ∀ m. n < m → nσ(m) = nσ(n), ∀ nσ0, n. nσ(m0) = 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σ(m0 + 1) = nσ(n), nσ(m0) + 1 = nσ(n), m0 < n, nσ(m0) < nσ(n), stutf(nσ), ∀ m. n < m → nσ(m) = nσ(n), nσ(m0) ≠ nσ(m0) ∨ ¬(∀ m1. m0 < m1 → nσ(m1) = nσ(m0) + 1), ∀ nσ0, n. nσ(m0) = 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: m0
| # nσ = ∞, nσ(m0 + 1) = nσ(n), nσ(m0) + 1 = nσ(n), m0 < n, nσ(m0) < nσ(n), stutf(nσ), ∀ m. n < m → nσ(m) = nσ(n), nσ(m0) ≠ nσ(m0) ∨ ¬(∀ m1. m0 < m1 → nσ(m1) = nσ(m0) + 1), ∀ nσ0, n. nσ(m0) = 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σ(m0 + 1) = nσ(n), nσ(m0) + 1 = nσ(n), nσ(m1) ≠ nσ(n), m0 < m1, m0 < n, nσ(m0) < nσ(n), stutf(nσ), ∀ m. n < m → nσ(m) = nσ(n), ∀ nσ0, n. nσ(m0) = 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σ(m0 + 1) = nσ(n), nσ(m0) + 1 = nσ(n), nσ(m1) ≠ nσ(n), m0 < m1, m0 < n, nσ(m0) < nσ(n), stutf(nσ), ∀ m. n < m → nσ(m) = nσ(n), ∀ nσ0, n. nσ(m0) = 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σ(m0) + 1 = nσ(n), nσ(m0 + 1) = nσ(n), nσ(m1) ≠ nσ(n), m0 < n, m0 < m1, nσ(m0) < nσ(n), stutf(nσ), ∀ m. n < m → nσ(m) = nσ(n), mon≤(nσ) ∧ m0 + 1 ≤ m1 ∧ ⌜m1⌝ < # nσ → nσ(m0 + 1) ≤ nσ(m1), ∀ nσ0, n. nσ(m0) = 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σ, m0 + 1, m1
| ⊦ mon≤(nσ) ∧ m ≤ n ∧ ⌜n⌝ < # nσ → nσ(m) ≤ nσ(n) |
| # nσ = ∞, nσ(m0) + 1 = nσ(n), nσ(m0 + 1) = nσ(n), nσ(m1) ≠ nσ(n), m0 < n, m0 < m1, nσ(m0) < nσ(n), stutf(nσ), ∀ m. n < m → nσ(m) = nσ(n), mon≤(nσ) ∧ m0 + 1 ≤ m1 ∧ ⌜m1⌝ < # nσ → nσ(m0 + 1) ≤ nσ(m1), ∀ nσ0, n. nσ(m0) = 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σ(m0) + 1 = nσ(n), nσ(m0 + 1) = nσ(n), nσ(m1) ≠ nσ(n), m0 < n, m0 < m1, nσ(m0) < nσ(n), nσ(m0) < nσ(m1), nσ(n) < nσ(m1), stutf(nσ), ∀ m. n < m → nσ(m) = nσ(n), ∀ nσ0, n. nσ(m0) = 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-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σ(m0) + 1 = nσ(n), nσ(m0 + 1) = nσ(n), nσ(m1) ≠ nσ(n), m0 < n, m0 < m1, nσ(m0) < nσ(n), nσ(m0) < nσ(m1), nσ(n) < nσ(m1), stutf(nσ), ∀ m. n < m → nσ(m) = nσ(n), ∀ nσ0, n. nσ(m0) = 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σ(m0 + 1) = nσ(n), nσ(m0) + 1 = nσ(n), nσ(m1) ≠ nσ(n), m0 < m1, m0 < n, nσ(n) < nσ(m1), nσ(m0) < nσ(m1), nσ(m0) < nσ(n), stutf(nσ), ∀ m. n < m → nσ(m) = nσ(n), n < m1 → nσ(m1) = nσ(n), ∀ nσ0, n. nσ(m0) = 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: m1
| # nσ = ∞, nσ(m0 + 1) = nσ(n), nσ(m0) + 1 = nσ(n), nσ(m1) ≠ nσ(n), m0 < m1, m0 < n, nσ(n) < nσ(m1), nσ(m0) < nσ(m1), nσ(m0) < nσ(n), stutf(nσ), ∀ m. n < m → nσ(m) = nσ(n), n < m1 → nσ(m1) = nσ(n), ∀ nσ0, n. nσ(m0) = 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σ(m0) + 1 = nσ(n), nσ(m0 + 1) = nσ(n), nσ(m1) ≠ nσ(n), m0 < m1, m0 < n, m1 ≤ n, nσ(m0) < nσ(n), nσ(m0) < nσ(m1), nσ(n) < nσ(m1), stutf(nσ), ∀ m. n < m → nσ(m) = nσ(n), ∀ nσ0, n. nσ(m0) = 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: fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat ⊦ m < n ↔ ¬ n ≤ m; (ss)
| # nσ = ∞, nσ(m0) + 1 = nσ(n), nσ(m0 + 1) = nσ(n), nσ(m1) ≠ nσ(n), m0 < m1, m0 < n, m1 ≤ n, nσ(m0) < nσ(n), nσ(m0) < nσ(m1), nσ(n) < nσ(m1), stutf(nσ), ∀ m. n < m → nσ(m) = nσ(n), ∀ nσ0, n. nσ(m0) = 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); ⊦ m ≠ n → (m ≤ n ↔ m < n); (s) ⊦ m < n → ¬ n < m; (s) ⊦ ⌜m⌝ < ∞; (s) Used terms: nσ, m1, 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.