| ⊦ pcont(lift(trlp))(βf) ∧ mon(⌜λ n. ⌜slf(n)⌝ ⌝ ) ∧ mon(⌜λ n. ⌜alf(n)⌝ ⌝ ) ∧ (∀ n. trlp(slf(n), alf(n))) ∧ lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )) ∧ pfxclosed(trlp) ∧ (∀ n. # slf(n) = # alf(n) + 1) → lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) = βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )) |
lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), pcont(lift(trlp))(βf), pfxclosed(trlp), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1 ⊦
| lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), pcont(lift(trlp))(βf), pfxclosed(trlp), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1 ⊦ |
lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), pfxclosed(trlp), ppbd(lift(trlp))(βf), ∀ n. # slf(n) = # alf(n) + 1, ∀ n. trlp(slf(n), alf(n)), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2) ⊦
Used simplifier rules: conttr-relative-def: ⊦ pcont(trp)(βf) ↔ pmon(trp)(βf) ∧ ppbd(trp)(βf); montr-relative-def: ⊦ pmon(trp)(βf) ↔ (∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ trp(σ1, α1) ∧ trp(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2));
| lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), pfxclosed(trlp), ppbd(lift(trlp))(βf), ∀ n. # slf(n) = # alf(n) + 1, ∀ n. trlp(slf(n), alf(n)), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2) ⊦ |
⊦ pcont(trp)(βf) ∧ mon(⌜σf⌝ ) ∧ mon(⌜αf⌝ ) ∧ (∀ n. trp(σf(n), αf(n))) ∧ trp(lim(⌜σf⌝ ), lim(⌜αf⌝ )) ∧ pfxclosed(trp) ∧ (∀ n. # σf(n) = # αf(n) + ⌜1⌝ ) → lim(⌜λ n. βf(σf(n), αf(n))⌝ ) = βf(lim(⌜σf⌝ ), lim(⌜αf⌝ ))
lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), pfxclosed(trlp), ppbd(lift(trlp))(βf), pcont(lift(trlp))(βf) ∧ mon(⌜λ n. ⌜slf(n)⌝ ⌝ ) ∧ mon(⌜λ n. ⌜alf(n)⌝ ⌝ ) ∧ (∀ n. lift(trlp)(⌜slf(n)⌝ , ⌜alf(n)⌝ )) ∧ lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )) ∧ pfxclosed(lift(trlp)) ∧ (∀ n. # ⌜slf(n)⌝ = # ⌜alf(n)⌝ + ⌜1⌝ ) → lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) = βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1 ⊦
Used terms: lift(trlp), βf, λ n. ⌜slf(n)⌝ , λ n. ⌜alf(n)⌝
| ⊦ pcont(trp)(βf) ∧ mon(⌜σf⌝ ) ∧ mon(⌜αf⌝ ) ∧ (∀ n. trp(σf(n), αf(n))) ∧ trp(lim(⌜σf⌝ ), lim(⌜αf⌝ )) ∧ pfxclosed(trp) ∧ (∀ n. # σf(n) = # αf(n) + ⌜1⌝ ) → lim(⌜λ n. βf(σf(n), αf(n))⌝ ) = βf(lim(⌜σf⌝ ), lim(⌜αf⌝ )) |
| lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), pfxclosed(trlp), ppbd(lift(trlp))(βf), pcont(lift(trlp))(βf) ∧ mon(⌜λ n. ⌜slf(n)⌝ ⌝ ) ∧ mon(⌜λ n. ⌜alf(n)⌝ ⌝ ) ∧ (∀ n. lift(trlp)(⌜slf(n)⌝ , ⌜alf(n)⌝ )) ∧ lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )) ∧ pfxclosed(lift(trlp)) ∧ (∀ n. # ⌜slf(n)⌝ = # ⌜alf(n)⌝ + ⌜1⌝ ) → lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) = βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1 ⊦ |
lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), pfxclosed(trlp), ppbd(lift(trlp))(βf), ∀ n. # slf(n) = # alf(n) + 1, ∀ n. trlp(slf(n), alf(n)), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2) ⊦ trlp(slf(n), alf(n)) ∧ pfxclosed(lift(trlp)) ∧ # alf(n0) + 1 = # slf(n0)
Used simplifier rules: conttr-relative-def: ⊦ pcont(trp)(βf) ↔ pmon(trp)(βf) ∧ ppbd(trp)(βf); montr-relative-def: ⊦ pmon(trp)(βf) ↔ (∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ trp(σ1, α1) ∧ trp(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2)); lift-trp-fin: ⊦ lift(trlp)(⌜sl⌝ , ⌜al⌝ ) ↔ trlp(sl, al); add-comm: ⊦ n∞1 + n∞2 = n∞2 + n∞1; from specification nat-inf add-assoc: ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2; from specification nat-inf ⊦ ⌜n⌝ + ⌜m⌝ = ⌜n0⌝ ↔ n + m = n0; (s) ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s)
| lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), pfxclosed(trlp), ppbd(lift(trlp))(βf), ∀ n. # slf(n) = # alf(n) + 1, ∀ n. trlp(slf(n), alf(n)), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2) ⊦ trlp(slf(n), alf(n)) ∧ pfxclosed(lift(trlp)) ∧ # alf(n0) + 1 = # slf(n0) |
lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), pfxclosed(trlp), ppbd(lift(trlp))(βf), ¬ trlp(slf(n), alf(n)), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1 ⊦
lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), pfxclosed(trlp), ppbd(lift(trlp))(βf), ¬ pfxclosed(lift(trlp)), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1 ⊦
# alf(n0) + 1 ≠ # slf(n0), lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), pfxclosed(trlp), ppbd(lift(trlp))(βf), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1 ⊦
| lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), pfxclosed(trlp), ppbd(lift(trlp))(βf), ¬ trlp(slf(n), alf(n)), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1 ⊦ |
Used terms: n
| lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), pfxclosed(trlp), ppbd(lift(trlp))(βf), ¬ pfxclosed(lift(trlp)), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1 ⊦ |
⊦ pfxclosed(trp) ↔ (∀ σ1, σ2, α1, α2. trp(σ2, α2) ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ → trp(σ1, α1))
lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), pfxclosed(trlp), ppbd(lift(trlp))(βf), ∀ n. # slf(n) = # alf(n) + 1, ∀ n. trlp(slf(n), alf(n)), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∃ σ1, σ2, α1, α2. ¬(lift(trlp)(σ2, α2) ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ → lift(trlp)(σ1, α1)) ⊦
Used terms: lift(trlp)
| ⊦ pfxclosed(trp) ↔ (∀ σ1, σ2, α1, α2. trp(σ2, α2) ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ → trp(σ1, α1)) |
| lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), pfxclosed(trlp), ppbd(lift(trlp))(βf), ∀ n. # slf(n) = # alf(n) + 1, ∀ n. trlp(slf(n), alf(n)), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∃ σ1, σ2, α1, α2. ¬(lift(trlp)(σ2, α2) ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ → lift(trlp)(σ1, α1)) ⊦ |
# σ1 = # α1 + ⌜1⌝ , # σ2 = # α2 + ⌜1⌝ , lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(σ2, α2), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), pfxclosed(trlp), ppbd(lift(trlp))(βf), σ1 ⊑ σ2, α1 ⊑ α2, ¬ lift(trlp)(σ1, α1), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1 ⊦
| # σ1 = # α1 + ⌜1⌝ , # σ2 = # α2 + ⌜1⌝ , lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(σ2, α2), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), pfxclosed(trlp), ppbd(lift(trlp))(βf), σ1 ⊑ σ2, α1 ⊑ α2, ¬ lift(trlp)(σ1, α1), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1 ⊦ |
⊦ pfxclosed(trlp) ↔ (∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1))
# σ2 = # α2 + ⌜1⌝ , # σ1 = # α1 + ⌜1⌝ , lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(σ2, α2), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), α1 ⊑ α2, σ1 ⊑ σ2, ¬ lift(trlp)(σ1, α1), ∀ n. # slf(n) = # alf(n) + 1, ∀ n. trlp(slf(n), alf(n)), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1) ⊦
Used terms: trlp
| ⊦ pfxclosed(trlp) ↔ (∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1)) |
| # σ2 = # α2 + ⌜1⌝ , # σ1 = # α1 + ⌜1⌝ , lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(σ2, α2), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), α1 ⊑ α2, σ1 ⊑ σ2, ¬ lift(trlp)(σ1, α1), ∀ n. # slf(n) = # alf(n) + 1, ∀ n. trlp(slf(n), alf(n)), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1) ⊦ |
# σ1 = # α1 + ⌜1⌝ , # σ2 = # α2 + ⌜1⌝ , σ2 = ⌜sl⌝ , lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(σ2, α2), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), σ1 ⊑ σ2, α1 ⊑ α2, ¬ lift(trlp)(σ1, α1), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1 ⊦
# σ1 = # α1 + ⌜1⌝ , # σ2 = # α2 + ⌜1⌝ , σ2 = ⌜sf⌝ , lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(σ2, α2), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), σ1 ⊑ σ2, α1 ⊑ α2, ¬ lift(trlp)(σ1, α1), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1 ⊦
Used simplifier rules: Stream[A] freely generated by ⌝, ⌝;
| # σ1 = # α1 + ⌜1⌝ , # σ2 = # α2 + ⌜1⌝ , σ2 = ⌜sl⌝ , lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(σ2, α2), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), σ1 ⊑ σ2, α1 ⊑ α2, ¬ lift(trlp)(σ1, α1), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1 ⊦ |
# σ1 = # α1 + ⌜1⌝ , ⌜# sl⌝ = # α2 + ⌜1⌝ , lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(⌜sl⌝ , α2), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), α1 ⊑ α2, σ1 ⊑ ⌜sl⌝ , ¬ lift(trlp)(σ1, α1), ∀ n. # slf(n) = # alf(n) + 1, ∀ n. trlp(slf(n), alf(n)), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1) ⊦
Used simplifier rules: ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s)
| # σ1 = # α1 + ⌜1⌝ , ⌜# sl⌝ = # α2 + ⌜1⌝ , lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(⌜sl⌝ , α2), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), α1 ⊑ α2, σ1 ⊑ ⌜sl⌝ , ¬ lift(trlp)(σ1, α1), ∀ n. # slf(n) = # alf(n) + 1, ∀ n. trlp(slf(n), alf(n)), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1) ⊦ |
# σ1 = # α1 + ⌜1⌝ , α2 = ⌜al⌝ , ⌜# sl⌝ = # α2 + ⌜1⌝ , lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(⌜sl⌝ , α2), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), σ1 ⊑ ⌜sl⌝ , α1 ⊑ α2, ¬ lift(trlp)(σ1, α1), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1 ⊦
Used simplifier rules: Stream[A] freely generated by ⌝, ⌝; ⊦ # ⌜nf⌝ = ∞; (s) ⊦ ⌜m⌝ + ∞ = ∞; (s) add-assoc: ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2; from specification nat-inf add-comm: ⊦ n∞1 + n∞2 = n∞2 + n∞1; from specification nat-inf ⊦ ⌜n⌝ ≠ ∞; (s)
| # σ1 = # α1 + ⌜1⌝ , α2 = ⌜al⌝ , ⌜# sl⌝ = # α2 + ⌜1⌝ , lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(⌜sl⌝ , α2), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), σ1 ⊑ ⌜sl⌝ , α1 ⊑ α2, ¬ lift(trlp)(σ1, α1), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1 ⊦ |
# σ1 = # α1 + ⌜1⌝ , # al + 1 = # sl, lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), trlp(sl, al), α1 ⊑ ⌜al⌝ , σ1 ⊑ ⌜sl⌝ , ¬ lift(trlp)(σ1, α1), ∀ n. # slf(n) = # alf(n) + 1, ∀ n. trlp(slf(n), alf(n)), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1) ⊦
Used simplifier rules: lift-trp-fin: ⊦ lift(trlp)(⌜sl⌝ , ⌜al⌝ ) ↔ trlp(sl, al); add-comm: ⊦ n∞1 + n∞2 = n∞2 + n∞1; from specification nat-inf add-assoc: ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2; from specification nat-inf ⊦ ⌜n⌝ + ⌜m⌝ = ⌜n0⌝ ↔ n + m = n0; (s) ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s)
| # σ1 = # α1 + ⌜1⌝ , # al + 1 = # sl, lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), trlp(sl, al), α1 ⊑ ⌜al⌝ , σ1 ⊑ ⌜sl⌝ , ¬ lift(trlp)(σ1, α1), ∀ n. # slf(n) = # alf(n) + 1, ∀ n. trlp(slf(n), alf(n)), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1) ⊦ |
# σ1 = # α1 + ⌜1⌝ , # al + 1 = # sl, σ1 = ⌜sl0⌝ , lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), trlp(sl, al), σ1 ⊑ ⌜sl⌝ , α1 ⊑ ⌜al⌝ , ¬ lift(trlp)(σ1, α1), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1 ⊦
Used simplifier rules: Stream[A] freely generated by ⌝, ⌝; ⊦ # ⌜nf⌝ = ∞; (s) ⊦ ⌜m⌝ + n∞ = ∞ ↔ n∞ = ∞; (s) add-assoc: ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2; from specification nat-inf add-comm: ⊦ n∞1 + n∞2 = n∞2 + n∞1; from specification nat-inf ⊦ ¬ ⌜nf⌝ ⊑ ⌜x⌝ ; (s)
| # σ1 = # α1 + ⌜1⌝ , # al + 1 = # sl, σ1 = ⌜sl0⌝ , lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), trlp(sl, al), σ1 ⊑ ⌜sl⌝ , α1 ⊑ ⌜al⌝ , ¬ lift(trlp)(σ1, α1), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1 ⊦ |
# al + 1 = # sl, ⌜# sl0⌝ = # α1 + ⌜1⌝ , lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), trlp(sl, al), α1 ⊑ ⌜al⌝ , sl0 ⊑ sl, ¬ lift(trlp)(⌜sl0⌝ , α1), ∀ n. # slf(n) = # alf(n) + 1, ∀ n. trlp(slf(n), alf(n)), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1) ⊦
Used simplifier rules: ⊦ ⌜x⌝ ⊑ ⌜y⌝ ↔ x ⊑ y; (s) ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s)
| # al + 1 = # sl, ⌜# sl0⌝ = # α1 + ⌜1⌝ , lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), trlp(sl, al), α1 ⊑ ⌜al⌝ , sl0 ⊑ sl, ¬ lift(trlp)(⌜sl0⌝ , α1), ∀ n. # slf(n) = # alf(n) + 1, ∀ n. trlp(slf(n), alf(n)), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1) ⊦ |
# al + 1 = # sl, α1 = ⌜al0⌝ , ⌜# sl0⌝ = # α1 + ⌜1⌝ , lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), trlp(sl, al), sl0 ⊑ sl, α1 ⊑ ⌜al⌝ , ¬ lift(trlp)(⌜sl0⌝ , α1), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1 ⊦
Used simplifier rules: Stream[A] freely generated by ⌝, ⌝; ⊦ # ⌜nf⌝ = ∞; (s) ⊦ ⌜m⌝ + ∞ = ∞; (s) add-assoc: ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2; from specification nat-inf add-comm: ⊦ n∞1 + n∞2 = n∞2 + n∞1; from specification nat-inf ⊦ ⌜n⌝ ≠ ∞; (s)
| # al + 1 = # sl, α1 = ⌜al0⌝ , ⌜# sl0⌝ = # α1 + ⌜1⌝ , lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), trlp(sl, al), sl0 ⊑ sl, α1 ⊑ ⌜al⌝ , ¬ lift(trlp)(⌜sl0⌝ , α1), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1 ⊦ |
# al + 1 = # sl, # al0 + 1 = # sl0, lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), trlp(sl, al), sl0 ⊑ sl, al0 ⊑ al, ¬ trlp(sl0, al0), ∀ n. # slf(n) = # alf(n) + 1, ∀ n. trlp(slf(n), alf(n)), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1) ⊦
Used simplifier rules: lift-trp-fin: ⊦ lift(trlp)(⌜sl⌝ , ⌜al⌝ ) ↔ trlp(sl, al); ⊦ ⌜x⌝ ⊑ ⌜y⌝ ↔ x ⊑ y; (s) add-comm: ⊦ n∞1 + n∞2 = n∞2 + n∞1; from specification nat-inf add-assoc: ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2; from specification nat-inf ⊦ ⌜n⌝ + ⌜m⌝ = ⌜n0⌝ ↔ n + m = n0; (s) ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s)
| # al + 1 = # sl, # al0 + 1 = # sl0, lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), trlp(sl, al), sl0 ⊑ sl, al0 ⊑ al, ¬ trlp(sl0, al0), ∀ n. # slf(n) = # alf(n) + 1, ∀ n. trlp(slf(n), alf(n)), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1) ⊦ |
Used terms: sl0, sl, al0, al
| # σ1 = # α1 + ⌜1⌝ , # σ2 = # α2 + ⌜1⌝ , σ2 = ⌜sf⌝ , lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(σ2, α2), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), σ1 ⊑ σ2, α1 ⊑ α2, ¬ lift(trlp)(σ1, α1), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1 ⊦ |
# σ1 = # α1 + ⌜1⌝ , # α2 = ∞, lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(⌜sf⌝ , α2), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), α1 ⊑ α2, σ1 ⊑ ⌜sf⌝ , ¬ lift(trlp)(σ1, α1), ∀ n. # slf(n) = # alf(n) + 1, ∀ n. trlp(slf(n), alf(n)), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1) ⊦
Used simplifier rules: add-comm: ⊦ n∞1 + n∞2 = n∞2 + n∞1; from specification nat-inf add-assoc: ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2; from specification nat-inf ⊦ ⌜m⌝ + n∞ = ∞ ↔ n∞ = ∞; (s) ⊦ # ⌜nf⌝ = ∞; (s)
| # σ1 = # α1 + ⌜1⌝ , # α2 = ∞, lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(⌜sf⌝ , α2), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), α1 ⊑ α2, σ1 ⊑ ⌜sf⌝ , ¬ lift(trlp)(σ1, α1), ∀ n. # slf(n) = # alf(n) + 1, ∀ n. trlp(slf(n), alf(n)), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1) ⊦ |
# α2 = ∞, # σ1 = # α1 + ⌜1⌝ , α2 = ⌜af⌝ , lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(⌜sf⌝ , α2), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), σ1 ⊑ ⌜sf⌝ , α1 ⊑ α2, ¬ lift(trlp)(σ1, α1), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1 ⊦
Used simplifier rules: Stream[A] freely generated by ⌝, ⌝; ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s) ⊦ ⌜n⌝ ≠ ∞; (s)
| # α2 = ∞, # σ1 = # α1 + ⌜1⌝ , α2 = ⌜af⌝ , lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(⌜sf⌝ , α2), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), σ1 ⊑ ⌜sf⌝ , α1 ⊑ α2, ¬ lift(trlp)(σ1, α1), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1 ⊦ |
# σ1 = # α1 + ⌜1⌝ , lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), α1 ⊑ ⌜af⌝ , σ1 ⊑ ⌜sf⌝ , ¬ lift(trlp)(σ1, α1), ∀ n. # slf(n) = # alf(n) + 1, ∀ n. trlp(slf(n), alf(n)), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1), ∀ n. trlp(sf.take(n + 1), af.take(n)) ⊦
Used simplifier rules: lift-trp-inf: ⊦ lift(trlp)(⌜sf⌝ , ⌜af⌝ ) ↔ (∀ n. trlp(sf.take(n + 1), af.take(n))); ⊦ # ⌜nf⌝ = ∞; (s)
| # σ1 = # α1 + ⌜1⌝ , lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), α1 ⊑ ⌜af⌝ , σ1 ⊑ ⌜sf⌝ , ¬ lift(trlp)(σ1, α1), ∀ n. # slf(n) = # alf(n) + 1, ∀ n. trlp(slf(n), alf(n)), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1), ∀ n. trlp(sf.take(n + 1), af.take(n)) ⊦ |
# σ1 = # α1 + ⌜1⌝ , σ1 = ⌜sl⌝ , lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), σ1 ⊑ ⌜sf⌝ , α1 ⊑ ⌜af⌝ , ¬ lift(trlp)(σ1, α1), ∀ n. trlp(sf.take(n + 1), af.take(n)), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1 ⊦
# σ1 = # α1 + ⌜1⌝ , σ1 = ⌜sf0⌝ , lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), σ1 ⊑ ⌜sf⌝ , α1 ⊑ ⌜af⌝ , ¬ lift(trlp)(σ1, α1), ∀ n. trlp(sf.take(n + 1), af.take(n)), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1 ⊦
Used simplifier rules: Stream[A] freely generated by ⌝, ⌝;
| # σ1 = # α1 + ⌜1⌝ , σ1 = ⌜sl⌝ , lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), σ1 ⊑ ⌜sf⌝ , α1 ⊑ ⌜af⌝ , ¬ lift(trlp)(σ1, α1), ∀ n. trlp(sf.take(n + 1), af.take(n)), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1 ⊦ |
⌜# sl⌝ = # α1 + ⌜1⌝ , lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), α1 ⊑ ⌜af⌝ , ⌜sl⌝ ⊑ ⌜sf⌝ , ¬ lift(trlp)(⌜sl⌝ , α1), ∀ n. # slf(n) = # alf(n) + 1, ∀ n. trlp(slf(n), alf(n)), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1), ∀ n. trlp(sf.take(n + 1), af.take(n)) ⊦
Used simplifier rules: ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s)
| ⌜# sl⌝ = # α1 + ⌜1⌝ , lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), α1 ⊑ ⌜af⌝ , ⌜sl⌝ ⊑ ⌜sf⌝ , ¬ lift(trlp)(⌜sl⌝ , α1), ∀ n. # slf(n) = # alf(n) + 1, ∀ n. trlp(slf(n), alf(n)), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1), ∀ n. trlp(sf.take(n + 1), af.take(n)) ⊦ |
α1 = ⌜al⌝ , ⌜# sl⌝ = # α1 + ⌜1⌝ , lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), ⌜sl⌝ ⊑ ⌜sf⌝ , α1 ⊑ ⌜af⌝ , ¬ lift(trlp)(⌜sl⌝ , α1), ∀ n. trlp(sf.take(n + 1), af.take(n)), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1 ⊦
Used simplifier rules: Stream[A] freely generated by ⌝, ⌝; ⊦ # ⌜nf⌝ = ∞; (s) ⊦ ⌜m⌝ + ∞ = ∞; (s) add-assoc: ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2; from specification nat-inf add-comm: ⊦ n∞1 + n∞2 = n∞2 + n∞1; from specification nat-inf ⊦ ⌜n⌝ ≠ ∞; (s)
| α1 = ⌜al⌝ , ⌜# sl⌝ = # α1 + ⌜1⌝ , lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), ⌜sl⌝ ⊑ ⌜sf⌝ , α1 ⊑ ⌜af⌝ , ¬ lift(trlp)(⌜sl⌝ , α1), ∀ n. trlp(sf.take(n + 1), af.take(n)), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1 ⊦ |
# al + 1 = # sl, lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), ⌜al⌝ ⊑ ⌜af⌝ , ⌜sl⌝ ⊑ ⌜sf⌝ , ¬ trlp(sl, al), ∀ n. # slf(n) = # alf(n) + 1, ∀ n. trlp(slf(n), alf(n)), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1), ∀ n. trlp(sf.take(n + 1), af.take(n)) ⊦
Used simplifier rules: lift-trp-fin: ⊦ lift(trlp)(⌜sl⌝ , ⌜al⌝ ) ↔ trlp(sl, al); add-comm: ⊦ n∞1 + n∞2 = n∞2 + n∞1; from specification nat-inf add-assoc: ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2; from specification nat-inf ⊦ ⌜n⌝ + ⌜m⌝ = ⌜n0⌝ ↔ n + m = n0; (s) ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s)
| # al + 1 = # sl, lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), ⌜al⌝ ⊑ ⌜af⌝ , ⌜sl⌝ ⊑ ⌜sf⌝ , ¬ trlp(sl, al), ∀ n. # slf(n) = # alf(n) + 1, ∀ n. trlp(slf(n), alf(n)), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1), ∀ n. trlp(sf.take(n + 1), af.take(n)) ⊦ |
# al + 1 = # sl, lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), trlp(sf.take(# al + 1), af.take(# al)), ⌜sl⌝ ⊑ ⌜sf⌝ , ⌜al⌝ ⊑ ⌜af⌝ , ¬ trlp(sl, al), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1 ⊦
Used terms: # al
| # al + 1 = # sl, lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), trlp(sf.take(# al + 1), af.take(# al)), ⌜sl⌝ ⊑ ⌜sf⌝ , ⌜al⌝ ⊑ ⌜af⌝ , ¬ trlp(sl, al), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1 ⊦ |
# al + 1 = # sl, lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), trlp(sf.take(# sl), af.take(# al)), ⌜al⌝ ⊑ ⌜af⌝ , ⌜sl⌝ ⊑ ⌜sf⌝ , ¬ trlp(sl, al), ∀ n. # slf(n) = # alf(n) + 1, ∀ n. trlp(slf(n), alf(n)), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1) ⊦
| # al + 1 = # sl, lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), trlp(sf.take(# sl), af.take(# al)), ⌜al⌝ ⊑ ⌜af⌝ , ⌜sl⌝ ⊑ ⌜sf⌝ , ¬ trlp(sl, al), ∀ n. # slf(n) = # alf(n) + 1, ∀ n. trlp(slf(n), alf(n)), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1) ⊦ |
# sl0 = # sl, # al + 1 = # sl, sf = (⌜sl0⌝ + ⌜nf0⌝ ).f, lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), trlp(sl0, af.take(# al)), ⌜sl⌝ ⊑ ⌜sf⌝ , ⌜al⌝ ⊑ ⌜af⌝ , ¬ trlp(sl, al), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1 ⊦
Used simplifier rules: ⊦ x0 = nf.take(n) ∧ nf0 = nf.drop(n) ↔ nf = (⌜x0⌝ + ⌜nf0⌝ ).f ∧ # x0 = n; (elim) Used terms: sf, # sl, sl0, nf0
| # sl0 = # sl, # al + 1 = # sl, sf = (⌜sl0⌝ + ⌜nf0⌝ ).f, lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), trlp(sl0, af.take(# al)), ⌜sl⌝ ⊑ ⌜sf⌝ , ⌜al⌝ ⊑ ⌜af⌝ , ¬ trlp(sl, al), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1 ⊦ |
# sl0 = # sl, # al + 1 = # sl, lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), trlp(sl0, af.take(# al)), ⌜al⌝ ⊑ ⌜af⌝ , ⌜sl⌝ ⊑ ⌜sl0⌝ + ⌜nf0⌝ , ¬ trlp(sl, al), ∀ n. # slf(n) = # alf(n) + 1, ∀ n. trlp(slf(n), alf(n)), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1) ⊦
Used simplifier rules: ⊦ ⌜x + nf⌝ = ⌜x⌝ + ⌜nf⌝ ; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ (⌜x⌝ + ⌜nf⌝ ).f = x + nf; (s)
| # sl0 = # sl, # al + 1 = # sl, lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), trlp(sl0, af.take(# al)), ⌜al⌝ ⊑ ⌜af⌝ , ⌜sl⌝ ⊑ ⌜sl0⌝ + ⌜nf0⌝ , ¬ trlp(sl, al), ∀ n. # slf(n) = # alf(n) + 1, ∀ n. trlp(slf(n), alf(n)), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1) ⊦ |
# sl0 = # sl, # al0 = # al, # al + 1 = # sl, af = (⌜al0⌝ + ⌜af0⌝ ).f, lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), trlp(sl0, al0), ⌜sl⌝ ⊑ ⌜sl0⌝ + ⌜nf0⌝ , ⌜al⌝ ⊑ ⌜af⌝ , ¬ trlp(sl, al), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1 ⊦
Used simplifier rules: ⊦ x0 = nf.take(n) ∧ nf0 = nf.drop(n) ↔ nf = (⌜x0⌝ + ⌜nf0⌝ ).f ∧ # x0 = n; (elim) Used terms: af, # al, al0, af0
| # sl0 = # sl, # al0 = # al, # al + 1 = # sl, af = (⌜al0⌝ + ⌜af0⌝ ).f, lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), trlp(sl0, al0), ⌜sl⌝ ⊑ ⌜sl0⌝ + ⌜nf0⌝ , ⌜al⌝ ⊑ ⌜af⌝ , ¬ trlp(sl, al), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1 ⊦ |
# al0 = # al, # sl0 = # sl, # al + 1 = # sl, lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), trlp(sl0, al0), ⌜sl⌝ ⊑ ⌜sl0⌝ + ⌜nf0⌝ , ⌜al⌝ ⊑ ⌜al0⌝ + ⌜af0⌝ , ¬ trlp(sl, al), ∀ n. # slf(n) = # alf(n) + 1, ∀ n. trlp(slf(n), alf(n)), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1) ⊦
Used simplifier rules: ⊦ ⌜x + nf⌝ = ⌜x⌝ + ⌜nf⌝ ; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ (⌜x⌝ + ⌜nf⌝ ).f = x + nf; (s)
| # al0 = # al, # sl0 = # sl, # al + 1 = # sl, lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), trlp(sl0, al0), ⌜sl⌝ ⊑ ⌜sl0⌝ + ⌜nf0⌝ , ⌜al⌝ ⊑ ⌜al0⌝ + ⌜af0⌝ , ¬ trlp(sl, al), ∀ n. # slf(n) = # alf(n) + 1, ∀ n. trlp(slf(n), alf(n)), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1) ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
# sl0 = # sl, # al0 = # al, # al + 1 = # sl, lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), trlp(sl0, al0), ⌜sl⌝ ⊑ ⌜sl0⌝ + ⌜nf0⌝ , ¬ trlp(sl, al), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1, ∃ α. ⌜al⌝ + α = ⌜al0⌝ + ⌜af0⌝ ⊦
Used terms: ⌜al⌝ , ⌜al0⌝ + ⌜af0⌝
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| # sl0 = # sl, # al0 = # al, # al + 1 = # sl, lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), trlp(sl0, al0), ⌜sl⌝ ⊑ ⌜sl0⌝ + ⌜nf0⌝ , ¬ trlp(sl, al), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1, ∃ α. ⌜al⌝ + α = ⌜al0⌝ + ⌜af0⌝ ⊦ |
# sl0 = # sl, # al0 + 1 = # sl, lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), trlp(sl0, al0), ⌜sl⌝ ⊑ ⌜sl0⌝ + ⌜nf0⌝ , ¬ trlp(sl, al0), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1 ⊦
Used simplifier rules: append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ # x = # y → (⌜x⌝ + σ = ⌜y⌝ + σ0 ↔ x = y ∧ σ = σ0); (s)
| # sl0 = # sl, # al0 + 1 = # sl, lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), trlp(sl0, al0), ⌜sl⌝ ⊑ ⌜sl0⌝ + ⌜nf0⌝ , ¬ trlp(sl, al0), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1 ⊦ |
⊦ σ ⊑ σ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: ⌜sl⌝ , ⌜sl0⌝ + ⌜nf0⌝
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| # σ1 = # α1 + ⌜1⌝ , σ1 = ⌜sf0⌝ , lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), σ1 ⊑ ⌜sf⌝ , α1 ⊑ ⌜af⌝ , ¬ lift(trlp)(σ1, α1), ∀ n. trlp(sf.take(n + 1), af.take(n)), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1 ⊦ |
# α1 = ∞, lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), α1 ⊑ ⌜af⌝ , ¬ lift(trlp)(⌜sf⌝ , α1), ∀ n. trlp(sf.take(n + 1), af.take(n)), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1 ⊦
Used simplifier rules: ⊦ ⌜nf⌝ ⊑ ⌜nf0⌝ ↔ nf = nf0; (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⌝ + n∞ = ∞ ↔ n∞ = ∞; (s) ⊦ # ⌜nf⌝ = ∞; (s)
| # α1 = ∞, lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), α1 ⊑ ⌜af⌝ , ¬ lift(trlp)(⌜sf⌝ , α1), ∀ n. trlp(sf.take(n + 1), af.take(n)), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1 ⊦ |
# α1 = ∞, α1 = ⌜af0⌝ , lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), α1 ⊑ ⌜af⌝ , ¬ lift(trlp)(⌜sf⌝ , α1), ∀ n. # slf(n) = # alf(n) + 1, ∀ n. trlp(slf(n), alf(n)), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1), ∀ n. trlp(sf.take(n + 1), af.take(n)) ⊦
Used simplifier rules: Stream[A] freely generated by ⌝, ⌝; ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s) ⊦ ⌜n⌝ ≠ ∞; (s)
| # α1 = ∞, α1 = ⌜af0⌝ , lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), α1 ⊑ ⌜af⌝ , ¬ lift(trlp)(⌜sf⌝ , α1), ∀ n. # slf(n) = # alf(n) + 1, ∀ n. trlp(slf(n), alf(n)), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1), ∀ n. trlp(sf.take(n + 1), af.take(n)) ⊦ |
lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), ¬ trlp(sf.take(n + 1), af.take(n)), ∀ n. # slf(n) = # alf(n) + 1, ∀ n. trlp(slf(n), alf(n)), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1), ∀ n. trlp(sf.take(n + 1), af.take(n)) ⊦
Used simplifier rules: lift-trp-inf: ⊦ lift(trlp)(⌜sf⌝ , ⌜af⌝ ) ↔ (∀ n. trlp(sf.take(n + 1), af.take(n))); ⊦ ⌜nf⌝ ⊑ ⌜nf0⌝ ↔ nf = nf0; (s) ⊦ # ⌜nf⌝ = ∞; (s)
| lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), ppbd(lift(trlp))(βf), ¬ trlp(sf.take(n + 1), af.take(n)), ∀ n. # slf(n) = # alf(n) + 1, ∀ n. trlp(slf(n), alf(n)), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ sl1, sl2, al1, al2. trlp(sl2, al2) ∧ sl1 ⊑ sl2 ∧ al1 ⊑ al2 ∧ # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 → trlp(sl1, al1), ∀ n. trlp(sf.take(n + 1), af.take(n)) ⊦ |
Used terms: n
| # alf(n0) + 1 ≠ # slf(n0), lim(⌜λ n. βf(⌜slf(n)⌝ , ⌜alf(n)⌝ )⌝ ) ≠ βf(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), lift(trlp)(lim(⌜λ n. ⌜slf(n)⌝ ⌝ ), lim(⌜λ n. ⌜alf(n)⌝ ⌝ )), mon(⌜λ n. ⌜slf(n)⌝ ⌝ ), mon(⌜λ n. ⌜alf(n)⌝ ⌝ ), pfxclosed(trlp), ppbd(lift(trlp))(βf), ∀ σ1, α1, σ2, α2. # σ1 = # α1 + ⌜1⌝ ∧ # σ2 = # α2 + ⌜1⌝ ∧ σ1 ⊑ σ2 ∧ α1 ⊑ α2 ∧ lift(trlp)(σ1, α1) ∧ lift(trlp)(σ2, α2) → βf(σ1, α1) ⊑ βf(σ2, α2), ∀ n. trlp(slf(n), alf(n)), ∀ n. # slf(n) = # alf(n) + 1 ⊦ |
Used terms: n0
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.