| execω(Π(IOAut(lstart, lstep, lext), IOAut(rstart, rstep, rext), lren, rren))(psf, paf) ⊦ exec(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, ⌜psf⌝ , ⌜paf⌝ ), πra(lstep, rstep, lren, rren, ⌜psf⌝ , ⌜paf⌝ )) |
execω(Π(IOAut(lstart, lstep, lext), IOAut(rstart, rstep, rext), lren, rren))(psf, paf), ¬ exec(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, ⌜psf⌝ , ⌜paf⌝ ), πra(lstep, rstep, lren, rren, ⌜psf⌝ , ⌜paf⌝ )) ⊦
| execω(Π(IOAut(lstart, lstep, lext), IOAut(rstart, rstep, rext), lren, rren))(psf, paf), ¬ exec(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, ⌜psf⌝ , ⌜paf⌝ ), πra(lstep, rstep, lren, rren, ⌜psf⌝ , ⌜paf⌝ )) ⊦ |
fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)) ⊦ frag(IOAut(rstart, rstep, rext)) (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )) ∧ rstart(lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[0])
Used simplifier rules: projstate-inf-def: ⊦ πrs(lstep, rstep, lren, rren, ⌜psf⌝ , ⌜paf⌝ ) = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ); projaction-inf-def: ⊦ πra(lstep, rstep, lren, rren, ⌜psf⌝ , ⌜paf⌝ ) = lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ); ⊦ IOAut(start, step, ext).start = start; (s) ⊦ exec(ioa)(σ, α) ↔ frag(ioa)(σ, α) ∧ ioa.start(σ[0]); (s) ⊦ execω(ioa)(sf, af) ↔ fragω(ioa)(sf, af) ∧ ioa.start(sf(0)); (s) ⊦ Π(IOAut(lstart, lstep, lext), IOAut(rstart, rstep, rext), lren, rren) = IOAut (Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)); (s)
| fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)) ⊦ frag(IOAut(rstart, rstep, rext)) (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )) ∧ rstart(lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[0]) |
⊦ mon(σσ) ∧ σσ ≠ [] → (∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ lim(σσ)) ∧ (∀ m. ¬ # lim(σσ) < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜lim(σσ).take(m)⌝ ⊑ σσ[n]))
fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), mon(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) ∧ ⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ≠ [] → (∀ n. ⌜n⌝ < # ⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ → ⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ [n] ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )) ∧ (∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜n⌝ < # ⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ∧ ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ [n])) ⊦ frag(IOAut(rstart, rstep, rext)) (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )) ∧ rstart(lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[0])
Used terms: ⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝
| ⊦ mon(σσ) ∧ σσ ≠ [] → (∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ lim(σσ)) ∧ (∀ m. ¬ # lim(σσ) < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜lim(σσ).take(m)⌝ ⊑ σσ[n])) |
| fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), mon(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) ∧ ⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ≠ [] → (∀ n. ⌜n⌝ < # ⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ → ⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ [n] ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )) ∧ (∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜n⌝ < # ⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ∧ ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ [n])) ⊦ frag(IOAut(rstart, rstep, rext)) (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )) ∧ rstart(lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[0]) |
fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), mon(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) → (∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )) ∧ (∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ )) ⊦ frag(IOAut(rstart, rstep, rext)) (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )) ∧ rstart(lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[0])
Used simplifier rules: ⊦ ⌜nf⌝ [n] = nf(n); (s) ⊦ ⌜m⌝ < ∞; (s) ⊦ # ⌜nf⌝ = ∞; (s) ⊦ [] ≠ ⌜nf⌝ ; (s)
| fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), mon(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) → (∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )) ∧ (∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ )) ⊦ frag(IOAut(rstart, rstep, rext)) (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )) ∧ rstart(lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[0]) |
fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ mon(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) ⊦ frag(IOAut(rstart, rstep, rext)) (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )) ∧ rstart(lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[0])
fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ) ⊦ frag(IOAut(rstart, rstep, rext)) (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )) ∧ rstart(lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[0])
| fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ mon(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) ⊦ frag(IOAut(rstart, rstep, rext)) (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )) ∧ rstart(lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[0]) |
⊦ fragω(Π(IOAut(lstart, lstep, lext), IOAut(rstart, rstep, rext), lren, rren))(psf, paf) → mon(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )
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) Used terms: rext, paf, rstep, rstart, lren, rren, lstart, lstep, psf, lext
| ⊦ fragω(Π(IOAut(lstart, lstep, lext), IOAut(rstart, rstep, rext), lren, rren))(psf, paf) → mon(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) |
| fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ) ⊦ frag(IOAut(rstart, rstep, rext)) (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )) ∧ rstart(lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[0]) |
⊦ mon(σσ) ∧ σσ ≠ [] → (∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ lim(σσ)) ∧ (∀ m. ¬ # lim(σσ) < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜lim(σσ).take(m)⌝ ⊑ σσ[n]))
fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), mon(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) ∧ ⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ≠ [] → (∀ n. ⌜n⌝ < # ⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ → ⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ [n] ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )) ∧ (∀ m. ¬ # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜n⌝ < # ⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ∧ ⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ [n])), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) ⊦ frag(IOAut(rstart, rstep, rext)) (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )) ∧ rstart(lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[0])
Used terms: ⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝
| ⊦ mon(σσ) ∧ σσ ≠ [] → (∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ lim(σσ)) ∧ (∀ m. ¬ # lim(σσ) < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜lim(σσ).take(m)⌝ ⊑ σσ[n])) |
| fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), mon(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) ∧ ⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ≠ [] → (∀ n. ⌜n⌝ < # ⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ → ⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ [n] ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )) ∧ (∀ m. ¬ # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜n⌝ < # ⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ∧ ⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ [n])), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) ⊦ frag(IOAut(rstart, rstep, rext)) (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )) ∧ rstart(lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[0]) |
fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), mon(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) → (∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )) ∧ (∀ m. ¬ # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ )), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ) ⊦ frag(IOAut(rstart, rstep, rext)) (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )) ∧ rstart(lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[0])
Used simplifier rules: ⊦ ⌜nf⌝ [n] = nf(n); (s) ⊦ ⌜m⌝ < ∞; (s) ⊦ # ⌜nf⌝ = ∞; (s) ⊦ [] ≠ ⌜nf⌝ ; (s)
| fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), mon(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) → (∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )) ∧ (∀ m. ¬ # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ )), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ) ⊦ frag(IOAut(rstart, rstep, rext)) (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )) ∧ rstart(lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[0]) |
fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ mon(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) ⊦ frag(IOAut(rstart, rstep, rext)) (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )) ∧ rstart(lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[0])
fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ) ⊦ frag(IOAut(rstart, rstep, rext)) (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )) ∧ rstart(lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[0])
| fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ mon(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) ⊦ frag(IOAut(rstart, rstep, rext)) (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )) ∧ rstart(lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[0]) |
⊦ fragω(Π(IOAut(lstart, lstep, lext), IOAut(rstart, rstep, rext), lren, rren))(psf, paf) → mon(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )
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) Used terms: rext, paf, rstep, rstart, lren, rren, lstart, lstep, psf, lext
| ⊦ fragω(Π(IOAut(lstart, lstep, lext), IOAut(rstart, rstep, rext), lren, rren))(psf, paf) → mon(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) |
| fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ) ⊦ frag(IOAut(rstart, rstep, rext)) (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )) ∧ rstart(lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[0]) |
fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ frag(IOAut(rstart, rstep, rext)) (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )), ∀ m. ¬ # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ) ⊦
fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstart(lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[0]), ∀ m. ¬ # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ) ⊦
| fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ frag(IOAut(rstart, rstep, rext)) (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )), ∀ m. ¬ # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ) ⊦ |
⊦ frag(IOAut(start, step, ext))(σ, α) ↔ # σ = # α + ⌜1⌝ ∧ (∀ n. ⌜n⌝ < # α → step(σ[n], α[n], σ[n +1]))
fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ ∨ (∃ n. ¬ ( ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) → rstep (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n +1]))) ⊦
Used terms: rext, lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), rstep, rstart, lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )
| ⊦ frag(IOAut(start, step, ext))(σ, α) ↔ # σ = # α + ⌜1⌝ ∧ (∀ n. ⌜n⌝ < # α → step(σ[n], α[n], σ[n +1])) |
| fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ ∨ (∃ n. ¬ ( ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) → rstep (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n +1]))) ⊦ |
fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ∀ m. ¬ # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ ∨ ¬ ( ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) → rstep (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n + 1])) ⊦
Used simplifier rules: ⊦ m +1 = m + 1; (s)
| fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ∀ m. ¬ # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ ∨ ¬ ( ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) → rstep (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n + 1])) ⊦ |
fragω(Π(IOAut(lstart, lstep, lext), IOAut(rstart, rstep, rext), lren, rren))(psf, paf) ⊦ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝
# lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ ∨ ¬ ( ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) → rstep (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[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) Used terms: rext, paf, rstep, rstart, lren, rren, lstart, lstep, psf, lext
| fragω(Π(IOAut(lstart, lstep, lext), IOAut(rstart, rstep, rext), lren, rren))(psf, paf) ⊦ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ |
| # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ ∨ ¬ ( ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) → rstep (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n + 1])) ⊦ |
# lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n + 1]), ∀ m. ¬ # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ) ⊦
| # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n + 1]), ∀ m. ¬ # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ) ⊦ |
# lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n + 1]), ¬ # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜n + 1⌝ → (∃ n0. ⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(n + 1)⌝ ⊑ ⌜πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) ⊦
Used terms: n + 1
| # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n + 1]), ¬ # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜n + 1⌝ → (∃ n0. ⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(n + 1)⌝ ⊑ ⌜πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) ⊦ |
# lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(n + 1)⌝ ⊑ ⌜πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , ¬ rstep (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n + 1]), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ) ⊦
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 ⊦ # σ < ⌜n⌝ + ⌜1⌝ ↔ ¬ ⌜n⌝ < # σ; (s) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ ⌜m + n⌝ = ⌜m⌝ + ⌜n⌝ ; (s)
| # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(n + 1)⌝ ⊑ ⌜πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , ¬ rstep (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n + 1]), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ) ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
# lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n + 1]), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∃ σ1. ⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(n + 1)⌝ + σ1 = ⌜πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ ⊦
Used terms: ⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(n + 1)⌝ , ⌜πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n + 1]), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∃ σ1. ⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(n + 1)⌝ + σ1 = ⌜πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ ⊦ |
# lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , ⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(n + 1)⌝ + rα = ⌜πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n + 1]), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ) ⊦
| # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , ⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(n + 1)⌝ + rα = ⌜πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n + 1]), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ) ⊦ |
⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0[n] = σ1[n])
#(⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(n + 1)⌝ + rα) = # ⌜πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n + 1]), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n1. ⌜n1⌝ < #(⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(n + 1)⌝ + rα) → (⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(n + 1)⌝ + rα)[n1] = ⌜πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ [n1] ⊦
Used terms: ⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(n + 1) ⌝ + rα, ⌜πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝
| ⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0[n] = σ1[n]) |
| #(⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(n + 1)⌝ + rα) = # ⌜πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n + 1]), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n1. ⌜n1⌝ < #(⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(n + 1)⌝ + rα) → (⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(n + 1)⌝ + rα)[n1] = ⌜πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ [n1] ⊦ |
# lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , (⌜n⌝ + ⌜1⌝ ) + # rα = ⌜# πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n + 1]), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n1. ¬ ⌜n⌝ + # rα < ⌜n1⌝ → (⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(n + 1)⌝ + rα)[n1] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n1] ⊦
Used simplifier rules: ⊦ ⌜x⌝ [n] = x[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⌝ < ⌜1⌝ + n∞ ↔ ¬ n∞ < ⌜n⌝ ; (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 ⊦ ⌜m + n⌝ = ⌜m⌝ + ⌜n⌝ ; (s) ¬ # σ < ⌜n⌝ ⊦ # σ.take(n) = n; (s) ⊦ # σ < ⌜n⌝ + ⌜1⌝ ↔ ¬ ⌜n⌝ < # σ; (s) ⊦ # ⌜σ.take(n)⌝ = ⌜# σ.take(n)⌝ ; (s) ⊦ #(σ + σ1) = # σ + # σ1; (s) ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s)
| # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , (⌜n⌝ + ⌜1⌝ ) + # rα = ⌜# πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n + 1]), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n1. ¬ ⌜n⌝ + # rα < ⌜n1⌝ → (⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(n + 1)⌝ + rα)[n1] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n1] ⊦ |
# lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , (⌜n⌝ + ⌜1⌝ ) + # rα = ⌜# πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n + 1]), ¬ ⌜n⌝ + # rα < ⌜n⌝ → (⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(n + 1)⌝ + rα)[n] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) ⊦
Used terms: n
| # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , (⌜n⌝ + ⌜1⌝ ) + # rα = ⌜# πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n + 1]), ¬ ⌜n⌝ + # rα < ⌜n⌝ → (⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(n + 1)⌝ + rα)[n] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) ⊦ |
# lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , (⌜n⌝ + ⌜1⌝ ) + # rα = ⌜# πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , (⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(n + 1)⌝ + rα)[n] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n + 1]), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ) ⊦
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 ⊦ ¬ n∞ + n∞1 < n∞1; (s)
| # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , (⌜n⌝ + ⌜1⌝ ) + # rα = ⌜# πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , (⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(n + 1)⌝ + rα)[n] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n + 1]), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ) ⊦ |
⊦ ⌜m⌝ < # σ → (σ + σ1)[m] = σ[m]
# lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , (⌜n⌝ + ⌜1⌝ ) + # rα = ⌜# πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , ⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(n + 1)⌝ [n] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ⌜n⌝ < # ⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(n + 1)⌝ , fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n + 1]), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) ⊦
Used simplifier rules: ⊦ ¬ ⌜m⌝ < # σ → (σ + σ1)[m] = σ1[m - (# σ).n]; (s) ⊦ ⌜n⌝ ≠ ∞; (s) n∞ ≠ ∞ ⊦ (⌜m⌝ + n∞).n = m + n∞.n; (s) ⊦ ⌜n⌝ .n = n; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ # ⌜σ.take(n)⌝ = ⌜# σ.take(n)⌝ ; (s) ⊦ # σ < ⌜n⌝ + ⌜1⌝ ↔ ¬ ⌜n⌝ < # σ; (s) ¬ # σ < ⌜n⌝ ⊦ # σ.take(n) = n; (s) ⊦ ⌜m + n⌝ = ⌜m⌝ + ⌜n⌝ ; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ ⌜n⌝ < ⌜1⌝ + n∞ ↔ ¬ n∞ < ⌜n⌝ ; (s) ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ ¬ 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 Used terms: ⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(n + 1)⌝ , rα, n
| ⊦ ⌜m⌝ < # σ → (σ + σ1)[m] = σ[m] |
| # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , (⌜n⌝ + ⌜1⌝ ) + # rα = ⌜# πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , ⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(n + 1)⌝ [n] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ⌜n⌝ < # ⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(n + 1)⌝ , fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n + 1]), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) ⊦ |
# lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , (⌜n⌝ + ⌜1⌝ ) + # rα = ⌜# πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n + 1]), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ) ⊦
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 ⊦ ¬ n < n; (s) ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ ⌜n⌝ < ⌜1⌝ + n∞ ↔ ¬ n∞ < ⌜n⌝ ; (s) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ ⌜m + n⌝ = ⌜m⌝ + ⌜n⌝ ; (s) ¬ # σ < ⌜n⌝ ⊦ # σ.take(n) = n; (s) ⊦ # σ < ⌜n⌝ + ⌜1⌝ ↔ ¬ ⌜n⌝ < # σ; (s) ⊦ # ⌜σ.take(n)⌝ = ⌜# σ.take(n)⌝ ; (s) m < n, ¬ # σ < ⌜n⌝ ⊦ σ.take(n)[m] = σ[m]; (s) ⊦ m < n + 1 ↔ ¬ n < m; (s) ⊦ ⌜x⌝ [n] = x[n]; (s)
| # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , (⌜n⌝ + ⌜1⌝ ) + # rα = ⌜# πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n + 1]), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ) ⊦ |
# lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , (⌜n⌝ + ⌜1⌝ ) + # rα = ⌜# πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n + 1]), ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜n0⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(n0)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) ⊦
Used terms: n0
| # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , (⌜n⌝ + ⌜1⌝ ) + # rα = ⌜# πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n + 1]), ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜n0⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(n0)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) ⊦ |
# lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , (⌜n⌝ + ⌜1⌝ ) + # rα = ⌜# πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n + 1]), ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜n0⌝ → ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(n0)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n1 + 1), paf.take(n1))⌝ , ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ) ⊦
| # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , (⌜n⌝ + ⌜1⌝ ) + # rα = ⌜# πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n + 1]), ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜n0⌝ → ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(n0)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n1 + 1), paf.take(n1))⌝ , ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ) ⊦ |
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)) = # πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n)) + 1
# lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , # πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) = # πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) + 1, (⌜n⌝ + ⌜1⌝ ) + # rα = ⌜# πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n + 1]), ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜n0⌝ → ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(n0)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n1 + 1), paf.take(n1))⌝ , ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) ⊦
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) Used terms: rext, paf, n0, rstep, rstart, lren, rren, lstart, lstep, 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)) = # πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n)) + 1 |
| # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , # πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) = # πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) + 1, (⌜n⌝ + ⌜1⌝ ) + # rα = ⌜# πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n + 1]), ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜n0⌝ → ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(n0)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n1 + 1), paf.take(n1))⌝ , ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) ⊦ |
# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) = # πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) + 1, # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , (⌜n⌝ + ⌜1⌝ ) + # rα = ⌜# πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ¬ rstep (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n + 1]), ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜n0⌝ → ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(n0)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n1 + 1), paf.take(n1))⌝ , ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ) ⊦
Used terms: n0
| # πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) = # πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) + 1, # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , (⌜n⌝ + ⌜1⌝ ) + # rα = ⌜# πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ¬ rstep (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n + 1]), ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜n0⌝ → ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(n0)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n1 + 1), paf.take(n1))⌝ , ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ) ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
# lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , # πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) = # πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) + 1, (⌜n⌝ + ⌜1⌝ ) + # rα = ⌜# πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n + 1]), ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜n0⌝ → ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(n0)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n1 + 1), paf.take(n1))⌝ , ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∃ σ1. ⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + σ1 = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) ⊦
Used terms: ⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , # πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) = # πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) + 1, (⌜n⌝ + ⌜1⌝ ) + # rα = ⌜# πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep (lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n + 1]), ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜n0⌝ → ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(n0)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n1 + 1), paf.take(n1))⌝ , ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∃ σ1. ⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + σ1 = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) ⊦ |
# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) = # πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) + 1, (⌜n⌝ + ⌜1⌝ ) + # rα = ⌜# πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , ⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep ((⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n], πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n + 1]), ¬ ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ < ⌜n0⌝ → ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(n0)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n1 + 1), paf.take(n1))⌝ , ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ, ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ < ⌜m⌝ → (∃ n. ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ) ⊦
Used simplifier rules: append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s) ⊦ #(σ + σ1) = # σ + # σ1; (s)
| # πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) = # πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) + 1, (⌜n⌝ + ⌜1⌝ ) + # rα = ⌜# πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , ⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep ((⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n], πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n + 1]), ¬ ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ < ⌜n0⌝ → ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(n0)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n1 + 1), paf.take(n1))⌝ , ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ, ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ < ⌜m⌝ → (∃ n. ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ) ⊦ |
⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0[n] = σ1[n])
#(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ) = # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), # πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) = # πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) + 1, ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , (⌜n⌝ + ⌜1⌝ ) + # rα = ⌜# πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep ((⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n], πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n + 1]), ¬ ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ < ⌜n0⌝ → ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(n0)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n1 + 1), paf.take(n1))⌝ , ∀ m. ¬ ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ < ⌜m⌝ → (∃ n. ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ, ∀ n. ⌜n⌝ < #(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ) → (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n] = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n] ⊦
Used terms: ⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ, lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )
| ⊦ σ0 = σ1 ↔ # σ0 = # σ1 ∧ (∀ n. ⌜n⌝ < # σ0 → σ0[n] = σ1[n]) |
| #(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ) = # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), # πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) = # πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) + 1, ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , (⌜n⌝ + ⌜1⌝ ) + # rα = ⌜# πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep ((⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n], πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n + 1]), ¬ ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ < ⌜n0⌝ → ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(n0)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n1 + 1), paf.take(n1))⌝ , ∀ m. ¬ ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ < ⌜m⌝ → (∃ n. ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ, ∀ n. ⌜n⌝ < #(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ) → (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n] = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n] ⊦ |
# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) = # πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) + 1, (⌜n⌝ + ⌜1⌝ ) + # rα = ⌜# πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ = # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep ((⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n], πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n + 1]), ¬ ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ < ⌜n0⌝ → ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(n0)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n1 + 1), paf.take(n1))⌝ , ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ, ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ < ⌜m⌝ → (∃ n. ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n2. ⌜n2⌝ < ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ → (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n2] = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n2] ⊦
Used simplifier rules: append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s) ⊦ #(σ + σ1) = # σ + # σ1; (s)
| # πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) = # πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) + 1, (⌜n⌝ + ⌜1⌝ ) + # rα = ⌜# πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ = # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep ((⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n], πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n + 1]), ¬ ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ < ⌜n0⌝ → ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(n0)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n1 + 1), paf.take(n1))⌝ , ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ, ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ < ⌜m⌝ → (∃ n. ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n2. ⌜n2⌝ < ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ → (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n2] = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n2] ⊦ |
# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) = # πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) + 1, ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ = # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , (⌜n⌝ + ⌜1⌝ ) + # rα = ⌜# πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep ((⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n], πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n + 1]), ¬ ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ < ⌜n0⌝ → ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(n0)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n1 + 1), paf.take(n1))⌝ , ⌜n⌝ < ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ → (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n] = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], ∀ n2. ⌜n2⌝ < ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ → (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n2] = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n2], ∀ m. ¬ ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ < ⌜m⌝ → (∃ n. ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ ⊦
Used terms: n
| # πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) = # πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) + 1, ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ = # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , (⌜n⌝ + ⌜1⌝ ) + # rα = ⌜# πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep ((⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n], πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n + 1]), ¬ ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ < ⌜n0⌝ → ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(n0)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n1 + 1), paf.take(n1))⌝ , ⌜n⌝ < ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ → (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n] = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], ∀ n2. ⌜n2⌝ < ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ → (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n2] = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n2], ∀ m. ¬ ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ < ⌜m⌝ → (∃ n. ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ ⊦ |
# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) = # πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) + 1, (⌜n⌝ + ⌜1⌝ ) + # rα = ⌜# πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ = # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n] = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep ((⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n], πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n + 1]), ¬ ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ < ⌜n0⌝ → ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(n0)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n1 + 1), paf.take(n1))⌝ , ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ, ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ < ⌜m⌝ → (∃ n. ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n2. ⌜n2⌝ < ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ → (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n2] = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n2] ⊦
Used simplifier rules: ⊦ n∞ = n∞0 + ⌜1⌝ ∧ ⌜n⌝ < n∞0 → (⌜n⌝ < n∞ ↔ true); (ss) 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
| # πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) = # πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) + 1, (⌜n⌝ + ⌜1⌝ ) + # rα = ⌜# πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ = # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n] = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep ((⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n], πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n + 1]), ¬ ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ < ⌜n0⌝ → ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(n0)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n1 + 1), paf.take(n1))⌝ , ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ, ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ < ⌜m⌝ → (∃ n. ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n2. ⌜n2⌝ < ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ → (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n2] = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n2] ⊦ |
# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) = # πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) + 1, ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ = # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , (⌜n⌝ + ⌜1⌝ ) + # rα = ⌜# πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n] = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], rα = ⌜ral⌝ , ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep ((⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n], πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n + 1]), ¬ ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ < ⌜n0⌝ → ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(n0)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n1 + 1), paf.take(n1))⌝ , ∀ n2. ⌜n2⌝ < ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ → (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n2] = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n2], ∀ m. ¬ ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ < ⌜m⌝ → (∃ n. ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ ⊦
Used simplifier rules: Stream('a) freely generated by ⌜ ⌝, ⌜ ⌝;; ⊦ # ⌜nf⌝ = ∞; (s) ⊦ ⌜m⌝ + ∞ = ∞; (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)
| # πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) = # πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) + 1, ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ = # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ = # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) + ⌜1⌝ , (⌜n⌝ + ⌜1⌝ ) + # rα = ⌜# πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n] = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], rα = ⌜ral⌝ , ⌜n⌝ < # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep ((⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n], πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n + 1]), ¬ ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ < ⌜n0⌝ → ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(n0)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n1 + 1), paf.take(n1))⌝ , ∀ n2. ⌜n2⌝ < ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ → (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n2] = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n2], ∀ m. ¬ ⌜# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + # rσ < ⌜m⌝ → (∃ n. ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ ⊦ |
# lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = ⌜1⌝ + ⌜n⌝ + ⌜# ral⌝ + # rσ, # πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) = 2 + n + # ral, (⌜2⌝ + ⌜n⌝ + ⌜# ral⌝ ) + # rσ = # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), n + 1 + # ral = # πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)), lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n] = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep ((⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n], πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n + 1]), ¬ (⌜2⌝ + ⌜n⌝ + ⌜# ral⌝ ) + # rσ < ⌜n0⌝ → ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(n0)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n1 + 1), paf.take(n1))⌝ , ∀ m. ¬ (⌜2⌝ + ⌜n⌝ + ⌜# ral⌝ ) + # rσ < ⌜m⌝ → (∃ n. ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n2. ⌜n2⌝ < (⌜2⌝ + ⌜n⌝ + ⌜# ral⌝ ) + # rσ → (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n2] = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n2], ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ, ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) ⊦
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 ⊦ ¬ n∞ + n∞1 < n∞1; (s) ⊦ ⌜n⌝ < ⌜1⌝ + n∞ ↔ ¬ n∞ < ⌜n⌝ ; (s) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ ⌜m + n⌝ = ⌜m⌝ + ⌜n⌝ ; (s) ⊦ n < m → (⌜(* n)⌝ + n∞1 = ⌜(* m)⌝ + n∞2 ↔ n∞1 = ⌜m - n⌝ + n∞2); (s) ⊦ ⌜n1⌝ + ⌜n⌝ + ⌜m⌝ = ⌜n0⌝ ↔ n1 + n + m = n0; (s) ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s)
| # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = ⌜1⌝ + ⌜n⌝ + ⌜# ral⌝ + # rσ, # πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) = 2 + n + # ral, (⌜2⌝ + ⌜n⌝ + ⌜# ral⌝ ) + # rσ = # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), n + 1 + # ral = # πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)), lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n] = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep ((⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n], πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n + 1]), ¬ (⌜2⌝ + ⌜n⌝ + ⌜# ral⌝ ) + # rσ < ⌜n0⌝ → ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(n0)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n1 + 1), paf.take(n1))⌝ , ∀ m. ¬ (⌜2⌝ + ⌜n⌝ + ⌜# ral⌝ ) + # rσ < ⌜m⌝ → (∃ n. ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n2. ⌜n2⌝ < (⌜2⌝ + ⌜n⌝ + ⌜# ral⌝ ) + # rσ → (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n2] = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n2], ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ, ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) ⊦ |
⊦ ⌜m⌝ < # σ → (σ + σ1)[m] = σ[m]
# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) = 2 + n + # ral, # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = ⌜1⌝ + ⌜n⌝ + ⌜# ral⌝ + # rσ, n + 1 + # ral = # πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)), (⌜2⌝ + ⌜n⌝ + ⌜# ral⌝ ) + # rσ = # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ [n] = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], ⌜n⌝ < # ⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ [n], πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n + 1]), ¬ (⌜2⌝ + ⌜n⌝ + ⌜# ral⌝ ) + # rσ < ⌜n0⌝ → ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(n0)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n1 + 1), paf.take(n1))⌝ , ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ, ∀ n2. ⌜n2⌝ < (⌜2⌝ + ⌜n⌝ + ⌜# ral⌝ ) + # rσ → (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n2] = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n2], ∀ m. ¬ (⌜2⌝ + ⌜n⌝ + ⌜# ral⌝ ) + # rσ < ⌜m⌝ → (∃ n. ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ) ⊦
Used simplifier rules: ⊦ ¬ ⌜m⌝ < # σ → (σ + σ1)[m] = σ1[m - (# σ).n]; (s) ⊦ ⌜n⌝ .n = n; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s) ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ m + m0 ≤ m ↔ m0 = 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: ⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , rσ, n
| ⊦ ⌜m⌝ < # σ → (σ + σ1)[m] = σ[m] |
| # πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) = 2 + n + # ral, # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = ⌜1⌝ + ⌜n⌝ + ⌜# ral⌝ + # rσ, n + 1 + # ral = # πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)), (⌜2⌝ + ⌜n⌝ + ⌜# ral⌝ ) + # rσ = # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ [n] = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], ⌜n⌝ < # ⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ [n], πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n + 1]), ¬ (⌜2⌝ + ⌜n⌝ + ⌜# ral⌝ ) + # rσ < ⌜n0⌝ → ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(n0)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n1 + 1), paf.take(n1))⌝ , ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ, ∀ n2. ⌜n2⌝ < (⌜2⌝ + ⌜n⌝ + ⌜# ral⌝ ) + # rσ → (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n2] = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n2], ∀ m. ¬ (⌜2⌝ + ⌜n⌝ + ⌜# ral⌝ ) + # rσ < ⌜m⌝ → (∃ n. ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ) ⊦ |
# lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = ⌜1⌝ + ⌜n⌝ + ⌜# ral⌝ + # rσ, # πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) = 2 + n + # ral, (⌜2⌝ + ⌜n⌝ + ⌜# ral⌝ ) + # rσ = # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), n + 1 + # ral = # πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)), lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n] = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep (πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n + 1]), ¬ (⌜2⌝ + ⌜n⌝ + ⌜# ral⌝ ) + # rσ < ⌜n0⌝ → ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(n0)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n1 + 1), paf.take(n1))⌝ , ∀ m. ¬ (⌜2⌝ + ⌜n⌝ + ⌜# ral⌝ ) + # rσ < ⌜m⌝ → (∃ n. ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n2. ⌜n2⌝ < (⌜2⌝ + ⌜n⌝ + ⌜# ral⌝ ) + # rσ → (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n2] = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n2], ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ, ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic n < n0 ⊦ (* n) ≠ m0 + (* n0); (s) ⊦ m < m + n ↔ n ≠ 0; (s) lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ ⌜x⌝ [n] = x[n]; (s) ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s)
| # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = ⌜1⌝ + ⌜n⌝ + ⌜# ral⌝ + # rσ, # πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) = 2 + n + # ral, (⌜2⌝ + ⌜n⌝ + ⌜# ral⌝ ) + # rσ = # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), n + 1 + # ral = # πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)), lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n] = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep (πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n + 1]), ¬ (⌜2⌝ + ⌜n⌝ + ⌜# ral⌝ ) + # rσ < ⌜n0⌝ → ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(n0)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n1 + 1), paf.take(n1))⌝ , ∀ m. ¬ (⌜2⌝ + ⌜n⌝ + ⌜# ral⌝ ) + # rσ < ⌜m⌝ → (∃ n. ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n2. ⌜n2⌝ < (⌜2⌝ + ⌜n⌝ + ⌜# ral⌝ ) + # rσ → (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n2] = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n2], ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ, ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) ⊦ |
⊦ ⌜m⌝ < # σ → (σ + σ1)[m] = σ[m]
# πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) = 2 + n + # ral, # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = ⌜1⌝ + ⌜n⌝ + ⌜# ral⌝ + # rσ, n + 1 + # ral = # πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)), (⌜2⌝ + ⌜n⌝ + ⌜# ral⌝ ) + # rσ = # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n] = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], ⌜n + 1⌝ < # ⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep (πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], ⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ [n + 1]), ¬ (⌜2⌝ + ⌜n⌝ + ⌜# ral⌝ ) + # rσ < ⌜n0⌝ → ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(n0)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n1 + 1), paf.take(n1))⌝ , ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ, ∀ n2. ⌜n2⌝ < (⌜2⌝ + ⌜n⌝ + ⌜# ral⌝ ) + # rσ → (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n2] = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n2], ∀ m. ¬ (⌜2⌝ + ⌜n⌝ + ⌜# ral⌝ ) + # rσ < ⌜m⌝ → (∃ n. ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ) ⊦
Used simplifier rules: ⊦ ⌜m + n⌝ = ⌜m⌝ + ⌜n⌝ ; (s) ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s) ⊦ ⌜n⌝ + ⌜m⌝ < ⌜n0⌝ ↔ n + m < n0; (s) ⊦ m < n ↔ ¬ n ≤ m; (ss) 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 ⊦ m + n ≤ m + n0 ↔ n ≤ n0; (s) ⊦ m ≠ 0 → (m + n ≤ 1 ↔ m = 1 ∧ 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: ⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , rσ, n + 1
| ⊦ ⌜m⌝ < # σ → (σ + σ1)[m] = σ[m] |
| # πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) = 2 + n + # ral, # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = ⌜1⌝ + ⌜n⌝ + ⌜# ral⌝ + # rσ, n + 1 + # ral = # πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)), (⌜2⌝ + ⌜n⌝ + ⌜# ral⌝ ) + # rσ = # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n] = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], ⌜n + 1⌝ < # ⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ , fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep (πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], ⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ [n + 1]), ¬ (⌜2⌝ + ⌜n⌝ + ⌜# ral⌝ ) + # rσ < ⌜n0⌝ → ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(n0)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n1 + 1), paf.take(n1))⌝ , ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ, ∀ n2. ⌜n2⌝ < (⌜2⌝ + ⌜n⌝ + ⌜# ral⌝ ) + # rσ → (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n2] = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n2], ∀ m. ¬ (⌜2⌝ + ⌜n⌝ + ⌜# ral⌝ ) + # rσ < ⌜m⌝ → (∃ n. ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ) ⊦ |
# lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = ⌜1⌝ + ⌜n⌝ + ⌜# ral⌝ + # rσ, # πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) = 2 + n + # ral, (⌜2⌝ + ⌜n⌝ + ⌜# ral⌝ ) + # rσ = # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), n + 1 + # ral = # πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)), lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n] = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep (πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n + 1]), ¬ (⌜2⌝ + ⌜n⌝ + ⌜# ral⌝ ) + # rσ < ⌜n0⌝ → ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(n0)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n1 + 1), paf.take(n1))⌝ , ∀ m. ¬ (⌜2⌝ + ⌜n⌝ + ⌜# ral⌝ ) + # rσ < ⌜m⌝ → (∃ n. ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n2. ⌜n2⌝ < (⌜2⌝ + ⌜n⌝ + ⌜# ral⌝ ) + # rσ → (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n2] = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n2], ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ, ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic n < n0 ⊦ (* n) ≠ m0 + (* n0); (s) ⊦ 1 < m ↔ ¬(m = 0 ∨ m = 1); (s) ⊦ m + n < m + n0 ↔ n < n0; (s) lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic ⊦ ⌜x⌝ [n] = x[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⌝ + ⌜m⌝ < ⌜n0⌝ ↔ n + m < n0; (s) ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s) ⊦ ⌜m + n⌝ = ⌜m⌝ + ⌜n⌝ ; (s)
| # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) = ⌜1⌝ + ⌜n⌝ + ⌜# ral⌝ + # rσ, # πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)) = 2 + n + # ral, (⌜2⌝ + ⌜n⌝ + ⌜# ral⌝ ) + # rσ = # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), n + 1 + # ral = # πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0)), lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n] = πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n] = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n], fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstep (πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], πra(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n], πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[n + 1]), ¬ (⌜2⌝ + ⌜n⌝ + ⌜# ral⌝ ) + # rσ < ⌜n0⌝ → ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(n0)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n1 + 1), paf.take(n1))⌝ , ∀ m. ¬ (⌜2⌝ + ⌜n⌝ + ⌜# ral⌝ ) + # rσ < ⌜m⌝ → (∃ n. ⌜(⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n2. ⌜n2⌝ < (⌜2⌝ + ⌜n⌝ + ⌜# ral⌝ ) + # rσ → (⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ)[n2] = lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[n2], ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))⌝ + rσ, ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) ⊦ |
⊦ frag*(Π(IOAut(lstart, lstep, lext), IOAut(rstart, rstep, rext), lren, rren))(psl, pal) ∧ n + 1 < # πrs(lstep, rstep, lren, rren, psl, pal) → rstep(πrs(lstep, rstep, lren, rren, psl, pal)[n], πra(lstep, rstep, lren, rren, psl, pal)[n], πrs(lstep, rstep, lren, rren, psl, pal)[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) ⊦ fragω(IOAut(start, step, ext))(sf, af) → (frag*(IOAut(start, step, ext))(sf.take(n + 1), af.take(n)) ↔ true); (ss) ⊦ m < n ↔ ¬ n ≤ m; (ss) ⊦ m + n ≤ m + n0 ↔ n ≤ n0; (s) ⊦ m ≠ 0 → (m + n ≤ 1 ↔ m = 1 ∧ 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: rext, psf.take(n0 + 1), n, paf.take(n0), rstep, rstart, lren, rren, lstart, lstep, lext
| ⊦ frag*(Π(IOAut(lstart, lstep, lext), IOAut(rstart, rstep, rext), lren, rren))(psl, pal) ∧ n + 1 < # πrs(lstep, rstep, lren, rren, psl, pal) → rstep(πrs(lstep, rstep, lren, rren, psl, pal)[n], πra(lstep, rstep, lren, rren, psl, pal)[n], πrs(lstep, rstep, lren, rren, psl, pal)[n + 1]) |
| fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstart(lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[0]), ∀ m. ¬ # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ) ⊦ |
fragω(Π(IOAut(lstart, lstep, lext), IOAut(rstart, rstep, rext), lren, rren))(psf, paf) ⊦ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[0] = psf(0)._2
lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[0] = psf(0)._2, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstart(lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[0]), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ) ⊦
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) Used terms: rext, paf, rstep, rstart, lren, rren, lstart, lstep, psf, lext
| fragω(Π(IOAut(lstart, lstep, lext), IOAut(rstart, rstep, rext), lren, rren))(psf, paf) ⊦ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[0] = psf(0)._2 |
| lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[0] = psf(0)._2, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstart(lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[0]), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ) ⊦ |
lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[0] = psf(0)._2, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstart(psf(0)._2), ∀ m. ¬ # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ) ⊦
| lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )[0] = psf(0)._2, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), Π(lstart, rstart)(psf(0)), ¬ rstart(psf(0)._2), ∀ m. ¬ # lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ), ∀ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜lim(⌜λ n. ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ) ⊦ |
Used simplifier rules: ⊦ Π(lstart, rstart)((ls, rs)) ↔ lstart(ls) ∧ rstart(rs); (s)
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.