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