| ⊦ mon(⌜σf⌝ ) → lim(⌜σf⌝ ) = lim(⌜λ n. σf(n + m)⌝ ) |
lim(⌜σf⌝ ) ≠ lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ) ⊦
| lim(⌜σf⌝ ) ≠ lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ) ⊦ |
⊦ mon(σσ) ∧ σσ ≠ [] → (∀ n. ⌜n⌝ < # σσ → σσ(n) ⊑ lim(σσ)) ∧ (∀ m. ¬ # lim(σσ) < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜lim(σσ).take(m)⌝ ⊑ σσ(n)))
lim(⌜σf⌝ ) ≠ lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), mon(⌜σf⌝ ) ∧ ⌜σf⌝ ≠ [] → (∀ n. ⌜n⌝ < # ⌜σf⌝ → ⌜σf⌝ (n) ⊑ lim(⌜σf⌝ )) ∧ (∀ m. ¬ # lim(⌜σf⌝ ) < ⌜m⌝ → (∃ n. ⌜n⌝ < # ⌜σf⌝ ∧ ⌜lim(⌜σf⌝ ).take(m)⌝ ⊑ ⌜σf⌝ (n))) ⊦
Used terms: ⌜σf⌝
| ⊦ mon(σσ) ∧ σσ ≠ [] → (∀ n. ⌜n⌝ < # σσ → σσ(n) ⊑ lim(σσ)) ∧ (∀ m. ¬ # lim(σσ) < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜lim(σσ).take(m)⌝ ⊑ σσ(n))) |
| lim(⌜σf⌝ ) ≠ lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), mon(⌜σf⌝ ) ∧ ⌜σf⌝ ≠ [] → (∀ n. ⌜n⌝ < # ⌜σf⌝ → ⌜σf⌝ (n) ⊑ lim(⌜σf⌝ )) ∧ (∀ m. ¬ # lim(⌜σf⌝ ) < ⌜m⌝ → (∃ n. ⌜n⌝ < # ⌜σf⌝ ∧ ⌜lim(⌜σf⌝ ).take(m)⌝ ⊑ ⌜σf⌝ (n))) ⊦ |
lim(⌜σf⌝ ) ≠ lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦
Used simplifier rules: ⊦ ⌜nf⌝ (n) = nf(n); (s) ⊦ ⌜m⌝ < ∞; (s) ⊦ # ⌜nf⌝ = ∞; (s) ⊦ [] ≠ ⌜nf⌝ ; (s)
| lim(⌜σf⌝ ) ≠ lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦ |
⊦ mon(σσ) ∧ σσ ≠ [] → (∀ n. ⌜n⌝ < # σσ → σσ(n) ⊑ lim(σσ)) ∧ (∀ m. ¬ # lim(σσ) < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜lim(σσ).take(m)⌝ ⊑ σσ(n)))
lim(⌜σf⌝ ) ≠ lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), mon(⌜λ n. σf(n + m)⌝ ) ∧ ⌜λ n. σf(n + m)⌝ ≠ [] → (∀ n. ⌜n⌝ < # ⌜λ n. σf(n + m)⌝ → ⌜λ n. σf(n + m)⌝ (n) ⊑ lim(⌜λ n. σf(n + m)⌝ )) ∧ (∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜n⌝ < # ⌜λ n. σf(n + m)⌝ ∧ ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ ⌜λ n. σf(n + m)⌝ (n))), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ) ⊦
Used terms: ⌜λ n. σf(n + m)⌝
| ⊦ mon(σσ) ∧ σσ ≠ [] → (∀ n. ⌜n⌝ < # σσ → σσ(n) ⊑ lim(σσ)) ∧ (∀ m. ¬ # lim(σσ) < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜lim(σσ).take(m)⌝ ⊑ σσ(n))) |
| lim(⌜σf⌝ ) ≠ lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), mon(⌜λ n. σf(n + m)⌝ ) ∧ ⌜λ n. σf(n + m)⌝ ≠ [] → (∀ n. ⌜n⌝ < # ⌜λ n. σf(n + m)⌝ → ⌜λ n. σf(n + m)⌝ (n) ⊑ lim(⌜λ n. σf(n + m)⌝ )) ∧ (∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜n⌝ < # ⌜λ n. σf(n + m)⌝ ∧ ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ ⌜λ n. σf(n + m)⌝ (n))), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ) ⊦ |
lim(⌜σf⌝ ) ≠ lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), mon(⌜λ n. σf(n + m)⌝ ) → (∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ )) ∧ (∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m))), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦
Used simplifier rules: ⊦ ⌜nf⌝ (n) = nf(n); (s) ⊦ ⌜m⌝ < ∞; (s) ⊦ # ⌜nf⌝ = ∞; (s) ⊦ [] ≠ ⌜nf⌝ ; (s)
| lim(⌜σf⌝ ) ≠ lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), mon(⌜λ n. σf(n + m)⌝ ) → (∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ )) ∧ (∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m))), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦ |
lim(⌜σf⌝ ) ≠ lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ¬ mon(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ) ⊦
lim(⌜σf⌝ ) ≠ lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦
| lim(⌜σf⌝ ) ≠ lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ¬ mon(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ) ⊦ |
mon(⌜σf⌝ ) ⊦ mon(⌜λ n. σf(n + m)⌝ )
Used terms: σf, m
| mon(⌜σf⌝ ) ⊦ mon(⌜λ n. σf(n + m)⌝ ) |
| lim(⌜σf⌝ ) ≠ lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦ |
# σf(m) = ∞, lim(⌜σf⌝ ) ≠ lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦
# σf(m) ≠ ∞, lim(⌜σf⌝ ) ≠ lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦
Used formulas: # σf(m) = ∞
| # σf(m) = ∞, lim(⌜σf⌝ ) ≠ lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦ |
# σf(m) = ∞, lim(⌜σf⌝ ) ≠ lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), σf(m) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦
Used terms: m
| # σf(m) = ∞, lim(⌜σf⌝ ) ≠ lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), σf(m) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦ |
# σf(m) = ∞, σf(m) = lim(⌜σf⌝ ), lim(⌜σf⌝ ) ≠ lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), σf(m) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦
# σf(m) = ∞, lim(⌜σf⌝ ) ≠ lim(⌜λ n. σf(n + m)⌝ ), σf(m) ≠ lim(⌜σf⌝ ), mon(⌜σf⌝ ), σf(m) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦
Used formulas: σf(m) = lim(⌜σf⌝ )
| # σf(m) = ∞, σf(m) = lim(⌜σf⌝ ), lim(⌜σf⌝ ) ≠ lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), σf(m) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦ |
# σf(m) = ∞, σf(m) = lim(⌜σf⌝ ), σf(m) ≠ lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ∀ n. σf(n) ⊑ σf(m), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ m0. ∃ n. ⌜σf(m).take(m0)⌝ ⊑ σf(n) ⊦
Used simplifier rules: ⊦ ¬ ∞ < n∞; (s) ⊦ σ ⊑ σ; (s)
| # σf(m) = ∞, σf(m) = lim(⌜σf⌝ ), σf(m) ≠ lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ∀ n. σf(n) ⊑ σf(m), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ m0. ∃ n. ⌜σf(m).take(m0)⌝ ⊑ σf(n) ⊦ |
# σf(m) = ∞, σf(m) = lim(⌜σf⌝ ), σf(m) ≠ lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), σf(0 + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ∃ n. ⌜σf(m).take(m0)⌝ ⊑ σf(n), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ σf(m) ⊦
Used terms: 0
| # σf(m) = ∞, σf(m) = lim(⌜σf⌝ ), σf(m) ≠ lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), σf(0 + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ∃ n. ⌜σf(m).take(m0)⌝ ⊑ σf(n), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ σf(m) ⊦ |
# σf(m) = ∞, σf(m) = lim(⌜σf⌝ ), σf(m) ≠ lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), σf(m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ σf(m), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ m0. ∃ n. ⌜σf(m).take(m0)⌝ ⊑ σ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 ⊦ n + 0 = n; (s)
| # σf(m) = ∞, σf(m) = lim(⌜σf⌝ ), σf(m) ≠ lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), σf(m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ σf(m), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ m0. ∃ n. ⌜σf(m).take(m0)⌝ ⊑ σf(n) ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
Used simplifier rules: ⊦ σ + σ0 = σ ↔ σ0 = [] ∨ # σ = ∞; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream Used terms: σf(m), lim(⌜λ n. σf(n + m)⌝ )
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| # σf(m) = ∞, lim(⌜σf⌝ ) ≠ lim(⌜λ n. σf(n + m)⌝ ), σf(m) ≠ lim(⌜σf⌝ ), mon(⌜σf⌝ ), σf(m) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
Used simplifier rules: ⊦ σ + σ0 = σ ↔ σ0 = [] ∨ # σ = ∞; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream Used terms: σf(m), lim(⌜σf⌝ )
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| # σf(m) ≠ ∞, lim(⌜σf⌝ ) ≠ lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦ |
⊦ n∞ = ∞ ↔ ¬(∃ n. n∞ = ⌜n⌝ )
lim(⌜σf⌝ ) ≠ lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∃ n. # σf(m) = ⌜n⌝ ⊦
Used terms: # σf(m)
| ⊦ n∞ = ∞ ↔ ¬(∃ n. n∞ = ⌜n⌝ ) |
| lim(⌜σf⌝ ) ≠ lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∃ n. # σf(m) = ⌜n⌝ ⊦ |
# σf(m) = ⌜n⌝ , lim(⌜σf⌝ ) ≠ lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦
| # σf(m) = ⌜n⌝ , lim(⌜σf⌝ ) ≠ lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦ |
⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n))
# σf(m) = ⌜n⌝ , mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), # lim(⌜σf⌝ ) ≠ # lim(⌜λ n. σf(n + m)⌝ ) ∨ (∃ n. ¬(⌜n⌝ < # lim(⌜σf⌝ ) → lim(⌜σf⌝ )(n) = lim(⌜λ n. σf(n + m)⌝ )(n))) ⊦
Used terms: lim(⌜σf⌝ ), lim(⌜λ n. σf(n + m)⌝ )
| ⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n)) |
| # σf(m) = ⌜n⌝ , mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), # lim(⌜σf⌝ ) ≠ # lim(⌜λ n. σf(n + m)⌝ ) ∨ (∃ n. ¬(⌜n⌝ < # lim(⌜σf⌝ ) → lim(⌜σf⌝ )(n) = lim(⌜λ n. σf(n + m)⌝ )(n))) ⊦ |
# σf(m) = ⌜n⌝ , mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), # lim(⌜σf⌝ ) ≠ # lim(⌜λ n. σf(n + m)⌝ ) ∨ ¬(⌜n0⌝ < # lim(⌜σf⌝ ) → lim(⌜σf⌝ )(n0) = lim(⌜λ n. σf(n + m)⌝ )(n0)) ⊦
| # σf(m) = ⌜n⌝ , mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), # lim(⌜σf⌝ ) ≠ # lim(⌜λ n. σf(n + m)⌝ ) ∨ ¬(⌜n0⌝ < # lim(⌜σf⌝ ) → lim(⌜σf⌝ )(n0) = lim(⌜λ n. σf(n + m)⌝ )(n0)) ⊦ |
# σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) ≠ # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), # lim(⌜σf⌝ ) ≠ # lim(⌜λ n. σf(n + m)⌝ ) ∨ ¬(⌜n0⌝ < # lim(⌜σf⌝ ) → lim(⌜σf⌝ )(n0) = lim(⌜λ n. σf(n + m)⌝ )(n0)) ⊦
# lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), # lim(⌜σf⌝ ) ≠ # lim(⌜λ n. σf(n + m)⌝ ) ∨ ¬(⌜n0⌝ < # lim(⌜σf⌝ ) → lim(⌜σf⌝ )(n0) = lim(⌜λ n. σf(n + m)⌝ )(n0)) ⊦
Used formulas: # lim(⌜σf⌝ ) ≠ # lim(⌜λ n. σf(n + m)⌝ )
| # σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) ≠ # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), # lim(⌜σf⌝ ) ≠ # lim(⌜λ n. σf(n + m)⌝ ) ∨ ¬(⌜n0⌝ < # lim(⌜σf⌝ ) → lim(⌜σf⌝ )(n0) = lim(⌜λ n. σf(n + m)⌝ )(n0)) ⊦ |
# σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) ≠ # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦
| # σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) ≠ # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦ |
# σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) ≠ # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) < # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦
# σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) ≠ # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ¬ # lim(⌜σf⌝ ) < # lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦
Used formulas: # lim(⌜σf⌝ ) < # lim(⌜λ n. σf(n + m)⌝ )
| # σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) ≠ # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) < # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦ |
# σf(m) = ⌜n⌝ , ⌜m0⌝ = # lim(⌜σf⌝ ), # lim(⌜σf⌝ ) ≠ # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) < # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦
Used simplifier rules: Natinf freely generated by ∞, ⌝; ⊦ ¬ ∞ < n∞; (s)
| # σf(m) = ⌜n⌝ , ⌜m0⌝ = # lim(⌜σf⌝ ), # lim(⌜σf⌝ ) ≠ # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) < # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦ |
# σf(m) = ⌜n⌝ , ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ < # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦
| # σf(m) = ⌜n⌝ , ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ < # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦ |
# σf(m) = ⌜n⌝ , ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ < # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0 + 1⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ σf(n + m)), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦
Used terms: m0 + 1
| # σf(m) = ⌜n⌝ , ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ < # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0 + 1⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ σf(n + m)), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦ |
# σf(m) = ⌜n⌝ , ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ < # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ σf(n0 + m), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(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⌝ + ⌜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)
| # σf(m) = ⌜n⌝ , ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ < # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ σf(n0 + m), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦ |
# σf(m) = ⌜n⌝ , ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ < # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ σf(n0 + m), σf(n0 + m) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦
Used terms: n0 + m
| # σf(m) = ⌜n⌝ , ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ < # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ σf(n0 + m), σf(n0 + m) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦ |
# σf(m) = ⌜n⌝ , ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ < # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), σf(n0 + m) ⊑ lim(⌜σf⌝ ), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ σf(n0 + m), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦
Used simplifier rules: leq-trans: ⊦ σ ⊑ σ1 ∧ σ1 ⊑ σ2 → σ ⊑ σ2; (forward) from specification stream
| # σf(m) = ⌜n⌝ , ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ < # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), σf(n0 + m) ⊑ lim(⌜σf⌝ ), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ σf(n0 + m), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
# σf(m) = ⌜n⌝ , ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ < # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜σf⌝ ), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ σf(n0 + m), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∃ σ1. σf(n0 + m) + σ1 = lim(⌜σf⌝ ) ⊦
Used terms: σf(n0 + m), lim(⌜σf⌝ )
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| # σf(m) = ⌜n⌝ , ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ < # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜σf⌝ ), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ σf(n0 + m), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∃ σ1. σf(n0 + m) + σ1 = lim(⌜σf⌝ ) ⊦ |
# σf(m) = ⌜n⌝ , σf(n0 + m) + σ1 = lim(⌜σf⌝ ), ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ < # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ σf(n0 + m), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦
| # σf(m) = ⌜n⌝ , σf(n0 + m) + σ1 = lim(⌜σf⌝ ), ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ < # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ σf(n0 + m), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦ |
# σf(m) = ⌜n⌝ , σf(n0 + m) + σ1 = lim(⌜σf⌝ ), σ1 = ⌜x⌝ , ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ < # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜σf⌝ ), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ σf(n0 + m), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦
# σf(m) = ⌜n⌝ , σf(n0 + m) + σ1 = lim(⌜σf⌝ ), σ1 = ⌜nf⌝ , ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ < # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜σf⌝ ), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ σf(n0 + m), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦
Used simplifier rules: Stream[A] freely generated by ⌝, ⌝;
| # σf(m) = ⌜n⌝ , σf(n0 + m) + σ1 = lim(⌜σf⌝ ), σ1 = ⌜x⌝ , ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ < # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜σf⌝ ), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ σf(n0 + m), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦ |
# σf(m) = ⌜n⌝ , σf(n0 + m) + ⌜x⌝ = lim(⌜σf⌝ ), ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ < # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ σf(n0 + m), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦
| # σf(m) = ⌜n⌝ , σf(n0 + m) + ⌜x⌝ = lim(⌜σf⌝ ), ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ < # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ σf(n0 + m), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦ |
⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n))
#(σf(n0 + m) + ⌜x⌝ ) = # lim(⌜σf⌝ ), # σf(m) = ⌜n⌝ , ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ < # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜σf⌝ ), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ σf(n0 + m), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. ⌜n⌝ < #(σf(n0 + m) + ⌜x⌝ ) → (σf(n0 + m) + ⌜x⌝ )(n) = lim(⌜σf⌝ )(n) ⊦
Used terms: σf(n0 + m) + ⌜x⌝ , lim(⌜σf⌝ )
| ⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n)) |
| #(σf(n0 + m) + ⌜x⌝ ) = # lim(⌜σf⌝ ), # σf(m) = ⌜n⌝ , ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ < # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜σf⌝ ), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ σf(n0 + m), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. ⌜n⌝ < #(σf(n0 + m) + ⌜x⌝ ) → (σf(n0 + m) + ⌜x⌝ )(n) = lim(⌜σf⌝ )(n) ⊦ |
# σf(m) = ⌜n⌝ , # σf(n0 + m) + ⌜# x⌝ = ⌜m0⌝ , ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ < # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜σf⌝ ), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ σf(n0 + m), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n1. n1 < m0 → (σf(n0 + m) + ⌜x⌝ )(n1) = lim(⌜σf⌝ )(n1) ⊦
Used simplifier rules: ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s) ⊦ #(σ + σ1) = # σ + # σ1; (s)
| # σf(m) = ⌜n⌝ , # σf(n0 + m) + ⌜# x⌝ = ⌜m0⌝ , ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ < # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜σf⌝ ), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ σf(n0 + m), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n1. n1 < m0 → (σf(n0 + m) + ⌜x⌝ )(n1) = lim(⌜σf⌝ )(n1) ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
# σf(m) = ⌜n⌝ , # σf(n0 + m) + ⌜# x⌝ = ⌜m0⌝ , ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ < # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜σf⌝ ), ∀ n1. n1 < m0 → (σf(n0 + m) + ⌜x⌝ )(n1) = lim(⌜σf⌝ )(n1), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∃ σ1. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ + σ1 = σf(n0 + m) ⊦
Used terms: ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ , σf(n0 + m)
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| # σf(m) = ⌜n⌝ , # σf(n0 + m) + ⌜# x⌝ = ⌜m0⌝ , ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ < # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜σf⌝ ), ∀ n1. n1 < m0 → (σf(n0 + m) + ⌜x⌝ )(n1) = lim(⌜σf⌝ )(n1), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∃ σ1. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ + σ1 = σf(n0 + m) ⊦ |
# σf(m) = ⌜n⌝ , ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ + σ1 = σf(n0 + m), # σf(n0 + m) + ⌜# x⌝ = ⌜m0⌝ , ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ < # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n1. n1 < m0 → (σf(n0 + m) + ⌜x⌝ )(n1) = lim(⌜σf⌝ )(n1) ⊦
| # σf(m) = ⌜n⌝ , ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ + σ1 = σf(n0 + m), # σf(n0 + m) + ⌜# x⌝ = ⌜m0⌝ , ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ < # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n1. n1 < m0 → (σf(n0 + m) + ⌜x⌝ )(n1) = lim(⌜σf⌝ )(n1) ⊦ |
⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n))
Used simplifier rules: ⊦ #(σ + σ1) = # σ + # σ1; (s) ⊦ # ⌜σ.take(n)⌝ = ⌜# σ.take(n)⌝ ; (s) ⊦ # σ < ⌜n⌝ + ⌜1⌝ ↔ ¬ ⌜n⌝ < # σ; (s) ¬ # σ < ⌜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 append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ ⌜n⌝ < ⌜1⌝ + n∞ ↔ ¬ n∞ < ⌜n⌝ ; (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 Used terms: ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ + σ1, σf(n0 + m)
| ⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n)) |
| # σf(m) = ⌜n⌝ , σf(n0 + m) + σ1 = lim(⌜σf⌝ ), σ1 = ⌜nf⌝ , ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ < # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜σf⌝ ), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ σf(n0 + m), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦ |
# σf(m) = ⌜n⌝ , σf(n0 + m) + ⌜nf⌝ = lim(⌜σf⌝ ), ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ < # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ σf(n0 + m), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦
| # σf(m) = ⌜n⌝ , σf(n0 + m) + ⌜nf⌝ = lim(⌜σf⌝ ), ⌜m0⌝ = # lim(⌜σf⌝ ), ⌜m0⌝ ≠ # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ < # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ σf(n0 + m), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦ |
⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n))
Used simplifier rules: ⊦ #(σ + σ1) = # σ + # σ1; (s) ⊦ # ⌜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 append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ ⌜m⌝ < ∞; (s) ⊦ ⌜n⌝ ≠ ∞; (s) Used terms: σf(n0 + m) + ⌜nf⌝ , lim(⌜σf⌝ )
| ⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n)) |
| # σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) ≠ # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ¬ # lim(⌜σf⌝ ) < # lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦ |
# σf(m) = ⌜n⌝ , ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ¬ # lim(⌜σf⌝ ) < # lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦
Used simplifier rules: Natinf freely generated by ∞, ⌝; ⊦ n∞ < ∞ ↔ n∞ ≠ ∞; (s)
| # σf(m) = ⌜n⌝ , ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ # lim(⌜λ n. σf(n + m)⌝ ), mon(⌜σf⌝ ), ¬ # lim(⌜σf⌝ ) < # lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦ |
# σf(m) = ⌜n⌝ , ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , mon(⌜σf⌝ ), ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ , ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦
| # σf(m) = ⌜n⌝ , ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , mon(⌜σf⌝ ), ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ , ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦ |
# σf(m) = ⌜n⌝ , ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , mon(⌜σf⌝ ), ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ , ¬ # lim(⌜σf⌝ ) < ⌜m0 + 1⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n)), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦
Used terms: m0 + 1
| # σf(m) = ⌜n⌝ , ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , mon(⌜σf⌝ ), ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ , ¬ # lim(⌜σf⌝ ) < ⌜m0 + 1⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n)), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦ |
# σf(m) = ⌜n⌝ , ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦
Used simplifier rules: ⊦ n∞ < n∞0 → ¬ n∞0 < n∞; (s) ⊦ ¬ n∞1 < n∞ → (n∞ < n∞1 ↔ n∞ ≠ n∞1); (ss) 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)
| # σf(m) = ⌜n⌝ , ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦ |
# σf(m) = ⌜n⌝ , ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), σf(n0 + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦
Used terms: n0
| # σf(m) = ⌜n⌝ , ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), σf(n0 + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦ |
mon(σσ), m ≤ n, ⌜n⌝ < # σσ ⊦ σσ(m) ⊑ σσ(n)
# σf(m) = ⌜n⌝ , ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), σf(n0 + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ⌜σf⌝ (n0) ⊑ ⌜σf⌝ (n0 + m), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦
Used simplifier rules: ⊦ m ≤ m + 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 ⊦ # ⌜nf⌝ = ∞; (s) ⊦ n∞ < ∞ ↔ 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 Used terms: ⌜σf⌝ , n0, n0 + m
| mon(σσ), m ≤ n, ⌜n⌝ < # σσ ⊦ σσ(m) ⊑ σσ(n) |
| # σf(m) = ⌜n⌝ , ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), σf(n0 + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ⌜σf⌝ (n0) ⊑ ⌜σf⌝ (n0 + m), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦ |
# σf(m) = ⌜n⌝ , ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), σf(n0) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0 + m), σf(n0) ⊑ σf(n0 + m), σf(n0 + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦
Used simplifier rules: leq-trans: ⊦ σ ⊑ σ1 ∧ σ1 ⊑ σ2 → σ ⊑ σ2; (forward) from specification stream ⊦ ⌜nf⌝ (n) = nf(n); (s)
| # σf(m) = ⌜n⌝ , ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), σf(n0) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0 + m), σf(n0) ⊑ σf(n0 + m), σf(n0 + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
# σf(m) = ⌜n⌝ , ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), σf(n0 + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0 + m), σf(n0) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∃ σ1. σf(n0) + σ1 = σf(n0 + m) ⊦
Used terms: σf(n0), σf(n0 + m)
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| # σf(m) = ⌜n⌝ , ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), σf(n0 + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0 + m), σf(n0) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∃ σ1. σf(n0) + σ1 = σf(n0 + m) ⊦ |
# σf(m) = ⌜n⌝ , σf(n0) + σ1 = σf(n0 + m), ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), σf(n0) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + σ1, σf(n0) + σ1 ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦
| # σf(m) = ⌜n⌝ , σf(n0) + σ1 = σf(n0 + m), ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), σf(n0) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + σ1, σf(n0) + σ1 ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦ |
# σf(m) = ⌜n⌝ , σf(n0) + σ1 = σf(n0 + m), σ1 = ⌜x⌝ , ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), σf(n0) + σ1 ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + σ1, σf(n0) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦
# σf(m) = ⌜n⌝ , σf(n0) + σ1 = σf(n0 + m), σ1 = ⌜nf⌝ , ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), σf(n0) + σ1 ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + σ1, σf(n0) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦
Used simplifier rules: Stream[A] freely generated by ⌝, ⌝;
| # σf(m) = ⌜n⌝ , σf(n0) + σ1 = σf(n0 + m), σ1 = ⌜x⌝ , ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), σf(n0) + σ1 ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + σ1, σf(n0) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦ |
# σf(m) = ⌜n⌝ , σf(n0) + ⌜x⌝ = σf(n0 + m), ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), σf(n0) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + ⌜x⌝ , σf(n0) + ⌜x⌝ ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦
| # σf(m) = ⌜n⌝ , σf(n0) + ⌜x⌝ = σf(n0 + m), ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), σf(n0) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + ⌜x⌝ , σf(n0) + ⌜x⌝ ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
# σf(m) = ⌜n⌝ , σf(n0) + ⌜x⌝ = σf(n0 + m), ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + ⌜x⌝ , σf(n0) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∃ σ1. (σf(n0) + ⌜x⌝ ) + σ1 = lim(⌜λ n. σf(n + m)⌝ ) ⊦
Used terms: σf(n0) + ⌜x⌝ , lim(⌜λ n. σf(n + m)⌝ )
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| # σf(m) = ⌜n⌝ , σf(n0) + ⌜x⌝ = σf(n0 + m), ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + ⌜x⌝ , σf(n0) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∃ σ1. (σf(n0) + ⌜x⌝ ) + σ1 = lim(⌜λ n. σf(n + m)⌝ ) ⊦ |
# σf(m) = ⌜n⌝ , σf(n0) + ⌜x⌝ = σf(n0 + m), (σf(n0) + ⌜x⌝ ) + σ1 = lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ = # σf(n0) + ⌜# x⌝ + # σ1, # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + ⌜x⌝ , ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ (σf(n0) + ⌜x⌝ ) + σ1, ∀ n. σf(n + m) ⊑ (σf(n0) + ⌜x⌝ ) + σ1, ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ m1. ¬ m0 < m1 → (∃ n. ⌜((σf(n0) + ⌜x⌝ ) + σ1).take(m1)⌝ ⊑ σf(n + m)) ⊦
Used simplifier rules: ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s) ⊦ #(σ + σ1) = # σ + # σ1; (s) ⊦ σ1 ⊑ σ1 + σ2; (s) leq-trans: ⊦ σ ⊑ σ1 ∧ σ1 ⊑ σ2 → σ ⊑ σ2; (forward) from specification stream
| # σf(m) = ⌜n⌝ , σf(n0) + ⌜x⌝ = σf(n0 + m), (σf(n0) + ⌜x⌝ ) + σ1 = lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ = # σf(n0) + ⌜# x⌝ + # σ1, # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + ⌜x⌝ , ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ (σf(n0) + ⌜x⌝ ) + σ1, ∀ n. σf(n + m) ⊑ (σf(n0) + ⌜x⌝ ) + σ1, ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ m1. ¬ m0 < m1 → (∃ n. ⌜((σf(n0) + ⌜x⌝ ) + σ1).take(m1)⌝ ⊑ σf(n + m)) ⊦ |
# σf(m) = ⌜n⌝ , (σf(n0) + ⌜x⌝ ) + σ1 = lim(⌜λ n. σf(n + m)⌝ ), σf(n0) + ⌜x⌝ = σf(n0 + m), σ1 = ⌜x0⌝ , ⌜m0⌝ = # σf(n0) + ⌜# x⌝ + # σ1, # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ (σf(n0) + ⌜x⌝ ) + σ1, ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + ⌜x⌝ , ∀ m1. ¬ m0 < m1 → (∃ n. ⌜((σf(n0) + ⌜x⌝ ) + σ1).take(m1)⌝ ⊑ σf(n + m)), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ (σf(n0) + ⌜x⌝ ) + σ1 ⊦
Used simplifier rules: Stream[A] freely generated by ⌝, ⌝; ⊦ # ⌜nf⌝ = ∞; (s) ⊦ ⌜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)
| # σf(m) = ⌜n⌝ , (σf(n0) + ⌜x⌝ ) + σ1 = lim(⌜λ n. σf(n + m)⌝ ), σf(n0) + ⌜x⌝ = σf(n0 + m), σ1 = ⌜x0⌝ , ⌜m0⌝ = # σf(n0) + ⌜# x⌝ + # σ1, # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ (σf(n0) + ⌜x⌝ ) + σ1, ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + ⌜x⌝ , ∀ m1. ¬ m0 < m1 → (∃ n. ⌜((σf(n0) + ⌜x⌝ ) + σ1).take(m1)⌝ ⊑ σf(n + m)), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ (σf(n0) + ⌜x⌝ ) + σ1 ⊦ |
# σf(m) = ⌜n⌝ , σf(n0) + ⌜x⌝ = σf(n0 + m), (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ = lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ = # σf(n0) + ⌜# x⌝ + ⌜# x0⌝ , # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + ⌜x⌝ , ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ∀ n. σf(n + m) ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ m1. ¬ m0 < m1 → (∃ n. ⌜((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ ).take(m1)⌝ ⊑ σf(n + m)) ⊦
Used simplifier rules: add-assoc: ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2; from specification nat-inf ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s)
| # σf(m) = ⌜n⌝ , σf(n0) + ⌜x⌝ = σf(n0 + m), (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ = lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ = # σf(n0) + ⌜# x⌝ + ⌜# x0⌝ , # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + ⌜x⌝ , ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ∀ n. σf(n + m) ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ m1. ¬ m0 < m1 → (∃ n. ⌜((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ ).take(m1)⌝ ⊑ σf(n + m)) ⊦ |
⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n))
#((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , σf(n0) + ⌜x⌝ = σf(n0 + m), ⌜m0⌝ = # σf(n0) + ⌜# x⌝ + ⌜# x0⌝ , # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + ⌜x⌝ , ∀ m1. ¬ m0 < m1 → (∃ n. ⌜((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ ).take(m1)⌝ ⊑ σf(n + m)), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ∀ n. ⌜n⌝ < #((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ ) → ((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ )(n) = lim(⌜λ n. σf(n + m)⌝ )(n) ⊦
Used terms: (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , lim(⌜λ n. σf(n + m)⌝ )
| ⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n)) |
| #((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , σf(n0) + ⌜x⌝ = σf(n0 + m), ⌜m0⌝ = # σf(n0) + ⌜# x⌝ + ⌜# x0⌝ , # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + ⌜x⌝ , ∀ m1. ¬ m0 < m1 → (∃ n. ⌜((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ ).take(m1)⌝ ⊑ σf(n + m)), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ∀ n. ⌜n⌝ < #((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ ) → ((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ )(n) = lim(⌜λ n. σf(n + m)⌝ )(n) ⊦ |
# σf(m) = ⌜n⌝ , σf(n0) + ⌜x⌝ = σf(n0 + m), ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ = # σf(n0) + ⌜# x⌝ + ⌜# x0⌝ , # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + ⌜x⌝ , ∀ m1. ¬ m0 < m1 → (∃ n. ⌜((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ ).take(m1)⌝ ⊑ σf(n + m)), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ∀ n1. n1 < m0 → ((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ )(n1) = lim(⌜λ n. σf(n + m)⌝ )(n1) ⊦
Used simplifier rules: ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s) ⊦ #(σ + σ1) = # σ + # σ1; (s)
| # σf(m) = ⌜n⌝ , σf(n0) + ⌜x⌝ = σf(n0 + m), ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ = # σf(n0) + ⌜# x⌝ + ⌜# x0⌝ , # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + ⌜x⌝ , ∀ m1. ¬ m0 < m1 → (∃ n. ⌜((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ ).take(m1)⌝ ⊑ σf(n + m)), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ∀ n1. n1 < m0 → ((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ )(n1) = lim(⌜λ n. σf(n + m)⌝ )(n1) ⊦ |
⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n))
#(σf(n0) + ⌜x⌝ ) = # σf(n0 + m), # σf(m) = ⌜n⌝ , ⌜m0⌝ = # σf(n0) + ⌜# x⌝ + ⌜# x0⌝ , ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + ⌜x⌝ , ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ∀ n1. n1 < m0 → ((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ )(n1) = lim(⌜λ n. σf(n + m)⌝ )(n1), ∀ n. σf(n + m) ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ m1. ¬ m0 < m1 → (∃ n. ⌜((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ ).take(m1)⌝ ⊑ σf(n + m)), ∀ n. ⌜n⌝ < #(σf(n0) + ⌜x⌝ ) → (σf(n0) + ⌜x⌝ )(n) = σf(n0 + m)(n) ⊦
Used terms: σf(n0) + ⌜x⌝ , σf(n0 + m)
| ⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n)) |
| #(σf(n0) + ⌜x⌝ ) = # σf(n0 + m), # σf(m) = ⌜n⌝ , ⌜m0⌝ = # σf(n0) + ⌜# x⌝ + ⌜# x0⌝ , ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + ⌜x⌝ , ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ∀ n1. n1 < m0 → ((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ )(n1) = lim(⌜λ n. σf(n + m)⌝ )(n1), ∀ n. σf(n + m) ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ m1. ¬ m0 < m1 → (∃ n. ⌜((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ ).take(m1)⌝ ⊑ σf(n + m)), ∀ n. ⌜n⌝ < #(σf(n0) + ⌜x⌝ ) → (σf(n0) + ⌜x⌝ )(n) = σf(n0 + m)(n) ⊦ |
# σf(m) = ⌜n⌝ , # σf(n0) + ⌜# x⌝ = # σf(n0 + m), ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ = # σf(n0) + ⌜# x⌝ + ⌜# x0⌝ , # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + ⌜x⌝ , ∀ m1. ¬ m0 < m1 → (∃ n. ⌜((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ ).take(m1)⌝ ⊑ σf(n + m)), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ∀ n1. n1 < m0 → ((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ )(n1) = lim(⌜λ n. σf(n + m)⌝ )(n1), ∀ n1. ⌜n1⌝ < # σf(n0) + ⌜# x⌝ → (σf(n0) + ⌜x⌝ )(n1) = σf(n0 + m)(n1) ⊦
Used simplifier rules: append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s) ⊦ #(σ + σ1) = # σ + # σ1; (s)
| # σf(m) = ⌜n⌝ , # σf(n0) + ⌜# x⌝ = # σf(n0 + m), ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ = # σf(n0) + ⌜# x⌝ + ⌜# x0⌝ , # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + ⌜x⌝ , ∀ m1. ¬ m0 < m1 → (∃ n. ⌜((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ ).take(m1)⌝ ⊑ σf(n + m)), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ∀ n1. n1 < m0 → ((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ )(n1) = lim(⌜λ n. σf(n + m)⌝ )(n1), ∀ n1. ⌜n1⌝ < # σf(n0) + ⌜# x⌝ → (σf(n0) + ⌜x⌝ )(n1) = σf(n0 + m)(n1) ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
# σf(m) = ⌜n⌝ , # σf(n0) + ⌜# x⌝ = # σf(n0 + m), ⌜m0⌝ = # σf(n0) + ⌜# x⌝ + ⌜# x0⌝ , ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ∀ n1. ⌜n1⌝ < # σf(n0) + ⌜# x⌝ → (σf(n0) + ⌜x⌝ )(n1) = σf(n0 + m)(n1), ∀ n1. n1 < m0 → ((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ )(n1) = lim(⌜λ n. σf(n + m)⌝ )(n1), ∀ n. σf(n + m) ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ m1. ¬ m0 < m1 → (∃ n. ⌜((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ ).take(m1)⌝ ⊑ σf(n + m)), ∃ σ1. ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ + σ1 = σf(n0) + ⌜x⌝ ⊦
Used terms: ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ , σf(n0) + ⌜x⌝
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| # σf(m) = ⌜n⌝ , # σf(n0) + ⌜# x⌝ = # σf(n0 + m), ⌜m0⌝ = # σf(n0) + ⌜# x⌝ + ⌜# x0⌝ , ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ∀ n1. ⌜n1⌝ < # σf(n0) + ⌜# x⌝ → (σf(n0) + ⌜x⌝ )(n1) = σf(n0 + m)(n1), ∀ n1. n1 < m0 → ((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ )(n1) = lim(⌜λ n. σf(n + m)⌝ )(n1), ∀ n. σf(n + m) ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ m1. ¬ m0 < m1 → (∃ n. ⌜((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ ).take(m1)⌝ ⊑ σf(n + m)), ∃ σ1. ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ + σ1 = σf(n0) + ⌜x⌝ ⊦ |
# σf(m) = ⌜n⌝ , ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ + σ1 = σf(n0) + ⌜x⌝ , # σf(n0) + ⌜# x⌝ = # σf(n0 + m), ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ = # σf(n0) + ⌜# x⌝ + ⌜# x0⌝ , # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ∀ m1. ¬ m0 < m1 → (∃ n. ⌜((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ ).take(m1)⌝ ⊑ σf(n + m)), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ∀ n1. n1 < m0 → ((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ )(n1) = lim(⌜λ n. σf(n + m)⌝ )(n1), ∀ n1. ⌜n1⌝ < # σf(n0) + ⌜# x⌝ → (σf(n0) + ⌜x⌝ )(n1) = σf(n0 + m)(n1) ⊦
| # σf(m) = ⌜n⌝ , ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ + σ1 = σf(n0) + ⌜x⌝ , # σf(n0) + ⌜# x⌝ = # σf(n0 + m), ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ = # σf(n0) + ⌜# x⌝ + ⌜# x0⌝ , # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ∀ m1. ¬ m0 < m1 → (∃ n. ⌜((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ ).take(m1)⌝ ⊑ σf(n + m)), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ∀ n1. n1 < m0 → ((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ )(n1) = lim(⌜λ n. σf(n + m)⌝ )(n1), ∀ n1. ⌜n1⌝ < # σf(n0) + ⌜# x⌝ → (σf(n0) + ⌜x⌝ )(n1) = σf(n0 + m)(n1) ⊦ |
# σf(m) = ⌜n⌝ , # σf(n0) + ⌜# x⌝ = # σf(n0 + m), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ + σ1 = σf(n0) + ⌜x⌝ , σ1 = ⌜x1⌝ , ⌜m0⌝ = # σf(n0) + ⌜# x⌝ + ⌜# x0⌝ , ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ∀ n1. ⌜n1⌝ < # σf(n0) + ⌜# x⌝ → (σf(n0) + ⌜x⌝ )(n1) = σf(n0 + m)(n1), ∀ n1. n1 < m0 → ((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ )(n1) = lim(⌜λ n. σf(n + m)⌝ )(n1), ∀ n. σf(n + m) ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ m1. ¬ m0 < m1 → (∃ n. ⌜((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ ).take(m1)⌝ ⊑ σf(n + m)) ⊦
# σf(m) = ⌜n⌝ , # σf(n0) + ⌜# x⌝ = # σf(n0 + m), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ + σ1 = σf(n0) + ⌜x⌝ , σ1 = ⌜nf⌝ , ⌜m0⌝ = # σf(n0) + ⌜# x⌝ + ⌜# x0⌝ , ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ∀ n1. ⌜n1⌝ < # σf(n0) + ⌜# x⌝ → (σf(n0) + ⌜x⌝ )(n1) = σf(n0 + m)(n1), ∀ n1. n1 < m0 → ((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ )(n1) = lim(⌜λ n. σf(n + m)⌝ )(n1), ∀ n. σf(n + m) ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ m1. ¬ m0 < m1 → (∃ n. ⌜((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ ).take(m1)⌝ ⊑ σf(n + m)) ⊦
Used simplifier rules: Stream[A] freely generated by ⌝, ⌝;
| # σf(m) = ⌜n⌝ , # σf(n0) + ⌜# x⌝ = # σf(n0 + m), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ + σ1 = σf(n0) + ⌜x⌝ , σ1 = ⌜x1⌝ , ⌜m0⌝ = # σf(n0) + ⌜# x⌝ + ⌜# x0⌝ , ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ∀ n1. ⌜n1⌝ < # σf(n0) + ⌜# x⌝ → (σf(n0) + ⌜x⌝ )(n1) = σf(n0 + m)(n1), ∀ n1. n1 < m0 → ((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ )(n1) = lim(⌜λ n. σf(n + m)⌝ )(n1), ∀ n. σf(n + m) ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ m1. ¬ m0 < m1 → (∃ n. ⌜((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ ).take(m1)⌝ ⊑ σf(n + m)) ⊦ |
# σf(m) = ⌜n⌝ , ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ + ⌜x1⌝ = σf(n0) + ⌜x⌝ , # σf(n0) + ⌜# x⌝ = # σf(n0 + m), ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ = # σf(n0) + ⌜# x⌝ + ⌜# x0⌝ , # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ∀ m1. ¬ m0 < m1 → (∃ n. ⌜((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ ).take(m1)⌝ ⊑ σf(n + m)), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ∀ n1. n1 < m0 → ((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ )(n1) = lim(⌜λ n. σf(n + m)⌝ )(n1), ∀ n1. ⌜n1⌝ < # σf(n0) + ⌜# x⌝ → (σf(n0) + ⌜x⌝ )(n1) = σf(n0 + m)(n1) ⊦
| # σf(m) = ⌜n⌝ , ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ + ⌜x1⌝ = σf(n0) + ⌜x⌝ , # σf(n0) + ⌜# x⌝ = # σf(n0 + m), ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ = # σf(n0) + ⌜# x⌝ + ⌜# x0⌝ , # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ∀ m1. ¬ m0 < m1 → (∃ n. ⌜((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ ).take(m1)⌝ ⊑ σf(n + m)), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ∀ n1. n1 < m0 → ((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ )(n1) = lim(⌜λ n. σf(n + m)⌝ )(n1), ∀ n1. ⌜n1⌝ < # σf(n0) + ⌜# x⌝ → (σf(n0) + ⌜x⌝ )(n1) = σf(n0 + m)(n1) ⊦ |
⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n))
#(⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ + ⌜x1⌝ ) = #(σf(n0) + ⌜x⌝ ), # σf(m) = ⌜n⌝ , # σf(n0) + ⌜# x⌝ = # σf(n0 + m), ⌜m0⌝ = # σf(n0) + ⌜# x⌝ + ⌜# x0⌝ , ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ∀ n1. ⌜n1⌝ < # σf(n0) + ⌜# x⌝ → (σf(n0) + ⌜x⌝ )(n1) = σf(n0 + m)(n1), ∀ n1. n1 < m0 → ((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ )(n1) = lim(⌜λ n. σf(n + m)⌝ )(n1), ∀ n. σf(n + m) ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ m1. ¬ m0 < m1 → (∃ n. ⌜((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ ).take(m1)⌝ ⊑ σf(n + m)), ∀ n. ⌜n⌝ < #(⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ + ⌜x1⌝ ) → (⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ + ⌜x1⌝ )(n) = (σf(n0) + ⌜x⌝ )(n) ⊦
Used terms: ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ + ⌜x1⌝ , σf(n0) + ⌜x⌝
| ⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n)) |
| #(⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ + ⌜x1⌝ ) = #(σf(n0) + ⌜x⌝ ), # σf(m) = ⌜n⌝ , # σf(n0) + ⌜# x⌝ = # σf(n0 + m), ⌜m0⌝ = # σf(n0) + ⌜# x⌝ + ⌜# x0⌝ , ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ∀ n1. ⌜n1⌝ < # σf(n0) + ⌜# x⌝ → (σf(n0) + ⌜x⌝ )(n1) = σf(n0 + m)(n1), ∀ n1. n1 < m0 → ((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ )(n1) = lim(⌜λ n. σf(n + m)⌝ )(n1), ∀ n. σf(n + m) ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ m1. ¬ m0 < m1 → (∃ n. ⌜((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ ).take(m1)⌝ ⊑ σf(n + m)), ∀ n. ⌜n⌝ < #(⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ + ⌜x1⌝ ) → (⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ + ⌜x1⌝ )(n) = (σf(n0) + ⌜x⌝ )(n) ⊦ |
# σf(m) = ⌜n⌝ , # σf(n0) + ⌜# x⌝ = # σf(n0 + m), (⌜m0⌝ + ⌜1⌝ ) + ⌜# x1⌝ = # σf(n0) + ⌜# x⌝ , ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ = # σf(n0) + ⌜# x⌝ + ⌜# x0⌝ , # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ∀ m1. ¬ m0 < m1 → (∃ n. ⌜((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ ).take(m1)⌝ ⊑ σf(n + m)), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ∀ n1. n1 < m0 → ((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ )(n1) = lim(⌜λ n. σf(n + m)⌝ )(n1), ∀ n1. ⌜n1⌝ < # σf(n0) + ⌜# x⌝ → (σf(n0) + ⌜x⌝ )(n1) = σf(n0 + m)(n1), ∀ n1. ¬ m0 + # x1 < n1 → (lim(⌜σf⌝ ).take(m0 + 1) + x1)(n1) = (σf(n0) + ⌜x⌝ )(n1) ⊦
Used simplifier rules: append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ (⌜x⌝ + ⌜x0⌝ )(m) = (x + x0)(m); (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) ⊦ ⌜n⌝ < ⌜1⌝ + n∞ ↔ ¬ n∞ < ⌜n⌝ ; (s) ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ ⌜m + n⌝ = ⌜m⌝ + ⌜n⌝ ; (s) ¬ # σ < ⌜n⌝ ⊦ # σ.take(n) = n; (s) ⊦ # σ < ⌜n⌝ + ⌜1⌝ ↔ ¬ ⌜n⌝ < # σ; (s) ⊦ # ⌜σ.take(n)⌝ = ⌜# σ.take(n)⌝ ; (s) ⊦ #(σ + σ1) = # σ + # σ1; (s)
| # σf(m) = ⌜n⌝ , # σf(n0) + ⌜# x⌝ = # σf(n0 + m), (⌜m0⌝ + ⌜1⌝ ) + ⌜# x1⌝ = # σf(n0) + ⌜# x⌝ , ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ = # σf(n0) + ⌜# x⌝ + ⌜# x0⌝ , # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ∀ m1. ¬ m0 < m1 → (∃ n. ⌜((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ ).take(m1)⌝ ⊑ σf(n + m)), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ∀ n1. n1 < m0 → ((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ )(n1) = lim(⌜λ n. σf(n + m)⌝ )(n1), ∀ n1. ⌜n1⌝ < # σf(n0) + ⌜# x⌝ → (σf(n0) + ⌜x⌝ )(n1) = σf(n0 + m)(n1), ∀ n1. ¬ m0 + # x1 < n1 → (lim(⌜σf⌝ ).take(m0 + 1) + x1)(n1) = (σf(n0) + ⌜x⌝ )(n1) ⊦ |
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) ⊦ ⌜m⌝ + ∞ = ∞; (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)
| # σf(m) = ⌜n⌝ , # σf(n0) + ⌜# x⌝ = # σf(n0 + m), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ + σ1 = σf(n0) + ⌜x⌝ , σ1 = ⌜nf⌝ , ⌜m0⌝ = # σf(n0) + ⌜# x⌝ + ⌜# x0⌝ , ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ∀ n1. ⌜n1⌝ < # σf(n0) + ⌜# x⌝ → (σf(n0) + ⌜x⌝ )(n1) = σf(n0 + m)(n1), ∀ n1. n1 < m0 → ((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ )(n1) = lim(⌜λ n. σf(n + m)⌝ )(n1), ∀ n. σf(n + m) ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ m1. ¬ m0 < m1 → (∃ n. ⌜((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ ).take(m1)⌝ ⊑ σf(n + m)) ⊦ |
# σf(m) = ⌜n⌝ , # σf(n0) + ⌜# x⌝ = # σf(n0 + m), σf(n0) = ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ + ⌜nf⌝ , ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ = # σf(n0) + ⌜# x⌝ + ⌜# x0⌝ , # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ∀ m1. ¬ m0 < m1 → (∃ n. ⌜((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ ).take(m1)⌝ ⊑ σf(n + m)), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ∀ n1. n1 < m0 → ((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ )(n1) = lim(⌜λ n. σf(n + m)⌝ )(n1), ∀ n1. ⌜n1⌝ < # σf(n0) + ⌜# x⌝ → (σf(n0) + ⌜x⌝ )(n1) = σf(n0 + m)(n1) ⊦
Used simplifier rules: append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ σ0 + ⌜x⌝ = σ + ⌜nf0⌝ ↔ σ0 = σ + ⌜nf0⌝ ; (s)
| # σf(m) = ⌜n⌝ , # σf(n0) + ⌜# x⌝ = # σf(n0 + m), σf(n0) = ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ + ⌜nf⌝ , ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ = # σf(n0) + ⌜# x⌝ + ⌜# x0⌝ , # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ∀ m1. ¬ m0 < m1 → (∃ n. ⌜((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ ).take(m1)⌝ ⊑ σf(n + m)), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ (σf(n0) + ⌜x⌝ ) + ⌜x0⌝ , ∀ n1. n1 < m0 → ((σf(n0) + ⌜x⌝ ) + ⌜x0⌝ )(n1) = lim(⌜λ n. σf(n + m)⌝ )(n1), ∀ n1. ⌜n1⌝ < # σf(n0) + ⌜# x⌝ → (σf(n0) + ⌜x⌝ )(n1) = σf(n0 + m)(n1) ⊦ |
⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n))
Used simplifier rules: ⊦ #(σ + σ1) = # σ + # σ1; (s) ⊦ # ⌜σ.take(n)⌝ = ⌜# σ.take(n)⌝ ; (s) ⊦ # σ < ⌜n⌝ + ⌜1⌝ ↔ ¬ ⌜n⌝ < # σ; (s) ¬ # σ < ⌜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 ⊦ # ⌜nf⌝ = ∞; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ ⌜m⌝ + ∞ = ∞; (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) Used terms: σf(n0), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ + ⌜nf⌝
| ⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n)) |
| # σf(m) = ⌜n⌝ , σf(n0) + σ1 = σf(n0 + m), σ1 = ⌜nf⌝ , ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), σf(n0) + σ1 ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + σ1, σf(n0) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦ |
# σf(m) = ⌜n⌝ , σf(n0) + ⌜nf⌝ = σf(n0 + m), ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), σf(n0) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + ⌜nf⌝ , σf(n0) + ⌜nf⌝ ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦
| # σf(m) = ⌜n⌝ , σf(n0) + ⌜nf⌝ = σf(n0 + m), ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), σf(n0) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + ⌜nf⌝ , σf(n0) + ⌜nf⌝ ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦ |
⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n))
#(σf(n0) + ⌜nf⌝ ) = # σf(n0 + m), # σf(m) = ⌜n⌝ , ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), σf(n0) + ⌜nf⌝ ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + ⌜nf⌝ , σf(n0) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. ⌜n⌝ < #(σf(n0) + ⌜nf⌝ ) → (σf(n0) + ⌜nf⌝ )(n) = σf(n0 + m)(n) ⊦
Used terms: σf(n0) + ⌜nf⌝ , σf(n0 + m)
| ⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n)) |
| #(σf(n0) + ⌜nf⌝ ) = # σf(n0 + m), # σf(m) = ⌜n⌝ , ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), σf(n0) + ⌜nf⌝ ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + ⌜nf⌝ , σf(n0) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. ⌜n⌝ < #(σf(n0) + ⌜nf⌝ ) → (σf(n0) + ⌜nf⌝ )(n) = σf(n0 + m)(n) ⊦ |
# σf(m) = ⌜n⌝ , ∞ = # σf(n0 + m), ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), σf(n0) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + ⌜nf⌝ , σf(n0) + ⌜nf⌝ ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n1. (σf(n0) + ⌜nf⌝ )(n1) = σf(n0 + m)(n1) ⊦
Used simplifier rules: ⊦ ⌜m⌝ < ∞; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream 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) ⊦ # ⌜nf⌝ = ∞; (s) ⊦ #(σ + σ1) = # σ + # σ1; (s)
| # σf(m) = ⌜n⌝ , ∞ = # σf(n0 + m), ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), σf(n0) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + ⌜nf⌝ , σf(n0) + ⌜nf⌝ ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n1. (σf(n0) + ⌜nf⌝ )(n1) = σf(n0 + m)(n1) ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
# σf(m) = ⌜n⌝ , ∞ = # σf(n0 + m), ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), σf(n0) + ⌜nf⌝ ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + ⌜nf⌝ , ∀ n1. (σf(n0) + ⌜nf⌝ )(n1) = σf(n0 + m)(n1), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∃ σ1. σf(n0) + σ1 = lim(⌜λ n. σf(n + m)⌝ ) ⊦
Used terms: σf(n0), lim(⌜λ n. σf(n + m)⌝ )
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| # σf(m) = ⌜n⌝ , ∞ = # σf(n0 + m), ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), σf(n0) + ⌜nf⌝ ⊑ lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + ⌜nf⌝ , ∀ n1. (σf(n0) + ⌜nf⌝ )(n1) = σf(n0 + m)(n1), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∃ σ1. σf(n0) + σ1 = lim(⌜λ n. σf(n + m)⌝ ) ⊦ |
# σf(m) = ⌜n⌝ , σf(n0) + σ1 = lim(⌜λ n. σf(n + m)⌝ ), ∞ = # σf(n0 + m), ⌜m0⌝ = # σf(n0) + # σ1, # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + ⌜nf⌝ , σf(n0) + ⌜nf⌝ ⊑ σf(n0) + σ1, ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + σ1, ∀ n. σf(n + m) ⊑ σf(n0) + σ1, ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n1. (σf(n0) + ⌜nf⌝ )(n1) = σf(n0 + m)(n1), ∀ m1. ¬ m0 < m1 → (∃ n. ⌜(σf(n0) + σ1).take(m1)⌝ ⊑ σf(n + m)) ⊦
Used simplifier rules: ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ #(σ + σ1) = # σ + # σ1; (s) leq-trans: ⊦ σ ⊑ σ1 ∧ σ1 ⊑ σ2 → σ ⊑ σ2; (forward) from specification stream
| # σf(m) = ⌜n⌝ , σf(n0) + σ1 = lim(⌜λ n. σf(n + m)⌝ ), ∞ = # σf(n0 + m), ⌜m0⌝ = # σf(n0) + # σ1, # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + ⌜nf⌝ , σf(n0) + ⌜nf⌝ ⊑ σf(n0) + σ1, ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + σ1, ∀ n. σf(n + m) ⊑ σf(n0) + σ1, ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n1. (σf(n0) + ⌜nf⌝ )(n1) = σf(n0 + m)(n1), ∀ m1. ¬ m0 < m1 → (∃ n. ⌜(σf(n0) + σ1).take(m1)⌝ ⊑ σf(n + m)) ⊦ |
⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n))
#(σf(n0) + σ1) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , ∞ = # σf(n0 + m), ⌜m0⌝ = # σf(n0) + # σ1, # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + σ1, ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), σf(n0) + ⌜nf⌝ ⊑ σf(n0) + σ1, ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + ⌜nf⌝ , ∀ m1. ¬ m0 < m1 → (∃ n. ⌜(σf(n0) + σ1).take(m1)⌝ ⊑ σf(n + m)), ∀ n1. (σf(n0) + ⌜nf⌝ )(n1) = σf(n0 + m)(n1), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ σf(n0) + σ1, ∀ n. ⌜n⌝ < #(σf(n0) + σ1) → (σf(n0) + σ1)(n) = lim(⌜λ n. σf(n + m)⌝ )(n) ⊦
Used terms: σf(n0) + σ1, lim(⌜λ n. σf(n + m)⌝ )
| ⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n)) |
| #(σf(n0) + σ1) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , ∞ = # σf(n0 + m), ⌜m0⌝ = # σf(n0) + # σ1, # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + σ1, ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), σf(n0) + ⌜nf⌝ ⊑ σf(n0) + σ1, ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + ⌜nf⌝ , ∀ m1. ¬ m0 < m1 → (∃ n. ⌜(σf(n0) + σ1).take(m1)⌝ ⊑ σf(n + m)), ∀ n1. (σf(n0) + ⌜nf⌝ )(n1) = σf(n0 + m)(n1), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ σf(n0) + σ1, ∀ n. ⌜n⌝ < #(σf(n0) + σ1) → (σf(n0) + σ1)(n) = lim(⌜λ n. σf(n + m)⌝ )(n) ⊦ |
# σf(m) = ⌜n⌝ , ∞ = # σf(n0 + m), ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ = # σf(n0) + # σ1, # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + σ1, ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), σf(n0) + ⌜nf⌝ ⊑ σf(n0) + σ1, ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + ⌜nf⌝ , ∀ m1. ¬ m0 < m1 → (∃ n. ⌜(σf(n0) + σ1).take(m1)⌝ ⊑ σf(n + m)), ∀ n1. (σf(n0) + ⌜nf⌝ )(n1) = σf(n0 + m)(n1), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ σf(n0) + σ1, ∀ n1. n1 < m0 → (σf(n0) + σ1)(n1) = lim(⌜λ n. σf(n + m)⌝ )(n1) ⊦
Used simplifier rules: ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ #(σ + σ1) = # σ + # σ1; (s)
| # σf(m) = ⌜n⌝ , ∞ = # σf(n0 + m), ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ = # σf(n0) + # σ1, # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + σ1, ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), σf(n0) + ⌜nf⌝ ⊑ σf(n0) + σ1, ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + ⌜nf⌝ , ∀ m1. ¬ m0 < m1 → (∃ n. ⌜(σf(n0) + σ1).take(m1)⌝ ⊑ σf(n + m)), ∀ n1. (σf(n0) + ⌜nf⌝ )(n1) = σf(n0 + m)(n1), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ σf(n0) + σ1, ∀ n1. n1 < m0 → (σf(n0) + σ1)(n1) = lim(⌜λ n. σf(n + m)⌝ )(n1) ⊦ |
# σf(m) = ⌜n⌝ , σ1 = ⌜x⌝ , ∞ = # σf(n0 + m), ⌜m0⌝ = # σf(n0) + # σ1, ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + ⌜nf⌝ , σf(n0) + ⌜nf⌝ ⊑ σf(n0) + σ1, ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + σ1, ∀ n1. n1 < m0 → (σf(n0) + σ1)(n1) = lim(⌜λ n. σf(n + m)⌝ )(n1), ∀ n. σf(n + m) ⊑ σf(n0) + σ1, ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n1. (σf(n0) + ⌜nf⌝ )(n1) = σf(n0 + m)(n1), ∀ m1. ¬ m0 < m1 → (∃ n. ⌜(σf(n0) + σ1).take(m1)⌝ ⊑ σf(n + m)) ⊦
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)
| # σf(m) = ⌜n⌝ , σ1 = ⌜x⌝ , ∞ = # σf(n0 + m), ⌜m0⌝ = # σf(n0) + # σ1, ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + ⌜nf⌝ , σf(n0) + ⌜nf⌝ ⊑ σf(n0) + σ1, ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + σ1, ∀ n1. n1 < m0 → (σf(n0) + σ1)(n1) = lim(⌜λ n. σf(n + m)⌝ )(n1), ∀ n. σf(n + m) ⊑ σf(n0) + σ1, ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n1. (σf(n0) + ⌜nf⌝ )(n1) = σf(n0 + m)(n1), ∀ m1. ¬ m0 < m1 → (∃ n. ⌜(σf(n0) + σ1).take(m1)⌝ ⊑ σf(n + m)) ⊦ |
# σf(m) = ⌜n⌝ , ∞ = # σf(n0 + m), ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ = # σf(n0) + ⌜# x⌝ , # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), σf(n0) + ⌜nf⌝ ⊑ σf(n0) + ⌜x⌝ , ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + ⌜nf⌝ , ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + ⌜x⌝ , ∀ m1. ¬ m0 < m1 → (∃ n. ⌜(σf(n0) + ⌜x⌝ ).take(m1)⌝ ⊑ σf(n + m)), ∀ n1. (σf(n0) + ⌜nf⌝ )(n1) = σf(n0 + m)(n1), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ σf(n0) + ⌜x⌝ , ∀ n1. n1 < m0 → (σf(n0) + ⌜x⌝ )(n1) = lim(⌜λ n. σf(n + m)⌝ )(n1) ⊦
Used simplifier rules: leq-trans: ⊦ σ ⊑ σ1 ∧ σ1 ⊑ σ2 → σ ⊑ σ2; (forward) from specification stream ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s)
| # σf(m) = ⌜n⌝ , ∞ = # σf(n0 + m), ⌜m0⌝ = # lim(⌜λ n. σf(n + m)⌝ ), ⌜m0⌝ = # σf(n0) + ⌜# x⌝ , # lim(⌜σf⌝ ) ≠ ⌜m0⌝ , ⌜m0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0), σf(n0) + ⌜nf⌝ ⊑ σf(n0) + ⌜x⌝ , ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + ⌜nf⌝ , ⌜lim(⌜σf⌝ ).take(m0 + 1)⌝ ⊑ σf(n0) + ⌜x⌝ , ∀ m1. ¬ m0 < m1 → (∃ n. ⌜(σf(n0) + ⌜x⌝ ).take(m1)⌝ ⊑ σf(n + m)), ∀ n1. (σf(n0) + ⌜nf⌝ )(n1) = σf(n0 + m)(n1), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ σf(n0) + ⌜x⌝ , ∀ n1. n1 < m0 → (σf(n0) + ⌜x⌝ )(n1) = lim(⌜λ n. σf(n + m)⌝ )(n1) ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
Used simplifier rules: ⊦ ⌜nf⌝ + σ = ⌜nf⌝ ; (s) ⊦ σ0 + ⌜x⌝ = σ + ⌜nf0⌝ ↔ σ0 = σ + ⌜nf0⌝ ; (s) ⊦ σ + σ0 = σ ↔ σ0 = [] ∨ # σ = ∞; (s) ⊦ [] ≠ ⌜nf⌝ ; (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: σf(n0) + ⌜nf⌝ , σf(n0) + ⌜x⌝
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜λ n. σf(n + m)⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), # lim(⌜σf⌝ ) ≠ # lim(⌜λ n. σf(n + m)⌝ ) ∨ ¬(⌜n0⌝ < # lim(⌜σf⌝ ) → lim(⌜σf⌝ )(n0) = lim(⌜λ n. σf(n + m)⌝ )(n0)) ⊦ |
# σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), lim(⌜σf⌝ )(n0) ≠ lim(⌜λ n. σf(n + m)⌝ )(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦
| # σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), lim(⌜σf⌝ )(n0) ≠ lim(⌜λ n. σf(n + m)⌝ )(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦ |
# lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , lim(⌜σf⌝ )(n0) ≠ lim(⌜λ n. σf(n + m)⌝ )(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ¬ # lim(⌜σf⌝ ) < ⌜n0 + 1⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ ⊑ σf(n)), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦
Used terms: n0 + 1
| # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , lim(⌜σf⌝ )(n0) ≠ lim(⌜λ n. σf(n + m)⌝ )(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ¬ # lim(⌜σf⌝ ) < ⌜n0 + 1⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ ⊑ σf(n)), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦ |
# σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), lim(⌜σf⌝ )(n0) ≠ lim(⌜λ n. σf(n + m)⌝ )(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ ⊑ σf(n1), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦
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)
| # σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), lim(⌜σf⌝ )(n0) ≠ lim(⌜λ n. σf(n + m)⌝ )(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ ⊑ σf(n1), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
# lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , lim(⌜σf⌝ )(n0) ≠ lim(⌜λ n. σf(n + m)⌝ )(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∃ σ1. ⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1 = σf(n1) ⊦
Used terms: ⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ , σf(n1)
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , lim(⌜σf⌝ )(n0) ≠ lim(⌜λ n. σf(n + m)⌝ )(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∃ σ1. ⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1 = σf(n1) ⊦ |
# σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1 = σf(n1), lim(⌜σf⌝ )(n0) ≠ lim(⌜λ n. σf(n + m)⌝ )(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦
| # σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1 = σf(n1), lim(⌜σf⌝ )(n0) ≠ lim(⌜λ n. σf(n + m)⌝ )(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦ |
⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n))
#(⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1) = # σf(n1), # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , lim(⌜σf⌝ )(n0) ≠ lim(⌜λ n. σf(n + m)⌝ )(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. ⌜n⌝ < #(⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1) → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n) = σf(n1)(n) ⊦
Used terms: ⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1, σf(n1)
| ⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n)) |
| #(⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1) = # σf(n1), # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , lim(⌜σf⌝ )(n0) ≠ lim(⌜λ n. σf(n + m)⌝ )(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. ⌜n⌝ < #(⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1) → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n) = σf(n1)(n) ⊦ |
# σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), lim(⌜σf⌝ )(n0) ≠ lim(⌜λ n. σf(n + m)⌝ )(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2) ⊦
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)
| # σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), lim(⌜σf⌝ )(n0) ≠ lim(⌜λ n. σf(n + m)⌝ )(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2) ⊦ |
# lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), lim(⌜σf⌝ )(n0) ≠ lim(⌜λ n. σf(n + m)⌝ )(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ¬ ⌜n0⌝ + # σ1 < ⌜n0⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n0) = σf(n1)(n0), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦
Used terms: n0
| # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), lim(⌜σf⌝ )(n0) ≠ lim(⌜λ n. σf(n + m)⌝ )(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ¬ ⌜n0⌝ + # σ1 < ⌜n0⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n0) = σf(n1)(n0), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦ |
# σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n0) = σf(n1)(n0), lim(⌜σf⌝ )(n0) ≠ lim(⌜λ n. σf(n + m)⌝ )(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2) ⊦
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)
| # σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n0) = σf(n1)(n0), lim(⌜σf⌝ )(n0) ≠ lim(⌜λ n. σf(n + m)⌝ )(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2) ⊦ |
⊦ ⌜m⌝ < # σ → (σ + σ1)(m) = σ(m)
# lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), ⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ (n0) = σf(n1)(n0), lim(⌜σf⌝ )(n0) ≠ lim(⌜λ n. σf(n + m)⌝ )(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), ⌜n0⌝ < # ⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ , mon(⌜σf⌝ ), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦
Used simplifier rules: ⊦ ¬ ⌜m⌝ < # σ → (σ + σ1)(m) = σ1(m - (# σ).n); (s) ⊦ ⌜n⌝ ≠ ∞; (s) n∞ ≠ ∞ ⊦ (⌜m⌝ + n∞).n = m + n∞.n; (s) ⊦ ⌜n⌝ .n = n; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ # ⌜σ.take(n)⌝ = ⌜# σ.take(n)⌝ ; (s) ⊦ # σ < ⌜n⌝ + ⌜1⌝ ↔ ¬ ⌜n⌝ < # σ; (s) ¬ # σ < ⌜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 ⊦ ⌜n⌝ < ⌜1⌝ + n∞ ↔ ¬ n∞ < ⌜n⌝ ; (s) ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ ¬ 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 Used terms: ⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ , σ1, n0
| ⊦ ⌜m⌝ < # σ → (σ + σ1)(m) = σ(m) |
| # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), ⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ (n0) = σf(n1)(n0), lim(⌜σf⌝ )(n0) ≠ lim(⌜λ n. σf(n + m)⌝ )(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), ⌜n0⌝ < # ⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ , mon(⌜σf⌝ ), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦ |
# σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), lim(⌜σf⌝ )(n0) = σf(n1)(n0), σf(n1)(n0) ≠ lim(⌜λ n. σf(n + m)⌝ )(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2) ⊦
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) 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) m < n, ¬ # σ < ⌜n⌝ ⊦ σ.take(n)(m) = σ(m); (s) ⊦ m < n + 1 ↔ ¬ n < m; (s) ⊦ ⌜x⌝ (n) = x(n); (s)
| # σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), lim(⌜σf⌝ )(n0) = σf(n1)(n0), σf(n1)(n0) ≠ lim(⌜λ n. σf(n + m)⌝ )(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2) ⊦ |
# lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), lim(⌜σf⌝ )(n0) = σf(n1)(n0), σf(n1)(n0) ≠ lim(⌜λ n. σf(n + m)⌝ )(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ¬ # lim(⌜σf⌝ ) < ⌜n0 + 1⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ ⊑ σf(n + m)), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦
Used terms: n0 + 1
| # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), lim(⌜σf⌝ )(n0) = σf(n1)(n0), σf(n1)(n0) ≠ lim(⌜λ n. σf(n + m)⌝ )(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ¬ # lim(⌜σf⌝ ) < ⌜n0 + 1⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ ⊑ σf(n + m)), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦ |
# σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), lim(⌜σf⌝ )(n0) = σf(n1)(n0), σf(n1)(n0) ≠ lim(⌜λ n. σf(n + m)⌝ )(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ ⊑ σf(n2 + m), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2) ⊦
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)
| # σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), lim(⌜σf⌝ )(n0) = σf(n1)(n0), σf(n1)(n0) ≠ lim(⌜λ n. σf(n + m)⌝ )(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ ⊑ σf(n2 + m), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2) ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
# lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), lim(⌜σf⌝ )(n0) = σf(n1)(n0), σf(n1)(n0) ≠ lim(⌜λ n. σf(n + m)⌝ )(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∃ σ1. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ1 = σf(n2 + m) ⊦
Used terms: ⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ , σf(n2 + m)
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), lim(⌜σf⌝ )(n0) = σf(n1)(n0), σf(n1)(n0) ≠ lim(⌜λ n. σf(n + m)⌝ )(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∃ σ1. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ1 = σf(n2 + m) ⊦ |
# σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ = σf(n2 + m), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), lim(⌜σf⌝ )(n0) = σf(n1)(n0), σf(n1)(n0) ≠ lim(⌜λ n. σf(n + m)⌝ )(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2) ⊦
| # σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ = σf(n2 + m), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), lim(⌜σf⌝ )(n0) = σf(n1)(n0), σf(n1)(n0) ≠ lim(⌜λ n. σf(n + m)⌝ )(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2) ⊦ |
⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n))
#(⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ) = # σf(n2 + m), # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), lim(⌜σf⌝ )(n0) = σf(n1)(n0), σf(n1)(n0) ≠ lim(⌜λ n. σf(n + m)⌝ )(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. ⌜n⌝ < #(⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ) → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n) = σf(n2 + m)(n) ⊦
Used terms: ⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ, σf(n2 + m)
| ⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n)) |
| #(⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ) = # σf(n2 + m), # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), lim(⌜σf⌝ )(n0) = σf(n1)(n0), σf(n1)(n0) ≠ lim(⌜λ n. σf(n + m)⌝ )(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. ⌜n⌝ < #(⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ) → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n) = σf(n2 + m)(n) ⊦ |
# σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n2 + m), lim(⌜σf⌝ )(n0) = σf(n1)(n0), σf(n1)(n0) ≠ lim(⌜λ n. σf(n + m)⌝ )(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = σf(n2 + m)(n3) ⊦
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)
| # σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n2 + m), lim(⌜σf⌝ )(n0) = σf(n1)(n0), σf(n1)(n0) ≠ lim(⌜λ n. σf(n + m)⌝ )(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = σf(n2 + m)(n3) ⊦ |
# lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n2 + m), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), lim(⌜σf⌝ )(n0) = σf(n1)(n0), σf(n1)(n0) ≠ lim(⌜λ n. σf(n + m)⌝ )(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ¬ ⌜n0⌝ + # σ < ⌜n0⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n0) = σf(n2 + m)(n0), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = σf(n2 + m)(n3), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦
Used terms: n0
| # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n2 + m), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), lim(⌜σf⌝ )(n0) = σf(n1)(n0), σf(n1)(n0) ≠ lim(⌜λ n. σf(n + m)⌝ )(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ¬ ⌜n0⌝ + # σ < ⌜n0⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n0) = σf(n2 + m)(n0), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = σf(n2 + m)(n3), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦ |
# σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n2 + m), lim(⌜σf⌝ )(n0) = σf(n1)(n0), (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n0) = σf(n2 + m)(n0), σf(n1)(n0) ≠ lim(⌜λ n. σf(n + m)⌝ )(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = σf(n2 + m)(n3) ⊦
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)
| # σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n2 + m), lim(⌜σf⌝ )(n0) = σf(n1)(n0), (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n0) = σf(n2 + m)(n0), σf(n1)(n0) ≠ lim(⌜λ n. σf(n + m)⌝ )(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = σf(n2 + m)(n3) ⊦ |
⊦ ⌜m⌝ < # σ → (σ + σ1)(m) = σ(m)
# lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n2 + m), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ (n0) = σf(n2 + m)(n0), lim(⌜σf⌝ )(n0) = σf(n1)(n0), σf(n1)(n0) ≠ lim(⌜λ n. σf(n + m)⌝ )(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), ⌜n0⌝ < # ⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ , mon(⌜σf⌝ ), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = σf(n2 + m)(n3), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦
Used simplifier rules: ⊦ ¬ ⌜m⌝ < # σ → (σ + σ1)(m) = σ1(m - (# σ).n); (s) ⊦ ⌜n⌝ ≠ ∞; (s) n∞ ≠ ∞ ⊦ (⌜m⌝ + n∞).n = m + n∞.n; (s) ⊦ ⌜n⌝ .n = n; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ # ⌜σ.take(n)⌝ = ⌜# σ.take(n)⌝ ; (s) ⊦ # σ < ⌜n⌝ + ⌜1⌝ ↔ ¬ ⌜n⌝ < # σ; (s) ¬ # σ < ⌜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 ⊦ ⌜n⌝ < ⌜1⌝ + n∞ ↔ ¬ n∞ < ⌜n⌝ ; (s) ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ ¬ 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 Used terms: ⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ , σ, n0
| ⊦ ⌜m⌝ < # σ → (σ + σ1)(m) = σ(m) |
| # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n2 + m), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), ⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ (n0) = σf(n2 + m)(n0), lim(⌜σf⌝ )(n0) = σf(n1)(n0), σf(n1)(n0) ≠ lim(⌜λ n. σf(n + m)⌝ )(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), ⌜n0⌝ < # ⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ , mon(⌜σf⌝ ), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = σf(n2 + m)(n3), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦ |
# σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n2 + m), lim(⌜σf⌝ )(n0) = σf(n1)(n0), lim(⌜λ n. σf(n + m)⌝ )(n0) = σf(n2 + m)(n0), σf(n1)(n0) ≠ σf(n2 + m)(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = σf(n2 + m)(n3) ⊦
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) 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) m < n, ¬ # σ < ⌜n⌝ ⊦ σ.take(n)(m) = σ(m); (s) ⊦ m < n + 1 ↔ ¬ n < m; (s) ⊦ ⌜x⌝ (n) = x(n); (s)
| # σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n2 + m), lim(⌜σf⌝ )(n0) = σf(n1)(n0), lim(⌜λ n. σf(n + m)⌝ )(n0) = σf(n2 + m)(n0), σf(n1)(n0) ≠ σf(n2 + m)(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = σf(n2 + m)(n3) ⊦ |
mon(σσ), m ≤ n, ⌜n⌝ < # σσ ⊦ σσ(m) ⊑ σσ(n)
# lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n2 + m), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), lim(⌜λ n. σf(n + m)⌝ )(n0) = σf(n2 + m)(n0), lim(⌜σf⌝ )(n0) = σf(n1)(n0), σf(n1)(n0) ≠ σf(n2 + m)(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = σf(n2 + m)(n3), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦ n1 ≤ n2 + m ∧ ⌜n2 + m⌝ < # ⌜σf⌝
# lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n2 + m), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), lim(⌜λ n. σf(n + m)⌝ )(n0) = σf(n2 + m)(n0), lim(⌜σf⌝ )(n0) = σf(n1)(n0), σf(n1)(n0) ≠ σf(n2 + m)(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜σf⌝ (n1) ⊑ ⌜σf⌝ (n2 + m), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = σf(n2 + m)(n3), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦
Used terms: ⌜σf⌝ , n1, n2 + m
| mon(σσ), m ≤ n, ⌜n⌝ < # σσ ⊦ σσ(m) ⊑ σσ(n) |
| # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n2 + m), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), lim(⌜λ n. σf(n + m)⌝ )(n0) = σf(n2 + m)(n0), lim(⌜σf⌝ )(n0) = σf(n1)(n0), σf(n1)(n0) ≠ σf(n2 + m)(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = σf(n2 + m)(n3), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦ n1 ≤ n2 + m ∧ ⌜n2 + m⌝ < # ⌜σf⌝ |
# lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n2 + m), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), lim(⌜λ n. σf(n + m)⌝ )(n0) = σf(n2 + m)(n0), lim(⌜σf⌝ )(n0) = σf(n1)(n0), σf(n1)(n0) ≠ σf(n2 + m)(n0), n2 + m < n1, ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = σf(n2 + m)(n3), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m ≤ n ↔ ¬ n < m; (ss) 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) ⊦ ⌜m⌝ + n∞ = ∞ ↔ n∞ = ∞; (s) ⊦ n∞ < ∞ ↔ n∞ ≠ ∞; (s) ⊦ # ⌜nf⌝ = ∞; (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)
| # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n2 + m), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), lim(⌜λ n. σf(n + m)⌝ )(n0) = σf(n2 + m)(n0), lim(⌜σf⌝ )(n0) = σf(n1)(n0), σf(n1)(n0) ≠ σf(n2 + m)(n0), n2 + m < n1, ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = σf(n2 + m)(n3), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦ |
mon(σσ), m ≤ n, ⌜n⌝ < # σσ ⊦ σσ(m) ⊑ σσ(n)
# σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n2 + m), lim(⌜σf⌝ )(n0) = σf(n1)(n0), lim(⌜λ n. σf(n + m)⌝ )(n0) = σf(n2 + m)(n0), σf(n1)(n0) ≠ σf(n2 + m)(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), n2 + m < n1, mon(⌜σf⌝ ), ⌜σf⌝ (n2 + m) ⊑ ⌜σf⌝ (n1), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = σf(n2 + m)(n3) ⊦
Used simplifier rules: ⊦ m < n → m ≤ n; (s) ⊦ # ⌜nf⌝ = ∞; (s) ⊦ ⌜m⌝ < ∞; (s) Used terms: ⌜σf⌝ , n2 + m, n1
| mon(σσ), m ≤ n, ⌜n⌝ < # σσ ⊦ σσ(m) ⊑ σσ(n) |
| # σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n2 + m), lim(⌜σf⌝ )(n0) = σf(n1)(n0), lim(⌜λ n. σf(n + m)⌝ )(n0) = σf(n2 + m)(n0), σf(n1)(n0) ≠ σf(n2 + m)(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), n2 + m < n1, mon(⌜σf⌝ ), ⌜σf⌝ (n2 + m) ⊑ ⌜σf⌝ (n1), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = σf(n2 + m)(n3) ⊦ |
# lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n2 + m), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), lim(⌜λ n. σf(n + m)⌝ )(n0) = σf(n2 + m)(n0), lim(⌜σf⌝ )(n0) = σf(n1)(n0), σf(n1)(n0) ≠ σf(n2 + m)(n0), n2 + m < n1, ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), σf(n2 + m) ⊑ σf(n1), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = σf(n2 + m)(n3), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦
Used simplifier rules: ⊦ ⌜nf⌝ (n) = nf(n); (s)
| # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n2 + m), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), lim(⌜λ n. σf(n + m)⌝ )(n0) = σf(n2 + m)(n0), lim(⌜σf⌝ )(n0) = σf(n1)(n0), σf(n1)(n0) ≠ σf(n2 + m)(n0), n2 + m < n1, ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), σf(n2 + m) ⊑ σf(n1), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = σf(n2 + m)(n3), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
# σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n2 + m), lim(⌜σf⌝ )(n0) = σf(n1)(n0), lim(⌜λ n. σf(n + m)⌝ )(n0) = σf(n2 + m)(n0), σf(n1)(n0) ≠ σf(n2 + m)(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), n2 + m < n1, mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = σf(n2 + m)(n3), ∃ σ1. σf(n2 + m) + σ1 = σf(n1) ⊦
Used terms: σf(n2 + m), σf(n1)
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| # σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n2 + m), lim(⌜σf⌝ )(n0) = σf(n1)(n0), lim(⌜λ n. σf(n + m)⌝ )(n0) = σf(n2 + m)(n0), σf(n1)(n0) ≠ σf(n2 + m)(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), n2 + m < n1, mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = σf(n2 + m)(n3), ∃ σ1. σf(n2 + m) + σ1 = σf(n1) ⊦ |
# lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , σf(n2 + m) + σ0 = σf(n1), (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n2 + m), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), lim(⌜λ n. σf(n + m)⌝ )(n0) = σf(n2 + m)(n0), lim(⌜σf⌝ )(n0) = σf(n1)(n0), σf(n1)(n0) ≠ σf(n2 + m)(n0), n2 + m < n1, ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = σf(n2 + m)(n3), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦
| # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , σf(n2 + m) + σ0 = σf(n1), (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n2 + m), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), lim(⌜λ n. σf(n + m)⌝ )(n0) = σf(n2 + m)(n0), lim(⌜σf⌝ )(n0) = σf(n1)(n0), σf(n1)(n0) ≠ σf(n2 + m)(n0), n2 + m < n1, ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = σf(n2 + m)(n3), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦ |
⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n))
#(σf(n2 + m) + σ0) = # σf(n1), # σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n2 + m), lim(⌜σf⌝ )(n0) = σf(n1)(n0), lim(⌜λ n. σf(n + m)⌝ )(n0) = σf(n2 + m)(n0), σf(n1)(n0) ≠ σf(n2 + m)(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), n2 + m < n1, mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = σf(n2 + m)(n3), ∀ n. ⌜n⌝ < #(σf(n2 + m) + σ0) → (σf(n2 + m) + σ0)(n) = σf(n1)(n) ⊦
Used terms: σf(n2 + m) + σ0, σf(n1)
| ⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n)) |
| #(σf(n2 + m) + σ0) = # σf(n1), # σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n2 + m), lim(⌜σf⌝ )(n0) = σf(n1)(n0), lim(⌜λ n. σf(n + m)⌝ )(n0) = σf(n2 + m)(n0), σf(n1)(n0) ≠ σf(n2 + m)(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), n2 + m < n1, mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = σf(n2 + m)(n3), ∀ n. ⌜n⌝ < #(σf(n2 + m) + σ0) → (σf(n2 + m) + σ0)(n) = σf(n1)(n) ⊦ |
# lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n2 + m), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), ((⌜n0⌝ + ⌜1⌝ ) + # σ) + # σ0 = # σf(n1), lim(⌜λ n. σf(n + m)⌝ )(n0) = σf(n2 + m)(n0), lim(⌜σf⌝ )(n0) = σf(n1)(n0), σf(n1)(n0) ≠ σf(n2 + m)(n0), n2 + m < n1, ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = σf(n2 + m)(n3), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n3. ⌜n3⌝ < # σf(n1) → (σf(n2 + m) + σ0)(n3) = σf(n1)(n3) ⊦
Used simplifier rules: append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ #(σ + σ1) = # σ + # σ1; (s)
| # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n2 + m), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), ((⌜n0⌝ + ⌜1⌝ ) + # σ) + # σ0 = # σf(n1), lim(⌜λ n. σf(n + m)⌝ )(n0) = σf(n2 + m)(n0), lim(⌜σf⌝ )(n0) = σf(n1)(n0), σf(n1)(n0) ≠ σf(n2 + m)(n0), n2 + m < n1, ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = σf(n2 + m)(n3), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n3. ⌜n3⌝ < # σf(n1) → (σf(n2 + m) + σ0)(n3) = σf(n1)(n3) ⊦ |
# σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), ((⌜n0⌝ + ⌜1⌝ ) + # σ) + # σ0 = # σf(n1), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n2 + m), lim(⌜σf⌝ )(n0) = σf(n1)(n0), lim(⌜λ n. σf(n + m)⌝ )(n0) = σf(n2 + m)(n0), σf(n1)(n0) ≠ σf(n2 + m)(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), n2 + m < n1, mon(⌜σf⌝ ), ⌜n0⌝ < # σf(n1) → (σf(n2 + m) + σ0)(n0) = σf(n1)(n0), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = σf(n2 + m)(n3) ⊦
Used terms: n0
| # σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), ((⌜n0⌝ + ⌜1⌝ ) + # σ) + # σ0 = # σf(n1), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n2 + m), lim(⌜σf⌝ )(n0) = σf(n1)(n0), lim(⌜λ n. σf(n + m)⌝ )(n0) = σf(n2 + m)(n0), σf(n1)(n0) ≠ σf(n2 + m)(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), n2 + m < n1, mon(⌜σf⌝ ), ⌜n0⌝ < # σf(n1) → (σf(n2 + m) + σ0)(n0) = σf(n1)(n0), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = σf(n2 + m)(n3) ⊦ |
# lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n2 + m), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), ((⌜n0⌝ + ⌜1⌝ ) + # σ) + # σ0 = # σf(n1), lim(⌜λ n. σf(n + m)⌝ )(n0) = σf(n2 + m)(n0), lim(⌜σf⌝ )(n0) = σf(n1)(n0), σf(n1)(n0) ≠ σf(n2 + m)(n0), n2 + m < n1, ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ¬ ⌜n0⌝ < # σf(n1), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = σf(n2 + m)(n3), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦
# lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n2 + m), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), ((⌜n0⌝ + ⌜1⌝ ) + # σ) + # σ0 = # σf(n1), lim(⌜λ n. σf(n + m)⌝ )(n0) = σf(n2 + m)(n0), lim(⌜σf⌝ )(n0) = σf(n1)(n0), (σf(n2 + m) + σ0)(n0) = σf(n1)(n0), σf(n1)(n0) ≠ σf(n2 + m)(n0), n2 + m < n1, ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = σf(n2 + m)(n3), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦
| # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n2 + m), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), ((⌜n0⌝ + ⌜1⌝ ) + # σ) + # σ0 = # σf(n1), lim(⌜λ n. σf(n + m)⌝ )(n0) = σf(n2 + m)(n0), lim(⌜σf⌝ )(n0) = σf(n1)(n0), σf(n1)(n0) ≠ σf(n2 + m)(n0), n2 + m < n1, ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ¬ ⌜n0⌝ < # σf(n1), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = σf(n2 + m)(n3), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦ |
# σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), ((⌜n0⌝ + ⌜1⌝ ) + # σ) + # σ0 = # σf(n1), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n2 + m), lim(⌜σf⌝ )(n0) = σf(n1)(n0), lim(⌜λ n. σf(n + m)⌝ )(n0) = σf(n2 + m)(n0), σf(n1)(n0) ≠ σf(n2 + m)(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), n2 + m < n1, # σf(n1) < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ¬ ⌜n0⌝ < # σf(n1), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = σf(n2 + m)(n3) ⊦
Used simplifier rules: lels-trans: ⊦ ¬ n∞1 < n∞ ∧ n∞1 < n∞2 → n∞ < n∞2; (forward) from specification nat-inf
| # σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), ((⌜n0⌝ + ⌜1⌝ ) + # σ) + # σ0 = # σf(n1), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n2 + m), lim(⌜σf⌝ )(n0) = σf(n1)(n0), lim(⌜λ n. σf(n + m)⌝ )(n0) = σf(n2 + m)(n0), σf(n1)(n0) ≠ σf(n2 + m)(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), n2 + m < n1, # σf(n1) < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ¬ ⌜n0⌝ < # σf(n1), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = σf(n2 + m)(n3) ⊦ |
Used simplifier rules: ⊦ m ≤ n → (⌜(* n)⌝ + n∞1 = ⌜(* m)⌝ + n∞2 ↔ ⌜n - m⌝ + n∞1 = n∞2); (s) ⊦ n∞ + ⌜0⌝ = n∞; (s) ⊦ ⌜n⌝ + n∞1 = ⌜n⌝ + n∞2 ↔ n∞1 = n∞2; (s) ⊦ ⌜n⌝ < ⌜1⌝ + n∞ ↔ ¬ n∞ < ⌜n⌝ ; (s) ⊦ ¬ 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
| # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n2 + m), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), ((⌜n0⌝ + ⌜1⌝ ) + # σ) + # σ0 = # σf(n1), lim(⌜λ n. σf(n + m)⌝ )(n0) = σf(n2 + m)(n0), lim(⌜σf⌝ )(n0) = σf(n1)(n0), (σf(n2 + m) + σ0)(n0) = σf(n1)(n0), σf(n1)(n0) ≠ σf(n2 + m)(n0), n2 + m < n1, ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = σf(n2 + m)(n3), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦ |
⊦ ⌜m⌝ < # σ → (σ + σ1)(m) = σ(m)
Used simplifier rules: ⊦ ¬ ⌜m⌝ < # σ → (σ + σ1)(m) = σ1(m - (# σ).n); (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream lels-trans: ⊦ ¬ n∞1 < n∞ ∧ n∞1 < n∞2 → n∞ < n∞2; (forward) from specification nat-inf ⊦ ⌜n⌝ < ⌜1⌝ + n∞ ↔ ¬ n∞ < ⌜n⌝ ; (s) ⊦ ¬ 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: σf(n2 + m), σ0, n0
| ⊦ ⌜m⌝ < # σ → (σ + σ1)(m) = σ(m) |
| # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n2 + m), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), lim(⌜λ n. σf(n + m)⌝ )(n0) = σf(n2 + m)(n0), lim(⌜σf⌝ )(n0) = σf(n1)(n0), σf(n1)(n0) ≠ σf(n2 + m)(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜σf⌝ (n1) ⊑ ⌜σf⌝ (n2 + m), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = σf(n2 + m)(n3), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦ |
# σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n2 + m), lim(⌜σf⌝ )(n0) = σf(n1)(n0), lim(⌜λ n. σf(n + m)⌝ )(n0) = σf(n2 + m)(n0), σf(n1)(n0) ≠ σf(n2 + m)(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), σf(n1) ⊑ σf(n2 + m), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = σf(n2 + m)(n3) ⊦
Used simplifier rules: ⊦ ⌜nf⌝ (n) = nf(n); (s)
| # σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n2 + m), lim(⌜σf⌝ )(n0) = σf(n1)(n0), lim(⌜λ n. σf(n + m)⌝ )(n0) = σf(n2 + m)(n0), σf(n1)(n0) ≠ σf(n2 + m)(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), σf(n1) ⊑ σf(n2 + m), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = σf(n2 + m)(n3) ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
# lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n2 + m), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), lim(⌜λ n. σf(n + m)⌝ )(n0) = σf(n2 + m)(n0), lim(⌜σf⌝ )(n0) = σf(n1)(n0), σf(n1)(n0) ≠ σf(n2 + m)(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = σf(n2 + m)(n3), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∃ σ1. σf(n1) + σ1 = σf(n2 + m) ⊦
Used terms: σf(n1), σf(n2 + m)
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n2 + m), (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), lim(⌜λ n. σf(n + m)⌝ )(n0) = σf(n2 + m)(n0), lim(⌜σf⌝ )(n0) = σf(n1)(n0), σf(n1)(n0) ≠ σf(n2 + m)(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = σf(n2 + m)(n3), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∃ σ1. σf(n1) + σ1 = σf(n2 + m) ⊦ |
# lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), σf(n1) + σ0 = σf(n2 + m), (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n1) + # σ0, lim(⌜λ n. σf(n + m)⌝ )(n0) = (σf(n1) + σ0)(n0), lim(⌜σf⌝ )(n0) = σf(n1)(n0), σf(n1)(n0) ≠ (σf(n1) + σ0)(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = (σf(n1) + σ0)(n3), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦
Used simplifier rules: append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ #(σ + σ1) = # σ + # σ1; (s)
| # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), σf(n1) + σ0 = σf(n2 + m), (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n1) + # σ0, lim(⌜λ n. σf(n + m)⌝ )(n0) = (σf(n1) + σ0)(n0), lim(⌜σf⌝ )(n0) = σf(n1)(n0), σf(n1)(n0) ≠ (σf(n1) + σ0)(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = (σf(n1) + σ0)(n3), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦ |
⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n))
#(σf(n1) + σ0) = # σf(n2 + m), # σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n1) + # σ0, (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), lim(⌜σf⌝ )(n0) = σf(n1)(n0), lim(⌜λ n. σf(n + m)⌝ )(n0) = (σf(n1) + σ0)(n0), σf(n1)(n0) ≠ (σf(n1) + σ0)(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = (σf(n1) + σ0)(n3), ∀ n. ⌜n⌝ < #(σf(n1) + σ0) → (σf(n1) + σ0)(n) = σf(n2 + m)(n) ⊦
Used terms: σf(n1) + σ0, σf(n2 + m)
| ⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n)) |
| #(σf(n1) + σ0) = # σf(n2 + m), # σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n1) + # σ0, (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), lim(⌜σf⌝ )(n0) = σf(n1)(n0), lim(⌜λ n. σf(n + m)⌝ )(n0) = (σf(n1) + σ0)(n0), σf(n1)(n0) ≠ (σf(n1) + σ0)(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = (σf(n1) + σ0)(n3), ∀ n. ⌜n⌝ < #(σf(n1) + σ0) → (σf(n1) + σ0)(n) = σf(n2 + m)(n) ⊦ |
# lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n1) + # σ0, # σf(n1) + # σ0 = # σf(n2 + m), lim(⌜λ n. σf(n + m)⌝ )(n0) = (σf(n1) + σ0)(n0), lim(⌜σf⌝ )(n0) = σf(n1)(n0), σf(n1)(n0) ≠ (σf(n1) + σ0)(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = (σf(n1) + σ0)(n3), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n3. ⌜n3⌝ < # σf(n1) + # σ0 → (σf(n1) + σ0)(n3) = σf(n2 + m)(n3) ⊦
Used simplifier rules: append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ #(σ + σ1) = # σ + # σ1; (s)
| # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n1) + # σ0, # σf(n1) + # σ0 = # σf(n2 + m), lim(⌜λ n. σf(n + m)⌝ )(n0) = (σf(n1) + σ0)(n0), lim(⌜σf⌝ )(n0) = σf(n1)(n0), σf(n1)(n0) ≠ (σf(n1) + σ0)(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = (σf(n1) + σ0)(n3), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n3. ⌜n3⌝ < # σf(n1) + # σ0 → (σf(n1) + σ0)(n3) = σf(n2 + m)(n3) ⊦ |
# σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(n1) + # σ0 = # σf(n2 + m), (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n1) + # σ0, (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), lim(⌜σf⌝ )(n0) = σf(n1)(n0), lim(⌜λ n. σf(n + m)⌝ )(n0) = (σf(n1) + σ0)(n0), σf(n1)(n0) ≠ (σf(n1) + σ0)(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜n0⌝ < # σf(n1) + # σ0 → (σf(n1) + σ0)(n0) = σf(n2 + m)(n0), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = (σf(n1) + σ0)(n3) ⊦
Used terms: n0
| # σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(n1) + # σ0 = # σf(n2 + m), (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n1) + # σ0, (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), lim(⌜σf⌝ )(n0) = σf(n1)(n0), lim(⌜λ n. σf(n + m)⌝ )(n0) = (σf(n1) + σ0)(n0), σf(n1)(n0) ≠ (σf(n1) + σ0)(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ⌜n0⌝ < # σf(n1) + # σ0 → (σf(n1) + σ0)(n0) = σf(n2 + m)(n0), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = (σf(n1) + σ0)(n3) ⊦ |
⊦ ⌜m⌝ < # σ → (σ + σ1)(m) = σ(m)
# lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n1) + # σ0, # σf(n1) + # σ0 = # σf(n2 + m), lim(⌜λ n. σf(n + m)⌝ )(n0) = (σf(n1) + σ0)(n0), lim(⌜σf⌝ )(n0) = σf(n1)(n0), σf(n1)(n0) ≠ (σf(n1) + σ0)(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ¬ ⌜n0⌝ < # σf(n1), ⌜n0⌝ < # σf(n1) + # σ0 → (σf(n1) + σ0)(n0) = σf(n2 + m)(n0), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = (σf(n1) + σ0)(n3), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦
Used terms: σf(n1), σ0, n0
| ⊦ ⌜m⌝ < # σ → (σ + σ1)(m) = σ(m) |
| # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(m) = ⌜n⌝ , (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n1) + # σ0, # σf(n1) + # σ0 = # σf(n2 + m), lim(⌜λ n. σf(n + m)⌝ )(n0) = (σf(n1) + σ0)(n0), lim(⌜σf⌝ )(n0) = σf(n1)(n0), σf(n1)(n0) ≠ (σf(n1) + σ0)(n0), ⌜n0⌝ < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ¬ ⌜n0⌝ < # σf(n1), ⌜n0⌝ < # σf(n1) + # σ0 → (σf(n1) + σ0)(n0) = σf(n2 + m)(n0), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = (σf(n1) + σ0)(n3), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)) ⊦ |
# σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(n1) + # σ0 = # σf(n2 + m), (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n1) + # σ0, (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), lim(⌜σf⌝ )(n0) = σf(n1)(n0), lim(⌜λ n. σf(n + m)⌝ )(n0) = σ0(n0 - (# σf(n1)).n), σf(n1)(n0) ≠ σ0(n0 - (# σf(n1)).n), ⌜n0⌝ < # lim(⌜σf⌝ ), # σf(n1) < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ¬ ⌜n0⌝ < # σf(n1), ⌜n0⌝ < # σf(n1) + # σ0 → σ0(n0 - (# σf(n1)).n) = σf(n2 + m)(n0), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = (σf(n1) + σ0)(n3) ⊦
Used simplifier rules: lels-trans: ⊦ ¬ n∞1 < n∞ ∧ n∞1 < n∞2 → n∞ < n∞2; (forward) from specification nat-inf append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ ¬ ⌜m⌝ < # σ → (σ + σ1)(m) = σ1(m - (# σ).n); (s)
| # σf(m) = ⌜n⌝ , # lim(⌜σf⌝ ) = # lim(⌜λ n. σf(n + m)⌝ ), # σf(n1) + # σ0 = # σf(n2 + m), (⌜n0⌝ + ⌜1⌝ ) + # σ = # σf(n1) + # σ0, (⌜n0⌝ + ⌜1⌝ ) + # σ1 = # σf(n1), lim(⌜σf⌝ )(n0) = σf(n1)(n0), lim(⌜λ n. σf(n + m)⌝ )(n0) = σ0(n0 - (# σf(n1)).n), σf(n1)(n0) ≠ σ0(n0 - (# σf(n1)).n), ⌜n0⌝ < # lim(⌜σf⌝ ), # σf(n1) < # lim(⌜σf⌝ ), mon(⌜σf⌝ ), ¬ ⌜n0⌝ < # σf(n1), ⌜n0⌝ < # σf(n1) + # σ0 → σ0(n0 - (# σf(n1)).n) = σf(n2 + m)(n0), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜λ n. σf(n + m)⌝ ).take(m0)⌝ ⊑ σf(n + m)), ∀ n. σf(n + m) ⊑ lim(⌜λ n. σf(n + m)⌝ ), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n2. ¬ ⌜n0⌝ + # σ1 < ⌜n2⌝ → (⌜lim(⌜σf⌝ ).take(n0 + 1)⌝ + σ1)(n2) = σf(n1)(n2), ∀ n3. ¬ ⌜n0⌝ + # σ < ⌜n3⌝ → (⌜lim(⌜λ n. σf(n + m)⌝ ).take(n0 + 1)⌝ + σ)(n3) = (σf(n1) + σ0)(n3) ⊦ |
Used simplifier rules: ⊦ m ≤ n → (⌜(* n)⌝ + n∞1 = ⌜(* m)⌝ + n∞2 ↔ ⌜n - m⌝ + n∞1 = n∞2); (s) ⊦ n∞ + ⌜0⌝ = n∞; (s) ⊦ ⌜n⌝ + n∞1 = ⌜n⌝ + n∞2 ↔ n∞1 = n∞2; (s) ⊦ ⌜n⌝ < ⌜1⌝ + n∞ ↔ ¬ n∞ < ⌜n⌝ ; (s) ⊦ ¬ 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
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.