| ⊦ Πok(lext, rext, lren, rren) ∧ lstep(ls, la, ls0) ∧ ¬ cod(rren)(lren(la)) ∧ fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf) → πrs(lstep, rstep, lren, rren, ⌜(ls, rs) '⌝ + ⌜(ls0, rs) '⌝ + ⌜psf⌝ , lren(la) + ⌜paf⌝ ) = πrs(lstep, rstep, lren, rren, ⌜(ls0, rs) '⌝ + ⌜psf⌝ , ⌜paf⌝ ) |
πrs(lstep, rstep, lren, rren, ⌜(ls, rs) '⌝ + ⌜(ls0, rs) '⌝ + ⌜psf⌝ , lren(la) + ⌜paf⌝ ) ≠ πrs(lstep, rstep, lren, rren, ⌜(ls0, rs) '⌝ + ⌜psf⌝ , ⌜paf⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf), lstep(ls, la, ls0), Πok(lext, rext, lren, rren), ¬ cod(rren)(lren(la)) ⊦
| πrs(lstep, rstep, lren, rren, ⌜(ls, rs) '⌝ + ⌜(ls0, rs) '⌝ + ⌜psf⌝ , lren(la) + ⌜paf⌝ ) ≠ πrs(lstep, rstep, lren, rren, ⌜(ls0, rs) '⌝ + ⌜psf⌝ , ⌜paf⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf), lstep(ls, la, ls0), Πok(lext, rext, lren, rren), ¬ cod(rren)(lren(la)) ⊦ |
πrs(lstep, rstep, lren, rren, ⌜(ls, rs) '⌝ + ⌜(ls0, rs) '⌝ + ⌜psf⌝ , ⌜lren(la) '⌝ + ⌜paf⌝ ) ≠ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf), lstep(ls, la, ls0), Πok(lext, rext, lren, rren), ¬ cod(rren)(lren(la)) ⊦
Used simplifier rules: pis-inf-simp: ⊦ πrs(lstep, rstep, lren, rren, ⌜ps '⌝ + ⌜psf⌝ , ⌜paf⌝ ) = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, ps ' + psf.take(n), paf.take(n))⌝ ⌝ ); append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ a + σ = ⌜a '⌝ + σ; (s)
| πrs(lstep, rstep, lren, rren, ⌜(ls, rs) '⌝ + ⌜(ls0, rs) '⌝ + ⌜psf⌝ , ⌜lren(la) '⌝ + ⌜paf⌝ ) ≠ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf), lstep(ls, la, ls0), Πok(lext, rext, lren, rren), ¬ cod(rren)(lren(la)) ⊦ |
⊦ πrs(lstep, rstep, lren, rren, ⌜ps '⌝ + ⌜psf⌝ , ⌜paf⌝ ) = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, ps ' + psf.take(n), paf.take(n))⌝ ⌝ )
πrs(lstep, rstep, lren, rren, ⌜(ls, rs) '⌝ + ⌜(⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f⌝ , ⌜(⌜lren(la) '⌝ + ⌜paf⌝ ).f⌝ ) = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ), πrs(lstep, rstep, lren, rren, ⌜(ls, rs) '⌝ + ⌜(ls0, rs) '⌝ + ⌜psf⌝ , ⌜lren(la) '⌝ + ⌜paf⌝ ) ≠ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf), lstep(ls, la, ls0), Πok(lext, rext, lren, rren), ¬ cod(rren)(lren(la)) ⊦
Used terms: (⌜lren(la) '⌝ + ⌜paf⌝ ).f, rstep, (ls, rs), lren, rren, lstep, (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f
| ⊦ πrs(lstep, rstep, lren, rren, ⌜ps '⌝ + ⌜psf⌝ , ⌜paf⌝ ) = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, ps ' + psf.take(n), paf.take(n))⌝ ⌝ ) |
| πrs(lstep, rstep, lren, rren, ⌜(ls, rs) '⌝ + ⌜(⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f⌝ , ⌜(⌜lren(la) '⌝ + ⌜paf⌝ ).f⌝ ) = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ), πrs(lstep, rstep, lren, rren, ⌜(ls, rs) '⌝ + ⌜(ls0, rs) '⌝ + ⌜psf⌝ , ⌜lren(la) '⌝ + ⌜paf⌝ ) ≠ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf), lstep(ls, la, ls0), Πok(lext, rext, lren, rren), ¬ cod(rren)(lren(la)) ⊦ |
πrs(lstep, rstep, lren, rren, ⌜(ls, rs) '⌝ + ⌜(ls0, rs) '⌝ + ⌜psf⌝ , ⌜lren(la) '⌝ + ⌜paf⌝ ) = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ), πrs(lstep, rstep, lren, rren, ⌜(ls, rs) '⌝ + ⌜(ls0, rs) '⌝ + ⌜psf⌝ , ⌜lren(la) '⌝ + ⌜paf⌝ ) ≠ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf), lstep(ls, la, ls0), Πok(lext, rext, lren, rren), ¬ cod(rren)(lren(la)) ⊦
Used simplifier rules: append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ ⌜(⌜x⌝ + ⌜nf⌝ ).f⌝ = ⌜x⌝ + ⌜nf⌝ ; (s)
| πrs(lstep, rstep, lren, rren, ⌜(ls, rs) '⌝ + ⌜(ls0, rs) '⌝ + ⌜psf⌝ , ⌜lren(la) '⌝ + ⌜paf⌝ ) = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ), πrs(lstep, rstep, lren, rren, ⌜(ls, rs) '⌝ + ⌜(ls0, rs) '⌝ + ⌜psf⌝ , ⌜lren(la) '⌝ + ⌜paf⌝ ) ≠ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf), lstep(ls, la, ls0), Πok(lext, rext, lren, rren), ¬ cod(rren)(lren(la)) ⊦ |
lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) ≠ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf), lstep(ls, la, ls0), Πok(lext, rext, lren, rren), ¬ cod(rren)(lren(la)) ⊦
| lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) ≠ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf), lstep(ls, la, ls0), Πok(lext, rext, lren, rren), ¬ cod(rren)(lren(la)) ⊦ |
⊦ mon(⌜σf⌝ ) → lim(⌜σf⌝ ) = lim(⌜λ n. σf(n + m)⌝ )
lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) ≠ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf), lstep(ls, la, ls0), Πok(lext, rext, lren, rren), ¬ cod(rren)(lren(la)), mon(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) → lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n + 1), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n + 1))⌝ ⌝ ) ⊦
Used terms: λ n. ⌜πrs (lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n)) ⌝ , 1
| ⊦ mon(⌜σf⌝ ) → lim(⌜σf⌝ ) = lim(⌜λ n. σf(n + m)⌝ ) |
| lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) ≠ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf), lstep(ls, la, ls0), Πok(lext, rext, lren, rren), ¬ cod(rren)(lren(la)), mon(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) → lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n + 1), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n + 1))⌝ ⌝ ) ⊦ |
lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) ≠ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf), lstep(ls, la, ls0), Πok(lext, rext, lren, rren), ¬ cod(rren)(lren(la)), mon(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) → lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs) ' + psf.take(n), lren(la) ' + paf.take(n))⌝ ⌝ ) ⊦
Used simplifier rules: append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ (⌜a '⌝ + ⌜nf⌝ ).f.take(n + 1) = a ' + nf.take(n); (s) a: ⊦ (x + y) + z = x + y + z; from specification list
| lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) ≠ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf), lstep(ls, la, ls0), Πok(lext, rext, lren, rren), ¬ cod(rren)(lren(la)), mon(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) → lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs) ' + psf.take(n), lren(la) ' + paf.take(n))⌝ ⌝ ) ⊦ |
lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) ≠ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf), lstep(ls, la, ls0), Πok(lext, rext, lren, rren), ¬ cod(rren)(lren(la)), ¬ mon(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) ⊦
lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs) ' + psf.take(n), lren(la) ' + paf.take(n))⌝ ⌝ ), lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) ≠ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf), lstep(ls, la, ls0), Πok(lext, rext, lren, rren), ¬ cod(rren)(lren(la)) ⊦
| lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) ≠ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf), lstep(ls, la, ls0), Πok(lext, rext, lren, rren), ¬ cod(rren)(lren(la)), ¬ mon(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) ⊦ |
⊦ mon(σσ) ↔ (∀ n. ⌜n⌝ + ⌜1⌝ < # σσ → σσ[n] ⊑ σσ[n + 1])
lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) ≠ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf), lstep(ls, la, ls0), Πok(lext, rext, lren, rren), ¬ cod(rren)(lren(la)), ∃ n. ¬ ( ⌜n⌝ + ⌜1⌝ < # ⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ → ⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ [n] ⊑ ⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ [n + 1]) ⊦
Used terms: ⌜λ n. ⌜πrs (lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n)) ⌝ ⌝
| ⊦ mon(σσ) ↔ (∀ n. ⌜n⌝ + ⌜1⌝ < # σσ → σσ[n] ⊑ σσ[n + 1]) |
| lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) ≠ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf), lstep(ls, la, ls0), Πok(lext, rext, lren, rren), ¬ cod(rren)(lren(la)), ∃ n. ¬ ( ⌜n⌝ + ⌜1⌝ < # ⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ → ⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ [n] ⊑ ⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ [n + 1]) ⊦ |
lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) ≠ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf), lstep(ls, la, ls0), Πok(lext, rext, lren, rren), ¬ cod(rren)(lren(la)), ¬ ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs) ' + psf.take(n), lren(la) ' + paf.take(n))⌝ ⊦
Used simplifier rules: append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ (⌜a '⌝ + ⌜nf⌝ ).f.take(n + 1) = a ' + nf.take(n); (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ ⌜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. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) ≠ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf), lstep(ls, la, ls0), Πok(lext, rext, lren, rren), ¬ cod(rren)(lren(la)), ¬ ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs) ' + psf.take(n), lren(la) ' + paf.take(n))⌝ ⊦ |
n = n0 +1, lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) ≠ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf), lstep(ls, la, ls0), Πok(lext, rext, lren, rren), ¬ cod(rren)(lren(la)), ¬ ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs) ' + psf.take(n), lren(la) ' + paf.take(n))⌝ ⊦
Used simplifier rules: projstate-rec-skipL-one: ⊦ lstep(ls, la, ls0) ∧ ¬ cod(rren)(lren(la)) → πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs) ', lren(la) ') = πrs(lstep, rstep, lren, rren, (ls0, rs) ', []); projstate-base: ⊦ πrs(lstep, rstep, lren, rren, (ls, rs) ', []) = rs '; Nat freely generated by 0, +1;; ⊦ nf.take(0) = []; (s) ⊦ x + [] = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ σ ⊑ σ; (s)
| n = n0 +1, lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) ≠ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf), lstep(ls, la, ls0), Πok(lext, rext, lren, rren), ¬ cod(rren)(lren(la)), ¬ ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs) ' + psf.take(n), lren(la) ' + paf.take(n))⌝ ⊦ |
lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) ≠ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf), lstep(ls, la, ls0), Πok(lext, rext, lren, rren), ¬ cod(rren)(lren(la)), ¬ ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs) ' + psf.take(n0), lren(la) ' + paf.take(n0))⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs) ' + psf.take(n0 + 1), lren(la) ' + paf.take(n0 + 1))⌝ ⊦
Used simplifier rules: ⊦ m +1 = m + 1; (s) a: ⊦ (x + y) + z = x + y + z; from specification list append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ (⌜a '⌝ + ⌜nf⌝ ).f.take(n + 1) = a ' + nf.take(n); (s)
| lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) ≠ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf), lstep(ls, la, ls0), Πok(lext, rext, lren, rren), ¬ cod(rren)(lren(la)), ¬ ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs) ' + psf.take(n0), lren(la) ' + paf.take(n0))⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs) ' + psf.take(n0 + 1), lren(la) ' + paf.take(n0 + 1))⌝ ⊦ |
⊦ # psl = # pal ∧ lstep(ls, la, ls0) ∧ ¬ cod(rren)(lren(la)) → πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs) ' + psl, lren(la) ' + pal) = πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psl, pal)
# psf.take(n0) = # paf.take(n0), lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) ≠ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf), lstep(ls, la, ls0), Πok(lext, rext, lren, rren), ¬ cod(rren)(lren(la)), ¬ ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n0), paf.take(n0))⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs) ' + psf.take(n0 + 1), lren(la) ' + paf.take(n0 + 1))⌝ ⊦
Used simplifier rules: ⊦ # nf.take(n) = n; (s) Used terms: psf.take(n0), rs, paf.take(n0), rstep, lren, rren, la, lstep, ls, ls0
| ⊦ # psl = # pal ∧ lstep(ls, la, ls0) ∧ ¬ cod(rren)(lren(la)) → πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs) ' + psl, lren(la) ' + pal) = πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psl, pal) |
| # psf.take(n0) = # paf.take(n0), lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) ≠ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf), lstep(ls, la, ls0), Πok(lext, rext, lren, rren), ¬ cod(rren)(lren(la)), ¬ ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n0), paf.take(n0))⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs) ' + psf.take(n0 + 1), lren(la) ' + paf.take(n0 + 1))⌝ ⊦ |
lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) ≠ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf), lstep(ls, la, ls0), Πok(lext, rext, lren, rren), ¬ cod(rren)(lren(la)), ¬ ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n0), paf.take(n0))⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs) ' + psf.take(n0 + 1), lren(la) ' + paf.take(n0 + 1))⌝ ⊦
Used simplifier rules: ⊦ # nf.take(n) = n; (s)
| lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) ≠ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf), lstep(ls, la, ls0), Πok(lext, rext, lren, rren), ¬ cod(rren)(lren(la)), ¬ ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n0), paf.take(n0))⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs) ' + psf.take(n0 + 1), lren(la) ' + paf.take(n0 + 1))⌝ ⊦ |
⊦ # psl = # pal ∧ lstep(ls, la, ls0) ∧ ¬ cod(rren)(lren(la)) → πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs) ' + psl, lren(la) ' + pal) = πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psl, pal)
# psf.take(n0 + 1) = # paf.take(n0 + 1), lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) ≠ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf), lstep(ls, la, ls0), Πok(lext, rext, lren, rren), ¬ cod(rren)(lren(la)), ¬ ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n0), paf.take(n0))⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n0 + 1), paf.take(n0 + 1))⌝ ⊦
Used simplifier rules: ⊦ # nf.take(n) = n; (s) ⊦ m + n = m + n0 ↔ n = n0; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: psf.take(n0 + 1), rs, paf.take(n0 + 1), rstep, lren, rren, la, lstep, ls, ls0
| ⊦ # psl = # pal ∧ lstep(ls, la, ls0) ∧ ¬ cod(rren)(lren(la)) → πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs) ' + psl, lren(la) ' + pal) = πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psl, pal) |
| # psf.take(n0 + 1) = # paf.take(n0 + 1), lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) ≠ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf), lstep(ls, la, ls0), Πok(lext, rext, lren, rren), ¬ cod(rren)(lren(la)), ¬ ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n0), paf.take(n0))⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n0 + 1), paf.take(n0 + 1))⌝ ⊦ |
lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) ≠ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf), lstep(ls, la, ls0), Πok(lext, rext, lren, rren), ¬ cod(rren)(lren(la)), ¬ ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n0), paf.take(n0))⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n0 + 1), paf.take(n0 + 1))⌝ ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m + n = m + n0 ↔ n = n0; (s) ⊦ # nf.take(n) = n; (s)
| lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) ≠ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf), lstep(ls, la, ls0), Πok(lext, rext, lren, rren), ¬ cod(rren)(lren(la)), ¬ ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n0), paf.take(n0))⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n0 + 1), paf.take(n0 + 1))⌝ ⊦ |
⊦ fragω(Π(IOAut(lstart, lstep, lext), IOAut(rstart, rstep, rext), lren, rren))(psf, paf) → ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(2 + n), paf.take(n + 1))⌝
Used simplifier rules: ⊦ Π(IOAut(lstart, lstep, lext), IOAut(rstart, rstep, rext), lren, rren) = IOAut (Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)); (s) ⊦ (a ' + nf).take(n + 1) = a ' + nf.take(n); (s) ⊦ (a ' + nf).take(n + 2) = a ' + nf.take(n + 1); (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: rext, paf, n0, rstep, rstart, lren, rren, lstart, lstep, (ls0, rs) ' + psf, lext
| ⊦ fragω(Π(IOAut(lstart, lstep, lext), IOAut(rstart, rstep, rext), lren, rren))(psf, paf) → ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(2 + n), paf.take(n + 1))⌝ |
| lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs) ' + psf.take(n), lren(la) ' + paf.take(n))⌝ ⌝ ), lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) ≠ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf), lstep(ls, la, ls0), Πok(lext, rext, lren, rren), ¬ cod(rren)(lren(la)) ⊦ |
lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs) ' + psf.take(n), lren(la) ' + paf.take(n))⌝ ⌝ ), lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs) ' + psf.take(n), lren(la) ' + paf.take(n))⌝ ⌝ ) ≠ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf), lstep(ls, la, ls0), Πok(lext, rext, lren, rren), ¬ cod(rren)(lren(la)) ⊦
| lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs) ' + psf.take(n), lren(la) ' + paf.take(n))⌝ ⌝ ), lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs) ' + psf.take(n), lren(la) ' + paf.take(n))⌝ ⌝ ) ≠ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf), lstep(ls, la, ls0), Πok(lext, rext, lren, rren), ¬ cod(rren)(lren(la)) ⊦ |
lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs) ' + psf.take(n), lren(la) ' + paf.take(n))⌝ ⌝ ), (λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n + 1), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n + 1))⌝ ) ≠ (λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ ), lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs) ' + psf.take(n), lren(la) ' + paf.take(n))⌝ ⌝ ) ≠ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf), lstep(ls, la, ls0), Πok(lext, rext, lren, rren), ¬ cod(rren)(lren(la)) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ (⌜a '⌝ + ⌜nf⌝ ).f.take(n + 1) = a ' + nf.take(n); (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream Used formulas: (λ n. ⌜πrs (lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n + 1), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n + 1)) ⌝ ) = (λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ )
| lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs) ' + psf.take(n), lren(la) ' + paf.take(n))⌝ ⌝ ), (λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n + 1), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n + 1))⌝ ) ≠ (λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ ), lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs) ' + psf.take(n), lren(la) ' + paf.take(n))⌝ ⌝ ) ≠ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf), lstep(ls, la, ls0), Πok(lext, rext, lren, rren), ¬ cod(rren)(lren(la)) ⊦ |
lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs) ' + psf.take(n), lren(la) ' + paf.take(n))⌝ ⌝ ), lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs) ' + psf.take(n), lren(la) ' + paf.take(n))⌝ ⌝ ) ≠ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ ⌝ ), πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs) ' + psf.take(n), lren(la) ' + paf.take(n)) ≠ πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n)), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf), lstep(ls, la, ls0), Πok(lext, rext, lren, rren), ¬ cod(rren)(lren(la)) ⊦
Used simplifier rules: ⊦ ⌜x⌝ = ⌜x0⌝ ↔ x = x0; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ (⌜a '⌝ + ⌜nf⌝ ).f.take(n + 1) = a ' + nf.take(n); (s) a: ⊦ (x + y) + z = x + y + z; from specification list
| lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (⌜(ls0, rs) '⌝ + ⌜psf⌝ ).f.take(n), (⌜lren(la) '⌝ + ⌜paf⌝ ).f.take(n))⌝ ⌝ ) = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs) ' + psf.take(n), lren(la) ' + paf.take(n))⌝ ⌝ ), lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs) ' + psf.take(n), lren(la) ' + paf.take(n))⌝ ⌝ ) ≠ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n))⌝ ⌝ ), πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs) ' + psf.take(n), lren(la) ' + paf.take(n)) ≠ πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psf.take(n), paf.take(n)), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs) ' + psf, paf), lstep(ls, la, ls0), Πok(lext, rext, lren, rren), ¬ cod(rren)(lren(la)) ⊦ |
⊦ # psl = # pal ∧ lstep(ls, la, ls0) ∧ ¬ cod(rren)(lren(la)) → πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs) ' + psl, lren(la) ' + pal) = πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psl, pal)
Used simplifier rules: ⊦ # nf.take(n) = n; (s) Used terms: psf.take(n), rs, paf.take(n), rstep, lren, rren, la, lstep, ls, ls0
| ⊦ # psl = # pal ∧ lstep(ls, la, ls0) ∧ ¬ cod(rren)(lren(la)) → πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs) ' + psl, lren(la) ' + pal) = πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psl, pal) |
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.