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