| mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ ⊦ # lim(⌜σf⌝ ) = # lim(⌜σg⌝ ) + ⌜m⌝ |
# lim(⌜σf⌝ ) ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , mon(⌜σg⌝ ), mon(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ ⊦
| # lim(⌜σf⌝ ) ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , mon(⌜σg⌝ ), mon(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ ⊦ |
⊦ mon(σσ) ∧ σσ ≠ [] → (∀ n. ⌜n⌝ < # σσ → σσ(n) ⊑ lim(σσ)) ∧ (∀ m. ¬ # lim(σσ) < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜lim(σσ).take(m)⌝ ⊑ σσ(n)))
# lim(⌜σf⌝ ) ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , mon(⌜σf⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ) ∧ ⌜σf⌝ ≠ [] → (∀ n. ⌜n⌝ < # ⌜σf⌝ → ⌜σf⌝ (n) ⊑ lim(⌜σf⌝ )) ∧ (∀ m. ¬ # lim(⌜σf⌝ ) < ⌜m⌝ → (∃ n. ⌜n⌝ < # ⌜σf⌝ ∧ ⌜lim(⌜σf⌝ ).take(m)⌝ ⊑ ⌜σf⌝ (n))), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ ⊦
Used terms: ⌜σf⌝
| ⊦ mon(σσ) ∧ σσ ≠ [] → (∀ n. ⌜n⌝ < # σσ → σσ(n) ⊑ lim(σσ)) ∧ (∀ m. ¬ # lim(σσ) < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜lim(σσ).take(m)⌝ ⊑ σσ(n))) |
| # lim(⌜σf⌝ ) ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , mon(⌜σf⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ) ∧ ⌜σf⌝ ≠ [] → (∀ n. ⌜n⌝ < # ⌜σf⌝ → ⌜σf⌝ (n) ⊑ lim(⌜σf⌝ )) ∧ (∀ m. ¬ # lim(⌜σf⌝ ) < ⌜m⌝ → (∃ n. ⌜n⌝ < # ⌜σf⌝ ∧ ⌜lim(⌜σf⌝ ).take(m)⌝ ⊑ ⌜σf⌝ (n))), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ ⊦ |
# lim(⌜σf⌝ ) ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , mon(⌜σg⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ) ⊦
Used simplifier rules: ⊦ ⌜nf⌝ (n) = nf(n); (s) ⊦ ⌜m⌝ < ∞; (s) ⊦ # ⌜nf⌝ = ∞; (s) ⊦ [] ≠ ⌜nf⌝ ; (s)
| # lim(⌜σf⌝ ) ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , mon(⌜σg⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ) ⊦ |
⊦ mon(σσ) ∧ σσ ≠ [] → (∀ n. ⌜n⌝ < # σσ → σσ(n) ⊑ lim(σσ)) ∧ (∀ m. ¬ # lim(σσ) < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜lim(σσ).take(m)⌝ ⊑ σσ(n)))
# lim(⌜σf⌝ ) ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), mon(⌜σg⌝ ) ∧ ⌜σg⌝ ≠ [] → (∀ n. ⌜n⌝ < # ⌜σg⌝ → ⌜σg⌝ (n) ⊑ lim(⌜σg⌝ )) ∧ (∀ m. ¬ # lim(⌜σg⌝ ) < ⌜m⌝ → (∃ n. ⌜n⌝ < # ⌜σg⌝ ∧ ⌜lim(⌜σg⌝ ).take(m)⌝ ⊑ ⌜σg⌝ (n))), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ ⊦
Used terms: ⌜σg⌝
| ⊦ mon(σσ) ∧ σσ ≠ [] → (∀ n. ⌜n⌝ < # σσ → σσ(n) ⊑ lim(σσ)) ∧ (∀ m. ¬ # lim(σσ) < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜lim(σσ).take(m)⌝ ⊑ σσ(n))) |
| # lim(⌜σf⌝ ) ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), mon(⌜σg⌝ ) ∧ ⌜σg⌝ ≠ [] → (∀ n. ⌜n⌝ < # ⌜σg⌝ → ⌜σg⌝ (n) ⊑ lim(⌜σg⌝ )) ∧ (∀ m. ¬ # lim(⌜σg⌝ ) < ⌜m⌝ → (∃ n. ⌜n⌝ < # ⌜σg⌝ ∧ ⌜lim(⌜σg⌝ ).take(m)⌝ ⊑ ⌜σg⌝ (n))), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ ⊦ |
# lim(⌜σf⌝ ) ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , mon(⌜σg⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ) ⊦
Used simplifier rules: ⊦ ⌜nf⌝ (n) = nf(n); (s) ⊦ ⌜m⌝ < ∞; (s) ⊦ # ⌜nf⌝ = ∞; (s) ⊦ [] ≠ ⌜nf⌝ ; (s)
| # lim(⌜σf⌝ ) ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , mon(⌜σg⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ) ⊦ |
# lim(⌜σf⌝ ) ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , # lim(⌜σf⌝ ) < # lim(⌜σg⌝ ) + ⌜m⌝ , mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ ⊦
# lim(⌜σf⌝ ) ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , mon(⌜σf⌝ ), mon(⌜σg⌝ ), ¬ # lim(⌜σf⌝ ) < # lim(⌜σg⌝ ) + ⌜m⌝ , ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ ⊦
Used formulas: # lim(⌜σf⌝ ) < # lim(⌜σg⌝ ) + ⌜m⌝
| # lim(⌜σf⌝ ) ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , # lim(⌜σf⌝ ) < # lim(⌜σg⌝ ) + ⌜m⌝ , mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ ⊦ |
⌜m0⌝ = # lim(⌜σf⌝ ), # lim(⌜σf⌝ ) ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , # lim(⌜σf⌝ ) < # lim(⌜σg⌝ ) + ⌜m⌝ , mon(⌜σg⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ) ⊦
Used simplifier rules: Natinf freely generated by ∞, ⌝; ⊦ ⌜m⌝ + n∞ = ∞ ↔ n∞ = ∞; (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∞; (s)
| ⌜m0⌝ = # lim(⌜σf⌝ ), # lim(⌜σf⌝ ) ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , # lim(⌜σf⌝ ) < # lim(⌜σg⌝ ) + ⌜m⌝ , mon(⌜σg⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ) ⊦ |
⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , ⌜m0⌝ < # lim(⌜σg⌝ ) + ⌜m⌝ , mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ ⊦
| ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , ⌜m0⌝ < # lim(⌜σg⌝ ) + ⌜m⌝ , mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ ⊦ |
⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , m ≤ m0, ⌜m0⌝ < # lim(⌜σg⌝ ) + ⌜m⌝ , mon(⌜σg⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ) ⊦
⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , ⌜m0⌝ < # lim(⌜σg⌝ ) + ⌜m⌝ , mon(⌜σg⌝ ), mon(⌜σf⌝ ), ¬ m ≤ m0, ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ) ⊦
Used formulas: m ≤ m0
| ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , m ≤ m0, ⌜m0⌝ < # lim(⌜σg⌝ ) + ⌜m⌝ , mon(⌜σg⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ) ⊦ |
⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , m ≤ m0, ⌜m0⌝ < # lim(⌜σg⌝ ) + ⌜m⌝ , mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ¬ # lim(⌜σg⌝ ) < ⌜(m0 - m) + 1⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take((m0 - m) + 1)⌝ ⊑ σg(n)) ⊦
Used terms: (m0 - m) + 1
| ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , m ≤ m0, ⌜m0⌝ < # lim(⌜σg⌝ ) + ⌜m⌝ , mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ¬ # lim(⌜σg⌝ ) < ⌜(m0 - m) + 1⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take((m0 - m) + 1)⌝ ⊑ σg(n)) ⊦ |
⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , m ≤ m0, ⌜m0⌝ < # lim(⌜σg⌝ ) + ⌜m⌝ , mon(⌜σg⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ⌜m0 - m⌝ < # lim(⌜σg⌝ ) → ⌜lim(⌜σg⌝ ).take((m0 - m) + 1)⌝ ⊑ σg(n), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ) ⊦
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)
| ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , m ≤ m0, ⌜m0⌝ < # lim(⌜σg⌝ ) + ⌜m⌝ , mon(⌜σg⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ⌜m0 - m⌝ < # lim(⌜σg⌝ ) → ⌜lim(⌜σg⌝ ).take((m0 - m) + 1)⌝ ⊑ σg(n), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ) ⊦ |
⌜m0⌝ = # lim(⌜σf⌝ ), m0 = n0 + m, ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , m ≤ m0, ⌜m0⌝ < # lim(⌜σg⌝ ) + ⌜m⌝ , mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ⌜n0⌝ < # lim(⌜σg⌝ ) → ⌜lim(⌜σg⌝ ).take(n0 + 1)⌝ ⊑ σg(n) ⊦
Used simplifier rules: n ≤ m ⊦ n0 = m - n ↔ m = n0 + n; (elim) Used terms: m0, m, n0
| ⌜m0⌝ = # lim(⌜σf⌝ ), m0 = n0 + m, ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , m ≤ m0, ⌜m0⌝ < # lim(⌜σg⌝ ) + ⌜m⌝ , mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ⌜n0⌝ < # lim(⌜σg⌝ ) → ⌜lim(⌜σg⌝ ).take(n0 + 1)⌝ ⊑ σg(n) ⊦ |
⌜n0⌝ + ⌜m⌝ = # lim(⌜σf⌝ ), ⌜n0⌝ ≠ # lim(⌜σg⌝ ), ⌜lim(⌜σg⌝ ).take(n0 + 1)⌝ ⊑ σg(n), mon(⌜σf⌝ ), mon(⌜σg⌝ ), ⌜n0⌝ < # lim(⌜σg⌝ ), ∀ m0. ¬ n0 + m < m0 → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ ⊦
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⌝ + ⌜m⌝ < ⌜n0⌝ ↔ n + m < n0; (s) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m ≤ m + n; (s) ⊦ ⌜n⌝ + n∞1 < ⌜n⌝ + n∞2 ↔ n∞1 < n∞2; (s) ⊦ ⌜m + n⌝ = ⌜m⌝ + ⌜n⌝ ; (s) ⊦ ⌜n⌝ + n∞1 = ⌜n⌝ + n∞2 ↔ n∞1 = n∞2; (s)
| ⌜n0⌝ + ⌜m⌝ = # lim(⌜σf⌝ ), ⌜n0⌝ ≠ # lim(⌜σg⌝ ), ⌜lim(⌜σg⌝ ).take(n0 + 1)⌝ ⊑ σg(n), mon(⌜σf⌝ ), mon(⌜σg⌝ ), ⌜n0⌝ < # lim(⌜σg⌝ ), ∀ m0. ¬ n0 + m < m0 → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
⌜n0⌝ + ⌜m⌝ = # lim(⌜σf⌝ ), ⌜n0⌝ ≠ # lim(⌜σg⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ⌜n0⌝ < # lim(⌜σg⌝ ), ∀ m0. ¬ n0 + m < m0 → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∃ x_σ. ⌜lim(⌜σg⌝ ).take(n0 + 1)⌝ + x_σ = σg(n) ⊦
Used terms: ⌜lim(⌜σg⌝ ).take(n0 + 1)⌝ , σg(n)
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| ⌜n0⌝ + ⌜m⌝ = # lim(⌜σf⌝ ), ⌜n0⌝ ≠ # lim(⌜σg⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ⌜n0⌝ < # lim(⌜σg⌝ ), ∀ m0. ¬ n0 + m < m0 → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∃ x_σ. ⌜lim(⌜σg⌝ ).take(n0 + 1)⌝ + x_σ = σg(n) ⊦ |
⌜lim(⌜σg⌝ ).take(n0 + 1)⌝ + x_σ = σg(n), ⌜n0⌝ + ⌜m⌝ = # lim(⌜σf⌝ ), ⌜n0⌝ ≠ # lim(⌜σg⌝ ), mon(⌜σf⌝ ), mon(⌜σg⌝ ), ⌜n0⌝ < # lim(⌜σg⌝ ), ∀ m0. ¬ n0 + m < m0 → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ ⊦
| ⌜lim(⌜σg⌝ ).take(n0 + 1)⌝ + x_σ = σg(n), ⌜n0⌝ + ⌜m⌝ = # lim(⌜σf⌝ ), ⌜n0⌝ ≠ # lim(⌜σg⌝ ), mon(⌜σf⌝ ), mon(⌜σg⌝ ), ⌜n0⌝ < # lim(⌜σg⌝ ), ∀ m0. ¬ n0 + m < m0 → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ ⊦ |
⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n))
#(⌜lim(⌜σg⌝ ).take(n0 + 1)⌝ + x_σ) = # σg(n), ⌜n0⌝ + ⌜m⌝ = # lim(⌜σf⌝ ), ⌜n0⌝ ≠ # lim(⌜σg⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ⌜n0⌝ < # lim(⌜σg⌝ ), ∀ m0. ¬ n0 + m < m0 → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n1. ⌜n1⌝ < #(⌜lim(⌜σg⌝ ).take(n0 + 1)⌝ + x_σ) → (⌜lim(⌜σg⌝ ).take(n0 + 1)⌝ + x_σ)(n1) = σg(n)(n1) ⊦
Used terms: ⌜lim(⌜σg⌝ ).take(n0 + 1)⌝ + x_σ, σg(n)
| ⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n)) |
| #(⌜lim(⌜σg⌝ ).take(n0 + 1)⌝ + x_σ) = # σg(n), ⌜n0⌝ + ⌜m⌝ = # lim(⌜σf⌝ ), ⌜n0⌝ ≠ # lim(⌜σg⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ⌜n0⌝ < # lim(⌜σg⌝ ), ∀ m0. ¬ n0 + m < m0 → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n1. ⌜n1⌝ < #(⌜lim(⌜σg⌝ ).take(n0 + 1)⌝ + x_σ) → (⌜lim(⌜σg⌝ ).take(n0 + 1)⌝ + x_σ)(n1) = σg(n)(n1) ⊦ |
⌜n0⌝ + ⌜m⌝ = # lim(⌜σf⌝ ), (⌜n0⌝ + ⌜1⌝ ) + # x_σ = # σg(n), ⌜n0⌝ ≠ # lim(⌜σg⌝ ), mon(⌜σf⌝ ), mon(⌜σg⌝ ), ⌜n0⌝ < # lim(⌜σg⌝ ), ∀ m0. ¬ n0 + m < m0 → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n1. ¬ ⌜n0⌝ + # x_σ < ⌜n1⌝ → (⌜lim(⌜σg⌝ ).take(n0 + 1)⌝ + x_σ)(n1) = σg(n)(n1) ⊦
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∞ ↔ ¬ n∞ < ⌜n⌝ ; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream 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⌝ ⊦ # σ.take(n) = n; (s) ⊦ # σ < ⌜n⌝ + ⌜1⌝ ↔ ¬ ⌜n⌝ < # σ; (s) ⊦ # ⌜σ.take(n)⌝ = ⌜# σ.take(n)⌝ ; (s) ⊦ #(σ + σ1) = # σ + # σ1; (s)
| ⌜n0⌝ + ⌜m⌝ = # lim(⌜σf⌝ ), (⌜n0⌝ + ⌜1⌝ ) + # x_σ = # σg(n), ⌜n0⌝ ≠ # lim(⌜σg⌝ ), mon(⌜σf⌝ ), mon(⌜σg⌝ ), ⌜n0⌝ < # lim(⌜σg⌝ ), ∀ m0. ¬ n0 + m < m0 → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n1. ¬ ⌜n0⌝ + # x_σ < ⌜n1⌝ → (⌜lim(⌜σg⌝ ).take(n0 + 1)⌝ + x_σ)(n1) = σg(n)(n1) ⊦ |
# σf(n) = # σg(n) + ⌜m⌝ , (⌜n0⌝ + ⌜1⌝ ) + # x_σ = # σg(n), ⌜n0⌝ + ⌜m⌝ = # lim(⌜σf⌝ ), ⌜n0⌝ ≠ # lim(⌜σg⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ⌜n0⌝ < # lim(⌜σg⌝ ), ∀ m0. ¬ n0 + m < m0 → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n1. ¬ ⌜n0⌝ + # x_σ < ⌜n1⌝ → (⌜lim(⌜σg⌝ ).take(n0 + 1)⌝ + x_σ)(n1) = σg(n)(n1) ⊦
Used terms: n
| # σf(n) = # σg(n) + ⌜m⌝ , (⌜n0⌝ + ⌜1⌝ ) + # x_σ = # σg(n), ⌜n0⌝ + ⌜m⌝ = # lim(⌜σf⌝ ), ⌜n0⌝ ≠ # lim(⌜σg⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ⌜n0⌝ < # lim(⌜σg⌝ ), ∀ m0. ¬ n0 + m < m0 → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n1. ¬ ⌜n0⌝ + # x_σ < ⌜n1⌝ → (⌜lim(⌜σg⌝ ).take(n0 + 1)⌝ + x_σ)(n1) = σg(n)(n1) ⊦ |
# σf(n) = # σg(n) + ⌜m⌝ , ⌜n0⌝ + ⌜m⌝ = # lim(⌜σf⌝ ), (⌜n0⌝ + ⌜1⌝ ) + # x_σ = # σg(n), ⌜n0⌝ ≠ # lim(⌜σg⌝ ), mon(⌜σf⌝ ), mon(⌜σg⌝ ), ⌜n0⌝ < # lim(⌜σg⌝ ), σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ n0 + m < m0 → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n1. ¬ ⌜n0⌝ + # x_σ < ⌜n1⌝ → (⌜lim(⌜σg⌝ ).take(n0 + 1)⌝ + x_σ)(n1) = σg(n)(n1) ⊦
Used terms: n
| # σf(n) = # σg(n) + ⌜m⌝ , ⌜n0⌝ + ⌜m⌝ = # lim(⌜σf⌝ ), (⌜n0⌝ + ⌜1⌝ ) + # x_σ = # σg(n), ⌜n0⌝ ≠ # lim(⌜σg⌝ ), mon(⌜σf⌝ ), mon(⌜σg⌝ ), ⌜n0⌝ < # lim(⌜σg⌝ ), σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ n0 + m < m0 → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n1. ¬ ⌜n0⌝ + # x_σ < ⌜n1⌝ → (⌜lim(⌜σg⌝ ).take(n0 + 1)⌝ + x_σ)(n1) = σg(n)(n1) ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
# σf(n) = # σg(n) + ⌜m⌝ , (⌜n0⌝ + ⌜1⌝ ) + # x_σ = # σg(n), ⌜n0⌝ + ⌜m⌝ = # lim(⌜σf⌝ ), ⌜n0⌝ ≠ # lim(⌜σg⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ⌜n0⌝ < # lim(⌜σg⌝ ), ∀ m0. ¬ n0 + m < m0 → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n1. ¬ ⌜n0⌝ + # x_σ < ⌜n1⌝ → (⌜lim(⌜σg⌝ ).take(n0 + 1)⌝ + x_σ)(n1) = σg(n)(n1), ∃ σ1. σf(n) + σ1 = lim(⌜σf⌝ ) ⊦
Used terms: σf(n), lim(⌜σf⌝ )
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| # σf(n) = # σg(n) + ⌜m⌝ , (⌜n0⌝ + ⌜1⌝ ) + # x_σ = # σg(n), ⌜n0⌝ + ⌜m⌝ = # lim(⌜σf⌝ ), ⌜n0⌝ ≠ # lim(⌜σg⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ⌜n0⌝ < # lim(⌜σg⌝ ), ∀ m0. ¬ n0 + m < m0 → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n1. ¬ ⌜n0⌝ + # x_σ < ⌜n1⌝ → (⌜lim(⌜σg⌝ ).take(n0 + 1)⌝ + x_σ)(n1) = σg(n)(n1), ∃ σ1. σf(n) + σ1 = lim(⌜σf⌝ ) ⊦ |
# σf(n) = # σg(n) + ⌜m⌝ , (⌜n0⌝ + ⌜1⌝ ) + # x_σ = # σg(n), ⌜n0⌝ + ⌜m⌝ = # σf(n) + # σ1, σf(n) + σ1 = lim(⌜σf⌝ ), ⌜n0⌝ ≠ # lim(⌜σg⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ⌜n0⌝ < # lim(⌜σg⌝ ), ∀ m0. ¬ n0 + m < m0 → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n1. ¬ ⌜n0⌝ + # x_σ < ⌜n1⌝ → (⌜lim(⌜σg⌝ ).take(n0 + 1)⌝ + x_σ)(n1) = σg(n)(n1) ⊦
Used simplifier rules: append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ #(σ + σ1) = # σ + # σ1; (s)
| # σf(n) = # σg(n) + ⌜m⌝ , (⌜n0⌝ + ⌜1⌝ ) + # x_σ = # σg(n), ⌜n0⌝ + ⌜m⌝ = # σf(n) + # σ1, σf(n) + σ1 = lim(⌜σf⌝ ), ⌜n0⌝ ≠ # lim(⌜σg⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ⌜n0⌝ < # lim(⌜σg⌝ ), ∀ m0. ¬ n0 + m < m0 → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n1. ¬ ⌜n0⌝ + # x_σ < ⌜n1⌝ → (⌜lim(⌜σg⌝ ).take(n0 + 1)⌝ + x_σ)(n1) = σg(n)(n1) ⊦ |
⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n))
#(σf(n) + σ1) = # lim(⌜σf⌝ ), # σf(n) = # σg(n) + ⌜m⌝ , ⌜n0⌝ + ⌜m⌝ = # σf(n) + # σ1, (⌜n0⌝ + ⌜1⌝ ) + # x_σ = # σg(n), ⌜n0⌝ ≠ # lim(⌜σg⌝ ), mon(⌜σf⌝ ), mon(⌜σg⌝ ), ⌜n0⌝ < # lim(⌜σg⌝ ), ∀ m0. ¬ n0 + m < m0 → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n0. ⌜n0⌝ < #(σf(n) + σ1) → (σf(n) + σ1)(n0) = lim(⌜σf⌝ )(n0), ∀ n1. ¬ ⌜n0⌝ + # x_σ < ⌜n1⌝ → (⌜lim(⌜σg⌝ ).take(n0 + 1)⌝ + x_σ)(n1) = σg(n)(n1) ⊦
Used terms: σf(n) + σ1, lim(⌜σf⌝ )
| ⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n)) |
| #(σf(n) + σ1) = # lim(⌜σf⌝ ), # σf(n) = # σg(n) + ⌜m⌝ , ⌜n0⌝ + ⌜m⌝ = # σf(n) + # σ1, (⌜n0⌝ + ⌜1⌝ ) + # x_σ = # σg(n), ⌜n0⌝ ≠ # lim(⌜σg⌝ ), mon(⌜σf⌝ ), mon(⌜σg⌝ ), ⌜n0⌝ < # lim(⌜σg⌝ ), ∀ m0. ¬ n0 + m < m0 → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n0. ⌜n0⌝ < #(σf(n) + σ1) → (σf(n) + σ1)(n0) = lim(⌜σf⌝ )(n0), ∀ n1. ¬ ⌜n0⌝ + # x_σ < ⌜n1⌝ → (⌜lim(⌜σg⌝ ).take(n0 + 1)⌝ + x_σ)(n1) = σg(n)(n1) ⊦ |
# σf(n) = # σg(n) + ⌜m⌝ , (⌜n0⌝ + ⌜1⌝ ) + # x_σ = # σg(n), ⌜n0⌝ + ⌜m⌝ = # σf(n) + # σ1, ⌜n0⌝ + ⌜m⌝ = # lim(⌜σf⌝ ), ⌜n0⌝ ≠ # lim(⌜σg⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ⌜n0⌝ < # lim(⌜σg⌝ ), ∀ m0. ¬ n0 + m < m0 → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n1. ¬ ⌜n0⌝ + # x_σ < ⌜n1⌝ → (⌜lim(⌜σg⌝ ).take(n0 + 1)⌝ + x_σ)(n1) = σg(n)(n1), ∀ n1. n1 < n0 + m → (σf(n) + σ1)(n1) = lim(⌜σf⌝ )(n1) ⊦
Used simplifier rules: ⊦ n∞ = ⌜m⌝ + ⌜n0⌝ → (⌜n⌝ < n∞ ↔ 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 append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ #(σ + σ1) = # σ + # σ1; (s)
| # σf(n) = # σg(n) + ⌜m⌝ , (⌜n0⌝ + ⌜1⌝ ) + # x_σ = # σg(n), ⌜n0⌝ + ⌜m⌝ = # σf(n) + # σ1, ⌜n0⌝ + ⌜m⌝ = # lim(⌜σf⌝ ), ⌜n0⌝ ≠ # lim(⌜σg⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ⌜n0⌝ < # lim(⌜σg⌝ ), ∀ m0. ¬ n0 + m < m0 → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n1. ¬ ⌜n0⌝ + # x_σ < ⌜n1⌝ → (⌜lim(⌜σg⌝ ).take(n0 + 1)⌝ + x_σ)(n1) = σg(n)(n1), ∀ n1. n1 < n0 + m → (σf(n) + σ1)(n1) = lim(⌜σf⌝ )(n1) ⊦ |
# σf(n) = # σg(n) + ⌜m⌝ , ⌜n0⌝ + ⌜m⌝ = # lim(⌜σf⌝ ), ⌜n0⌝ + ⌜m⌝ = # σf(n) + # σ1, (⌜n0⌝ + ⌜1⌝ ) + # x_σ = # σg(n), σ1 = ⌜x⌝ , ⌜n0⌝ ≠ # lim(⌜σg⌝ ), mon(⌜σf⌝ ), mon(⌜σg⌝ ), ⌜n0⌝ < # lim(⌜σg⌝ ), ∀ m0. ¬ n0 + m < m0 → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n1. n1 < n0 + m → (σf(n) + σ1)(n1) = lim(⌜σf⌝ )(n1), ∀ n1. ¬ ⌜n0⌝ + # x_σ < ⌜n1⌝ → (⌜lim(⌜σg⌝ ).take(n0 + 1)⌝ + x_σ)(n1) = σg(n)(n1) ⊦
Used simplifier rules: Stream[A] freely generated by ⌝, ⌝; ⊦ # ⌜nf⌝ = ∞; (s) ⊦ n∞ + ∞ = ∞; (s) ⊦ ⌜m⌝ + n∞ = ∞ ↔ n∞ = ∞; (s) ⊦ ⌜n⌝ ≠ ∞; (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
| # σf(n) = # σg(n) + ⌜m⌝ , ⌜n0⌝ + ⌜m⌝ = # lim(⌜σf⌝ ), ⌜n0⌝ + ⌜m⌝ = # σf(n) + # σ1, (⌜n0⌝ + ⌜1⌝ ) + # x_σ = # σg(n), σ1 = ⌜x⌝ , ⌜n0⌝ ≠ # lim(⌜σg⌝ ), mon(⌜σf⌝ ), mon(⌜σg⌝ ), ⌜n0⌝ < # lim(⌜σg⌝ ), ∀ m0. ¬ n0 + m < m0 → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n1. n1 < n0 + m → (σf(n) + σ1)(n1) = lim(⌜σf⌝ )(n1), ∀ n1. ¬ ⌜n0⌝ + # x_σ < ⌜n1⌝ → (⌜lim(⌜σg⌝ ).take(n0 + 1)⌝ + x_σ)(n1) = σg(n)(n1) ⊦ |
# σf(n) = # σg(n) + ⌜m⌝ , ⌜n0⌝ + ⌜m⌝ = # lim(⌜σf⌝ ), (⌜n0⌝ + ⌜1⌝ ) + # x_σ = # σg(n), ⌜n0⌝ + ⌜m⌝ = # σf(n) + ⌜# x⌝ , ⌜n0⌝ ≠ # lim(⌜σg⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ⌜n0⌝ < # lim(⌜σg⌝ ), ∀ m0. ¬ n0 + m < m0 → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n1. ¬ ⌜n0⌝ + # x_σ < ⌜n1⌝ → (⌜lim(⌜σg⌝ ).take(n0 + 1)⌝ + x_σ)(n1) = σg(n)(n1), ∀ n1. n1 < n0 + m → (σf(n) + ⌜x⌝ )(n1) = lim(⌜σf⌝ )(n1) ⊦
Used simplifier rules: ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s)
| # σf(n) = # σg(n) + ⌜m⌝ , ⌜n0⌝ + ⌜m⌝ = # lim(⌜σf⌝ ), (⌜n0⌝ + ⌜1⌝ ) + # x_σ = # σg(n), ⌜n0⌝ + ⌜m⌝ = # σf(n) + ⌜# x⌝ , ⌜n0⌝ ≠ # lim(⌜σg⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ⌜n0⌝ < # lim(⌜σg⌝ ), ∀ m0. ¬ n0 + m < m0 → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n1. ¬ ⌜n0⌝ + # x_σ < ⌜n1⌝ → (⌜lim(⌜σg⌝ ).take(n0 + 1)⌝ + x_σ)(n1) = σg(n)(n1), ∀ n1. n1 < n0 + m → (σf(n) + ⌜x⌝ )(n1) = lim(⌜σf⌝ )(n1) ⊦ |
# σf(n) = # σg(n) + ⌜m⌝ , ⌜n0⌝ + ⌜m⌝ = (# σg(n) + ⌜m⌝ ) + ⌜# x⌝ , (⌜n0⌝ + ⌜1⌝ ) + # x_σ = # σg(n), ⌜n0⌝ + ⌜m⌝ = # lim(⌜σf⌝ ), ⌜n0⌝ ≠ # lim(⌜σg⌝ ), mon(⌜σf⌝ ), mon(⌜σg⌝ ), ⌜n0⌝ < # lim(⌜σg⌝ ), ∀ m0. ¬ n0 + m < m0 → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n1. n1 < n0 + m → (σf(n) + ⌜x⌝ )(n1) = lim(⌜σf⌝ )(n1), ∀ n1. ¬ ⌜n0⌝ + # x_σ < ⌜n1⌝ → (⌜lim(⌜σg⌝ ).take(n0 + 1)⌝ + x_σ)(n1) = σg(n)(n1) ⊦
| # σf(n) = # σg(n) + ⌜m⌝ , ⌜n0⌝ + ⌜m⌝ = (# σg(n) + ⌜m⌝ ) + ⌜# x⌝ , (⌜n0⌝ + ⌜1⌝ ) + # x_σ = # σg(n), ⌜n0⌝ + ⌜m⌝ = # lim(⌜σf⌝ ), ⌜n0⌝ ≠ # lim(⌜σg⌝ ), mon(⌜σf⌝ ), mon(⌜σg⌝ ), ⌜n0⌝ < # lim(⌜σg⌝ ), ∀ m0. ¬ n0 + m < m0 → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n1. n1 < n0 + m → (σf(n) + ⌜x⌝ )(n1) = lim(⌜σf⌝ )(n1), ∀ n1. ¬ ⌜n0⌝ + # x_σ < ⌜n1⌝ → (⌜lim(⌜σg⌝ ).take(n0 + 1)⌝ + x_σ)(n1) = σg(n)(n1) ⊦ |
Used simplifier rules: ⊦ ⌜n⌝ + n∞1 = ⌜n⌝ + n∞2 ↔ n∞1 = n∞2; (s) ⊦ ⌜n⌝ + n∞ = ⌜n⌝ ↔ n∞ = ⌜0⌝ ; (s) ⊦ ⌜n⌝ + n∞ = ⌜0⌝ ↔ n∞ = ⌜0⌝ ∧ n = 0; (ws) 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
| ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , ⌜m0⌝ < # lim(⌜σg⌝ ) + ⌜m⌝ , mon(⌜σg⌝ ), mon(⌜σf⌝ ), ¬ m ≤ m0, ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ) ⊦ |
⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , m0 < m, mon(⌜σg⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ) ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic 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 ⊦ m < n → ⌜m⌝ < ⌜n⌝ + n∞0; (s) ⊦ m ≤ n ↔ ¬ n < m; (ss)
| ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , m0 < m, mon(⌜σg⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ) ⊦ |
⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , m0 < m, mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦
Used terms: m0
| ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , m0 < m, mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦ |
⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , ⌜lim(⌜σf⌝ ).l⌝ ⊑ σf(n), m0 < m, mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ ⊦
Used simplifier rules: ⊦ ¬ n < n; (s) ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ # σ = ⌜n⌝ → σ.take(n) = σ.l; (s)
| ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , ⌜lim(⌜σf⌝ ).l⌝ ⊑ σf(n), m0 < m, mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , m0 < m, mon(⌜σg⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∃ σ1. ⌜lim(⌜σf⌝ ).l⌝ + σ1 = σf(n) ⊦
Used terms: ⌜lim(⌜σf⌝ ).l⌝ , σf(n)
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , m0 < m, mon(⌜σg⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∃ σ1. ⌜lim(⌜σf⌝ ).l⌝ + σ1 = σf(n) ⊦ |
⌜lim(⌜σf⌝ ).l⌝ + σ1 = σf(n), ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , m0 < m, mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ ⊦
| ⌜lim(⌜σf⌝ ).l⌝ + σ1 = σf(n), ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , m0 < m, mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ ⊦ |
⌜lim(⌜σf⌝ ).l⌝ + σ1 = σf(n), ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , m0 < m, mon(⌜σg⌝ ), mon(⌜σf⌝ ), σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ) ⊦
Used terms: n
| ⌜lim(⌜σf⌝ ).l⌝ + σ1 = σf(n), ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , m0 < m, mon(⌜σg⌝ ), mon(⌜σf⌝ ), σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ) ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
⌜lim(⌜σf⌝ ).l⌝ + σ1 = σf(n), ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , m0 < m, mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∃ σ1. σf(n) + σ1 = lim(⌜σf⌝ ) ⊦
Used terms: σf(n), lim(⌜σf⌝ )
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| ⌜lim(⌜σf⌝ ).l⌝ + σ1 = σf(n), ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , m0 < m, mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∃ σ1. σf(n) + σ1 = lim(⌜σf⌝ ) ⊦ |
⌜m0⌝ = # σf(n) + # σ, σf(n) + σ = lim(⌜σf⌝ ), ⌜(σf(n) + σ).l⌝ + σ1 = σf(n), ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , m0 < m, mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ ⊦
Used simplifier rules: append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ #(σ + σ1) = # σ + # σ1; (s)
| ⌜m0⌝ = # σf(n) + # σ, σf(n) + σ = lim(⌜σf⌝ ), ⌜(σf(n) + σ).l⌝ + σ1 = σf(n), ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , m0 < m, mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ ⊦ |
⌜m0⌝ = # σf(n) + # σ, σ = ⌜x⌝ , ⌜(σf(n) + σ).l⌝ + σ1 = σf(n), σf(n) + σ = lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , m0 < m, mon(⌜σg⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ) ⊦
Used simplifier rules: Stream[A] freely generated by ⌝, ⌝; ⊦ # ⌜nf⌝ = ∞; (s) ⊦ n∞ + ∞ = ∞; (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⌝ ≠ ∞; (s)
| ⌜m0⌝ = # σf(n) + # σ, σ = ⌜x⌝ , ⌜(σf(n) + σ).l⌝ + σ1 = σf(n), σf(n) + σ = lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , m0 < m, mon(⌜σg⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ) ⊦ |
⌜m0⌝ = # σf(n) + ⌜# x⌝ , σf(n) + ⌜x⌝ = lim(⌜σf⌝ ), ⌜(σf(n) + ⌜x⌝ ).l⌝ + σ1 = σf(n), ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , m0 < m, mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ ⊦
Used simplifier rules: ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s)
| ⌜m0⌝ = # σf(n) + ⌜# x⌝ , σf(n) + ⌜x⌝ = lim(⌜σf⌝ ), ⌜(σf(n) + ⌜x⌝ ).l⌝ + σ1 = σf(n), ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , m0 < m, mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ ⊦ |
⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n))
#(⌜(σf(n) + ⌜x⌝ ).l⌝ + σ1) = # σf(n), ⌜m0⌝ = # σf(n) + ⌜# x⌝ , σf(n) + ⌜x⌝ = lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , m0 < m, mon(⌜σg⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n0. ⌜n0⌝ < #(⌜(σf(n) + ⌜x⌝ ).l⌝ + σ1) → (⌜(σf(n) + ⌜x⌝ ).l⌝ + σ1)(n0) = σf(n)(n0) ⊦
Used terms: ⌜(σf(n) + ⌜x⌝ ).l⌝ + σ1, σf(n)
| ⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n)) |
| #(⌜(σf(n) + ⌜x⌝ ).l⌝ + σ1) = # σf(n), ⌜m0⌝ = # σf(n) + ⌜# x⌝ , σf(n) + ⌜x⌝ = lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , m0 < m, mon(⌜σg⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n0. ⌜n0⌝ < #(⌜(σf(n) + ⌜x⌝ ).l⌝ + σ1) → (⌜(σf(n) + ⌜x⌝ ).l⌝ + σ1)(n0) = σf(n)(n0) ⊦ |
⌜# (σf(n) + ⌜x⌝ ).l⌝ + # σ1 = # σf(n), ⌜m0⌝ = # σf(n) + ⌜# x⌝ , σf(n) + ⌜x⌝ = lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , m0 < m, mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n0. ⌜n0⌝ < # σf(n) → (⌜(σf(n) + ⌜x⌝ ).l⌝ + σ1)(n0) = σf(n)(n0) ⊦
Used simplifier rules: append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s) ⊦ #(σ + σ1) = # σ + # σ1; (s)
| ⌜# (σf(n) + ⌜x⌝ ).l⌝ + # σ1 = # σf(n), ⌜m0⌝ = # σf(n) + ⌜# x⌝ , σf(n) + ⌜x⌝ = lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , m0 < m, mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n0. ⌜n0⌝ < # σf(n) → (⌜(σf(n) + ⌜x⌝ ).l⌝ + σ1)(n0) = σf(n)(n0) ⊦ |
⌜# (σf(n) + ⌜x⌝ ).l⌝ + # σ1 = # σf(n), ⌜m0⌝ = # σf(n) + ⌜# x⌝ , σ1 = ⌜x0⌝ , σf(n) + ⌜x⌝ = lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , m0 < m, mon(⌜σg⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n0. ⌜n0⌝ < # σf(n) → (⌜(σf(n) + ⌜x⌝ ).l⌝ + σ1)(n0) = σf(n)(n0) ⊦
Used simplifier rules: Stream[A] freely generated by ⌝, ⌝; ⊦ # ⌜nf⌝ = ∞; (s) ⊦ # σ = ∞ → σ + σ0 = σ; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ ⌜m⌝ + ∞ = ∞; (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⌝ ≠ ∞; (s)
| ⌜# (σf(n) + ⌜x⌝ ).l⌝ + # σ1 = # σf(n), ⌜m0⌝ = # σf(n) + ⌜# x⌝ , σ1 = ⌜x0⌝ , σf(n) + ⌜x⌝ = lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , m0 < m, mon(⌜σg⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n0. ⌜n0⌝ < # σf(n) → (⌜(σf(n) + ⌜x⌝ ).l⌝ + σ1)(n0) = σf(n)(n0) ⊦ |
⌜# (σf(n) + ⌜x⌝ ).l⌝ + ⌜# x0⌝ = # σf(n), ⌜m0⌝ = # σf(n) + ⌜# x⌝ , σf(n) + ⌜x⌝ = lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , m0 < m, mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n0. n0 < # (σf(n) + ⌜x⌝ ).l + # x0 → ((σf(n) + ⌜x⌝ ).l + x0)(n0) = σf(n)(n0) ⊦
Used simplifier rules: append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ (⌜x⌝ + ⌜x0⌝ )(m) = (x + x0)(m); (s) ⊦ n∞ = ⌜m⌝ + ⌜n0⌝ → (⌜n⌝ < n∞ ↔ 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 ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s)
| ⌜# (σf(n) + ⌜x⌝ ).l⌝ + ⌜# x0⌝ = # σf(n), ⌜m0⌝ = # σf(n) + ⌜# x⌝ , σf(n) + ⌜x⌝ = lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , m0 < m, mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n0. n0 < # (σf(n) + ⌜x⌝ ).l + # x0 → ((σf(n) + ⌜x⌝ ).l + x0)(n0) = σf(n)(n0) ⊦ |
⌜# (σf(n) + ⌜x⌝ ).l⌝ + ⌜# x0⌝ = # σf(n), ⌜m0⌝ = # σf(n) + ⌜# x⌝ , ⌜x1⌝ = σf(n), σf(n) + ⌜x⌝ = lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , m0 < m, mon(⌜σg⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n0. n0 < # (σf(n) + ⌜x⌝ ).l + # x0 → ((σf(n) + ⌜x⌝ ).l + x0)(n0) = σf(n)(n0) ⊦
Used simplifier rules: Stream[A] freely generated by ⌝, ⌝; ⊦ ⌜nf⌝ + σ = ⌜nf⌝ ; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ # ⌜nf⌝ = ∞; (s) ⊦ ⌜m⌝ + n∞ = ∞ ↔ n∞ = ∞; (s) ⊦ ⌜n⌝ ≠ ∞; (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
| ⌜# (σf(n) + ⌜x⌝ ).l⌝ + ⌜# x0⌝ = # σf(n), ⌜m0⌝ = # σf(n) + ⌜# x⌝ , ⌜x1⌝ = σf(n), σf(n) + ⌜x⌝ = lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , m0 < m, mon(⌜σg⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n0. n0 < # (σf(n) + ⌜x⌝ ).l + # x0 → ((σf(n) + ⌜x⌝ ).l + x0)(n0) = σf(n)(n0) ⊦ |
⌜x1⌝ = σf(n), ⌜x1⌝ = lim(⌜σf⌝ ), ⌜# x1⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , # x1 < m, mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n0. σf(n0) ⊑ ⌜x1⌝ ⊦
Used simplifier rules: append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ σ + [] = σ; (s) ⊦ ⌜[]⌝ = []; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ x + [] = x; (s) ⊦ [] + x = x; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ n + 0 = n; (s) ⊦ # [] = 0; (s) lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic ⊦ ⌜x⌝ (n) = x(n); (s) ⊦ (⌜x⌝ + ⌜y⌝ ).l = x + y; (s) ⊦ #(x + y) = # x + # y; (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⌝ + ⌜m⌝ = ⌜n0⌝ ↔ n + m = n0; (s) ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s) ⊦ # x = 0 ↔ x = []; (s) ⊦ ⌜n⌝ = ⌜n0⌝ ↔ n = n0; (s) ⊦ ⌜n⌝ + n∞ = ⌜0⌝ ↔ n∞ = ⌜0⌝ ∧ n = 0; (ws) ⊦ ⌜n⌝ + n∞ = ⌜n⌝ ↔ n∞ = ⌜0⌝ ; (s) ⊦ ⌜m + n⌝ = ⌜m⌝ + ⌜n⌝ ; (s)
| ⌜x1⌝ = σf(n), ⌜x1⌝ = lim(⌜σf⌝ ), ⌜# x1⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , # x1 < m, mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n0. σf(n0) ⊑ ⌜x1⌝ ⊦ |
# σf(n) = # σg(n) + ⌜m⌝ , ⌜x1⌝ = lim(⌜σf⌝ ), ⌜x1⌝ = σf(n), ⌜# x1⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , # x1 < m, mon(⌜σg⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n0. σf(n0) ⊑ ⌜x1⌝ ⊦
Used terms: n
| # σf(n) = # σg(n) + ⌜m⌝ , ⌜x1⌝ = lim(⌜σf⌝ ), ⌜x1⌝ = σf(n), ⌜# x1⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , # x1 < m, mon(⌜σg⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n0. σf(n0) ⊑ ⌜x1⌝ ⊦ |
⌜# x1⌝ = # σg(n) + ⌜m⌝ , ⌜x1⌝ = lim(⌜σf⌝ ), ⌜x1⌝ = σf(n), ⌜# x1⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , # x1 < m, mon(⌜σg⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n0. σf(n0) ⊑ ⌜x1⌝ ⊦
Used simplifier rules: ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s)
| ⌜# x1⌝ = # σg(n) + ⌜m⌝ , ⌜x1⌝ = lim(⌜σf⌝ ), ⌜x1⌝ = σf(n), ⌜# x1⌝ ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , # x1 < m, mon(⌜σg⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n0. σf(n0) ⊑ ⌜x1⌝ ⊦ |
Used simplifier rules: Stream[A] freely generated by ⌝, ⌝; ⊦ # ⌜nf⌝ = ∞; (s) ⊦ ⌜m⌝ + ∞ = ∞; (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⌝ ≠ ∞; (s) ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s) ⊦ ⌜n⌝ + ⌜m⌝ = ⌜n0⌝ ↔ n + m = n0; (s) lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic ⊦ ¬ m + n < m; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic
| # lim(⌜σf⌝ ) ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , mon(⌜σf⌝ ), mon(⌜σg⌝ ), ¬ # lim(⌜σf⌝ ) < # lim(⌜σg⌝ ) + ⌜m⌝ , ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ ⊦ |
⊦ ¬ n∞1 < n∞ → (n∞ < n∞1 ↔ n∞ ≠ n∞1)
# lim(⌜σf⌝ ) ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , # lim(⌜σg⌝ ) + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ¬ # lim(⌜σf⌝ ) < # lim(⌜σg⌝ ) + ⌜m⌝ , ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ) ⊦
Used terms: # lim(⌜σf⌝ ), # lim(⌜σg⌝ ) + ⌜m⌝
| ⊦ ¬ n∞1 < n∞ → (n∞ < n∞1 ↔ n∞ ≠ n∞1) |
| # lim(⌜σf⌝ ) ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , # lim(⌜σg⌝ ) + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ¬ # lim(⌜σf⌝ ) < # lim(⌜σg⌝ ) + ⌜m⌝ , ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ) ⊦ |
# lim(⌜σf⌝ ) ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , # lim(⌜σg⌝ ) + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ ⊦
Used simplifier rules: ⊦ n∞ < n∞0 → ¬ n∞0 < n∞; (s)
| # lim(⌜σf⌝ ) ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , # lim(⌜σg⌝ ) + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ ⊦ |
⌜m0⌝ = # lim(⌜σg⌝ ), # lim(⌜σf⌝ ) ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , # lim(⌜σg⌝ ) + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ) ⊦
Used simplifier rules: Natinf freely generated by ∞, ⌝; ⊦ ⌜m⌝ + ∞ = ∞; (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∞; (s)
| ⌜m0⌝ = # lim(⌜σg⌝ ), # lim(⌜σf⌝ ) ≠ # lim(⌜σg⌝ ) + ⌜m⌝ , # lim(⌜σg⌝ ) + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ) ⊦ |
⌜m0⌝ = # lim(⌜σg⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ ⊦
| ⌜m0⌝ = # lim(⌜σg⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ ⊦ |
⌜m0⌝ = # lim(⌜σg⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ¬ # lim(⌜σf⌝ ) < ⌜m0 + m + 1⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ ⊑ σf(n)) ⊦
Used terms: m0 + m + 1
| ⌜m0⌝ = # lim(⌜σg⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ¬ # lim(⌜σf⌝ ) < ⌜m0 + m + 1⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ ⊑ σf(n)) ⊦ |
⌜m0⌝ = # lim(⌜σg⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ + ⌜m⌝ + ⌜1⌝ → ⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ ⊑ σf(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 + n⌝ = ⌜m⌝ + ⌜n⌝ ; (s)
| ⌜m0⌝ = # lim(⌜σg⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ + ⌜m⌝ + ⌜1⌝ → ⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ ⊑ σf(n) ⊦ |
⌜m0⌝ = # lim(⌜σg⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , # lim(⌜σf⌝ ) < ⌜m0⌝ + ⌜m⌝ + ⌜1⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ) ⊦
⌜m0⌝ = # lim(⌜σg⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , ⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ ⊑ σf(n), ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ) ⊦
| ⌜m0⌝ = # lim(⌜σg⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , # lim(⌜σf⌝ ) < ⌜m0⌝ + ⌜m⌝ + ⌜1⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ) ⊦ |
Used simplifier rules: Natinf freely generated by ∞, ⌝; ls-trans: ⊦ n∞ < n∞1 ∧ n∞1 < n∞2 → n∞ < n∞2; (forward) from specification nat-inf ⊦ ⌜n⌝ + ⌜m⌝ = ⌜n0⌝ ↔ n + m = n0; (s) ⊦ ⌜n⌝ + n∞1 < ⌜n⌝ + n∞2 ↔ n∞1 < n∞2; (s) ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ ¬ n < n; (s) ⊦ ⌜n⌝ < ⌜1⌝ + n∞ ↔ ¬ n∞ < ⌜n⌝ ; (s) ⊦ ⌜n⌝ + ⌜m⌝ < ⌜n0⌝ ↔ 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⌝ + n∞ = ∞ ↔ n∞ = ∞; (s) ⊦ ⌜n⌝ ≠ ∞; (s) ⊦ ¬ ∞ < n∞; (s)
| ⌜m0⌝ = # lim(⌜σg⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , ⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ ⊑ σf(n), ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ) ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
⌜m0⌝ = # lim(⌜σg⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∃ σ1. ⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + σ1 = σf(n) ⊦
Used terms: ⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ , σf(n)
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| ⌜m0⌝ = # lim(⌜σg⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∃ σ1. ⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + σ1 = σf(n) ⊦ |
⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + σ1 = σf(n), ⌜m0⌝ = # lim(⌜σg⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ) ⊦
| ⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + σ1 = σf(n), ⌜m0⌝ = # lim(⌜σg⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ) ⊦ |
⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n))
#(⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + σ1) = # σf(n), ⌜m0⌝ = # lim(⌜σg⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n0. ⌜n0⌝ < #(⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + σ1) → (⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + σ1)(n0) = σf(n)(n0) ⊦
Used terms: ⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + σ1, σf(n)
| ⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n)) |
| #(⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + σ1) = # σf(n), ⌜m0⌝ = # lim(⌜σg⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n0. ⌜n0⌝ < #(⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + σ1) → (⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + σ1)(n0) = σf(n)(n0) ⊦ |
⌜# lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + # σ1 = # σf(n), ⌜m0⌝ = # lim(⌜σg⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n0. ⌜n0⌝ < # σf(n) → (⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + σ1)(n0) = σf(n)(n0) ⊦
Used simplifier rules: append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ # ⌜σ.take(n)⌝ = ⌜# σ.take(n)⌝ ; (s) ⊦ #(σ + σ1) = # σ + # σ1; (s)
| ⌜# lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + # σ1 = # σf(n), ⌜m0⌝ = # lim(⌜σg⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n0. ⌜n0⌝ < # σf(n) → (⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + σ1)(n0) = σf(n)(n0) ⊦ |
¬ # σ < ⌜n⌝ ⊦ # σ.take(n) = n
⌜# lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + # σ1 = # σf(n), ⌜m0⌝ = # lim(⌜σg⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , # lim(⌜σf⌝ ) < ⌜m0 + m + 1⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n0. ⌜n0⌝ < # σf(n) → (⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + σ1)(n0) = σf(n)(n0) ⊦
⌜m0⌝ = # lim(⌜σg⌝ ), ⌜m0 + m + 1⌝ + # σ1 = # σf(n), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), mon(⌜σg⌝ ), ¬ # lim(⌜σf⌝ ) < ⌜m0 + m + 1⌝ , ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n0. ⌜n0⌝ < # σf(n) → (⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + σ1)(n0) = σf(n)(n0) ⊦
Used terms: lim(⌜σf⌝ ), m0 + m + 1
| ¬ # σ < ⌜n⌝ ⊦ # σ.take(n) = n |
| ⌜# lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + # σ1 = # σf(n), ⌜m0⌝ = # lim(⌜σg⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , # lim(⌜σf⌝ ) < ⌜m0 + m + 1⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n0. ⌜n0⌝ < # σf(n) → (⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + σ1)(n0) = σf(n)(n0) ⊦ |
⌜# lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + # σ1 = # σf(n), ⌜m0⌝ = # lim(⌜σg⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , # lim(⌜σf⌝ ) < ⌜m0⌝ + ⌜m⌝ + ⌜1⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n0. ⌜n0⌝ < # σf(n) → (⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + σ1)(n0) = σf(n)(n0) ⊦
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; (s) ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ ⌜n⌝ < ⌜1⌝ + n∞ ↔ ¬ n∞ < ⌜n⌝ ; (s) ⊦ ⌜n⌝ + n∞1 < ⌜n⌝ + n∞2 ↔ n∞1 < n∞2; (s) ls-trans: ⊦ n∞ < n∞1 ∧ n∞1 < n∞2 → n∞ < n∞2; (forward) from specification nat-inf 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)
| ⌜# lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + # σ1 = # σf(n), ⌜m0⌝ = # lim(⌜σg⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , # lim(⌜σf⌝ ) < ⌜m0⌝ + ⌜m⌝ + ⌜1⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n0. ⌜n0⌝ < # σf(n) → (⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + σ1)(n0) = σf(n)(n0) ⊦ |
Used simplifier rules: Natinf freely generated by ∞, ⌝; ⊦ ⌜n⌝ + ⌜m⌝ = ⌜n0⌝ ↔ n + m = n0; (s) ⊦ ⌜n⌝ < ⌜1⌝ + n∞ ↔ ¬ n∞ < ⌜n⌝ ; (s) ⊦ ⌜n⌝ + ⌜m⌝ < ⌜n0⌝ ↔ n + m < n0; (s) add-comm: ⊦ n∞1 + n∞2 = n∞2 + n∞1; from specification nat-inf ¬ # σ < ⌜n⌝ ⊦ # σ.take(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 add-assoc: ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2; from specification nat-inf ⊦ ⌜m⌝ + n∞ = ∞ ↔ n∞ = ∞; (s) ⊦ ⌜n⌝ ≠ ∞; (s) ⊦ ¬ ∞ < n∞; (s)
| ⌜m0⌝ = # lim(⌜σg⌝ ), ⌜m0 + m + 1⌝ + # σ1 = # σf(n), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), mon(⌜σg⌝ ), ¬ # lim(⌜σf⌝ ) < ⌜m0 + m + 1⌝ , ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n0. ⌜n0⌝ < # σf(n) → (⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + σ1)(n0) = σf(n)(n0) ⊦ |
⌜m0⌝ = # lim(⌜σg⌝ ), (⌜m0⌝ + ⌜m⌝ + ⌜1⌝ ) + # σ1 = # σf(n), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ + ⌜m⌝ + ⌜1⌝ , ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n0. ⌜n0⌝ < # σf(n) → (⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + σ1)(n0) = σf(n)(n0) ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ ⌜m + n⌝ = ⌜m⌝ + ⌜n⌝ ; (s) add-assoc: ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2; from specification nat-inf
| ⌜m0⌝ = # lim(⌜σg⌝ ), (⌜m0⌝ + ⌜m⌝ + ⌜1⌝ ) + # σ1 = # σf(n), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ + ⌜m⌝ + ⌜1⌝ , ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σg(n) ⊑ lim(⌜σg⌝ ), ∀ n0. ⌜n0⌝ < # σf(n) → (⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + σ1)(n0) = σf(n)(n0) ⊦ |
(⌜m0⌝ + ⌜m⌝ + ⌜1⌝ ) + # σ1 = # σf(n), ⌜m0⌝ = # lim(⌜σg⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), mon(⌜σg⌝ ), σg(n) ⊑ lim(⌜σg⌝ ), ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ + ⌜m⌝ + ⌜1⌝ , ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n0. ⌜n0⌝ < # σf(n) → (⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + σ1)(n0) = σf(n)(n0) ⊦
Used terms: n
| (⌜m0⌝ + ⌜m⌝ + ⌜1⌝ ) + # σ1 = # σf(n), ⌜m0⌝ = # lim(⌜σg⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), mon(⌜σg⌝ ), σg(n) ⊑ lim(⌜σg⌝ ), ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ + ⌜m⌝ + ⌜1⌝ , ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n0. ⌜n0⌝ < # σf(n) → (⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + σ1)(n0) = σf(n)(n0) ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
⌜m0⌝ = # lim(⌜σg⌝ ), (⌜m0⌝ + ⌜m⌝ + ⌜1⌝ ) + # σ1 = # σf(n), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ + ⌜m⌝ + ⌜1⌝ , ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n0. ⌜n0⌝ < # σf(n) → (⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + σ1)(n0) = σf(n)(n0), ∃ x_σ. σg(n) + x_σ = lim(⌜σg⌝ ) ⊦
Used terms: σg(n), lim(⌜σg⌝ )
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| ⌜m0⌝ = # lim(⌜σg⌝ ), (⌜m0⌝ + ⌜m⌝ + ⌜1⌝ ) + # σ1 = # σf(n), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ + ⌜m⌝ + ⌜1⌝ , ∀ m0. ¬ # lim(⌜σg⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σg⌝ ).take(m0)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n0. ⌜n0⌝ < # σf(n) → (⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + σ1)(n0) = σf(n)(n0), ∃ x_σ. σg(n) + x_σ = lim(⌜σg⌝ ) ⊦ |
⌜m0⌝ = # σg(n) + # x_σ, (⌜m0⌝ + ⌜m⌝ + ⌜1⌝ ) + # σ1 = # σf(n), σg(n) + x_σ = lim(⌜σg⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), mon(⌜σg⌝ ), ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ + ⌜m⌝ + ⌜1⌝ , ∀ m1. ¬ m0 < m1 → (∃ n. ⌜lim(⌜σg⌝ ).take(m1)⌝ ⊑ σg(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n0. ⌜n0⌝ < # σf(n) → (⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + σ1)(n0) = σf(n)(n0) ⊦
Used simplifier rules: ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ #(σ + σ1) = # σ + # σ1; (s)
| ⌜m0⌝ = # σg(n) + # x_σ, (⌜m0⌝ + ⌜m⌝ + ⌜1⌝ ) + # σ1 = # σf(n), σg(n) + x_σ = lim(⌜σg⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), mon(⌜σg⌝ ), ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ + ⌜m⌝ + ⌜1⌝ , ∀ m1. ¬ m0 < m1 → (∃ n. ⌜lim(⌜σg⌝ ).take(m1)⌝ ⊑ σg(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n0. ⌜n0⌝ < # σf(n) → (⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + σ1)(n0) = σf(n)(n0) ⊦ |
⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n))
#(σg(n) + x_σ) = # lim(⌜σg⌝ ), (⌜m0⌝ + ⌜m⌝ + ⌜1⌝ ) + # σ1 = # σf(n), ⌜m0⌝ = # σg(n) + # x_σ, # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ + ⌜m⌝ + ⌜1⌝ , ∀ m1. ¬ m0 < m1 → (∃ n. ⌜lim(⌜σg⌝ ).take(m1)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n0. ⌜n0⌝ < # σf(n) → (⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + σ1)(n0) = σf(n)(n0), ∀ n0. ⌜n0⌝ < #(σg(n) + x_σ) → (σg(n) + x_σ)(n0) = lim(⌜σg⌝ )(n0) ⊦
Used terms: σg(n) + x_σ, lim(⌜σg⌝ )
| ⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n)) |
| #(σg(n) + x_σ) = # lim(⌜σg⌝ ), (⌜m0⌝ + ⌜m⌝ + ⌜1⌝ ) + # σ1 = # σf(n), ⌜m0⌝ = # σg(n) + # x_σ, # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ + ⌜m⌝ + ⌜1⌝ , ∀ m1. ¬ m0 < m1 → (∃ n. ⌜lim(⌜σg⌝ ).take(m1)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n0. ⌜n0⌝ < # σf(n) → (⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + σ1)(n0) = σf(n)(n0), ∀ n0. ⌜n0⌝ < #(σg(n) + x_σ) → (σg(n) + x_σ)(n0) = lim(⌜σg⌝ )(n0) ⊦ |
⌜m0⌝ = # lim(⌜σg⌝ ), (⌜m0⌝ + ⌜m⌝ + ⌜1⌝ ) + # σ1 = # σf(n), ⌜m0⌝ = # σg(n) + # x_σ, # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ + ⌜m⌝ + ⌜1⌝ , ∀ m1. ¬ m0 < m1 → (∃ n. ⌜lim(⌜σg⌝ ).take(m1)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n0. ⌜n0⌝ < # σf(n) → (⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + σ1)(n0) = σf(n)(n0), ∀ n0. n0 < m0 → (σg(n) + x_σ)(n0) = lim(⌜σg⌝ )(n0) ⊦
Used simplifier rules: ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ #(σ + σ1) = # σ + # σ1; (s)
| ⌜m0⌝ = # lim(⌜σg⌝ ), (⌜m0⌝ + ⌜m⌝ + ⌜1⌝ ) + # σ1 = # σf(n), ⌜m0⌝ = # σg(n) + # x_σ, # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ + ⌜m⌝ + ⌜1⌝ , ∀ m1. ¬ m0 < m1 → (∃ n. ⌜lim(⌜σg⌝ ).take(m1)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n0. ⌜n0⌝ < # σf(n) → (⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + σ1)(n0) = σf(n)(n0), ∀ n0. n0 < m0 → (σg(n) + x_σ)(n0) = lim(⌜σg⌝ )(n0) ⊦ |
⌜m0⌝ = # σg(n) + # x_σ, (⌜m0⌝ + ⌜m⌝ + ⌜1⌝ ) + # σ1 = # σf(n), ⌜m0⌝ = # lim(⌜σg⌝ ), x_σ = ⌜x_List<B>⌝ , # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), mon(⌜σg⌝ ), ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ + ⌜m⌝ + ⌜1⌝ , ∀ m1. ¬ m0 < m1 → (∃ n. ⌜lim(⌜σg⌝ ).take(m1)⌝ ⊑ σg(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n0. n0 < m0 → (σg(n) + x_σ)(n0) = lim(⌜σg⌝ )(n0), ∀ n0. ⌜n0⌝ < # σf(n) → (⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + σ1)(n0) = σf(n)(n0) ⊦
Used simplifier rules: Stream[A] freely generated by ⌝, ⌝; ⊦ # ⌜nf⌝ = ∞; (s) ⊦ n∞ + ∞ = ∞; (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⌝ ≠ ∞; (s)
| ⌜m0⌝ = # σg(n) + # x_σ, (⌜m0⌝ + ⌜m⌝ + ⌜1⌝ ) + # σ1 = # σf(n), ⌜m0⌝ = # lim(⌜σg⌝ ), x_σ = ⌜x_List<B>⌝ , # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), mon(⌜σg⌝ ), ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ + ⌜m⌝ + ⌜1⌝ , ∀ m1. ¬ m0 < m1 → (∃ n. ⌜lim(⌜σg⌝ ).take(m1)⌝ ⊑ σg(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n0. n0 < m0 → (σg(n) + x_σ)(n0) = lim(⌜σg⌝ )(n0), ∀ n0. ⌜n0⌝ < # σf(n) → (⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + σ1)(n0) = σf(n)(n0) ⊦ |
⌜m0⌝ = # lim(⌜σg⌝ ), (⌜m0⌝ + ⌜m⌝ + ⌜1⌝ ) + # σ1 = # σf(n), ⌜m0⌝ = # σg(n) + ⌜# x_List<B>⌝ , # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ + ⌜m⌝ + ⌜1⌝ , ∀ m1. ¬ m0 < m1 → (∃ n. ⌜lim(⌜σg⌝ ).take(m1)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n0. ⌜n0⌝ < # σf(n) → (⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + σ1)(n0) = σf(n)(n0), ∀ n0. n0 < m0 → (σg(n) + ⌜x_List<B>⌝ )(n0) = lim(⌜σg⌝ )(n0) ⊦
Used simplifier rules: ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s)
| ⌜m0⌝ = # lim(⌜σg⌝ ), (⌜m0⌝ + ⌜m⌝ + ⌜1⌝ ) + # σ1 = # σf(n), ⌜m0⌝ = # σg(n) + ⌜# x_List<B>⌝ , # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ + ⌜m⌝ + ⌜1⌝ , ∀ m1. ¬ m0 < m1 → (∃ n. ⌜lim(⌜σg⌝ ).take(m1)⌝ ⊑ σg(n)), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n0. ⌜n0⌝ < # σf(n) → (⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + σ1)(n0) = σf(n)(n0), ∀ n0. n0 < m0 → (σg(n) + ⌜x_List<B>⌝ )(n0) = lim(⌜σg⌝ )(n0) ⊦ |
# σf(n) = # σg(n) + ⌜m⌝ , ⌜m0⌝ = # σg(n) + ⌜# x_List<B>⌝ , (⌜m0⌝ + ⌜m⌝ + ⌜1⌝ ) + # σ1 = # σf(n), ⌜m0⌝ = # lim(⌜σg⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), mon(⌜σg⌝ ), ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ + ⌜m⌝ + ⌜1⌝ , ∀ m1. ¬ m0 < m1 → (∃ n. ⌜lim(⌜σg⌝ ).take(m1)⌝ ⊑ σg(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n0. n0 < m0 → (σg(n) + ⌜x_List<B>⌝ )(n0) = lim(⌜σg⌝ )(n0), ∀ n0. ⌜n0⌝ < # σf(n) → (⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + σ1)(n0) = σf(n)(n0) ⊦
Used terms: n
| # σf(n) = # σg(n) + ⌜m⌝ , ⌜m0⌝ = # σg(n) + ⌜# x_List<B>⌝ , (⌜m0⌝ + ⌜m⌝ + ⌜1⌝ ) + # σ1 = # σf(n), ⌜m0⌝ = # lim(⌜σg⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), mon(⌜σg⌝ ), ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ + ⌜m⌝ + ⌜1⌝ , ∀ m1. ¬ m0 < m1 → (∃ n. ⌜lim(⌜σg⌝ ).take(m1)⌝ ⊑ σg(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n0. n0 < m0 → (σg(n) + ⌜x_List<B>⌝ )(n0) = lim(⌜σg⌝ )(n0), ∀ n0. ⌜n0⌝ < # σf(n) → (⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + σ1)(n0) = σf(n)(n0) ⊦ |
# σf(n) = # σg(n) + ⌜m⌝ , ⌜m0⌝ = # lim(⌜σg⌝ ), (⌜m0⌝ + ⌜m⌝ + ⌜1⌝ ) + # σ1 = # σf(n), ⌜m0⌝ = # σg(n) + ⌜# x_List<B>⌝ , σ1 = ⌜x⌝ , # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ + ⌜m⌝ + ⌜1⌝ , ∀ m1. ¬ m0 < m1 → (∃ n. ⌜lim(⌜σg⌝ ).take(m1)⌝ ⊑ σg(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n0. ⌜n0⌝ < # σf(n) → (⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + σ1)(n0) = σf(n)(n0), ∀ n0. n0 < m0 → (σg(n) + ⌜x_List<B>⌝ )(n0) = lim(⌜σg⌝ )(n0) ⊦
Used simplifier rules: Stream[A] freely generated by ⌝, ⌝; ⊦ # ⌜nf⌝ = ∞; (s) ⊦ ⌜m⌝ + n∞ = ∞ ↔ n∞ = ∞; (s) ⊦ ⌜m⌝ < ∞; (s) ⊦ # σ = ∞ → σ + σ0 = σ; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ ⌜m⌝ + ∞ = ∞; (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⌝ ≠ ∞; (s)
| # σf(n) = # σg(n) + ⌜m⌝ , ⌜m0⌝ = # lim(⌜σg⌝ ), (⌜m0⌝ + ⌜m⌝ + ⌜1⌝ ) + # σ1 = # σf(n), ⌜m0⌝ = # σg(n) + ⌜# x_List<B>⌝ , σ1 = ⌜x⌝ , # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ + ⌜m⌝ + ⌜1⌝ , ∀ m1. ¬ m0 < m1 → (∃ n. ⌜lim(⌜σg⌝ ).take(m1)⌝ ⊑ σg(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n0. ⌜n0⌝ < # σf(n) → (⌜lim(⌜σf⌝ ).take(m0 + m + 1)⌝ + σ1)(n0) = σf(n)(n0), ∀ n0. n0 < m0 → (σg(n) + ⌜x_List<B>⌝ )(n0) = lim(⌜σg⌝ )(n0) ⊦ |
# σf(n) = # σg(n) + ⌜m⌝ , ⌜m0⌝ = # lim(⌜σg⌝ ), ⌜m0⌝ = # σg(n) + ⌜# x_List<B>⌝ , ⌜m0⌝ + ⌜m⌝ + ⌜1⌝ + ⌜# x⌝ = # σf(n), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), mon(⌜σg⌝ ), ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ + ⌜m⌝ + ⌜1⌝ , ∀ m1. ¬ m0 < m1 → (∃ n. ⌜lim(⌜σg⌝ ).take(m1)⌝ ⊑ σg(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n0. n0 < m0 → (σg(n) + ⌜x_List<B>⌝ )(n0) = lim(⌜σg⌝ )(n0), ∀ n0. ⌜n0⌝ < # σf(n) → (lim(⌜σf⌝ ).take(m0 + m + 1) + x)(n0) = σf(n)(n0) ⊦
Used simplifier rules: append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ (⌜x⌝ + ⌜x0⌝ )(m) = (x + x0)(m); (s) add-assoc: ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2; from specification nat-inf ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s)
| # σf(n) = # σg(n) + ⌜m⌝ , ⌜m0⌝ = # lim(⌜σg⌝ ), ⌜m0⌝ = # σg(n) + ⌜# x_List<B>⌝ , ⌜m0⌝ + ⌜m⌝ + ⌜1⌝ + ⌜# x⌝ = # σf(n), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ + ⌜m⌝ , ⌜m0⌝ + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), mon(⌜σg⌝ ), ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ + ⌜m⌝ + ⌜1⌝ , ∀ m1. ¬ m0 < m1 → (∃ n. ⌜lim(⌜σg⌝ ).take(m1)⌝ ⊑ σg(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n0. n0 < m0 → (σg(n) + ⌜x_List<B>⌝ )(n0) = lim(⌜σg⌝ )(n0), ∀ n0. ⌜n0⌝ < # σf(n) → (lim(⌜σf⌝ ).take(m0 + m + 1) + x)(n0) = σf(n)(n0) ⊦ |
(# σg(n) + ⌜# x_List<B>⌝ ) + ⌜m⌝ + ⌜1⌝ + ⌜# x⌝ = # σf(n), # σg(n) + ⌜# x_List<B>⌝ = # lim(⌜σg⌝ ), # σf(n) = # σg(n) + ⌜m⌝ , ⌜m0⌝ = # σg(n) + ⌜# x_List<B>⌝ , # lim(⌜σf⌝ ) ≠ (# σg(n) + ⌜# x_List<B>⌝ ) + ⌜m⌝ , (# σg(n) + ⌜# x_List<B>⌝ ) + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ¬ # lim(⌜σf⌝ ) < (# σg(n) + ⌜# x_List<B>⌝ ) + ⌜m⌝ + ⌜1⌝ , ∀ m1. ¬ m0 < m1 → (∃ n. ⌜lim(⌜σg⌝ ).take(m1)⌝ ⊑ σg(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n0. ⌜n0⌝ < # σf(n) → (lim(⌜σf⌝ ).take(m0 + m + 1) + x)(n0) = σf(n)(n0), ∀ n0. n0 < m0 → (σg(n) + ⌜x_List<B>⌝ )(n0) = lim(⌜σg⌝ )(n0) ⊦
| (# σg(n) + ⌜# x_List<B>⌝ ) + ⌜m⌝ + ⌜1⌝ + ⌜# x⌝ = # σf(n), # σg(n) + ⌜# x_List<B>⌝ = # lim(⌜σg⌝ ), # σf(n) = # σg(n) + ⌜m⌝ , ⌜m0⌝ = # σg(n) + ⌜# x_List<B>⌝ , # lim(⌜σf⌝ ) ≠ (# σg(n) + ⌜# x_List<B>⌝ ) + ⌜m⌝ , (# σg(n) + ⌜# x_List<B>⌝ ) + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σg⌝ ), mon(⌜σf⌝ ), ¬ # lim(⌜σf⌝ ) < (# σg(n) + ⌜# x_List<B>⌝ ) + ⌜m⌝ + ⌜1⌝ , ∀ m1. ¬ m0 < m1 → (∃ n. ⌜lim(⌜σg⌝ ).take(m1)⌝ ⊑ σg(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n0. ⌜n0⌝ < # σf(n) → (lim(⌜σf⌝ ).take(m0 + m + 1) + x)(n0) = σf(n)(n0), ∀ n0. n0 < m0 → (σg(n) + ⌜x_List<B>⌝ )(n0) = lim(⌜σg⌝ )(n0) ⊦ |
# σf(n) = # σg(n) + ⌜m⌝ , # σg(n) + ⌜# x_List<B>⌝ = # lim(⌜σg⌝ ), (# σg(n) + ⌜# x_List<B>⌝ ) + ⌜m⌝ + ⌜1⌝ + ⌜# x⌝ = # σg(n) + ⌜m⌝ , ⌜m0⌝ = # σg(n) + ⌜# x_List<B>⌝ , # lim(⌜σf⌝ ) ≠ (# σg(n) + ⌜# x_List<B>⌝ ) + ⌜m⌝ , (# σg(n) + ⌜# x_List<B>⌝ ) + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), mon(⌜σg⌝ ), ¬ # lim(⌜σf⌝ ) < (# σg(n) + ⌜# x_List<B>⌝ ) + ⌜m⌝ + ⌜1⌝ , ∀ m1. ¬ m0 < m1 → (∃ n. ⌜lim(⌜σg⌝ ).take(m1)⌝ ⊑ σg(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n0. n0 < m0 → (σg(n) + ⌜x_List<B>⌝ )(n0) = lim(⌜σg⌝ )(n0), ∀ n0. ⌜n0⌝ < # σg(n) + ⌜m⌝ → (lim(⌜σf⌝ ).take(m0 + m + 1) + x)(n0) = σf(n)(n0) ⊦
| # σf(n) = # σg(n) + ⌜m⌝ , # σg(n) + ⌜# x_List<B>⌝ = # lim(⌜σg⌝ ), (# σg(n) + ⌜# x_List<B>⌝ ) + ⌜m⌝ + ⌜1⌝ + ⌜# x⌝ = # σg(n) + ⌜m⌝ , ⌜m0⌝ = # σg(n) + ⌜# x_List<B>⌝ , # lim(⌜σf⌝ ) ≠ (# σg(n) + ⌜# x_List<B>⌝ ) + ⌜m⌝ , (# σg(n) + ⌜# x_List<B>⌝ ) + ⌜m⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), mon(⌜σg⌝ ), ¬ # lim(⌜σf⌝ ) < (# σg(n) + ⌜# x_List<B>⌝ ) + ⌜m⌝ + ⌜1⌝ , ∀ m1. ¬ m0 < m1 → (∃ n. ⌜lim(⌜σg⌝ ).take(m1)⌝ ⊑ σg(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n0. n0 < m0 → (σg(n) + ⌜x_List<B>⌝ )(n0) = lim(⌜σg⌝ )(n0), ∀ n0. ⌜n0⌝ < # σg(n) + ⌜m⌝ → (lim(⌜σf⌝ ).take(m0 + m + 1) + x)(n0) = σf(n)(n0) ⊦ |
⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2
Used simplifier rules: ⊦ ⌜n⌝ + n∞1 = ⌜n⌝ + n∞2 ↔ n∞1 = n∞2; (s) ⊦ n∞1 = n∞1 + n∞2 ↔ n∞1 = ∞ ∨ n∞2 = ⌜0⌝ ; (s) ⊦ n < m → (⌜(* n)⌝ = ⌜(* m)⌝ + n∞2 ↔ false); (s) ⊦ # σ = ∞ → σ + σ0 = σ; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ ⌜m⌝ + ∞ = ∞; (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⌝ ≠ ∞; (s) Used terms: # σg(n), ⌜# x_List<B>⌝ , ⌜m⌝ + ⌜1⌝ + ⌜# x⌝
| ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2 |
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.