| mon(σσ), σσ ≠ [], ∀ n. ⌜n⌝ < # σσ → σσ(n) ⊑ σ, ∀ n. ⌜n⌝ < # σσ → σσ(n) ⊑ σ0, ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ σ to m ⊑ σσ(n)), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ σ0 to m ⊑ σσ(n)) ⊦ σ = σ0 |
σ ≠ σ0, σσ ≠ [], mon(σσ), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ σ0 to m ⊑ σσ(n)), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ σ to m ⊑ σσ(n)), ∀ n. ⌜n⌝ < # σσ → σσ(n) ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ(n) ⊑ σ ⊦
| σ ≠ σ0, σσ ≠ [], mon(σσ), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ σ0 to m ⊑ σσ(n)), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ σ to m ⊑ σσ(n)), ∀ n. ⌜n⌝ < # σσ → σσ(n) ⊑ σ0, ∀ n. ⌜n⌝ < # σσ → σσ(n) ⊑ σ ⊦ |
σ ≠ σ0, σσ ≠ [], mon(σσ), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σ to m) + σ0 = σσ(n))), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦
Used simplifier rules: ⊦ σ1 ⊑ σ2 ↔ (∃ σ. σ1 + σ = σ2); (ls)
| σ ≠ σ0, σσ ≠ [], mon(σσ), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σ to m) + σ0 = σσ(n))), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦ |
⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ¬ # σ0 < ⌜n⌝ → σ0 to n = σ1 to n)
σσ ≠ [], mon(σσ), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σ to m) + σ0 = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), # σ ≠ # σ0 ∨ (∃ n. ¬(¬ # σ < ⌜n⌝ → σ to n = σ0 to n)) ⊦
Used terms: σ0, σ
| ⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ¬ # σ0 < ⌜n⌝ → σ0 to n = σ1 to n) |
| σσ ≠ [], mon(σσ), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σ to m) + σ0 = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), # σ ≠ # σ0 ∨ (∃ n. ¬(¬ # σ < ⌜n⌝ → σ to n = σ0 to n)) ⊦ |
σσ ≠ [], mon(σσ), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σ to m) + σ0 = σσ(n))), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), # σ ≠ # σ0 ∨ ¬(¬ # σ < ⌜n⌝ → σ to n = σ0 to n) ⊦
| σσ ≠ [], mon(σσ), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σ to m) + σ0 = σσ(n))), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), # σ ≠ # σ0 ∨ ¬(¬ # σ < ⌜n⌝ → σ to n = σ0 to n) ⊦ |
# σ = # σ0, σσ ≠ [], mon(σσ), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σ to m) + σ0 = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), # σ ≠ # σ0 ∨ ¬(¬ # σ < ⌜n⌝ → σ to n = σ0 to n) ⊦
# σ ≠ # σ0, σσ ≠ [], mon(σσ), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σ to m) + σ0 = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), # σ ≠ # σ0 ∨ ¬(¬ # σ < ⌜n⌝ → σ to n = σ0 to n) ⊦
Used formulas: # σ = # σ0
| # σ = # σ0, σσ ≠ [], mon(σσ), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σ to m) + σ0 = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), # σ ≠ # σ0 ∨ ¬(¬ # σ < ⌜n⌝ → σ to n = σ0 to n) ⊦ |
# σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ¬ # σ0 < ⌜n⌝ , ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σ to m) + σ0 = σσ(n))), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦
| # σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ¬ # σ0 < ⌜n⌝ , ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σ to m) + σ0 = σσ(n))), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦ |
# σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ¬ # σ0 < ⌜n⌝ , ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ¬ # σ0 < ⌜n⌝ → (∃ n0. ⌜n0⌝ < # σσ ∧ (∃ σ0. (σ to n) + σ0 = σσ(n0))) ⊦
Used terms: n
| # σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ¬ # σ0 < ⌜n⌝ , ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ¬ # σ0 < ⌜n⌝ → (∃ n0. ⌜n0⌝ < # σσ ∧ (∃ σ0. (σ to n) + σ0 = σσ(n0))) ⊦ |
# σ = # σ0, (σ to n) + σ1 = σσ(n0), σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ¬ # σ0 < ⌜n⌝ , ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦
| # σ = # σ0, (σ to n) + σ1 = σσ(n0), σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ¬ # σ0 < ⌜n⌝ , ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦ |
# σ = # σ0, (σ to n) + σ1 = σσ(n0), σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ¬ # σ0 < ⌜n⌝ → (∃ n0. ⌜n0⌝ < # σσ ∧ (∃ σ. (σ0 to n) + σ = σσ(n0))) ⊦
Used terms: n
| # σ = # σ0, (σ to n) + σ1 = σσ(n0), σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ¬ # σ0 < ⌜n⌝ → (∃ n0. ⌜n0⌝ < # σσ ∧ (∃ σ. (σ0 to n) + σ = σσ(n0))) ⊦ |
# σ = # σ0, (σ to n) + σ1 = σσ(n0), (σ0 to n) + σ2 = σσ(n1), σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦
| # σ = # σ0, (σ to n) + σ1 = σσ(n0), (σ0 to n) + σ2 = σσ(n1), σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦ |
mon(σσ), m ≤ n, ⌜n⌝ < # σσ ⊦ σσ(m) ⊑ σσ(n)
# σ = # σ0, (σ to n) + σ1 = σσ(n0), (σ0 to n) + σ2 = σσ(n1), σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, ¬ # σ0 < ⌜n⌝ , ¬ n0 ≤ n1, ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ) ⊦
# σ = # σ0, (σ to n) + σ1 = σσ(n0), (σ0 to n) + σ2 = σσ(n1), σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, σσ(n0) ⊑ σσ(n1), ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ) ⊦
Used terms: σσ, n0, n1
| mon(σσ), m ≤ n, ⌜n⌝ < # σσ ⊦ σσ(m) ⊑ σσ(n) |
| # σ = # σ0, (σ to n) + σ1 = σσ(n0), (σ0 to n) + σ2 = σσ(n1), σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, ¬ # σ0 < ⌜n⌝ , ¬ n0 ≤ n1, ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ) ⊦ |
# σ = # σ0, (σ to n) + σ1 = σσ(n0), (σ0 to n) + σ2 = σσ(n1), n0 ≠ 0, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, n1 < n0, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦
Used simplifier rules: f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m ≤ n ↔ ¬ n < m; (ss)
| # σ = # σ0, (σ to n) + σ1 = σσ(n0), (σ0 to n) + σ2 = σσ(n1), n0 ≠ 0, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, n1 < n0, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦ |
mon(σσ), m ≤ n, ⌜n⌝ < # σσ ⊦ σσ(m) ⊑ σσ(n)
# σ = # σ0, (σ to n) + σ1 = σσ(n0), (σ0 to n) + σ2 = σσ(n1), n0 ≠ 0, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, n1 < n0, ⌜n1⌝ < # σσ, σσ(n1) ⊑ σσ(n0), ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ) ⊦
Used simplifier rules: ⊦ m ≤ n ↔ ¬ n < m; (ss) ⊦ m < n → ¬ n < m; (s) Used terms: σσ, n1, n0
| mon(σσ), m ≤ n, ⌜n⌝ < # σσ ⊦ σσ(m) ⊑ σσ(n) |
| # σ = # σ0, (σ to n) + σ1 = σσ(n0), (σ0 to n) + σ2 = σσ(n1), n0 ≠ 0, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, n1 < n0, ⌜n1⌝ < # σσ, σσ(n1) ⊑ σσ(n0), ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ) ⊦ |
# σ = # σ0, (σ to n) + σ1 = σσ(n0), (σ0 to n) + σ2 = σσ(n1), σσ(n1) + σ3 = σσ(n0), n0 ≠ 0, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, n1 < n0, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦
Used simplifier rules: ⊦ σ1 ⊑ σ2 ↔ (∃ σ. σ1 + σ = σ2); (ls)
| # σ = # σ0, (σ to n) + σ1 = σσ(n0), (σ0 to n) + σ2 = σσ(n1), σσ(n1) + σ3 = σσ(n0), n0 ≠ 0, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, n1 < n0, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦ |
# σ = # σ0, (σ to n) + σ1 = σσ(n0), ((σ0 to n) + σ2) + σ3 = σσ(n0), n0 ≠ 0, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, n1 < n0, ⌜n1⌝ < # σσ, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ) ⊦
| # σ = # σ0, (σ to n) + σ1 = σσ(n0), ((σ0 to n) + σ2) + σ3 = σσ(n0), n0 ≠ 0, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, n1 < n0, ⌜n1⌝ < # σσ, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ) ⊦ |
# σ = # σ0, ((σ0 to n) + σ2) + σ3 = (σ to n) + σ1, n0 ≠ 0, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, n1 < n0, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦
| # σ = # σ0, ((σ0 to n) + σ2) + σ3 = (σ to n) + σ1, n0 ≠ 0, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, n1 < n0, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦ |
⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ¬ # σ0 < ⌜n⌝ → σ0 to n = σ1 to n)
#(((σ0 to n) + σ2) + σ3) = #((σ to n) + σ1), # σ = # σ0, n0 ≠ 0, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, n1 < n0, ⌜n1⌝ < # σσ, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n0. ¬ #(((σ0 to n) + σ2) + σ3) < ⌜n0⌝ → ((σ0 to n) + σ2) + σ3 to n0 = (σ to n) + σ1 to n0 ⊦
Used terms: (σ to n) + σ1, ((σ0 to n) + σ2) + σ3
| ⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ¬ # σ0 < ⌜n⌝ → σ0 to n = σ1 to n) |
| #(((σ0 to n) + σ2) + σ3) = #((σ to n) + σ1), # σ = # σ0, n0 ≠ 0, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, n1 < n0, ⌜n1⌝ < # σσ, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n0. ¬ #(((σ0 to n) + σ2) + σ3) < ⌜n0⌝ → ((σ0 to n) + σ2) + σ3 to n0 = (σ to n) + σ1 to n0 ⊦ |
# σ = # σ0, # σ2 + # σ3 = # σ1, n0 ≠ 0, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, n1 < n0, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n2. ¬ ⌜n⌝ + # σ1 < ⌜n2⌝ → ((σ0 to n) + σ2) + σ3 to n2 = (σ to n) + σ1 to n2 ⊦
Used simplifier rules: append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ #(σ + σ1) = # σ + # σ1; (s) ¬ # σ < ⌜n⌝ ⊦ #(σ to n) = ⌜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 ⊦ ⌜n⌝ + n∞1 = ⌜n⌝ + n∞2 ↔ n∞1 = n∞2; (s)
| # σ = # σ0, # σ2 + # σ3 = # σ1, n0 ≠ 0, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, n1 < n0, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n2. ¬ ⌜n⌝ + # σ1 < ⌜n2⌝ → ((σ0 to n) + σ2) + σ3 to n2 = (σ to n) + σ1 to n2 ⊦ |
# σ2 + # σ3 = # σ1, # σ = # σ0, n0 ≠ 0, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, n1 < n0, ⌜n1⌝ < # σσ, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ¬ ⌜n⌝ + # σ1 < ⌜n⌝ → ((σ0 to n) + σ2) + σ3 to n = (σ to n) + σ1 to n ⊦
Used terms: n
| # σ2 + # σ3 = # σ1, # σ = # σ0, n0 ≠ 0, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, n1 < n0, ⌜n1⌝ < # σσ, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ¬ ⌜n⌝ + # σ1 < ⌜n⌝ → ((σ0 to n) + σ2) + σ3 to n = (σ to n) + σ1 to n ⊦ |
# σ = # σ0, # σ2 + # σ3 = # σ1, ((σ0 to n) + σ2) + σ3 to n = (σ to n) + σ1 to n, n0 ≠ 0, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, n1 < n0, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦
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∞ + n∞1 < n∞1; (s)
| # σ = # σ0, # σ2 + # σ3 = # σ1, ((σ0 to n) + σ2) + σ3 to n = (σ to n) + σ1 to n, n0 ≠ 0, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, n1 < n0, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦ |
⊦ ¬ # σ < ⌜n⌝ → σ + σ0 to n = σ to n
# σ2 + # σ3 = # σ1, # σ = # σ0, (σ0 to n) + σ2 to n = (σ to n) + σ1 to n, n0 ≠ 0, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, n1 < n0, ⌜n1⌝ < # σσ, ¬ #((σ0 to n) + σ2) < ⌜n⌝ , ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ) ⊦
Used simplifier rules: ⊦ #(σ + σ1) = # σ + # σ1; (s) ¬ # σ < ⌜n⌝ ⊦ #(σ to n) = ⌜n⌝ ; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ ¬ n∞ + n∞1 < n∞1; (s) 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 Used terms: n, σ3, (σ0 to n) + σ2
| ⊦ ¬ # σ < ⌜n⌝ → σ + σ0 to n = σ to n |
| # σ2 + # σ3 = # σ1, # σ = # σ0, (σ0 to n) + σ2 to n = (σ to n) + σ1 to n, n0 ≠ 0, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, n1 < n0, ⌜n1⌝ < # σσ, ¬ #((σ0 to n) + σ2) < ⌜n⌝ , ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ) ⊦ |
# σ = # σ0, # σ2 + # σ3 = # σ1, (σ0 to n) + σ2 to n = (σ to n) + σ1 to n, n0 ≠ 0, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, n1 < n0, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦
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∞ + n∞1 < n∞1; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ¬ # σ < ⌜n⌝ ⊦ #(σ to n) = ⌜n⌝ ; (s) ⊦ #(σ + σ1) = # σ + # σ1; (s)
| # σ = # σ0, # σ2 + # σ3 = # σ1, (σ0 to n) + σ2 to n = (σ to n) + σ1 to n, n0 ≠ 0, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, n1 < n0, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦ |
⊦ ¬ # σ < ⌜n⌝ → σ + σ0 to n = σ to n
# σ2 + # σ3 = # σ1, # σ = # σ0, σ0 to n to n = (σ to n) + σ1 to n, n0 ≠ 0, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, n1 < n0, ⌜n1⌝ < # σσ, ¬ #(σ0 to n) < ⌜n⌝ , ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ) ⊦
Used simplifier rules: ¬ # σ < ⌜n⌝ ⊦ #(σ to n) = ⌜n⌝ ; (s) ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ ¬ n < n; (s) Used terms: n, σ2, σ0 to n
| ⊦ ¬ # σ < ⌜n⌝ → σ + σ0 to n = σ to n |
| # σ2 + # σ3 = # σ1, # σ = # σ0, σ0 to n to n = (σ to n) + σ1 to n, n0 ≠ 0, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, n1 < n0, ⌜n1⌝ < # σσ, ¬ #(σ0 to n) < ⌜n⌝ , ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ) ⊦ |
# σ = # σ0, # σ2 + # σ3 = # σ1, σ0 to n = (σ to n) + σ1 to n, n0 ≠ 0, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, n1 < n0, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦
Used simplifier rules: ⊦ m ≤ m; (s) ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ¬ # σ < ⌜n⌝ ⊦ #(σ to n) = ⌜n⌝ ; (s) ¬ # σ < ⌜n⌝ ⊦ σ to n to n = σ to n; (s)
| # σ = # σ0, # σ2 + # σ3 = # σ1, σ0 to n = (σ to n) + σ1 to n, n0 ≠ 0, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, n1 < n0, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦ |
⊦ ¬ # σ < ⌜n⌝ → σ + σ0 to n = σ to n
Used simplifier rules: ¬ # σ < ⌜n⌝ ⊦ σ to n to n = σ to n; (s) ¬ # σ < ⌜n⌝ ⊦ #(σ to n) = ⌜n⌝ ; (s) ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ ¬ n < n; (s) Used terms: n, σ1, σ to n
| ⊦ ¬ # σ < ⌜n⌝ → σ + σ0 to n = σ to n |
| # σ = # σ0, (σ to n) + σ1 = σσ(n0), (σ0 to n) + σ2 = σσ(n1), σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, σσ(n0) ⊑ σσ(n1), ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ) ⊦ |
# σ = # σ0, (σ to n) + σ1 = σσ(n0), (σ0 to n) + σ2 = σσ(n1), σσ(n0) + σ3 = σσ(n1), σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦
Used simplifier rules: ⊦ σ1 ⊑ σ2 ↔ (∃ σ. σ1 + σ = σ2); (ls)
| # σ = # σ0, (σ to n) + σ1 = σσ(n0), (σ0 to n) + σ2 = σσ(n1), σσ(n0) + σ3 = σσ(n1), σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦ |
# σ = # σ0, ((σ to n) + σ1) + σ3 = σσ(n1), (σ0 to n) + σ2 = σσ(n1), σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ) ⊦
| # σ = # σ0, ((σ to n) + σ1) + σ3 = σσ(n1), (σ0 to n) + σ2 = σσ(n1), σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ) ⊦ |
# σ = # σ0, ((σ to n) + σ1) + σ3 = (σ0 to n) + σ2, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦
| # σ = # σ0, ((σ to n) + σ1) + σ3 = (σ0 to n) + σ2, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦ |
⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ¬ # σ0 < ⌜n⌝ → σ0 to n = σ1 to n)
#(((σ to n) + σ1) + σ3) = #((σ0 to n) + σ2), # σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n0. ¬ #(((σ to n) + σ1) + σ3) < ⌜n0⌝ → ((σ to n) + σ1) + σ3 to n0 = (σ0 to n) + σ2 to n0 ⊦
Used terms: (σ0 to n) + σ2, ((σ to n) + σ1) + σ3
| ⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ¬ # σ0 < ⌜n⌝ → σ0 to n = σ1 to n) |
| #(((σ to n) + σ1) + σ3) = #((σ0 to n) + σ2), # σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n0. ¬ #(((σ to n) + σ1) + σ3) < ⌜n0⌝ → ((σ to n) + σ1) + σ3 to n0 = (σ0 to n) + σ2 to n0 ⊦ |
# σ = # σ0, # σ1 + # σ3 = # σ2, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n2. ¬ ⌜n⌝ + # σ2 < ⌜n2⌝ → ((σ to n) + σ1) + σ3 to n2 = (σ0 to n) + σ2 to n2 ⊦
Used simplifier rules: append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ #(σ + σ1) = # σ + # σ1; (s) ¬ # σ < ⌜n⌝ ⊦ #(σ to n) = ⌜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 ⊦ ⌜n⌝ + n∞1 = ⌜n⌝ + n∞2 ↔ n∞1 = n∞2; (s)
| # σ = # σ0, # σ1 + # σ3 = # σ2, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n2. ¬ ⌜n⌝ + # σ2 < ⌜n2⌝ → ((σ to n) + σ1) + σ3 to n2 = (σ0 to n) + σ2 to n2 ⊦ |
# σ1 + # σ3 = # σ2, # σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ¬ ⌜n⌝ + # σ2 < ⌜n⌝ → ((σ to n) + σ1) + σ3 to n = (σ0 to n) + σ2 to n ⊦
Used terms: n
| # σ1 + # σ3 = # σ2, # σ = # σ0, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ¬ ⌜n⌝ + # σ2 < ⌜n⌝ → ((σ to n) + σ1) + σ3 to n = (σ0 to n) + σ2 to n ⊦ |
# σ = # σ0, # σ1 + # σ3 = # σ2, ((σ to n) + σ1) + σ3 to n = (σ0 to n) + σ2 to n, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦
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∞ + n∞1 < n∞1; (s)
| # σ = # σ0, # σ1 + # σ3 = # σ2, ((σ to n) + σ1) + σ3 to n = (σ0 to n) + σ2 to n, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦ |
⊦ ¬ # σ < ⌜n⌝ → σ + σ0 to n = σ to n
# σ1 + # σ3 = # σ2, # σ = # σ0, (σ to n) + σ1 to n = (σ0 to n) + σ2 to n, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, ¬ #((σ to n) + σ1) < ⌜n⌝ , ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ) ⊦
Used simplifier rules: ⊦ #(σ + σ1) = # σ + # σ1; (s) ¬ # σ < ⌜n⌝ ⊦ #(σ to n) = ⌜n⌝ ; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ ¬ n∞ + n∞1 < n∞1; (s) 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 Used terms: n, σ3, (σ to n) + σ1
| ⊦ ¬ # σ < ⌜n⌝ → σ + σ0 to n = σ to n |
| # σ1 + # σ3 = # σ2, # σ = # σ0, (σ to n) + σ1 to n = (σ0 to n) + σ2 to n, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, ¬ #((σ to n) + σ1) < ⌜n⌝ , ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ) ⊦ |
# σ = # σ0, # σ1 + # σ3 = # σ2, (σ to n) + σ1 to n = (σ0 to n) + σ2 to n, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦
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∞ + n∞1 < n∞1; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ¬ # σ < ⌜n⌝ ⊦ #(σ to n) = ⌜n⌝ ; (s) ⊦ #(σ + σ1) = # σ + # σ1; (s)
| # σ = # σ0, # σ1 + # σ3 = # σ2, (σ to n) + σ1 to n = (σ0 to n) + σ2 to n, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦ |
⊦ ¬ # σ < ⌜n⌝ → σ + σ0 to n = σ to n
# σ1 + # σ3 = # σ2, # σ = # σ0, σ to n to n = (σ0 to n) + σ2 to n, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, ¬ #(σ to n) < ⌜n⌝ , ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ) ⊦
Used simplifier rules: ¬ # σ < ⌜n⌝ ⊦ #(σ to n) = ⌜n⌝ ; (s) ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ ¬ n < n; (s) Used terms: n, σ1, σ to n
| ⊦ ¬ # σ < ⌜n⌝ → σ + σ0 to n = σ to n |
| # σ1 + # σ3 = # σ2, # σ = # σ0, σ to n to n = (σ0 to n) + σ2 to n, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, ¬ #(σ to n) < ⌜n⌝ , ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ) ⊦ |
# σ = # σ0, # σ1 + # σ3 = # σ2, σ to n = (σ0 to n) + σ2 to n, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦
Used simplifier rules: ⊦ m ≤ m; (s) ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ¬ # σ < ⌜n⌝ ⊦ #(σ to n) = ⌜n⌝ ; (s) ¬ # σ < ⌜n⌝ ⊦ σ to n to n = σ to n; (s)
| # σ = # σ0, # σ1 + # σ3 = # σ2, σ to n = (σ0 to n) + σ2 to n, σ to n ≠ σ0 to n, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ⌜n1⌝ < # σσ, ¬ # σ0 < ⌜n⌝ , ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦ |
⊦ ¬ # σ < ⌜n⌝ → σ + σ0 to n = σ to n
Used simplifier rules: ¬ # σ < ⌜n⌝ ⊦ σ to n to n = σ to n; (s) ¬ # σ < ⌜n⌝ ⊦ #(σ to n) = ⌜n⌝ ; (s) ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ ¬ n < n; (s) Used terms: n, σ2, σ0 to n
| ⊦ ¬ # σ < ⌜n⌝ → σ + σ0 to n = σ to n |
| # σ ≠ # σ0, σσ ≠ [], mon(σσ), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σ to m) + σ0 = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), # σ ≠ # σ0 ∨ ¬(¬ # σ < ⌜n⌝ → σ to n = σ0 to n) ⊦ |
# σ ≠ # σ0, σσ ≠ [], mon(σσ), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σ to m) + σ0 = σσ(n))), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦
| # σ ≠ # σ0, σσ ≠ [], mon(σσ), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σ to m) + σ0 = σσ(n))), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦ |
∞ = # σ, # σ ≠ # σ0, σσ ≠ [], mon(σσ), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σ to m) + σ0 = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ) ⊦
⌜n⌝ = # σ, # σ ≠ # σ0, σσ ≠ [], mon(σσ), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σ to m) + σ0 = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ) ⊦
Used simplifier rules: Natinf freely generated by ∞, ⌝;
| ∞ = # σ, # σ ≠ # σ0, σσ ≠ [], mon(σσ), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σ to m) + σ0 = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ) ⊦ |
∞ = # σ, σσ ≠ [], ∞ ≠ # σ0, mon(σσ), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ m. ∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σ to m) + σ0 = σσ(n)), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ) ⊦
Used simplifier rules: ⊦ ¬ ∞ < n∞; (s)
| ∞ = # σ, σσ ≠ [], ∞ ≠ # σ0, mon(σσ), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ m. ∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σ to m) + σ0 = σσ(n)), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ) ⊦ |
⊦ n∞ = ∞ ↔ ¬(∃ n. n∞ = ⌜n⌝ )
∞ = # σ, σσ ≠ [], mon(σσ), ∀ m. ∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σ to m) + σ0 = σσ(n)), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∃ n. # σ0 = ⌜n⌝ ⊦
Used terms: # σ0
| ⊦ n∞ = ∞ ↔ ¬(∃ n. n∞ = ⌜n⌝ ) |
| ∞ = # σ, σσ ≠ [], mon(σσ), ∀ m. ∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σ to m) + σ0 = σσ(n)), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∃ n. # σ0 = ⌜n⌝ ⊦ |
# σ0 = ⌜n⌝ , ∞ = # σ, σσ ≠ [], mon(σσ), ∀ m. ∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σ to m) + σ0 = σσ(n)), ∀ m. ¬ n < m → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦
Used simplifier rules: ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s)
| # σ0 = ⌜n⌝ , ∞ = # σ, σσ ≠ [], mon(σσ), ∀ m. ∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σ to m) + σ0 = σσ(n)), ∀ m. ¬ n < m → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦ |
# σ0 = ⌜n⌝ , ∞ = # σ, σσ ≠ [], mon(σσ), ∀ m. ¬ n < m → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∃ n0. ⌜n0⌝ < # σσ ∧ (∃ σ0. (σ to n + 1) + σ0 = σσ(n0)) ⊦
Used terms: n + 1
| # σ0 = ⌜n⌝ , ∞ = # σ, σσ ≠ [], mon(σσ), ∀ m. ¬ n < m → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∃ n0. ⌜n0⌝ < # σσ ∧ (∃ σ0. (σ to n + 1) + σ0 = σσ(n0)) ⊦ |
# σ0 = ⌜n⌝ , (σ to n + 1) + σ1 = σσ(n0), ∞ = # σ, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ∀ m. ¬ n < m → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦
| # σ0 = ⌜n⌝ , (σ to n + 1) + σ1 = σσ(n0), ∞ = # σ, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ∀ m. ¬ n < m → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦ |
# σ0 = ⌜n⌝ , (σ to n + 1) + σ1 = σσ(n0), ∞ = # σ, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ∀ m. ¬ n < m → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ⌜n0⌝ < # σσ → (∃ σ. σσ(n0) + σ = σ0) ⊦
Used terms: n0
| # σ0 = ⌜n⌝ , (σ to n + 1) + σ1 = σσ(n0), ∞ = # σ, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ∀ m. ¬ n < m → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ⌜n0⌝ < # σσ → (∃ σ. σσ(n0) + σ = σ0) ⊦ |
# σσ(n0) + # σ2 = ⌜n⌝ , (σ to n + 1) + σ1 = σσ(n0), ∞ = # σ, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ∀ m. ¬ n < m → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σσ(n0) + σ2 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ) ⊦
Used simplifier rules: append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ #(σ + σ1) = # σ + # σ1; (s)
| # σσ(n0) + # σ2 = ⌜n⌝ , (σ to n + 1) + σ1 = σσ(n0), ∞ = # σ, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ∀ m. ¬ n < m → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σσ(n0) + σ2 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ) ⊦ |
#((σ to n + 1) + σ1) + # σ2 = ⌜n⌝ , (σ to n + 1) + σ1 = σσ(n0), ∞ = # σ, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ∀ m. ¬ n < m → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σσ(n0) + σ2 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ) ⊦
| #((σ to n + 1) + σ1) + # σ2 = ⌜n⌝ , (σ to n + 1) + σ1 = σσ(n0), ∞ = # σ, σσ ≠ [], mon(σσ), ⌜n0⌝ < # σσ, ∀ m. ¬ n < m → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σσ(n0) + σ2 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ) ⊦ |
⊦ #(σ + σ1) = # σ + # σ1
Used simplifier rules: ⊦ ¬ ∞ < n∞; (s) ¬ # σ < ⌜n⌝ ⊦ #(σ to n) = ⌜n⌝ ; (s) ⊦ ⌜m + n⌝ = ⌜m⌝ + ⌜n⌝ ; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ ⌜n⌝ + n∞ = ⌜n⌝ ↔ n∞ = ⌜0⌝ ; (s) ⊦ n∞ + n∞1 = ⌜0⌝ ↔ n∞ = ⌜0⌝ ∧ n∞1 = ⌜0⌝ ; (ws) ⊦ ⌜n⌝ = ⌜n0⌝ ↔ n = n0; (s) 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 Used terms: σ1, σ to n + 1
| ⊦ #(σ + σ1) = # σ + # σ1 |
| ⌜n⌝ = # σ, # σ ≠ # σ0, σσ ≠ [], mon(σσ), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ m. ¬ # σ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σ to m) + σ0 = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ) ⊦ |
⌜n⌝ = # σ, ⌜n⌝ ≠ # σ0, σσ ≠ [], mon(σσ), ∀ m. ¬ ⌜n⌝ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σ to m) + σ0 = σσ(n))), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦
| ⌜n⌝ = # σ, ⌜n⌝ ≠ # σ0, σσ ≠ [], mon(σσ), ∀ m. ¬ ⌜n⌝ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σ to m) + σ0 = σσ(n))), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦ |
⌜n⌝ = # σ, ⌜n⌝ ≠ # σ0, σσ ≠ [], mon(σσ), ⌜n⌝ < # σ0, ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ m. ¬ ⌜n⌝ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σ to m) + σ0 = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ) ⊦
⌜n⌝ = # σ, ⌜n⌝ ≠ # σ0, σσ ≠ [], mon(σσ), ¬ ⌜n⌝ < # σ0, ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ m. ¬ ⌜n⌝ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σ to m) + σ0 = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ) ⊦
Used formulas: ⌜n⌝ < # σ0
| ⌜n⌝ = # σ, ⌜n⌝ ≠ # σ0, σσ ≠ [], mon(σσ), ⌜n⌝ < # σ0, ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ m. ¬ ⌜n⌝ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σ to m) + σ0 = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ) ⊦ |
⌜n⌝ = # σ, ⌜n⌝ ≠ # σ0, σσ ≠ [], mon(σσ), ⌜n⌝ < # σ0, ∀ m. ¬ ⌜n⌝ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σ to m) + σ0 = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ¬ # σ0 < ⌜n + 1⌝ → (∃ n0. ⌜n0⌝ < # σσ ∧ (∃ σ. (σ0 to n + 1) + σ = σσ(n0))) ⊦
Used terms: n + 1
| ⌜n⌝ = # σ, ⌜n⌝ ≠ # σ0, σσ ≠ [], mon(σσ), ⌜n⌝ < # σ0, ∀ m. ¬ ⌜n⌝ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σ to m) + σ0 = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ¬ # σ0 < ⌜n + 1⌝ → (∃ n0. ⌜n0⌝ < # σσ ∧ (∃ σ. (σ0 to n + 1) + σ = σσ(n0))) ⊦ |
⌜n⌝ = # σ, (σ0 to n + 1) + σ1 = σσ(n0), ⌜n⌝ ≠ # σ0, σσ ≠ [], mon(σσ), ⌜n⌝ < # σ0, ⌜n0⌝ < # σσ, ∀ m. ¬ ⌜n⌝ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σ to m) + σ0 = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ) ⊦
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⌝ + ⌜1⌝ ↔ ¬ ⌜n⌝ < # σ; (s) 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)
| ⌜n⌝ = # σ, (σ0 to n + 1) + σ1 = σσ(n0), ⌜n⌝ ≠ # σ0, σσ ≠ [], mon(σσ), ⌜n⌝ < # σ0, ⌜n0⌝ < # σσ, ∀ m. ¬ ⌜n⌝ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σ to m) + σ0 = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ) ⊦ |
⌜n⌝ = # σ, (σ0 to n + 1) + σ1 = σσ(n0), ⌜n⌝ ≠ # σ0, σσ ≠ [], mon(σσ), ⌜n⌝ < # σ0, ⌜n0⌝ < # σσ, ∀ m. ¬ ⌜n⌝ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σ to m) + σ0 = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ⌜n0⌝ < # σσ → (∃ σ0. σσ(n0) + σ0 = σ) ⊦
Used terms: n0
| ⌜n⌝ = # σ, (σ0 to n + 1) + σ1 = σσ(n0), ⌜n⌝ ≠ # σ0, σσ ≠ [], mon(σσ), ⌜n⌝ < # σ0, ⌜n0⌝ < # σσ, ∀ m. ¬ ⌜n⌝ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σ to m) + σ0 = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ⌜n0⌝ < # σσ → (∃ σ0. σσ(n0) + σ0 = σ) ⊦ |
⌜n⌝ = # σσ(n0) + # σ2, (σ0 to n + 1) + σ1 = σσ(n0), ⌜n⌝ ≠ # σ0, σσ ≠ [], mon(σσ), ⌜n⌝ < # σ0, ⌜n0⌝ < # σσ, ∀ m. ¬ n < m → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σσ(n0) + σ2 to m) + σ0 = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦
Used simplifier rules: append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ #(σ + σ1) = # σ + # σ1; (s) ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s)
| ⌜n⌝ = # σσ(n0) + # σ2, (σ0 to n + 1) + σ1 = σσ(n0), ⌜n⌝ ≠ # σ0, σσ ≠ [], mon(σσ), ⌜n⌝ < # σ0, ⌜n0⌝ < # σσ, ∀ m. ¬ n < m → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σσ(n0) + σ2 to m) + σ0 = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦ |
Used simplifier rules: ⊦ #(σ + σ1) = # σ + # σ1; (s) ⊦ # σ < ⌜n⌝ + ⌜1⌝ ↔ ¬ ⌜n⌝ < # σ; (s) ¬ # σ < ⌜n⌝ ⊦ #(σ to n) = ⌜n⌝ ; (s) ⊦ ⌜m + n⌝ = ⌜m⌝ + ⌜n⌝ ; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ ⌜n⌝ + n∞ = ⌜n⌝ ↔ n∞ = ⌜0⌝ ; (s) ⊦ n∞ + n∞1 = ⌜0⌝ ↔ n∞ = ⌜0⌝ ∧ n∞1 = ⌜0⌝ ; (ws) ⊦ ⌜n⌝ = ⌜n0⌝ ↔ n = n0; (s) 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⌝ = # σ, ⌜n⌝ ≠ # σ0, σσ ≠ [], mon(σσ), ¬ ⌜n⌝ < # σ0, ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ m. ¬ ⌜n⌝ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σ to m) + σ0 = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ) ⊦ |
⌜n⌝ = # σ, ⌜n0⌝ = # σ0, ⌜n⌝ ≠ # σ0, σσ ≠ [], mon(σσ), ¬ ⌜n⌝ < # σ0, ∀ m. ¬ ⌜n⌝ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σ to m) + σ0 = σσ(n))), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦
Used simplifier rules: Natinf freely generated by ∞, ⌝; ⊦ ⌜n⌝ ≠ ∞; (s) ⊦ ⌜m⌝ < ∞; (s)
| ⌜n⌝ = # σ, ⌜n0⌝ = # σ0, ⌜n⌝ ≠ # σ0, σσ ≠ [], mon(σσ), ¬ ⌜n⌝ < # σ0, ∀ m. ¬ ⌜n⌝ < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σ to m) + σ0 = σσ(n))), ∀ m. ¬ # σ0 < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦ |
⌜n⌝ = # σ, ⌜n0⌝ = # σ0, n ≠ n0, n ≠ 0, σσ ≠ [], mon(σσ), n0 < n, ∀ m. ¬ n < m → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σ to m) + σ0 = σσ(n))), ∀ m. ¬ n0 < m → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦
Used simplifier rules: f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ m ≠ n → (m < n ↔ ¬ n < m); (ss) ⊦ ⌜n⌝ = ⌜n0⌝ ↔ n = n0; (s)
| ⌜n⌝ = # σ, ⌜n0⌝ = # σ0, n ≠ n0, n ≠ 0, σσ ≠ [], mon(σσ), n0 < n, ∀ m. ¬ n < m → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ0. (σ to m) + σ0 = σσ(n))), ∀ m. ¬ n0 < m → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0) ⊦ |
⌜n⌝ = # σ, ⌜n0⌝ = # σ0, n ≠ n0, n ≠ 0, σσ ≠ [], mon(σσ), n0 < n, ∀ m. ¬ n0 < m → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ¬ n < n → (∃ n0. ⌜n0⌝ < # σσ ∧ (∃ σ0. (σ to n) + σ0 = σσ(n0))) ⊦
Used terms: n
| ⌜n⌝ = # σ, ⌜n0⌝ = # σ0, n ≠ n0, n ≠ 0, σσ ≠ [], mon(σσ), n0 < n, ∀ m. ¬ n0 < m → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ¬ n < n → (∃ n0. ⌜n0⌝ < # σσ ∧ (∃ σ0. (σ to n) + σ0 = σσ(n0))) ⊦ |
⌜n⌝ = # σ, ⌜n0⌝ = # σ0, σ + σ1 = σσ(n1), n ≠ n0, σσ ≠ [], n0 < n, ⌜n1⌝ < # σσ, ∀ m. ¬ n0 < m → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n1. ⌜n1⌝ + ⌜1⌝ < # σσ → (∃ σ. σσ(n1) + σ = σσ(n1 + 1)) ⊦
Used simplifier rules: mon-def: ⊦ mon(σσ) ↔ (∀ n. ⌜n⌝ + ⌜1⌝ < # σσ → σσ(n) ⊑ σσ(n + 1)); ⊦ # σ = ⌜n⌝ → σ to n = σ; (s) ⊦ ¬ n < n; (s) ⊦ σ1 ⊑ σ2 ↔ (∃ σ. σ1 + σ = σ2); (ls) ⊦ m < n → n ≠ 0; (s)
| ⌜n⌝ = # σ, ⌜n0⌝ = # σ0, σ + σ1 = σσ(n1), n ≠ n0, σσ ≠ [], n0 < n, ⌜n1⌝ < # σσ, ∀ m. ¬ n0 < m → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n. ⌜n⌝ < # σσ → (∃ σ. σσ(n) + σ = σ0), ∀ n1. ⌜n1⌝ + ⌜1⌝ < # σσ → (∃ σ. σσ(n1) + σ = σσ(n1 + 1)) ⊦ |
⌜n⌝ = # σ, ⌜n0⌝ = # σ0, σ + σ1 = σσ(n1), n ≠ n0, σσ ≠ [], n0 < n, ⌜n1⌝ < # σσ, ∀ m. ¬ n0 < m → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n1. ⌜n1⌝ + ⌜1⌝ < # σσ → (∃ σ. σσ(n1) + σ = σσ(n1 + 1)), ⌜n1⌝ < # σσ → (∃ σ. σσ(n1) + σ = σ0) ⊦
Used terms: n1
| ⌜n⌝ = # σ, ⌜n0⌝ = # σ0, σ + σ1 = σσ(n1), n ≠ n0, σσ ≠ [], n0 < n, ⌜n1⌝ < # σσ, ∀ m. ¬ n0 < m → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σ0 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n1. ⌜n1⌝ + ⌜1⌝ < # σσ → (∃ σ. σσ(n1) + σ = σσ(n1 + 1)), ⌜n1⌝ < # σσ → (∃ σ. σσ(n1) + σ = σ0) ⊦ |
⌜n⌝ = # σ, ⌜n0⌝ = # σσ(n1) + # σ2, σ + σ1 = σσ(n1), n ≠ n0, σσ ≠ [], n0 < n, ⌜n1⌝ < # σσ, ∀ m. ¬ n0 < m → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σσ(n1) + σ2 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n1. ⌜n1⌝ + ⌜1⌝ < # σσ → (∃ σ. σσ(n1) + σ = σσ(n1 + 1)) ⊦
Used simplifier rules: append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ #(σ + σ1) = # σ + # σ1; (s)
| ⌜n⌝ = # σ, ⌜n0⌝ = # σσ(n1) + # σ2, σ + σ1 = σσ(n1), n ≠ n0, σσ ≠ [], n0 < n, ⌜n1⌝ < # σσ, ∀ m. ¬ n0 < m → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σσ(n1) + σ2 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n1. ⌜n1⌝ + ⌜1⌝ < # σσ → (∃ σ. σσ(n1) + σ = σσ(n1 + 1)) ⊦ |
⌜n⌝ = # σ, ⌜n0⌝ = #(σ + σ1) + # σ2, n ≠ n0, σσ ≠ [], n0 < n, ⌜n1⌝ < # σσ, ∀ m. ¬ n0 < m → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σσ(n1) + σ2 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n1. ⌜n1⌝ + ⌜1⌝ < # σσ → (∃ σ. σσ(n1) + σ = σσ(n1 + 1)) ⊦
| ⌜n⌝ = # σ, ⌜n0⌝ = #(σ + σ1) + # σ2, n ≠ n0, σσ ≠ [], n0 < n, ⌜n1⌝ < # σσ, ∀ m. ¬ n0 < m → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σσ(n1) + σ2 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n1. ⌜n1⌝ + ⌜1⌝ < # σσ → (∃ σ. σσ(n1) + σ = σσ(n1 + 1)) ⊦ |
⌜n⌝ = # σ, ⌜n0⌝ = (⌜n⌝ + # σ1) + # σ2, n ≠ n0, σσ ≠ [], n0 < n, ⌜n1⌝ < # σσ, ∀ m. ¬ n0 < m → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σσ(n1) + σ2 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n1. ⌜n1⌝ + ⌜1⌝ < # σσ → (∃ σ. σσ(n1) + σ = σσ(n1 + 1)) ⊦
Used simplifier rules: add-assoc: ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2; from specification nat-inf append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ #(σ + σ1) = # σ + # σ1; (s)
| ⌜n⌝ = # σ, ⌜n0⌝ = (⌜n⌝ + # σ1) + # σ2, n ≠ n0, σσ ≠ [], n0 < n, ⌜n1⌝ < # σσ, ∀ m. ¬ n0 < m → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σσ(n1) + σ2 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n1. ⌜n1⌝ + ⌜1⌝ < # σσ → (∃ σ. σσ(n1) + σ = σσ(n1 + 1)) ⊦ |
⌜n⌝ = # σ, ⌜n0⌝ = (⌜n⌝ + # σ1) + # σ2, ⌜n2⌝ = # σ2, n ≠ n0, σσ ≠ [], n0 < n, ⌜n1⌝ < # σσ, ∀ m. ¬ n0 < m → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σσ(n1) + σ2 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n1. ⌜n1⌝ + ⌜1⌝ < # σσ → (∃ σ. σσ(n1) + σ = σσ(n1 + 1)) ⊦
Used simplifier rules: Natinf freely generated by ∞, ⌝; ⊦ ∞ + ⌜m⌝ = ∞; (s) ⊦ 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 ⊦ ⌜n⌝ ≠ ∞; (s)
| ⌜n⌝ = # σ, ⌜n0⌝ = (⌜n⌝ + # σ1) + # σ2, ⌜n2⌝ = # σ2, n ≠ n0, σσ ≠ [], n0 < n, ⌜n1⌝ < # σσ, ∀ m. ¬ n0 < m → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σσ(n1) + σ2 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n1. ⌜n1⌝ + ⌜1⌝ < # σσ → (∃ σ. σσ(n1) + σ = σσ(n1 + 1)) ⊦ |
⌜n⌝ = # σ, ⌜n0⌝ = (⌜n⌝ + # σ1) + ⌜n2⌝ , ⌜n2⌝ = # σ2, n ≠ n0, σσ ≠ [], n0 < n, ⌜n1⌝ < # σσ, ∀ m. ¬ n0 < m → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σσ(n1) + σ2 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n1. ⌜n1⌝ + ⌜1⌝ < # σσ → (∃ σ. σσ(n1) + σ = σσ(n1 + 1)) ⊦
| ⌜n⌝ = # σ, ⌜n0⌝ = (⌜n⌝ + # σ1) + ⌜n2⌝ , ⌜n2⌝ = # σ2, n ≠ n0, σσ ≠ [], n0 < n, ⌜n1⌝ < # σσ, ∀ m. ¬ n0 < m → (∃ n. ⌜n⌝ < # σσ ∧ (∃ σ. (σσ(n1) + σ2 to m) + σ = σσ(n))), ∀ n. ⌜n⌝ < # σσ → (∃ σ0. σσ(n) + σ0 = σ), ∀ n1. ⌜n1⌝ + ⌜1⌝ < # σσ → (∃ σ. σσ(n1) + σ = σσ(n1 + 1)) ⊦ |
Used simplifier rules: Natinf freely generated by ∞, ⌝; ⊦ ⌜n1⌝ + ⌜n⌝ + ⌜m⌝ = ⌜n0⌝ ↔ n1 + n + m = n0; (s) 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 ⊦ m = 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 ⊦ ∞ + ⌜m⌝ = ∞; (s) ⊦ ⌜n⌝ ≠ ∞; (s)
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.