| mon(⌜σf⌝ ), mon(⌜αf⌝ ), ∀ n. # σf(n) = # αf(n) + ⌜m⌝ ⊦ # lim(⌜σf⌝ ) = # lim(⌜αf⌝ ) + ⌜m⌝ |
# lim(⌜σf⌝ ) ≠ # lim(⌜αf⌝ ) + ⌜m⌝ , mon(⌜αf⌝ ), mon(⌜σf⌝ ), ∀ n. # σf(n) = # αf(n) + ⌜m⌝ ⊦
| # lim(⌜σf⌝ ) ≠ # lim(⌜αf⌝ ) + ⌜m⌝ , mon(⌜αf⌝ ), mon(⌜σf⌝ ), ∀ n. # σf(n) = # αf(n) + ⌜m⌝ ⊦ |
⊦ mon(σσ) ∧ σσ ≠ [] → (∀ n. ⌜n⌝ < # σσ → σσ(n) ⊑ lim(σσ)) ∧ (∀ m. ¬ # lim(σσ) < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜lim(σσ).take(m)⌝ ⊑ σσ(n)))
# lim(⌜σf⌝ ) ≠ # lim(⌜αf⌝ ) + ⌜m⌝ , mon(⌜σf⌝ ), 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))), ∀ n. # σf(n) = # αf(n) + ⌜m⌝ ⊦
Used terms: ⌜αf⌝
| ⊦ mon(σσ) ∧ σσ ≠ [] → (∀ n. ⌜n⌝ < # σσ → σσ(n) ⊑ lim(σσ)) ∧ (∀ m. ¬ # lim(σσ) < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜lim(σσ).take(m)⌝ ⊑ σσ(n))) |
| # lim(⌜σf⌝ ) ≠ # lim(⌜αf⌝ ) + ⌜m⌝ , mon(⌜σf⌝ ), 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))), ∀ n. # σf(n) = # αf(n) + ⌜m⌝ ⊦ |
# lim(⌜σf⌝ ) ≠ # lim(⌜αf⌝ ) + ⌜m⌝ , mon(⌜αf⌝ ), mon(⌜σf⌝ ), ∀ n. # σf(n) = # α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(⌜αf⌝ ) + ⌜m⌝ , mon(⌜αf⌝ ), mon(⌜σf⌝ ), ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ 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(⌜αf⌝ ) + ⌜m⌝ , mon(⌜σf⌝ ), 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))), ∀ m0. ¬ # lim(⌜αf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜αf⌝ ).take(m0)⌝ ⊑ αf(n)), ∀ n. αf(n) ⊑ lim(⌜αf⌝ ), ∀ n. # σf(n) = # αf(n) + ⌜m⌝ ⊦
Used terms: ⌜σf⌝
| ⊦ mon(σσ) ∧ σσ ≠ [] → (∀ n. ⌜n⌝ < # σσ → σσ(n) ⊑ lim(σσ)) ∧ (∀ m. ¬ # lim(σσ) < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜lim(σσ).take(m)⌝ ⊑ σσ(n))) |
| # lim(⌜σf⌝ ) ≠ # lim(⌜αf⌝ ) + ⌜m⌝ , mon(⌜σf⌝ ), 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))), ∀ m0. ¬ # lim(⌜αf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜αf⌝ ).take(m0)⌝ ⊑ αf(n)), ∀ n. αf(n) ⊑ lim(⌜αf⌝ ), ∀ n. # σf(n) = # αf(n) + ⌜m⌝ ⊦ |
# lim(⌜σf⌝ ) ≠ # lim(⌜αf⌝ ) + ⌜m⌝ , mon(⌜αf⌝ ), mon(⌜σf⌝ ), ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ n. αf(n) ⊑ lim(⌜αf⌝ ), ∀ m0. ¬ # lim(⌜αf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜αf⌝ ).take(m0)⌝ ⊑ αf(n)), ∀ 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(⌜αf⌝ ) + ⌜m⌝ , mon(⌜αf⌝ ), mon(⌜σf⌝ ), ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ n. αf(n) ⊑ lim(⌜αf⌝ ), ∀ m0. ¬ # lim(⌜αf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜αf⌝ ).take(m0)⌝ ⊑ αf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦ |
lim(⌜αf⌝ ) = ⌜al⌝ , # lim(⌜σf⌝ ) ≠ # lim(⌜αf⌝ ) + ⌜m⌝ , mon(⌜σf⌝ ), mon(⌜αf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜αf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜αf⌝ ).take(m0)⌝ ⊑ αf(n)), ∀ n. αf(n) ⊑ lim(⌜αf⌝ ), ∀ n. # σf(n) = # αf(n) + ⌜m⌝ ⊦
lim(⌜αf⌝ ) = ⌜af⌝ , # lim(⌜σf⌝ ) ≠ # lim(⌜αf⌝ ) + ⌜m⌝ , mon(⌜σf⌝ ), mon(⌜αf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜αf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜αf⌝ ).take(m0)⌝ ⊑ αf(n)), ∀ n. αf(n) ⊑ lim(⌜αf⌝ ), ∀ n. # σf(n) = # αf(n) + ⌜m⌝ ⊦
Used simplifier rules: Stream[A] freely generated by ⌝, ⌝;
| lim(⌜αf⌝ ) = ⌜al⌝ , # lim(⌜σf⌝ ) ≠ # lim(⌜αf⌝ ) + ⌜m⌝ , mon(⌜σf⌝ ), mon(⌜αf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜αf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜αf⌝ ).take(m0)⌝ ⊑ αf(n)), ∀ n. αf(n) ⊑ lim(⌜αf⌝ ), ∀ n. # σf(n) = # αf(n) + ⌜m⌝ ⊦ |
lim(⌜αf⌝ ) = ⌜al⌝ , # lim(⌜σf⌝ ) ≠ ⌜# al⌝ + ⌜m⌝ , mon(⌜σf⌝ ), mon(⌜αf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. αf(n) ⊑ ⌜al⌝ , ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)) ⊦
Used simplifier rules: ⊦ ⌜x⌝ .take(n) = x.take(n); (s) ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s)
| lim(⌜αf⌝ ) = ⌜al⌝ , # lim(⌜σf⌝ ) ≠ ⌜# al⌝ + ⌜m⌝ , mon(⌜σf⌝ ), mon(⌜αf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. αf(n) ⊑ ⌜al⌝ , ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)) ⊦ |
lim(⌜αf⌝ ) = ⌜al⌝ , lim(⌜σf⌝ ) = ⌜sl⌝ , # lim(⌜σf⌝ ) ≠ ⌜# al⌝ + ⌜m⌝ , mon(⌜αf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)), ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ n. αf(n) ⊑ ⌜al⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦
lim(⌜αf⌝ ) = ⌜al⌝ , lim(⌜σf⌝ ) = ⌜sf⌝ , # lim(⌜σf⌝ ) ≠ ⌜# al⌝ + ⌜m⌝ , mon(⌜αf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)), ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ n. αf(n) ⊑ ⌜al⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦
Used simplifier rules: Stream[A] freely generated by ⌝, ⌝;
| lim(⌜αf⌝ ) = ⌜al⌝ , lim(⌜σf⌝ ) = ⌜sl⌝ , # lim(⌜σf⌝ ) ≠ ⌜# al⌝ + ⌜m⌝ , mon(⌜αf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)), ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ n. αf(n) ⊑ ⌜al⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦ |
lim(⌜αf⌝ ) = ⌜al⌝ , lim(⌜σf⌝ ) = ⌜sl⌝ , # al + m ≠ # sl, mon(⌜αf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)), ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ n. αf(n) ⊑ ⌜al⌝ , ∀ n. σf(n) ⊑ ⌜sl⌝ , ∀ m0. ¬ # sl < m0 → (∃ n. ⌜sl.take(m0)⌝ ⊑ σf(n)) ⊦
Used simplifier rules: ⊦ ⌜x⌝ .take(n) = x.take(n); (s) ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ # ⌜x⌝ = ⌜# x⌝ ; (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)
| lim(⌜αf⌝ ) = ⌜al⌝ , lim(⌜σf⌝ ) = ⌜sl⌝ , # al + m ≠ # sl, mon(⌜αf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)), ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ n. αf(n) ⊑ ⌜al⌝ , ∀ n. σf(n) ⊑ ⌜sl⌝ , ∀ m0. ¬ # sl < m0 → (∃ n. ⌜sl.take(m0)⌝ ⊑ σf(n)) ⊦ |
lim(⌜σf⌝ ) = ⌜sl⌝ , lim(⌜αf⌝ ) = ⌜al⌝ , # al + m ≠ # sl, # al + m < # sl, mon(⌜σf⌝ ), mon(⌜αf⌝ ), ∀ m0. ¬ # sl < m0 → (∃ n. ⌜sl.take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ ⌜sl⌝ , ∀ n. αf(n) ⊑ ⌜al⌝ , ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)) ⊦
lim(⌜σf⌝ ) = ⌜sl⌝ , lim(⌜αf⌝ ) = ⌜al⌝ , # al + m ≠ # sl, mon(⌜σf⌝ ), mon(⌜αf⌝ ), ¬ # al + m < # sl, ∀ m0. ¬ # sl < m0 → (∃ n. ⌜sl.take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ ⌜sl⌝ , ∀ n. αf(n) ⊑ ⌜al⌝ , ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)) ⊦
Used formulas: # al + m < # sl
| lim(⌜σf⌝ ) = ⌜sl⌝ , lim(⌜αf⌝ ) = ⌜al⌝ , # al + m ≠ # sl, # al + m < # sl, mon(⌜σf⌝ ), mon(⌜αf⌝ ), ∀ m0. ¬ # sl < m0 → (∃ n. ⌜sl.take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ ⌜sl⌝ , ∀ n. αf(n) ⊑ ⌜al⌝ , ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)) ⊦ |
lim(⌜σf⌝ ) = ⌜sl⌝ , lim(⌜αf⌝ ) = ⌜al⌝ , # al + m ≠ # sl, sl ≠ [], # al + m < # sl, mon(⌜σf⌝ ), mon(⌜αf⌝ ), ∀ m0. ¬ # sl < m0 → (∃ n. ⌜sl.take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ ⌜sl⌝ , ∀ n. αf(n) ⊑ ⌜al⌝ , ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)) ⊦
Used simplifier rules: ⊦ # x = 0 ↔ x = []; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| lim(⌜σf⌝ ) = ⌜sl⌝ , lim(⌜αf⌝ ) = ⌜al⌝ , # al + m ≠ # sl, sl ≠ [], # al + m < # sl, mon(⌜σf⌝ ), mon(⌜αf⌝ ), ∀ m0. ¬ # sl < m0 → (∃ n. ⌜sl.take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ ⌜sl⌝ , ∀ n. αf(n) ⊑ ⌜al⌝ , ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)) ⊦ |
lim(⌜αf⌝ ) = ⌜al⌝ , lim(⌜σf⌝ ) = ⌜sl⌝ , # al + m ≠ # sl, sl ≠ [], # al + m < # sl, mon(⌜αf⌝ ), mon(⌜σf⌝ ), ¬ # sl < # sl → (∃ n. ⌜sl.take(# sl)⌝ ⊑ σf(n)), ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)), ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ n. αf(n) ⊑ ⌜al⌝ , ∀ n. σf(n) ⊑ ⌜sl⌝ ⊦
Used terms: # sl
| lim(⌜αf⌝ ) = ⌜al⌝ , lim(⌜σf⌝ ) = ⌜sl⌝ , # al + m ≠ # sl, sl ≠ [], # al + m < # sl, mon(⌜αf⌝ ), mon(⌜σf⌝ ), ¬ # sl < # sl → (∃ n. ⌜sl.take(# sl)⌝ ⊑ σf(n)), ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)), ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ n. αf(n) ⊑ ⌜al⌝ , ∀ n. σf(n) ⊑ ⌜sl⌝ ⊦ |
lim(⌜σf⌝ ) = ⌜sl⌝ , lim(⌜αf⌝ ) = ⌜al⌝ , # al + m ≠ # sl, sl ≠ [], # al + m < # sl, mon(⌜σf⌝ ), mon(⌜αf⌝ ), ⌜sl⌝ ⊑ σf(n), ∀ n. σf(n) ⊑ ⌜sl⌝ , ∀ n. αf(n) ⊑ ⌜al⌝ , ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)) ⊦
Used simplifier rules: ⊦ # x = n → x.take(n) = x; (s) ⊦ ¬ n < n; (s)
| lim(⌜σf⌝ ) = ⌜sl⌝ , lim(⌜αf⌝ ) = ⌜al⌝ , # al + m ≠ # sl, sl ≠ [], # al + m < # sl, mon(⌜σf⌝ ), mon(⌜αf⌝ ), ⌜sl⌝ ⊑ σf(n), ∀ n. σf(n) ⊑ ⌜sl⌝ , ∀ n. αf(n) ⊑ ⌜al⌝ , ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)) ⊦ |
lim(⌜αf⌝ ) = ⌜al⌝ , lim(⌜σf⌝ ) = ⌜sl⌝ , # al + m ≠ # sl, sl ≠ [], # al + m < # sl, mon(⌜αf⌝ ), mon(⌜σf⌝ ), ⌜sl⌝ ⊑ σf(n), σf(n) ⊑ ⌜sl⌝ , ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)), ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ n. αf(n) ⊑ ⌜al⌝ ⊦
Used terms: n
| lim(⌜αf⌝ ) = ⌜al⌝ , lim(⌜σf⌝ ) = ⌜sl⌝ , # al + m ≠ # sl, sl ≠ [], # al + m < # sl, mon(⌜αf⌝ ), mon(⌜σf⌝ ), ⌜sl⌝ ⊑ σf(n), σf(n) ⊑ ⌜sl⌝ , ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)), ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ n. αf(n) ⊑ ⌜al⌝ ⊦ |
lim(⌜αf⌝ ) = ⌜al⌝ , lim(⌜σf⌝ ) = ⌜sl⌝ , ⌜sl⌝ = σf(n), # al + m ≠ # sl, sl ≠ [], # al + m < # sl, mon(⌜αf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)), ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ n. αf(n) ⊑ ⌜al⌝ ⊦
Used simplifier rules: ⊦ # x0 = # x1 → (x0 ⊑ x1 ↔ x0 = x1); (s) ⊦ ⌜x⌝ ⊑ ⌜y⌝ ↔ x ⊑ y; (s) ⊦ σ1 ⊑ σ2 → (σ2 ⊑ σ1 ↔ σ1 = σ2); (as)
| lim(⌜αf⌝ ) = ⌜al⌝ , lim(⌜σf⌝ ) = ⌜sl⌝ , ⌜sl⌝ = σf(n), # al + m ≠ # sl, sl ≠ [], # al + m < # sl, mon(⌜αf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)), ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ n. αf(n) ⊑ ⌜al⌝ ⊦ |
# σf(n) = # αf(n) + ⌜m⌝ , lim(⌜σf⌝ ) = ⌜sl⌝ , lim(⌜αf⌝ ) = ⌜al⌝ , ⌜sl⌝ = σf(n), # al + m ≠ # sl, sl ≠ [], # al + m < # sl, mon(⌜σf⌝ ), mon(⌜αf⌝ ), ∀ n. αf(n) ⊑ ⌜al⌝ , ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)) ⊦
Used terms: n
| # σf(n) = # αf(n) + ⌜m⌝ , lim(⌜σf⌝ ) = ⌜sl⌝ , lim(⌜αf⌝ ) = ⌜al⌝ , ⌜sl⌝ = σf(n), # al + m ≠ # sl, sl ≠ [], # al + m < # sl, mon(⌜σf⌝ ), mon(⌜αf⌝ ), ∀ n. αf(n) ⊑ ⌜al⌝ , ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)) ⊦ |
lim(⌜σf⌝ ) = ⌜sl⌝ , lim(⌜αf⌝ ) = ⌜al⌝ , ⌜sl⌝ = σf(n), ⌜# sl⌝ = # αf(n) + ⌜m⌝ , # al + m ≠ # sl, sl ≠ [], # al + m < # sl, mon(⌜σf⌝ ), mon(⌜αf⌝ ), ∀ n. αf(n) ⊑ ⌜al⌝ , ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)) ⊦
Used simplifier rules: ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s)
| lim(⌜σf⌝ ) = ⌜sl⌝ , lim(⌜αf⌝ ) = ⌜al⌝ , ⌜sl⌝ = σf(n), ⌜# sl⌝ = # αf(n) + ⌜m⌝ , # al + m ≠ # sl, sl ≠ [], # al + m < # sl, mon(⌜σf⌝ ), mon(⌜αf⌝ ), ∀ n. αf(n) ⊑ ⌜al⌝ , ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)) ⊦ |
lim(⌜αf⌝ ) = ⌜al⌝ , lim(⌜σf⌝ ) = ⌜sl⌝ , ⌜# sl⌝ = # αf(n) + ⌜m⌝ , ⌜sl⌝ = σf(n), # al + m ≠ # sl, sl ≠ [], # al + m < # sl, mon(⌜αf⌝ ), mon(⌜σf⌝ ), αf(n) ⊑ ⌜al⌝ , ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)) ⊦
Used terms: n
| lim(⌜αf⌝ ) = ⌜al⌝ , lim(⌜σf⌝ ) = ⌜sl⌝ , ⌜# sl⌝ = # αf(n) + ⌜m⌝ , ⌜sl⌝ = σf(n), # al + m ≠ # sl, sl ≠ [], # al + m < # sl, mon(⌜αf⌝ ), mon(⌜σf⌝ ), αf(n) ⊑ ⌜al⌝ , ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)) ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
Used simplifier rules: ⊦ σ0 + σ = ⌜z⌝ ↔ finp(σ0) ∧ finp(σ) ∧ σ0.l + σ.l = z; (as) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ finp(σ) ↔ (∃ x. ⌜x⌝ = σ); (as) ⊦ ⌜x + y⌝ = ⌜x⌝ + ⌜y⌝ ; (s) ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s) ⊦ ⌜n⌝ + ⌜m⌝ = ⌜n0⌝ ↔ n + m = n0; (s) add-assoc: ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2; from specification nat-inf add-comm: ⊦ n∞1 + n∞2 = n∞2 + n∞1; from specification nat-inf ⊦ #(x + y) = # x + # y; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ ⌜x⌝ .l = x; (s) lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic ⊦ m + n < m + n0 ↔ n < n0; (s) ⊦ ¬ m + n < m; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: αf(n), ⌜al⌝
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| lim(⌜σf⌝ ) = ⌜sl⌝ , lim(⌜αf⌝ ) = ⌜al⌝ , # al + m ≠ # sl, mon(⌜σf⌝ ), mon(⌜αf⌝ ), ¬ # al + m < # sl, ∀ m0. ¬ # sl < m0 → (∃ n. ⌜sl.take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ ⌜sl⌝ , ∀ n. αf(n) ⊑ ⌜al⌝ , ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)) ⊦ |
lim(⌜σf⌝ ) = ⌜sl⌝ , lim(⌜αf⌝ ) = ⌜al⌝ , # al + m ≠ # sl, # sl < # al + m, mon(⌜σf⌝ ), mon(⌜αf⌝ ), ∀ m0. ¬ # sl < m0 → (∃ n. ⌜sl.take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ ⌜sl⌝ , ∀ n. αf(n) ⊑ ⌜al⌝ , ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)) ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m ≠ n → (m < n ↔ ¬ n < m); (ss)
| lim(⌜σf⌝ ) = ⌜sl⌝ , lim(⌜αf⌝ ) = ⌜al⌝ , # al + m ≠ # sl, # sl < # al + m, mon(⌜σf⌝ ), mon(⌜αf⌝ ), ∀ m0. ¬ # sl < m0 → (∃ n. ⌜sl.take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ ⌜sl⌝ , ∀ n. αf(n) ⊑ ⌜al⌝ , ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)) ⊦ |
lim(⌜αf⌝ ) = ⌜al⌝ , lim(⌜σf⌝ ) = ⌜sl⌝ , # al + m ≠ # sl, # sl < # al + m, mon(⌜αf⌝ ), mon(⌜σf⌝ ), ¬ # al < # al → (∃ n. ⌜al.take(# al)⌝ ⊑ αf(n)), ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ n. αf(n) ⊑ ⌜al⌝ , ∀ n. σf(n) ⊑ ⌜sl⌝ , ∀ m0. ¬ # sl < m0 → (∃ n. ⌜sl.take(m0)⌝ ⊑ σf(n)) ⊦
Used terms: # al
| lim(⌜αf⌝ ) = ⌜al⌝ , lim(⌜σf⌝ ) = ⌜sl⌝ , # al + m ≠ # sl, # sl < # al + m, mon(⌜αf⌝ ), mon(⌜σf⌝ ), ¬ # al < # al → (∃ n. ⌜al.take(# al)⌝ ⊑ αf(n)), ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ n. αf(n) ⊑ ⌜al⌝ , ∀ n. σf(n) ⊑ ⌜sl⌝ , ∀ m0. ¬ # sl < m0 → (∃ n. ⌜sl.take(m0)⌝ ⊑ σf(n)) ⊦ |
lim(⌜σf⌝ ) = ⌜sl⌝ , lim(⌜αf⌝ ) = ⌜al⌝ , # al + m ≠ # sl, # sl < # al + m, mon(⌜σf⌝ ), mon(⌜αf⌝ ), ⌜al⌝ ⊑ αf(n), ∀ m0. ¬ # sl < m0 → (∃ n. ⌜sl.take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ ⌜sl⌝ , ∀ n. αf(n) ⊑ ⌜al⌝ , ∀ n. # σf(n) = # αf(n) + ⌜m⌝ ⊦
Used simplifier rules: ⊦ # x = n → x.take(n) = x; (s) ⊦ ¬ n < n; (s)
| lim(⌜σf⌝ ) = ⌜sl⌝ , lim(⌜αf⌝ ) = ⌜al⌝ , # al + m ≠ # sl, # sl < # al + m, mon(⌜σf⌝ ), mon(⌜αf⌝ ), ⌜al⌝ ⊑ αf(n), ∀ m0. ¬ # sl < m0 → (∃ n. ⌜sl.take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ ⌜sl⌝ , ∀ n. αf(n) ⊑ ⌜al⌝ , ∀ n. # σf(n) = # αf(n) + ⌜m⌝ ⊦ |
lim(⌜αf⌝ ) = ⌜al⌝ , lim(⌜σf⌝ ) = ⌜sl⌝ , # al + m ≠ # sl, # sl < # al + m, mon(⌜αf⌝ ), mon(⌜σf⌝ ), ⌜al⌝ ⊑ αf(n), αf(n) ⊑ ⌜al⌝ , ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ ⌜sl⌝ , ∀ m0. ¬ # sl < m0 → (∃ n. ⌜sl.take(m0)⌝ ⊑ σf(n)) ⊦
Used terms: n
| lim(⌜αf⌝ ) = ⌜al⌝ , lim(⌜σf⌝ ) = ⌜sl⌝ , # al + m ≠ # sl, # sl < # al + m, mon(⌜αf⌝ ), mon(⌜σf⌝ ), ⌜al⌝ ⊑ αf(n), αf(n) ⊑ ⌜al⌝ , ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ ⌜sl⌝ , ∀ m0. ¬ # sl < m0 → (∃ n. ⌜sl.take(m0)⌝ ⊑ σf(n)) ⊦ |
lim(⌜αf⌝ ) = ⌜al⌝ , lim(⌜σf⌝ ) = ⌜sl⌝ , ⌜al⌝ = αf(n), # al + m ≠ # sl, # sl < # al + m, mon(⌜αf⌝ ), mon(⌜σf⌝ ), ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ ⌜sl⌝ , ∀ m0. ¬ # sl < m0 → (∃ n. ⌜sl.take(m0)⌝ ⊑ σf(n)) ⊦
Used simplifier rules: ⊦ # x0 = # x1 → (x0 ⊑ x1 ↔ x0 = x1); (s) ⊦ ⌜x⌝ ⊑ ⌜y⌝ ↔ x ⊑ y; (s) ⊦ σ1 ⊑ σ2 → (σ2 ⊑ σ1 ↔ σ1 = σ2); (as)
| lim(⌜αf⌝ ) = ⌜al⌝ , lim(⌜σf⌝ ) = ⌜sl⌝ , ⌜al⌝ = αf(n), # al + m ≠ # sl, # sl < # al + m, mon(⌜αf⌝ ), mon(⌜σf⌝ ), ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ n. σf(n) ⊑ ⌜sl⌝ , ∀ m0. ¬ # sl < m0 → (∃ n. ⌜sl.take(m0)⌝ ⊑ σf(n)) ⊦ |
# σf(n) = # αf(n) + ⌜m⌝ , lim(⌜σf⌝ ) = ⌜sl⌝ , lim(⌜αf⌝ ) = ⌜al⌝ , ⌜al⌝ = αf(n), # al + m ≠ # sl, # sl < # al + m, mon(⌜σf⌝ ), mon(⌜αf⌝ ), ∀ m0. ¬ # sl < m0 → (∃ n. ⌜sl.take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ ⌜sl⌝ ⊦
Used terms: n
| # σf(n) = # αf(n) + ⌜m⌝ , lim(⌜σf⌝ ) = ⌜sl⌝ , lim(⌜αf⌝ ) = ⌜al⌝ , ⌜al⌝ = αf(n), # al + m ≠ # sl, # sl < # al + m, mon(⌜σf⌝ ), mon(⌜αf⌝ ), ∀ m0. ¬ # sl < m0 → (∃ n. ⌜sl.take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ ⌜sl⌝ ⊦ |
# σf(n) = ⌜# al⌝ + ⌜m⌝ , lim(⌜σf⌝ ) = ⌜sl⌝ , lim(⌜αf⌝ ) = ⌜al⌝ , ⌜al⌝ = αf(n), # al + m ≠ # sl, # sl < # al + m, mon(⌜σf⌝ ), mon(⌜αf⌝ ), ∀ m0. ¬ # sl < m0 → (∃ n. ⌜sl.take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ ⌜sl⌝ ⊦
Used simplifier rules: ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s)
| # σf(n) = ⌜# al⌝ + ⌜m⌝ , lim(⌜σf⌝ ) = ⌜sl⌝ , lim(⌜αf⌝ ) = ⌜al⌝ , ⌜al⌝ = αf(n), # al + m ≠ # sl, # sl < # al + m, mon(⌜σf⌝ ), mon(⌜αf⌝ ), ∀ m0. ¬ # sl < m0 → (∃ n. ⌜sl.take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ ⌜sl⌝ ⊦ |
# σf(n) = ⌜# al⌝ + ⌜m⌝ , lim(⌜αf⌝ ) = ⌜al⌝ , lim(⌜σf⌝ ) = ⌜sl⌝ , ⌜al⌝ = αf(n), # al + m ≠ # sl, # sl < # al + m, mon(⌜αf⌝ ), mon(⌜σf⌝ ), σf(n) ⊑ ⌜sl⌝ , ∀ m0. ¬ # sl < m0 → (∃ n. ⌜sl.take(m0)⌝ ⊑ σf(n)) ⊦
Used terms: n
| # σf(n) = ⌜# al⌝ + ⌜m⌝ , lim(⌜αf⌝ ) = ⌜al⌝ , lim(⌜σf⌝ ) = ⌜sl⌝ , ⌜al⌝ = αf(n), # al + m ≠ # sl, # sl < # al + m, mon(⌜αf⌝ ), mon(⌜σf⌝ ), σf(n) ⊑ ⌜sl⌝ , ∀ m0. ¬ # sl < m0 → (∃ n. ⌜sl.take(m0)⌝ ⊑ σf(n)) ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
Used simplifier rules: ⊦ σ0 + σ = ⌜z⌝ ↔ finp(σ0) ∧ finp(σ) ∧ σ0.l + σ.l = z; (as) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ finp(σ) ↔ (∃ x. ⌜x⌝ = σ); (as) ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s) ⊦ ⌜n⌝ + ⌜m⌝ = ⌜n0⌝ ↔ n + m = n0; (s) add-assoc: ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2; from specification nat-inf add-comm: ⊦ n∞1 + n∞2 = n∞2 + n∞1; from specification nat-inf ⊦ ⌜x + y⌝ = ⌜x⌝ + ⌜y⌝ ; (s) ⊦ #(x + y) = # x + # y; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ ⌜x⌝ .l = x; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic ⊦ m = m + n ↔ n = 0; (s) ⊦ # x = 0 ↔ x = []; (s) ⊦ ¬ m + n < m; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: σf(n), ⌜sl⌝
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| lim(⌜αf⌝ ) = ⌜al⌝ , lim(⌜σf⌝ ) = ⌜sf⌝ , # lim(⌜σf⌝ ) ≠ ⌜# al⌝ + ⌜m⌝ , mon(⌜αf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)), ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ n. αf(n) ⊑ ⌜al⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦ |
lim(⌜αf⌝ ) = ⌜al⌝ , lim(⌜σf⌝ ) = ⌜sf⌝ , mon(⌜αf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)), ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ n. αf(n) ⊑ ⌜al⌝ , ∀ n. σf(n) ⊑ ⌜sf⌝ , ∀ m0. ∃ n. ⌜sf.take(m0)⌝ ⊑ σf(n) ⊦
Used simplifier rules: ⊦ ⌜nf⌝ .take(n) = nf.take(n); (s) ⊦ ¬ ∞ < n∞; (s) ⊦ # ⌜nf⌝ = ∞; (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) ⊦ ⌜m⌝ + n∞ = ∞ ↔ n∞ = ∞; (s)
| lim(⌜αf⌝ ) = ⌜al⌝ , lim(⌜σf⌝ ) = ⌜sf⌝ , mon(⌜αf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)), ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ n. αf(n) ⊑ ⌜al⌝ , ∀ n. σf(n) ⊑ ⌜sf⌝ , ∀ m0. ∃ n. ⌜sf.take(m0)⌝ ⊑ σf(n) ⊦ |
lim(⌜σf⌝ ) = ⌜sf⌝ , lim(⌜αf⌝ ) = ⌜al⌝ , mon(⌜σf⌝ ), mon(⌜αf⌝ ), ∀ n. σf(n) ⊑ ⌜sf⌝ , ∀ n. αf(n) ⊑ ⌜al⌝ , ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)), ∃ n. ⌜sf.take(# al + m + 1)⌝ ⊑ σf(n) ⊦
Used terms: # al + m + 1
| lim(⌜σf⌝ ) = ⌜sf⌝ , lim(⌜αf⌝ ) = ⌜al⌝ , mon(⌜σf⌝ ), mon(⌜αf⌝ ), ∀ n. σf(n) ⊑ ⌜sf⌝ , ∀ n. αf(n) ⊑ ⌜al⌝ , ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)), ∃ n. ⌜sf.take(# al + m + 1)⌝ ⊑ σf(n) ⊦ |
lim(⌜αf⌝ ) = ⌜al⌝ , lim(⌜σf⌝ ) = ⌜sf⌝ , mon(⌜αf⌝ ), mon(⌜σf⌝ ), ⌜sf.take(# al + m + 1)⌝ ⊑ σf(n), ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)), ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ n. αf(n) ⊑ ⌜al⌝ , ∀ n. σf(n) ⊑ ⌜sf⌝ ⊦
| lim(⌜αf⌝ ) = ⌜al⌝ , lim(⌜σf⌝ ) = ⌜sf⌝ , mon(⌜αf⌝ ), mon(⌜σf⌝ ), ⌜sf.take(# al + m + 1)⌝ ⊑ σf(n), ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)), ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ n. αf(n) ⊑ ⌜al⌝ , ∀ n. σf(n) ⊑ ⌜sf⌝ ⊦ |
# σf(n) = # αf(n) + ⌜m⌝ , lim(⌜σf⌝ ) = ⌜sf⌝ , lim(⌜αf⌝ ) = ⌜al⌝ , mon(⌜σf⌝ ), mon(⌜αf⌝ ), ⌜sf.take(# al + m + 1)⌝ ⊑ σf(n), ∀ n. σf(n) ⊑ ⌜sf⌝ , ∀ n. αf(n) ⊑ ⌜al⌝ , ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)) ⊦
Used terms: n
| # σf(n) = # αf(n) + ⌜m⌝ , lim(⌜σf⌝ ) = ⌜sf⌝ , lim(⌜αf⌝ ) = ⌜al⌝ , mon(⌜σf⌝ ), mon(⌜αf⌝ ), ⌜sf.take(# al + m + 1)⌝ ⊑ σf(n), ∀ n. σf(n) ⊑ ⌜sf⌝ , ∀ n. αf(n) ⊑ ⌜al⌝ , ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)) ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
# σf(n) = # αf(n) + ⌜m⌝ , lim(⌜αf⌝ ) = ⌜al⌝ , lim(⌜σf⌝ ) = ⌜sf⌝ , mon(⌜αf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)), ∀ n. αf(n) ⊑ ⌜al⌝ , ∀ n. σf(n) ⊑ ⌜sf⌝ , ∃ σ1. ⌜sf.take(# al + m + 1)⌝ + σ1 = σf(n) ⊦
Used terms: ⌜sf.take(# al + m + 1)⌝ , σf(n)
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| # σf(n) = # αf(n) + ⌜m⌝ , lim(⌜αf⌝ ) = ⌜al⌝ , lim(⌜σf⌝ ) = ⌜sf⌝ , mon(⌜αf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)), ∀ n. αf(n) ⊑ ⌜al⌝ , ∀ n. σf(n) ⊑ ⌜sf⌝ , ∃ σ1. ⌜sf.take(# al + m + 1)⌝ + σ1 = σf(n) ⊦ |
# σf(n) = # αf(n) + ⌜m⌝ , ⌜sf.take(# al + m + 1)⌝ + σ1 = σf(n), lim(⌜σf⌝ ) = ⌜sf⌝ , lim(⌜αf⌝ ) = ⌜al⌝ , mon(⌜σf⌝ ), mon(⌜αf⌝ ), ∀ n. σf(n) ⊑ ⌜sf⌝ , ∀ n. αf(n) ⊑ ⌜al⌝ , ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)) ⊦
| # σf(n) = # αf(n) + ⌜m⌝ , ⌜sf.take(# al + m + 1)⌝ + σ1 = σf(n), lim(⌜σf⌝ ) = ⌜sf⌝ , lim(⌜αf⌝ ) = ⌜al⌝ , mon(⌜σf⌝ ), mon(⌜αf⌝ ), ∀ n. σf(n) ⊑ ⌜sf⌝ , ∀ n. αf(n) ⊑ ⌜al⌝ , ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)) ⊦ |
# σf(n) = # αf(n) + ⌜m⌝ , ⌜sf.take(# al + m + 1)⌝ + σ1 = σf(n), lim(⌜αf⌝ ) = ⌜al⌝ , lim(⌜σf⌝ ) = ⌜sf⌝ , mon(⌜αf⌝ ), mon(⌜σf⌝ ), αf(n) ⊑ ⌜al⌝ , ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)), ∀ n. σf(n) ⊑ ⌜sf⌝ ⊦
Used terms: n
| # σf(n) = # αf(n) + ⌜m⌝ , ⌜sf.take(# al + m + 1)⌝ + σ1 = σf(n), lim(⌜αf⌝ ) = ⌜al⌝ , lim(⌜σf⌝ ) = ⌜sf⌝ , mon(⌜αf⌝ ), mon(⌜σf⌝ ), αf(n) ⊑ ⌜al⌝ , ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)), ∀ n. σf(n) ⊑ ⌜sf⌝ ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
# σf(n) = # αf(n) + ⌜m⌝ , ⌜sf.take(# al + m + 1)⌝ + σ1 = σf(n), lim(⌜σf⌝ ) = ⌜sf⌝ , lim(⌜αf⌝ ) = ⌜al⌝ , mon(⌜σf⌝ ), mon(⌜αf⌝ ), ∀ n. σf(n) ⊑ ⌜sf⌝ , ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)), ∃ α. αf(n) + α = ⌜al⌝ ⊦
Used terms: αf(n), ⌜al⌝
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| # σf(n) = # αf(n) + ⌜m⌝ , ⌜sf.take(# al + m + 1)⌝ + σ1 = σf(n), lim(⌜σf⌝ ) = ⌜sf⌝ , lim(⌜αf⌝ ) = ⌜al⌝ , mon(⌜σf⌝ ), mon(⌜αf⌝ ), ∀ n. σf(n) ⊑ ⌜sf⌝ , ∀ m0. ¬ # al < m0 → (∃ n. ⌜al.take(m0)⌝ ⊑ αf(n)), ∃ α. αf(n) + α = ⌜al⌝ ⊦ |
# σf(n) = ⌜# al0⌝ + ⌜m⌝ , ⌜sf.take((# al0 + # al1) + m + 1)⌝ + σ1 = σf(n), lim(⌜σf⌝ ) = ⌜sf⌝ , lim(⌜αf⌝ ) = ⌜al0⌝ + ⌜al1⌝ , ⌜al0⌝ = αf(n), mon(⌜σf⌝ ), mon(⌜αf⌝ ), ∀ n. σf(n) ⊑ ⌜sf⌝ , ∀ m0. ¬ # al0 + # al1 < m0 → (∃ n0. ⌜(al0 + al1).take(m0)⌝ ⊑ αf(n0)) ⊦
Used simplifier rules: ⊦ ⌜x⌝ .l = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ #(x + y) = # x + # y; (s) ⊦ ⌜x + y⌝ = ⌜x⌝ + ⌜y⌝ ; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s) ⊦ finp(σ) ↔ (∃ x. ⌜x⌝ = σ); (as) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ σ0 + σ = ⌜z⌝ ↔ finp(σ0) ∧ finp(σ) ∧ σ0.l + σ.l = z; (as)
| # σf(n) = ⌜# al0⌝ + ⌜m⌝ , ⌜sf.take((# al0 + # al1) + m + 1)⌝ + σ1 = σf(n), lim(⌜σf⌝ ) = ⌜sf⌝ , lim(⌜αf⌝ ) = ⌜al0⌝ + ⌜al1⌝ , ⌜al0⌝ = αf(n), mon(⌜σf⌝ ), mon(⌜αf⌝ ), ∀ n. σf(n) ⊑ ⌜sf⌝ , ∀ m0. ¬ # al0 + # al1 < m0 → (∃ n0. ⌜(al0 + al1).take(m0)⌝ ⊑ αf(n0)) ⊦ |
⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n))
# σf(n) = #(⌜sf.take((# al0 + # al1) + m + 1)⌝ + σ1), # σf(n) = ⌜# al0⌝ + ⌜m⌝ , lim(⌜αf⌝ ) = ⌜al0⌝ + ⌜al1⌝ , lim(⌜σf⌝ ) = ⌜sf⌝ , ⌜al0⌝ = αf(n), mon(⌜αf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # al0 + # al1 < m0 → (∃ n0. ⌜(al0 + al1).take(m0)⌝ ⊑ αf(n0)), ∀ n. σf(n) ⊑ ⌜sf⌝ , ∀ n0. ⌜n0⌝ < # σf(n) → σf(n)(n0) = (⌜sf.take((# al0 + # al1) + m + 1)⌝ + σ1)(n0) ⊦
Used terms: ⌜sf.take((# al0 + # al1) + m + 1)⌝ + σ1, σf(n)
| ⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n)) |
| # σf(n) = #(⌜sf.take((# al0 + # al1) + m + 1)⌝ + σ1), # σf(n) = ⌜# al0⌝ + ⌜m⌝ , lim(⌜αf⌝ ) = ⌜al0⌝ + ⌜al1⌝ , lim(⌜σf⌝ ) = ⌜sf⌝ , ⌜al0⌝ = αf(n), mon(⌜αf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # al0 + # al1 < m0 → (∃ n0. ⌜(al0 + al1).take(m0)⌝ ⊑ αf(n0)), ∀ n. σf(n) ⊑ ⌜sf⌝ , ∀ n0. ⌜n0⌝ < # σf(n) → σf(n)(n0) = (⌜sf.take((# al0 + # al1) + m + 1)⌝ + σ1)(n0) ⊦ |
# σf(n) = ⌜# al0⌝ + ⌜m⌝ , # σf(n) = (⌜# al0⌝ + ⌜# al1⌝ + ⌜m⌝ + ⌜1⌝ ) + # σ1, lim(⌜σf⌝ ) = ⌜sf⌝ , lim(⌜αf⌝ ) = ⌜al0⌝ + ⌜al1⌝ , ⌜al0⌝ = αf(n), mon(⌜σf⌝ ), mon(⌜αf⌝ ), ∀ n. σf(n) ⊑ ⌜sf⌝ , ∀ m0. ¬ # al0 + # al1 < m0 → (∃ n0. ⌜(al0 + al1).take(m0)⌝ ⊑ αf(n0)), ∀ n0. n0 < # al0 + m → σf(n)(n0) = (⌜sf.take((# al0 + # al1) + m + 1)⌝ + σ1)(n0) ⊦
Used simplifier rules: ⊦ n∞ = ⌜m⌝ + ⌜n0⌝ → (⌜n⌝ < n∞ ↔ n < m + n0); (s) add-assoc: ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2; from specification nat-inf add-comm: ⊦ n∞1 + n∞2 = n∞2 + n∞1; from specification nat-inf append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream 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) ⊦ # ⌜nf.take(n)⌝ = ⌜n⌝ ; (s) ⊦ #(σ + σ1) = # σ + # σ1; (s)
| # σf(n) = ⌜# al0⌝ + ⌜m⌝ , # σf(n) = (⌜# al0⌝ + ⌜# al1⌝ + ⌜m⌝ + ⌜1⌝ ) + # σ1, lim(⌜σf⌝ ) = ⌜sf⌝ , lim(⌜αf⌝ ) = ⌜al0⌝ + ⌜al1⌝ , ⌜al0⌝ = αf(n), mon(⌜σf⌝ ), mon(⌜αf⌝ ), ∀ n. σf(n) ⊑ ⌜sf⌝ , ∀ m0. ¬ # al0 + # al1 < m0 → (∃ n0. ⌜(al0 + al1).take(m0)⌝ ⊑ αf(n0)), ∀ n0. n0 < # al0 + m → σf(n)(n0) = (⌜sf.take((# al0 + # al1) + m + 1)⌝ + σ1)(n0) ⊦ |
Used simplifier rules: ⊦ ⌜n⌝ + n∞1 = ⌜n⌝ + n∞2 ↔ n∞1 = n∞2; (s) ⊦ ⌜n⌝ + n∞ = ⌜n⌝ ↔ n∞ = ⌜0⌝ ; (s) ⊦ ⌜n⌝ + n∞ = ⌜0⌝ ↔ n∞ = ⌜0⌝ ∧ n = 0; (ws) ⊦ n < m → (⌜(* n)⌝ = ⌜(* m)⌝ + n∞2 ↔ false); (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⌝ ) = ⌜af⌝ , # lim(⌜σf⌝ ) ≠ # lim(⌜αf⌝ ) + ⌜m⌝ , mon(⌜σf⌝ ), mon(⌜αf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜αf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜αf⌝ ).take(m0)⌝ ⊑ αf(n)), ∀ n. αf(n) ⊑ lim(⌜αf⌝ ), ∀ n. # σf(n) = # αf(n) + ⌜m⌝ ⊦ |
lim(⌜αf⌝ ) = ⌜af⌝ , # lim(⌜σf⌝ ) ≠ ∞, mon(⌜σf⌝ ), mon(⌜αf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. αf(n) ⊑ ⌜af⌝ , ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ m0. ∃ n. ⌜af.take(m0)⌝ ⊑ αf(n) ⊦
Used simplifier rules: ⊦ ⌜nf⌝ .take(n) = nf.take(n); (s) ⊦ ¬ ∞ < n∞; (s) ⊦ # ⌜nf⌝ = ∞; (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 ⊦ ⌜m⌝ + ∞ = ∞; (s)
| lim(⌜αf⌝ ) = ⌜af⌝ , # lim(⌜σf⌝ ) ≠ ∞, mon(⌜σf⌝ ), mon(⌜αf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ n. αf(n) ⊑ ⌜af⌝ , ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ m0. ∃ n. ⌜af.take(m0)⌝ ⊑ αf(n) ⊦ |
lim(⌜αf⌝ ) = ⌜af⌝ , lim(⌜σf⌝ ) = ⌜sl⌝ , # lim(⌜σf⌝ ) ≠ ∞, mon(⌜αf⌝ ), mon(⌜σf⌝ ), ∀ m0. ∃ n. ⌜af.take(m0)⌝ ⊑ αf(n), ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ n. αf(n) ⊑ ⌜af⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦
Used simplifier rules: Stream[A] freely generated by ⌝, ⌝; ⊦ # ⌜nf⌝ = ∞; (s)
| lim(⌜αf⌝ ) = ⌜af⌝ , lim(⌜σf⌝ ) = ⌜sl⌝ , # lim(⌜σf⌝ ) ≠ ∞, mon(⌜αf⌝ ), mon(⌜σf⌝ ), ∀ m0. ∃ n. ⌜af.take(m0)⌝ ⊑ αf(n), ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ n. αf(n) ⊑ ⌜af⌝ , ∀ n. σf(n) ⊑ lim(⌜σf⌝ ), ∀ m0. ¬ # lim(⌜σf⌝ ) < ⌜m0⌝ → (∃ n. ⌜lim(⌜σf⌝ ).take(m0)⌝ ⊑ σf(n)) ⊦ |
lim(⌜αf⌝ ) = ⌜af⌝ , lim(⌜σf⌝ ) = ⌜sl⌝ , mon(⌜αf⌝ ), mon(⌜σf⌝ ), ∀ m0. ∃ n. ⌜af.take(m0)⌝ ⊑ αf(n), ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ n. αf(n) ⊑ ⌜af⌝ , ∀ n. σf(n) ⊑ ⌜sl⌝ , ∀ m0. ¬ # sl < m0 → (∃ n. ⌜sl.take(m0)⌝ ⊑ σf(n)) ⊦
Used simplifier rules: ⊦ ⌜x⌝ .take(n) = x.take(n); (s) ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s) ⊦ ⌜n⌝ ≠ ∞; (s)
| lim(⌜αf⌝ ) = ⌜af⌝ , lim(⌜σf⌝ ) = ⌜sl⌝ , mon(⌜αf⌝ ), mon(⌜σf⌝ ), ∀ m0. ∃ n. ⌜af.take(m0)⌝ ⊑ αf(n), ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ n. αf(n) ⊑ ⌜af⌝ , ∀ n. σf(n) ⊑ ⌜sl⌝ , ∀ m0. ¬ # sl < m0 → (∃ n. ⌜sl.take(m0)⌝ ⊑ σf(n)) ⊦ |
lim(⌜σf⌝ ) = ⌜sl⌝ , lim(⌜αf⌝ ) = ⌜af⌝ , mon(⌜σf⌝ ), mon(⌜αf⌝ ), ∀ m0. ¬ # sl < m0 → (∃ n. ⌜sl.take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ ⌜sl⌝ , ∀ n. αf(n) ⊑ ⌜af⌝ , ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∃ n. ⌜af.take(# sl + 1)⌝ ⊑ αf(n) ⊦
Used terms: # sl + 1
| lim(⌜σf⌝ ) = ⌜sl⌝ , lim(⌜αf⌝ ) = ⌜af⌝ , mon(⌜σf⌝ ), mon(⌜αf⌝ ), ∀ m0. ¬ # sl < m0 → (∃ n. ⌜sl.take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ ⌜sl⌝ , ∀ n. αf(n) ⊑ ⌜af⌝ , ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∃ n. ⌜af.take(# sl + 1)⌝ ⊑ αf(n) ⊦ |
lim(⌜αf⌝ ) = ⌜af⌝ , lim(⌜σf⌝ ) = ⌜sl⌝ , mon(⌜αf⌝ ), mon(⌜σf⌝ ), ⌜af.take(# sl + 1)⌝ ⊑ αf(n), ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ n. αf(n) ⊑ ⌜af⌝ , ∀ n. σf(n) ⊑ ⌜sl⌝ , ∀ m0. ¬ # sl < m0 → (∃ n. ⌜sl.take(m0)⌝ ⊑ σf(n)) ⊦
| lim(⌜αf⌝ ) = ⌜af⌝ , lim(⌜σf⌝ ) = ⌜sl⌝ , mon(⌜αf⌝ ), mon(⌜σf⌝ ), ⌜af.take(# sl + 1)⌝ ⊑ αf(n), ∀ n. # σf(n) = # αf(n) + ⌜m⌝ , ∀ n. αf(n) ⊑ ⌜af⌝ , ∀ n. σf(n) ⊑ ⌜sl⌝ , ∀ m0. ¬ # sl < m0 → (∃ n. ⌜sl.take(m0)⌝ ⊑ σf(n)) ⊦ |
# σf(n) = # αf(n) + ⌜m⌝ , lim(⌜σf⌝ ) = ⌜sl⌝ , lim(⌜αf⌝ ) = ⌜af⌝ , mon(⌜σf⌝ ), mon(⌜αf⌝ ), ⌜af.take(# sl + 1)⌝ ⊑ αf(n), ∀ m0. ¬ # sl < m0 → (∃ n. ⌜sl.take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ ⌜sl⌝ , ∀ n. αf(n) ⊑ ⌜af⌝ ⊦
Used terms: n
| # σf(n) = # αf(n) + ⌜m⌝ , lim(⌜σf⌝ ) = ⌜sl⌝ , lim(⌜αf⌝ ) = ⌜af⌝ , mon(⌜σf⌝ ), mon(⌜αf⌝ ), ⌜af.take(# sl + 1)⌝ ⊑ αf(n), ∀ m0. ¬ # sl < m0 → (∃ n. ⌜sl.take(m0)⌝ ⊑ σf(n)), ∀ n. σf(n) ⊑ ⌜sl⌝ , ∀ n. αf(n) ⊑ ⌜af⌝ ⊦ |
# σf(n) = # αf(n) + ⌜m⌝ , lim(⌜αf⌝ ) = ⌜af⌝ , lim(⌜σf⌝ ) = ⌜sl⌝ , mon(⌜αf⌝ ), mon(⌜σf⌝ ), ⌜af.take(# sl + 1)⌝ ⊑ αf(n), σf(n) ⊑ ⌜sl⌝ , ∀ n. αf(n) ⊑ ⌜af⌝ , ∀ m0. ¬ # sl < m0 → (∃ n. ⌜sl.take(m0)⌝ ⊑ σf(n)) ⊦
Used terms: n
| # σf(n) = # αf(n) + ⌜m⌝ , lim(⌜αf⌝ ) = ⌜af⌝ , lim(⌜σf⌝ ) = ⌜sl⌝ , mon(⌜αf⌝ ), mon(⌜σf⌝ ), ⌜af.take(# sl + 1)⌝ ⊑ αf(n), σf(n) ⊑ ⌜sl⌝ , ∀ n. αf(n) ⊑ ⌜af⌝ , ∀ m0. ¬ # sl < m0 → (∃ n. ⌜sl.take(m0)⌝ ⊑ σf(n)) ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
# σf(n) = # αf(n) + ⌜m⌝ , lim(⌜σf⌝ ) = ⌜sl⌝ , lim(⌜αf⌝ ) = ⌜af⌝ , mon(⌜σf⌝ ), mon(⌜αf⌝ ), ⌜af.take(# sl + 1)⌝ ⊑ αf(n), ∀ m0. ¬ # sl < m0 → (∃ n. ⌜sl.take(m0)⌝ ⊑ σf(n)), ∀ n. αf(n) ⊑ ⌜af⌝ , ∃ σ1. σf(n) + σ1 = ⌜sl⌝ ⊦
Used terms: σf(n), ⌜sl⌝
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| # σf(n) = # αf(n) + ⌜m⌝ , lim(⌜σf⌝ ) = ⌜sl⌝ , lim(⌜αf⌝ ) = ⌜af⌝ , mon(⌜σf⌝ ), mon(⌜αf⌝ ), ⌜af.take(# sl + 1)⌝ ⊑ αf(n), ∀ m0. ¬ # sl < m0 → (∃ n. ⌜sl.take(m0)⌝ ⊑ σf(n)), ∀ n. αf(n) ⊑ ⌜af⌝ , ∃ σ1. σf(n) + σ1 = ⌜sl⌝ ⊦ |
lim(⌜αf⌝ ) = ⌜af⌝ , lim(⌜σf⌝ ) = ⌜sl0⌝ + ⌜sl1⌝ , ⌜sl0⌝ = σf(n), ⌜# sl0⌝ = # αf(n) + ⌜m⌝ , mon(⌜σf⌝ ), mon(⌜αf⌝ ), ⌜af.take((# sl0 + # sl1) + 1)⌝ ⊑ αf(n), ∀ n. αf(n) ⊑ ⌜af⌝ , ∀ m0. ¬ # sl0 + # sl1 < m0 → (∃ n0. ⌜(sl0 + sl1).take(m0)⌝ ⊑ σf(n0)) ⊦
Used simplifier rules: ⊦ ⌜x⌝ .l = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ #(x + y) = # x + # y; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ ⌜x + y⌝ = ⌜x⌝ + ⌜y⌝ ; (s) ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s) ⊦ finp(σ) ↔ (∃ x. ⌜x⌝ = σ); (as) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ σ0 + σ = ⌜z⌝ ↔ finp(σ0) ∧ finp(σ) ∧ σ0.l + σ.l = z; (as)
| lim(⌜αf⌝ ) = ⌜af⌝ , lim(⌜σf⌝ ) = ⌜sl0⌝ + ⌜sl1⌝ , ⌜sl0⌝ = σf(n), ⌜# sl0⌝ = # αf(n) + ⌜m⌝ , mon(⌜σf⌝ ), mon(⌜αf⌝ ), ⌜af.take((# sl0 + # sl1) + 1)⌝ ⊑ αf(n), ∀ n. αf(n) ⊑ ⌜af⌝ , ∀ m0. ¬ # sl0 + # sl1 < m0 → (∃ n0. ⌜(sl0 + sl1).take(m0)⌝ ⊑ σf(n0)) ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
lim(⌜σf⌝ ) = ⌜sl0⌝ + ⌜sl1⌝ , lim(⌜αf⌝ ) = ⌜af⌝ , ⌜# sl0⌝ = # αf(n) + ⌜m⌝ , ⌜sl0⌝ = σf(n), mon(⌜αf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # sl0 + # sl1 < m0 → (∃ n0. ⌜(sl0 + sl1).take(m0)⌝ ⊑ σf(n0)), ∀ n. αf(n) ⊑ ⌜af⌝ , ∃ α. ⌜af.take((# sl0 + # sl1) + 1)⌝ + α = αf(n) ⊦
Used terms: ⌜af.take((# sl0 + # sl1) + 1)⌝ , αf(n)
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| lim(⌜σf⌝ ) = ⌜sl0⌝ + ⌜sl1⌝ , lim(⌜αf⌝ ) = ⌜af⌝ , ⌜# sl0⌝ = # αf(n) + ⌜m⌝ , ⌜sl0⌝ = σf(n), mon(⌜αf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # sl0 + # sl1 < m0 → (∃ n0. ⌜(sl0 + sl1).take(m0)⌝ ⊑ σf(n0)), ∀ n. αf(n) ⊑ ⌜af⌝ , ∃ α. ⌜af.take((# sl0 + # sl1) + 1)⌝ + α = αf(n) ⊦ |
⌜af.take((# sl0 + # sl1) + 1)⌝ + α = αf(n), lim(⌜αf⌝ ) = ⌜af⌝ , lim(⌜σf⌝ ) = ⌜sl0⌝ + ⌜sl1⌝ , ⌜sl0⌝ = σf(n), ⌜# sl0⌝ = # αf(n) + ⌜m⌝ , mon(⌜σf⌝ ), mon(⌜αf⌝ ), ∀ n. αf(n) ⊑ ⌜af⌝ , ∀ m0. ¬ # sl0 + # sl1 < m0 → (∃ n0. ⌜(sl0 + sl1).take(m0)⌝ ⊑ σf(n0)) ⊦
| ⌜af.take((# sl0 + # sl1) + 1)⌝ + α = αf(n), lim(⌜αf⌝ ) = ⌜af⌝ , lim(⌜σf⌝ ) = ⌜sl0⌝ + ⌜sl1⌝ , ⌜sl0⌝ = σf(n), ⌜# sl0⌝ = # αf(n) + ⌜m⌝ , mon(⌜σf⌝ ), mon(⌜αf⌝ ), ∀ n. αf(n) ⊑ ⌜af⌝ , ∀ m0. ¬ # sl0 + # sl1 < m0 → (∃ n0. ⌜(sl0 + sl1).take(m0)⌝ ⊑ σf(n0)) ⊦ |
⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n))
# αf(n) = #(⌜af.take((# sl0 + # sl1) + 1)⌝ + α), lim(⌜σf⌝ ) = ⌜sl0⌝ + ⌜sl1⌝ , lim(⌜αf⌝ ) = ⌜af⌝ , ⌜# sl0⌝ = # αf(n) + ⌜m⌝ , ⌜sl0⌝ = σf(n), mon(⌜αf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # sl0 + # sl1 < m0 → (∃ n0. ⌜(sl0 + sl1).take(m0)⌝ ⊑ σf(n0)), ∀ n. αf(n) ⊑ ⌜af⌝ , ∀ n0. ⌜n0⌝ < # αf(n) → αf(n)(n0) = (⌜af.take((# sl0 + # sl1) + 1)⌝ + α)(n0) ⊦
Used terms: ⌜af.take((# sl0 + # sl1) + 1)⌝ + α, αf(n)
| ⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0(n) = σ1(n)) |
| # αf(n) = #(⌜af.take((# sl0 + # sl1) + 1)⌝ + α), lim(⌜σf⌝ ) = ⌜sl0⌝ + ⌜sl1⌝ , lim(⌜αf⌝ ) = ⌜af⌝ , ⌜# sl0⌝ = # αf(n) + ⌜m⌝ , ⌜sl0⌝ = σf(n), mon(⌜αf⌝ ), mon(⌜σf⌝ ), ∀ m0. ¬ # sl0 + # sl1 < m0 → (∃ n0. ⌜(sl0 + sl1).take(m0)⌝ ⊑ σf(n0)), ∀ n. αf(n) ⊑ ⌜af⌝ , ∀ n0. ⌜n0⌝ < # αf(n) → αf(n)(n0) = (⌜af.take((# sl0 + # sl1) + 1)⌝ + α)(n0) ⊦ |
# αf(n) = (⌜# sl0⌝ + ⌜# sl1⌝ + ⌜1⌝ ) + # α, lim(⌜αf⌝ ) = ⌜af⌝ , lim(⌜σf⌝ ) = ⌜sl0⌝ + ⌜sl1⌝ , ⌜sl0⌝ = σf(n), ⌜# sl0⌝ = # αf(n) + ⌜m⌝ , mon(⌜σf⌝ ), mon(⌜αf⌝ ), ∀ n0. ⌜n0⌝ < # αf(n) → αf(n)(n0) = (⌜af.take((# sl0 + # sl1) + 1)⌝ + α)(n0), ∀ n. αf(n) ⊑ ⌜af⌝ , ∀ m0. ¬ # sl0 + # sl1 < m0 → (∃ n0. ⌜(sl0 + sl1).take(m0)⌝ ⊑ σf(n0)) ⊦
Used simplifier rules: 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) ⊦ # ⌜nf.take(n)⌝ = ⌜n⌝ ; (s) ⊦ #(σ + σ1) = # σ + # σ1; (s)
| # αf(n) = (⌜# sl0⌝ + ⌜# sl1⌝ + ⌜1⌝ ) + # α, lim(⌜αf⌝ ) = ⌜af⌝ , lim(⌜σf⌝ ) = ⌜sl0⌝ + ⌜sl1⌝ , ⌜sl0⌝ = σf(n), ⌜# sl0⌝ = # αf(n) + ⌜m⌝ , mon(⌜σf⌝ ), mon(⌜αf⌝ ), ∀ n0. ⌜n0⌝ < # αf(n) → αf(n)(n0) = (⌜af.take((# sl0 + # sl1) + 1)⌝ + α)(n0), ∀ n. αf(n) ⊑ ⌜af⌝ , ∀ m0. ¬ # sl0 + # sl1 < m0 → (∃ n0. ⌜(sl0 + sl1).take(m0)⌝ ⊑ σf(n0)) ⊦ |
Used simplifier rules: ⊦ ⌜n⌝ + n∞ = ⌜n⌝ ↔ n∞ = ⌜0⌝ ; (s) ⊦ ⌜n⌝ + n∞ = ⌜0⌝ ↔ n∞ = ⌜0⌝ ∧ n = 0; (ws) ⊦ n < m → (⌜(* n)⌝ = ⌜(* m)⌝ + n∞2 ↔ false); (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.