| ⊦ pmon(alp)(lf) → pcont(lift(alp))(lift(lf)) |
pmon(alp)(lf), ¬ pcont(lift(alp))(lift(lf)) ⊦
| pmon(alp)(lf), ¬ pcont(lift(alp))(lift(lf)) ⊦ |
∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2) ⊦ (lift(alp)(α1) ∧ lift(alp)(α2) ∧ α1 ⊑ α2 → lift(lf)(α1) ⊑ lift(lf)(α2)) ∧ ppbd(lift(alp))(lift(lf))
Used simplifier rules: monl-relative-def: ⊦ pmon(alp)(lf) ↔ (∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2)); cont-relative-def: ⊦ pcont(αp)(f) ↔ pmon(αp)(f) ∧ ppbd(αp)(f); mon-relative-def: ⊦ pmon(αp)(f) ↔ (∀ α1, α2. αp(α1) ∧ αp(α2) ∧ α1 ⊑ α2 → f(α1) ⊑ f(α2));
| ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2) ⊦ (lift(alp)(α1) ∧ lift(alp)(α2) ∧ α1 ⊑ α2 → lift(lf)(α1) ⊑ lift(lf)(α2)) ∧ ppbd(lift(alp))(lift(lf)) |
lift(alp)(α1), lift(alp)(α2), α1 ⊑ α2, ¬ lift(lf)(α1) ⊑ lift(lf)(α2), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2) ⊦
¬ ppbd(lift(alp))(lift(lf)), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2) ⊦
| lift(alp)(α1), lift(alp)(α2), α1 ⊑ α2, ¬ lift(lf)(α1) ⊑ lift(lf)(α2), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2) ⊦ |
α2 = ⌜al⌝ , lift(alp)(α2), lift(alp)(α1), α1 ⊑ α2, ¬ lift(lf)(α1) ⊑ lift(lf)(α2), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2) ⊦
α2 = ⌜af⌝ , lift(alp)(α2), lift(alp)(α1), α1 ⊑ α2, ¬ lift(lf)(α1) ⊑ lift(lf)(α2), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2) ⊦
Used simplifier rules: Stream[A] freely generated by ⌝, ⌝;
| α2 = ⌜al⌝ , lift(alp)(α2), lift(alp)(α1), α1 ⊑ α2, ¬ lift(lf)(α1) ⊑ lift(lf)(α2), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2) ⊦ |
alp(al), lift(alp)(α1), α1 ⊑ ⌜al⌝ , ¬ lift(lf)(α1) ⊑ ⌜lf(al)⌝ , ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2) ⊦
Used simplifier rules: lift-pred-fin: ⊦ lift(alp)(⌜al⌝ ) ↔ alp(al); lift-fin: ⊦ lift(lf)(⌜al⌝ ) = ⌜lf(al)⌝ ;
| alp(al), lift(alp)(α1), α1 ⊑ ⌜al⌝ , ¬ lift(lf)(α1) ⊑ ⌜lf(al)⌝ , ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2) ⊦ |
α1 = ⌜al0⌝ , alp(al), lift(alp)(α1), α1 ⊑ ⌜al⌝ , ¬ lift(lf)(α1) ⊑ ⌜lf(al)⌝ , ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2) ⊦
Used simplifier rules: Stream[A] freely generated by ⌝, ⌝; ⊦ ¬ ⌜nf⌝ ⊑ ⌜x⌝ ; (s)
| α1 = ⌜al0⌝ , alp(al), lift(alp)(α1), α1 ⊑ ⌜al⌝ , ¬ lift(lf)(α1) ⊑ ⌜lf(al)⌝ , ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2) ⊦ |
alp(al), alp(al0), al0 ⊑ al, ¬ lf(al0) ⊑ lf(al), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2) ⊦
Used simplifier rules: lift-pred-fin: ⊦ lift(alp)(⌜al⌝ ) ↔ alp(al); lift-fin: ⊦ lift(lf)(⌜al⌝ ) = ⌜lf(al)⌝ ; ⊦ ⌜x⌝ ⊑ ⌜y⌝ ↔ x ⊑ y; (s)
| alp(al), alp(al0), al0 ⊑ al, ¬ lf(al0) ⊑ lf(al), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2) ⊦ |
Used terms: al0, al
| α2 = ⌜af⌝ , lift(alp)(α2), lift(alp)(α1), α1 ⊑ α2, ¬ lift(lf)(α1) ⊑ lift(lf)(α2), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2) ⊦ |
lift(alp)(α1), α1 ⊑ ⌜af⌝ , ¬ lift(lf)(α1) ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. alp(af.take(n)) ⊦
Used simplifier rules: lift-pred-inf: ⊦ lift(alp)(⌜af⌝ ) ↔ (∀ n. alp(af.take(n))); lift-inf: ⊦ lift(lf)(⌜af⌝ ) = lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ );
| lift(alp)(α1), α1 ⊑ ⌜af⌝ , ¬ lift(lf)(α1) ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. alp(af.take(n)) ⊦ |
α1 = ⌜al⌝ , lift(alp)(α1), α1 ⊑ ⌜af⌝ , ¬ lift(lf)(α1) ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ∀ n. alp(af.take(n)), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2) ⊦
Used simplifier rules: lift-pred-inf: ⊦ lift(alp)(⌜af⌝ ) ↔ (∀ n. alp(af.take(n))); lift-inf: ⊦ lift(lf)(⌜af⌝ ) = lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ); Stream[A] freely generated by ⌝, ⌝; ⊦ ⌜nf⌝ ⊑ ⌜nf0⌝ ↔ nf = nf0; (s) ⊦ σ ⊑ σ; (s)
| α1 = ⌜al⌝ , lift(alp)(α1), α1 ⊑ ⌜af⌝ , ¬ lift(lf)(α1) ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ∀ n. alp(af.take(n)), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2) ⊦ |
alp(al), ⌜al⌝ ⊑ ⌜af⌝ , ¬ ⌜lf(al)⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. alp(af.take(n)) ⊦
Used simplifier rules: lift-pred-fin: ⊦ lift(alp)(⌜al⌝ ) ↔ alp(al); lift-fin: ⊦ lift(lf)(⌜al⌝ ) = ⌜lf(al)⌝ ;
| alp(al), ⌜al⌝ ⊑ ⌜af⌝ , ¬ ⌜lf(al)⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. alp(af.take(n)) ⊦ |
⊦ mon(σσ) ∧ σσ ≠ [] → (∀ n. ⌜n⌝ < # σσ → σσ(n) ⊑ lim(σσ)) ∧ (∀ m. ¬ # lim(σσ) < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜lim(σσ).take(m)⌝ ⊑ σσ(n)))
alp(al), ⌜al⌝ ⊑ ⌜af⌝ , ¬ ⌜lf(al)⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), mon(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ∧ ⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ≠ [] → (∀ n. ⌜n⌝ < # ⌜λ n. ⌜lf(af.take(n))⌝ ⌝ → ⌜λ n. ⌜lf(af.take(n))⌝ ⌝ (n) ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ )) ∧ (∀ m. ¬ # lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜n⌝ < # ⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ∧ ⌜lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜λ n. ⌜lf(af.take(n))⌝ ⌝ (n))), ∀ n. alp(af.take(n)), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2) ⊦
Used terms: ⌜λ n. ⌜lf(af.take(n))⌝ ⌝
| ⊦ mon(σσ) ∧ σσ ≠ [] → (∀ n. ⌜n⌝ < # σσ → σσ(n) ⊑ lim(σσ)) ∧ (∀ m. ¬ # lim(σσ) < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜lim(σσ).take(m)⌝ ⊑ σσ(n))) |
| alp(al), ⌜al⌝ ⊑ ⌜af⌝ , ¬ ⌜lf(al)⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), mon(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ∧ ⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ≠ [] → (∀ n. ⌜n⌝ < # ⌜λ n. ⌜lf(af.take(n))⌝ ⌝ → ⌜λ n. ⌜lf(af.take(n))⌝ ⌝ (n) ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ )) ∧ (∀ m. ¬ # lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜n⌝ < # ⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ∧ ⌜lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜λ n. ⌜lf(af.take(n))⌝ ⌝ (n))), ∀ n. alp(af.take(n)), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2) ⊦ |
alp(al), ⌜al⌝ ⊑ ⌜af⌝ , ¬ ⌜lf(al)⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), mon(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) → (∀ n. ⌜lf(af.take(n))⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ )) ∧ (∀ m. ¬ # lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ).take(m) ⊑ lf(af.take(n)))), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. alp(af.take(n)) ⊦
Used simplifier rules: ⊦ ⌜x⌝ ⊑ ⌜y⌝ ↔ x ⊑ y; (s) ⊦ ⌜nf⌝ (n) = nf(n); (s) ⊦ ⌜m⌝ < ∞; (s) ⊦ # ⌜nf⌝ = ∞; (s) ⊦ [] ≠ ⌜nf⌝ ; (s)
| alp(al), ⌜al⌝ ⊑ ⌜af⌝ , ¬ ⌜lf(al)⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), mon(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) → (∀ n. ⌜lf(af.take(n))⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ )) ∧ (∀ m. ¬ # lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ).take(m) ⊑ lf(af.take(n)))), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. alp(af.take(n)) ⊦ |
alp(al), ⌜al⌝ ⊑ ⌜af⌝ , ¬ mon(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ¬ ⌜lf(al)⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ∀ n. alp(af.take(n)), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2) ⊦
alp(al), ⌜al⌝ ⊑ ⌜af⌝ , ¬ ⌜lf(al)⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ∀ n. alp(af.take(n)), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. ⌜lf(af.take(n))⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ).take(m) ⊑ lf(af.take(n))) ⊦
| alp(al), ⌜al⌝ ⊑ ⌜af⌝ , ¬ mon(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ¬ ⌜lf(al)⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ∀ n. alp(af.take(n)), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2) ⊦ |
⊦ mon(σσ) ↔ (∀ n. ⌜n⌝ + ⌜1⌝ < # σσ → σσ(n) ⊑ σσ(n + 1))
alp(al), ⌜al⌝ ⊑ ⌜af⌝ , ¬ ⌜lf(al)⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. alp(af.take(n)), ∃ n. ¬(⌜n⌝ + ⌜1⌝ < # ⌜λ n. ⌜lf(af.take(n))⌝ ⌝ → ⌜λ n. ⌜lf(af.take(n))⌝ ⌝ (n) ⊑ ⌜λ n. ⌜lf(af.take(n))⌝ ⌝ (n + 1)) ⊦
Used terms: ⌜λ n. ⌜lf(af.take(n))⌝ ⌝
| ⊦ mon(σσ) ↔ (∀ n. ⌜n⌝ + ⌜1⌝ < # σσ → σσ(n) ⊑ σσ(n + 1)) |
| alp(al), ⌜al⌝ ⊑ ⌜af⌝ , ¬ ⌜lf(al)⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. alp(af.take(n)), ∃ n. ¬(⌜n⌝ + ⌜1⌝ < # ⌜λ n. ⌜lf(af.take(n))⌝ ⌝ → ⌜λ n. ⌜lf(af.take(n))⌝ ⌝ (n) ⊑ ⌜λ n. ⌜lf(af.take(n))⌝ ⌝ (n + 1)) ⊦ |
alp(al), ⌜al⌝ ⊑ ⌜af⌝ , ¬ ⌜lf(al)⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ¬ lf(af.take(n)) ⊑ lf(af.take(n + 1)), ∀ n. alp(af.take(n)), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2) ⊦
Used simplifier rules: ⊦ ⌜x⌝ ⊑ ⌜y⌝ ↔ x ⊑ y; (s) ⊦ ⌜nf⌝ (n) = nf(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) ⊦ ⌜m⌝ + n∞ = ∞ ↔ n∞ = ∞; (s) ⊦ n∞ < ∞ ↔ n∞ ≠ ∞; (s) ⊦ # ⌜nf⌝ = ∞; (s)
| alp(al), ⌜al⌝ ⊑ ⌜af⌝ , ¬ ⌜lf(al)⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ¬ lf(af.take(n)) ⊑ lf(af.take(n + 1)), ∀ n. alp(af.take(n)), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2) ⊦ |
alp(al), ⌜al⌝ ⊑ ⌜af⌝ , ¬ ⌜lf(al)⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ¬ lf(af.take(n)) ⊑ lf(af.take(n + 1)), alp(af.take(n)) ∧ alp(af.take(n + 1)) ∧ af.take(n) ⊑ af.take(n + 1) → lf(af.take(n)) ⊑ lf(af.take(n + 1)), ∀ n. alp(af.take(n)) ⊦
Used terms: af.take(n), af.take(n + 1)
| alp(al), ⌜al⌝ ⊑ ⌜af⌝ , ¬ ⌜lf(al)⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ¬ lf(af.take(n)) ⊑ lf(af.take(n + 1)), alp(af.take(n)) ∧ alp(af.take(n + 1)) ∧ af.take(n) ⊑ af.take(n + 1) → lf(af.take(n)) ⊑ lf(af.take(n + 1)), ∀ n. alp(af.take(n)) ⊦ |
alp(al), ⌜al⌝ ⊑ ⌜af⌝ , ¬ ⌜lf(al)⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ¬ lf(af.take(n)) ⊑ lf(af.take(n + 1)), ∀ n. alp(af.take(n)) ⊦ alp(af.take(n)) ∧ alp(af.take(n + 1)) ∧ af.take(n) ⊑ af.take(n + 1)
| alp(al), ⌜al⌝ ⊑ ⌜af⌝ , ¬ ⌜lf(al)⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ¬ lf(af.take(n)) ⊑ lf(af.take(n + 1)), ∀ n. alp(af.take(n)) ⊦ alp(af.take(n)) ∧ alp(af.take(n + 1)) ∧ af.take(n) ⊑ af.take(n + 1) |
alp(al), ⌜al⌝ ⊑ ⌜af⌝ , ¬ alp(af.take(n)), ¬ ⌜lf(al)⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ¬ lf(af.take(n)) ⊑ lf(af.take(n + 1)), ∀ n. alp(af.take(n)) ⊦
alp(al), ⌜al⌝ ⊑ ⌜af⌝ , ¬ alp(af.take(n + 1)), ¬ ⌜lf(al)⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ¬ lf(af.take(n)) ⊑ lf(af.take(n + 1)), ∀ n. alp(af.take(n)) ⊦
alp(al), ⌜al⌝ ⊑ ⌜af⌝ , ¬ af.take(n) ⊑ af.take(n + 1), ¬ ⌜lf(al)⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ¬ lf(af.take(n)) ⊑ lf(af.take(n + 1)), ∀ n. alp(af.take(n)) ⊦
| alp(al), ⌜al⌝ ⊑ ⌜af⌝ , ¬ alp(af.take(n)), ¬ ⌜lf(al)⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ¬ lf(af.take(n)) ⊑ lf(af.take(n + 1)), ∀ n. alp(af.take(n)) ⊦ |
Used terms: n
| alp(al), ⌜al⌝ ⊑ ⌜af⌝ , ¬ alp(af.take(n + 1)), ¬ ⌜lf(al)⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ¬ lf(af.take(n)) ⊑ lf(af.take(n + 1)), ∀ n. alp(af.take(n)) ⊦ |
Used terms: n + 1
| alp(al), ⌜al⌝ ⊑ ⌜af⌝ , ¬ af.take(n) ⊑ af.take(n + 1), ¬ ⌜lf(al)⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ¬ lf(af.take(n)) ⊑ lf(af.take(n + 1)), ∀ n. alp(af.take(n)) ⊦ |
⊦ nf.take(m + 1) = nf.take(m) + nf(m) '
Used simplifier rules: ⊦ # x0 = # x1 → (x0 ⊑ x1 + x2 ↔ x0 = x1); (s) a: ⊦ (x + y) + z = x + y + z; from specification list a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: af, n
| ⊦ nf.take(m + 1) = nf.take(m) + nf(m) ' |
| alp(al), ⌜al⌝ ⊑ ⌜af⌝ , ¬ ⌜lf(al)⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ∀ n. alp(af.take(n)), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. ⌜lf(af.take(n))⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ).take(m) ⊑ lf(af.take(n))) ⊦ |
alp(al), ⌜al⌝ ⊑ ⌜af⌝ , ⌜lf(af.take(# al))⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ¬ ⌜lf(al)⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ).take(m) ⊑ lf(af.take(n))), ∀ n. ⌜lf(af.take(n))⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. alp(af.take(n)) ⊦
Used terms: # al
| alp(al), ⌜al⌝ ⊑ ⌜af⌝ , ⌜lf(af.take(# al))⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ¬ ⌜lf(al)⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ).take(m) ⊑ lf(af.take(n))), ∀ n. ⌜lf(af.take(n))⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. alp(af.take(n)) ⊦ |
# al0 = # al, af = (⌜al0⌝ + ⌜nf0⌝ ).f, alp(al), ⌜lf(al0)⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ⌜al⌝ ⊑ ⌜af⌝ , ¬ ⌜lf(al)⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ∀ n. alp(af.take(n)), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. ⌜lf(af.take(n))⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ).take(m) ⊑ lf(af.take(n))) ⊦
Used simplifier rules: ⊦ x0 = nf.take(n) ∧ nf0 = nf.drop(n) ↔ nf = (⌜x0⌝ + ⌜nf0⌝ ).f ∧ # x0 = n; (elim) Used terms: af, # al, al0, nf0
| # al0 = # al, af = (⌜al0⌝ + ⌜nf0⌝ ).f, alp(al), ⌜lf(al0)⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ⌜al⌝ ⊑ ⌜af⌝ , ¬ ⌜lf(al)⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ∀ n. alp(af.take(n)), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. ⌜lf(af.take(n))⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ).take(m) ⊑ lf(af.take(n))) ⊦ |
# al0 = # al, alp(al), ⌜al⌝ ⊑ ⌜al0⌝ + ⌜nf0⌝ , ⌜lf(al0)⌝ ⊑ lim(⌜λ n. ⌜lf((al0 + nf0).take(n))⌝ ⌝ ), ¬ ⌜lf(al)⌝ ⊑ lim(⌜λ n. ⌜lf((al0 + nf0).take(n))⌝ ⌝ ), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ m. ¬ # lim(⌜λ n. ⌜lf((al0 + nf0).take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. lim(⌜λ n. ⌜lf((al0 + nf0).take(n))⌝ ⌝ ).take(m) ⊑ lf((al0 + nf0).take(n))), ∀ n. ⌜lf((al0 + nf0).take(n))⌝ ⊑ lim(⌜λ n. ⌜lf((al0 + nf0).take(n))⌝ ⌝ ), ∀ n. alp((al0 + nf0).take(n)) ⊦
Used simplifier rules: append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ (⌜x⌝ + ⌜nf⌝ ).f = x + nf; (s) ⊦ ⌜x + nf⌝ = ⌜x⌝ + ⌜nf⌝ ; (s)
| # al0 = # al, alp(al), ⌜al⌝ ⊑ ⌜al0⌝ + ⌜nf0⌝ , ⌜lf(al0)⌝ ⊑ lim(⌜λ n. ⌜lf((al0 + nf0).take(n))⌝ ⌝ ), ¬ ⌜lf(al)⌝ ⊑ lim(⌜λ n. ⌜lf((al0 + nf0).take(n))⌝ ⌝ ), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ m. ¬ # lim(⌜λ n. ⌜lf((al0 + nf0).take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. lim(⌜λ n. ⌜lf((al0 + nf0).take(n))⌝ ⌝ ).take(m) ⊑ lf((al0 + nf0).take(n))), ∀ n. ⌜lf((al0 + nf0).take(n))⌝ ⊑ lim(⌜λ n. ⌜lf((al0 + nf0).take(n))⌝ ⌝ ), ∀ n. alp((al0 + nf0).take(n)) ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
Used simplifier rules: ⊦ # x = # y → (⌜x⌝ + σ = ⌜y⌝ + σ0 ↔ x = y ∧ σ = σ0); (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream Used terms: ⌜al⌝ , ⌜al0⌝ + ⌜nf0⌝
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| ¬ ppbd(lift(alp))(lift(lf)), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2) ⊦ |
⊦ ppbd(αp)(f) ↔ (∀ af, bl. αp(⌜af⌝ ) → ((∀ n. f(⌜af.take(n)⌝ ) ⊑ ⌜bl⌝ ) ↔ f(⌜af⌝ ) ⊑ ⌜bl⌝ ))
∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∃ af, bl. ¬(lift(alp)(⌜af⌝ ) → ((∀ n. lift(lf)(⌜af.take(n)⌝ ) ⊑ ⌜bl⌝ ) ↔ lift(lf)(⌜af⌝ ) ⊑ ⌜bl⌝ )) ⊦
Used terms: lift(alp), lift(lf)
| ⊦ ppbd(αp)(f) ↔ (∀ af, bl. αp(⌜af⌝ ) → ((∀ n. f(⌜af.take(n)⌝ ) ⊑ ⌜bl⌝ ) ↔ f(⌜af⌝ ) ⊑ ⌜bl⌝ )) |
| ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∃ af, bl. ¬(lift(alp)(⌜af⌝ ) → ((∀ n. lift(lf)(⌜af.take(n)⌝ ) ⊑ ⌜bl⌝ ) ↔ lift(lf)(⌜af⌝ ) ⊑ ⌜bl⌝ )) ⊦ |
∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. alp(af.take(n)) ⊦ (∀ n. lf(af.take(n)) ⊑ bl) ↔ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ⊑ ⌜bl⌝
Used simplifier rules: lift-pred-inf: ⊦ lift(alp)(⌜af⌝ ) ↔ (∀ n. alp(af.take(n))); lift-fin: ⊦ lift(lf)(⌜al⌝ ) = ⌜lf(al)⌝ ; lift-inf: ⊦ lift(lf)(⌜af⌝ ) = lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ); ⊦ ⌜x⌝ ⊑ ⌜y⌝ ↔ x ⊑ y; (s)
| ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. alp(af.take(n)) ⊦ (∀ n. lf(af.take(n)) ⊑ bl) ↔ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ⊑ ⌜bl⌝ |
⊦ mon(σσ) ∧ σσ ≠ [] → (∀ n. ⌜n⌝ < # σσ → σσ(n) ⊑ lim(σσ)) ∧ (∀ m. ¬ # lim(σσ) < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜lim(σσ).take(m)⌝ ⊑ σσ(n)))
mon(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ∧ ⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ≠ [] → (∀ n. ⌜n⌝ < # ⌜λ n. ⌜lf(af.take(n))⌝ ⌝ → ⌜λ n. ⌜lf(af.take(n))⌝ ⌝ (n) ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ )) ∧ (∀ m. ¬ # lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜n⌝ < # ⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ∧ ⌜lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜λ n. ⌜lf(af.take(n))⌝ ⌝ (n))), ∀ n. alp(af.take(n)), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2) ⊦ (∀ n. lf(af.take(n)) ⊑ bl) ↔ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ⊑ ⌜bl⌝
Used terms: ⌜λ n. ⌜lf(af.take(n))⌝ ⌝
| ⊦ mon(σσ) ∧ σσ ≠ [] → (∀ n. ⌜n⌝ < # σσ → σσ(n) ⊑ lim(σσ)) ∧ (∀ m. ¬ # lim(σσ) < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜lim(σσ).take(m)⌝ ⊑ σσ(n))) |
| mon(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ∧ ⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ≠ [] → (∀ n. ⌜n⌝ < # ⌜λ n. ⌜lf(af.take(n))⌝ ⌝ → ⌜λ n. ⌜lf(af.take(n))⌝ ⌝ (n) ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ )) ∧ (∀ m. ¬ # lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜n⌝ < # ⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ∧ ⌜lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜λ n. ⌜lf(af.take(n))⌝ ⌝ (n))), ∀ n. alp(af.take(n)), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2) ⊦ (∀ n. lf(af.take(n)) ⊑ bl) ↔ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ⊑ ⌜bl⌝ |
mon(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) → (∀ n. ⌜lf(af.take(n))⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ )) ∧ (∀ m. ¬ # lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ).take(m) ⊑ lf(af.take(n)))), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. alp(af.take(n)) ⊦ (∀ n. lf(af.take(n)) ⊑ bl) ↔ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ⊑ ⌜bl⌝
Used simplifier rules: ⊦ ⌜x⌝ ⊑ ⌜y⌝ ↔ x ⊑ y; (s) ⊦ ⌜nf⌝ (n) = nf(n); (s) ⊦ ⌜m⌝ < ∞; (s) ⊦ # ⌜nf⌝ = ∞; (s) ⊦ [] ≠ ⌜nf⌝ ; (s)
| mon(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) → (∀ n. ⌜lf(af.take(n))⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ )) ∧ (∀ m. ¬ # lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ).take(m) ⊑ lf(af.take(n)))), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. alp(af.take(n)) ⊦ (∀ n. lf(af.take(n)) ⊑ bl) ↔ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ⊑ ⌜bl⌝ |
¬ mon(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ∀ n. alp(af.take(n)), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2) ⊦ (∀ n. lf(af.take(n)) ⊑ bl) ↔ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ⊑ ⌜bl⌝
∀ n. alp(af.take(n)), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. ⌜lf(af.take(n))⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ).take(m) ⊑ lf(af.take(n))) ⊦ (∀ n. lf(af.take(n)) ⊑ bl) ↔ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ⊑ ⌜bl⌝
| ¬ mon(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ∀ n. alp(af.take(n)), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2) ⊦ (∀ n. lf(af.take(n)) ⊑ bl) ↔ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ⊑ ⌜bl⌝ |
⊦ mon(σσ) ↔ (∀ n. ⌜n⌝ + ⌜1⌝ < # σσ → σσ(n) ⊑ σσ(n + 1))
∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. alp(af.take(n)), ∃ n. ¬(⌜n⌝ + ⌜1⌝ < # ⌜λ n. ⌜lf(af.take(n))⌝ ⌝ → ⌜λ n. ⌜lf(af.take(n))⌝ ⌝ (n) ⊑ ⌜λ n. ⌜lf(af.take(n))⌝ ⌝ (n + 1)) ⊦ (∀ n. lf(af.take(n)) ⊑ bl) ↔ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ⊑ ⌜bl⌝
Used terms: ⌜λ n. ⌜lf(af.take(n))⌝ ⌝
| ⊦ mon(σσ) ↔ (∀ n. ⌜n⌝ + ⌜1⌝ < # σσ → σσ(n) ⊑ σσ(n + 1)) |
| ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. alp(af.take(n)), ∃ n. ¬(⌜n⌝ + ⌜1⌝ < # ⌜λ n. ⌜lf(af.take(n))⌝ ⌝ → ⌜λ n. ⌜lf(af.take(n))⌝ ⌝ (n) ⊑ ⌜λ n. ⌜lf(af.take(n))⌝ ⌝ (n + 1)) ⊦ (∀ n. lf(af.take(n)) ⊑ bl) ↔ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ⊑ ⌜bl⌝ |
¬ lf(af.take(n)) ⊑ lf(af.take(n + 1)), ∀ n. alp(af.take(n)), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2) ⊦ (∀ n. lf(af.take(n)) ⊑ bl) ↔ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ⊑ ⌜bl⌝
Used simplifier rules: ⊦ ⌜x⌝ ⊑ ⌜y⌝ ↔ x ⊑ y; (s) ⊦ ⌜nf⌝ (n) = nf(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) ⊦ ⌜m⌝ + n∞ = ∞ ↔ n∞ = ∞; (s) ⊦ n∞ < ∞ ↔ n∞ ≠ ∞; (s) ⊦ # ⌜nf⌝ = ∞; (s)
| ¬ lf(af.take(n)) ⊑ lf(af.take(n + 1)), ∀ n. alp(af.take(n)), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2) ⊦ (∀ n. lf(af.take(n)) ⊑ bl) ↔ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ⊑ ⌜bl⌝ |
¬ lf(af.take(n)) ⊑ lf(af.take(n + 1)), alp(af.take(n)) ∧ alp(af.take(n + 1)) ∧ af.take(n) ⊑ af.take(n + 1) → lf(af.take(n)) ⊑ lf(af.take(n + 1)), ∀ n. alp(af.take(n)) ⊦ (∀ n. lf(af.take(n)) ⊑ bl) ↔ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ⊑ ⌜bl⌝
Used terms: af.take(n), af.take(n + 1)
| ¬ lf(af.take(n)) ⊑ lf(af.take(n + 1)), alp(af.take(n)) ∧ alp(af.take(n + 1)) ∧ af.take(n) ⊑ af.take(n + 1) → lf(af.take(n)) ⊑ lf(af.take(n + 1)), ∀ n. alp(af.take(n)) ⊦ (∀ n. lf(af.take(n)) ⊑ bl) ↔ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ⊑ ⌜bl⌝ |
¬ lf(af.take(n)) ⊑ lf(af.take(n + 1)), ∀ n. alp(af.take(n)) ⊦ (∀ n. lf(af.take(n)) ⊑ bl) ↔ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ⊑ ⌜bl⌝ , alp(af.take(n)) ∧ alp(af.take(n + 1)) ∧ af.take(n) ⊑ af.take(n + 1)
| ¬ lf(af.take(n)) ⊑ lf(af.take(n + 1)), ∀ n. alp(af.take(n)) ⊦ (∀ n. lf(af.take(n)) ⊑ bl) ↔ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ⊑ ⌜bl⌝ , alp(af.take(n)) ∧ alp(af.take(n + 1)) ∧ af.take(n) ⊑ af.take(n + 1) |
¬ alp(af.take(n)), ¬ lf(af.take(n)) ⊑ lf(af.take(n + 1)), ∀ n. alp(af.take(n)) ⊦ (∀ n. lf(af.take(n)) ⊑ bl) ↔ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ⊑ ⌜bl⌝
¬ alp(af.take(n + 1)), ¬ lf(af.take(n)) ⊑ lf(af.take(n + 1)), ∀ n. alp(af.take(n)) ⊦ (∀ n. lf(af.take(n)) ⊑ bl) ↔ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ⊑ ⌜bl⌝
¬ af.take(n) ⊑ af.take(n + 1), ¬ lf(af.take(n)) ⊑ lf(af.take(n + 1)), ∀ n. alp(af.take(n)) ⊦ (∀ n. lf(af.take(n)) ⊑ bl) ↔ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ⊑ ⌜bl⌝
| ¬ alp(af.take(n)), ¬ lf(af.take(n)) ⊑ lf(af.take(n + 1)), ∀ n. alp(af.take(n)) ⊦ (∀ n. lf(af.take(n)) ⊑ bl) ↔ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ⊑ ⌜bl⌝ |
Used terms: n
| ¬ alp(af.take(n + 1)), ¬ lf(af.take(n)) ⊑ lf(af.take(n + 1)), ∀ n. alp(af.take(n)) ⊦ (∀ n. lf(af.take(n)) ⊑ bl) ↔ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ⊑ ⌜bl⌝ |
Used terms: n + 1
| ¬ af.take(n) ⊑ af.take(n + 1), ¬ lf(af.take(n)) ⊑ lf(af.take(n + 1)), ∀ n. alp(af.take(n)) ⊦ (∀ n. lf(af.take(n)) ⊑ bl) ↔ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ⊑ ⌜bl⌝ |
⊦ nf.take(m + 1) = nf.take(m) + nf(m) '
Used simplifier rules: ⊦ # x0 = # x1 → (x0 ⊑ x1 + x2 ↔ x0 = x1); (s) a: ⊦ (x + y) + z = x + y + z; from specification list a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: af, n
| ⊦ nf.take(m + 1) = nf.take(m) + nf(m) ' |
| ∀ n. alp(af.take(n)), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. ⌜lf(af.take(n))⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ).take(m) ⊑ lf(af.take(n))) ⊦ (∀ n. lf(af.take(n)) ⊑ bl) ↔ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ⊑ ⌜bl⌝ |
¬ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ⊑ ⌜bl⌝ , ∀ m. ¬ # lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ).take(m) ⊑ lf(af.take(n))), ∀ n. ⌜lf(af.take(n))⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. alp(af.take(n)), ∀ n. lf(af.take(n)) ⊑ bl ⊦
lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ⊑ ⌜bl⌝ , ∀ m. ¬ # lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ).take(m) ⊑ lf(af.take(n))), ∀ n. ⌜lf(af.take(n))⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. alp(af.take(n)) ⊦ ∀ n. lf(af.take(n)) ⊑ bl
| ¬ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ⊑ ⌜bl⌝ , ∀ m. ¬ # lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ).take(m) ⊑ lf(af.take(n))), ∀ n. ⌜lf(af.take(n))⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. alp(af.take(n)), ∀ n. lf(af.take(n)) ⊑ bl ⊦ |
lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) = ⌜bl0⌝ , ¬ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ⊑ ⌜bl⌝ , ∀ n. lf(af.take(n)) ⊑ bl, ∀ n. alp(af.take(n)), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. ⌜lf(af.take(n))⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ).take(m) ⊑ lf(af.take(n))) ⊦
lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) = ⌜bf⌝ , ¬ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ⊑ ⌜bl⌝ , ∀ n. lf(af.take(n)) ⊑ bl, ∀ n. alp(af.take(n)), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. ⌜lf(af.take(n))⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ).take(m) ⊑ lf(af.take(n))) ⊦
Used simplifier rules: Stream[A] freely generated by ⌝, ⌝;
| lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) = ⌜bl0⌝ , ¬ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ⊑ ⌜bl⌝ , ∀ n. lf(af.take(n)) ⊑ bl, ∀ n. alp(af.take(n)), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. ⌜lf(af.take(n))⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ).take(m) ⊑ lf(af.take(n))) ⊦ |
lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) = ⌜bl0⌝ , ¬ bl0 ⊑ bl, ∀ n. lf(af.take(n)) ⊑ bl, ∀ n. alp(af.take(n)), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. lf(af.take(n)) ⊑ bl0, ∀ m. ¬ # bl0 < m → (∃ n. bl0.take(m) ⊑ lf(af.take(n))) ⊦
Used simplifier rules: ⊦ ⌜x⌝ .take(n) = x.take(n); (s) ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s) ⊦ ⌜x⌝ ⊑ ⌜y⌝ ↔ x ⊑ y; (s)
| lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) = ⌜bl0⌝ , ¬ bl0 ⊑ bl, ∀ n. lf(af.take(n)) ⊑ bl, ∀ n. alp(af.take(n)), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. lf(af.take(n)) ⊑ bl0, ∀ m. ¬ # bl0 < m → (∃ n. bl0.take(m) ⊑ lf(af.take(n))) ⊦ |
lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) = ⌜bl0⌝ , ¬ bl0 ⊑ bl, ¬ # bl0 < # bl0 → (∃ n. bl0.take(# bl0) ⊑ lf(af.take(n))), ∀ n. lf(af.take(n)) ⊑ bl0, ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. alp(af.take(n)), ∀ n. lf(af.take(n)) ⊑ bl ⊦
Used terms: # bl0
| lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) = ⌜bl0⌝ , ¬ bl0 ⊑ bl, ¬ # bl0 < # bl0 → (∃ n. bl0.take(# bl0) ⊑ lf(af.take(n))), ∀ n. lf(af.take(n)) ⊑ bl0, ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. alp(af.take(n)), ∀ n. lf(af.take(n)) ⊑ bl ⊦ |
lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) = ⌜bl0⌝ , bl0 ⊑ lf(af.take(n)), ¬ bl0 ⊑ bl, ∀ n. lf(af.take(n)) ⊑ bl, ∀ n. alp(af.take(n)), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. lf(af.take(n)) ⊑ bl0 ⊦
Used simplifier rules: ⊦ # x = n → x.take(n) = x; (s) ⊦ ¬ n < n; (s)
| lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) = ⌜bl0⌝ , bl0 ⊑ lf(af.take(n)), ¬ bl0 ⊑ bl, ∀ n. lf(af.take(n)) ⊑ bl, ∀ n. alp(af.take(n)), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. lf(af.take(n)) ⊑ bl0 ⊦ |
Used simplifier rules: prefix-trans: ⊦ x ⊑ y ∧ y ⊑ z → x ⊑ z; (forward) from specification list-last Used terms: n
| lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) = ⌜bf⌝ , ¬ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ⊑ ⌜bl⌝ , ∀ n. lf(af.take(n)) ⊑ bl, ∀ n. alp(af.take(n)), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. ⌜lf(af.take(n))⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ).take(m) ⊑ lf(af.take(n))) ⊦ |
lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) = ⌜bf⌝ , ∀ n. lf(af.take(n)) ⊑ bl, ∀ n. alp(af.take(n)), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. ⌜lf(af.take(n))⌝ ⊑ ⌜bf⌝ , ∀ m. ∃ n. bf.take(m) ⊑ lf(af.take(n)) ⊦
Used simplifier rules: ⊦ ⌜nf⌝ .take(n) = nf.take(n); (s) ⊦ ¬ ∞ < n∞; (s) ⊦ # ⌜nf⌝ = ∞; (s) ⊦ ¬ ⌜nf⌝ ⊑ ⌜x⌝ ; (s)
| lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) = ⌜bf⌝ , ∀ n. lf(af.take(n)) ⊑ bl, ∀ n. alp(af.take(n)), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. ⌜lf(af.take(n))⌝ ⊑ ⌜bf⌝ , ∀ m. ∃ n. bf.take(m) ⊑ lf(af.take(n)) ⊦ |
lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) = ⌜bf⌝ , ∀ n. ⌜lf(af.take(n))⌝ ⊑ ⌜bf⌝ , ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. alp(af.take(n)), ∀ n. lf(af.take(n)) ⊑ bl, ∃ n. bf.take(# bl + 1) ⊑ lf(af.take(n)) ⊦
Used terms: # bl + 1
| lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) = ⌜bf⌝ , ∀ n. ⌜lf(af.take(n))⌝ ⊑ ⌜bf⌝ , ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. alp(af.take(n)), ∀ n. lf(af.take(n)) ⊑ bl, ∃ n. bf.take(# bl + 1) ⊑ lf(af.take(n)) ⊦ |
lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) = ⌜bf⌝ , bf.take(# bl + 1) ⊑ lf(af.take(n)), ∀ n. lf(af.take(n)) ⊑ bl, ∀ n. alp(af.take(n)), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. ⌜lf(af.take(n))⌝ ⊑ ⌜bf⌝ ⊦
| lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) = ⌜bf⌝ , bf.take(# bl + 1) ⊑ lf(af.take(n)), ∀ n. lf(af.take(n)) ⊑ bl, ∀ n. alp(af.take(n)), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. ⌜lf(af.take(n))⌝ ⊑ ⌜bf⌝ ⊦ |
lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) = ⌜bf⌝ , bf.take(# bl + 1) ⊑ lf(af.take(n)), lf(af.take(n)) ⊑ bl, ∀ n. ⌜lf(af.take(n))⌝ ⊑ ⌜bf⌝ , ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. alp(af.take(n)) ⊦
Used terms: n
| lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) = ⌜bf⌝ , bf.take(# bl + 1) ⊑ lf(af.take(n)), lf(af.take(n)) ⊑ bl, ∀ n. ⌜lf(af.take(n))⌝ ⊑ ⌜bf⌝ , ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. alp(af.take(n)) ⊦ |
lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) = ⌜bf⌝ , lf(af.take(n)) ⊑ bl, bf.take(# bl + 1) ⊑ lf(af.take(n)), bf.take(# bl + 1) ⊑ bl, ∀ n. alp(af.take(n)), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. ⌜lf(af.take(n))⌝ ⊑ ⌜bf⌝ ⊦
Used simplifier rules: prefix-trans: ⊦ x ⊑ y ∧ y ⊑ z → x ⊑ z; (forward) from specification list-last
| lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) = ⌜bf⌝ , lf(af.take(n)) ⊑ bl, bf.take(# bl + 1) ⊑ lf(af.take(n)), bf.take(# bl + 1) ⊑ bl, ∀ n. alp(af.take(n)), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. ⌜lf(af.take(n))⌝ ⊑ ⌜bf⌝ ⊦ |
⊦ x ⊑ y ↔ (∃ z. x + z = y)
lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) = ⌜bf⌝ , bf.take(# bl + 1) ⊑ lf(af.take(n)), lf(af.take(n)) ⊑ bl, ∀ n. ⌜lf(af.take(n))⌝ ⊑ ⌜bf⌝ , ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. alp(af.take(n)), ∃ z. bf.take(# bl + 1) + z = bl ⊦
Used terms: bf.take(# bl + 1), bl
| ⊦ x ⊑ y ↔ (∃ z. x + z = y) |
| lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) = ⌜bf⌝ , bf.take(# bl + 1) ⊑ lf(af.take(n)), lf(af.take(n)) ⊑ bl, ∀ n. ⌜lf(af.take(n))⌝ ⊑ ⌜bf⌝ , ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. alp(af.take(n)), ∃ z. bf.take(# bl + 1) + z = bl ⊦ |
bf.take(# bl + 1) + bl0 = bl, lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) = ⌜bf⌝ , lf(af.take(n)) ⊑ bl, bf.take(# bl + 1) ⊑ lf(af.take(n)), ∀ n. alp(af.take(n)), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. ⌜lf(af.take(n))⌝ ⊑ ⌜bf⌝ ⊦
| bf.take(# bl + 1) + bl0 = bl, lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) = ⌜bf⌝ , lf(af.take(n)) ⊑ bl, bf.take(# bl + 1) ⊑ lf(af.take(n)), ∀ n. alp(af.take(n)), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. ⌜lf(af.take(n))⌝ ⊑ ⌜bf⌝ ⊦ |
⊦ x = y ↔ # x = # y ∧ (∀ n. n < # x → x(n) = y(n))
Used simplifier rules: ⊦ #(x + y) = # x + # y; (s) ⊦ # nf.take(n) = n; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ m = m + n ↔ n = 0; (s) ⊦ m + n = 0 ↔ m = 0 ∧ n = 0; (ws) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: bf.take(# bl + 1) + bl0, bl
| ⊦ x = y ↔ # x = # y ∧ (∀ n. n < # x → x(n) = y(n)) |
| lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ⊑ ⌜bl⌝ , ∀ m. ¬ # lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ).take(m) ⊑ lf(af.take(n))), ∀ n. ⌜lf(af.take(n))⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. alp(af.take(n)) ⊦ ∀ n. lf(af.take(n)) ⊑ bl |
lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ⊑ ⌜bl⌝ , ¬ lf(af.take(n)) ⊑ bl, ∀ n. alp(af.take(n)), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. ⌜lf(af.take(n))⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ).take(m) ⊑ lf(af.take(n))) ⊦
| lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) ⊑ ⌜bl⌝ , ¬ lf(af.take(n)) ⊑ bl, ∀ n. alp(af.take(n)), ∀ al1, al2. alp(al1) ∧ alp(al2) ∧ al1 ⊑ al2 → lf(al1) ⊑ lf(al2), ∀ n. ⌜lf(af.take(n))⌝ ⊑ lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. lim(⌜λ n. ⌜lf(af.take(n))⌝ ⌝ ).take(m) ⊑ lf(af.take(n))) ⊦ |
Used simplifier rules: leq-trans: ⊦ σ ⊑ σ1 ∧ σ1 ⊑ σ2 → σ ⊑ σ2; (forward) from specification stream ⊦ ⌜x⌝ ⊑ ⌜y⌝ ↔ x ⊑ y; (s) Used terms: n
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.