| ⊦ nounsharedextR(cren, cext, ren) ∧ Πok(ext, cext, ren, cren) ∧ frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα) ∧ frag(IOAut(astart, astep, aext))(aσ, aα) ∧ cext !(πra(step, cstep, ren, cren, pcσ, pα)) ⊑ aext !(aα) → # repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα) = # repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα) + ⌜1⌝ |
# repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα) ≠ # repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα) + ⌜1⌝ , frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), frag(IOAut(astart, astep, aext))(aσ, aα), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, pcσ, pα)) ⊑ aext !(aα) ⊦
| # repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα) ≠ # repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα) + ⌜1⌝ , frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), frag(IOAut(astart, astep, aext))(aσ, aα), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, pcσ, pα)) ⊑ aext !(aα) ⊦ |
pcσ = ⌜pcsl⌝ , # repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα) ≠ # repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, pcσ, pα)) ⊑ aext !(aα) ⊦
pcσ = ⌜pcsf⌝ , # repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα) ≠ # repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, pcσ, pα)) ⊑ aext !(aα) ⊦
Used simplifier rules: Stream('a) freely generated by ⌜ ⌝, ⌜ ⌝;;
| pcσ = ⌜pcsl⌝ , # repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα) ≠ # repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, pcσ, pα)) ⊑ aext !(aα) ⊦ |
# repls(step, cstep, cren, ren, aren, cext, aext, ⌜pcsl⌝ , ⌜pal⌝ , aσ, aα) ≠ # repla(step, cstep, cren, ren, aren, cext, aext, ⌜pcsl⌝ , ⌜pal⌝ , aσ, aα) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), frag*(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsl, pal), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsl⌝ , ⌜pal⌝ )) ⊑ aext !(aα) ⊦
Used simplifier rules: ⊦ ⌜x⌝ .l = x; (s) ⊦ finp(σ) ↔ (∃ x. ⌜x⌝ = σ); (as) ⊦ frag(ioa)(⌜sl⌝ , α) ↔ frag*(ioa)(sl, α.l) ∧ finp(α); (s)
| # repls(step, cstep, cren, ren, aren, cext, aext, ⌜pcsl⌝ , ⌜pal⌝ , aσ, aα) ≠ # repla(step, cstep, cren, ren, aren, cext, aext, ⌜pcsl⌝ , ⌜pal⌝ , aσ, aα) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), frag*(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsl, pal), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsl⌝ , ⌜pal⌝ )) ⊑ aext !(aα) ⊦ |
⊦ # pcsl = # pal + 1 → repls(step, cstep, cren, ren, aren, cext, aext, ⌜pcsl⌝ , ⌜pal⌝ , aσ, aα) = ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsl, pal, aσ, aα)⌝
# pcsl = # pal + 1, # ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsl, pal, aσ, aα)⌝ ≠ # repla(step, cstep, cren, ren, aren, cext, aext, ⌜pcsl⌝ , ⌜pal⌝ , aσ, aα) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), frag*(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsl, pal), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsl⌝ , ⌜pal⌝ )) ⊑ aext !(aα) ⊦
Used simplifier rules: ⊦ frag*(IOAut(start, step, ext))(sl, al) → (# sl = # al + 1 ↔ true); (ss) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: aren, ren, pal, step, aext, cren, cstep, aα, pcsl, aσ, cext
| ⊦ # pcsl = # pal + 1 → repls(step, cstep, cren, ren, aren, cext, aext, ⌜pcsl⌝ , ⌜pal⌝ , aσ, aα) = ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsl, pal, aσ, aα)⌝ |
| # pcsl = # pal + 1, # ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsl, pal, aσ, aα)⌝ ≠ # repla(step, cstep, cren, ren, aren, cext, aext, ⌜pcsl⌝ , ⌜pal⌝ , aσ, aα) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), frag*(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsl, pal), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsl⌝ , ⌜pal⌝ )) ⊑ aext !(aα) ⊦ |
# pcsl = # pal + 1, ⌜# repla(step, cstep, cren, ren, aren, cext, aext, pcsl, pal, aσ, aα)⌝ ≠ # repla(step, cstep, cren, ren, aren, cext, aext, ⌜pcsl⌝ , ⌜pal⌝ , aσ, aα), frag(IOAut(astart, astep, aext))(aσ, aα), frag*(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsl, pal), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsl⌝ , ⌜pal⌝ )) ⊑ aext !(aα) ⊦
Used simplifier rules: repl-fin-size: ⊦ nounsharedextR(cren, cext, ren) ∧ Πok(ext, cext, ren, cren) ∧ frag* (IOAut (Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren))) (pcsl, pal) ∧ frag(IOAut(astart, astep, aext))(aσ, aα) ∧ cext !(πra(step, cstep, ren, cren, ⌜pcsl⌝ , ⌜pal⌝ )) ⊑ aext !(aα) → # repls(step, cstep, cren, ren, aren, cext, aext, pcsl, pal, aσ, aα) = # repla(step, cstep, cren, ren, aren, cext, aext, pcsl, pal, aσ, aα) + 1; 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∞ + ⌜0⌝ = n∞; (s) ⊦ m ≤ n → (⌜(* n)⌝ + n∞1 = ⌜(* m)⌝ + n∞2 ↔ ⌜n - m⌝ + n∞1 = n∞2); (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) ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s)
| # pcsl = # pal + 1, ⌜# repla(step, cstep, cren, ren, aren, cext, aext, pcsl, pal, aσ, aα)⌝ ≠ # repla(step, cstep, cren, ren, aren, cext, aext, ⌜pcsl⌝ , ⌜pal⌝ , aσ, aα), frag(IOAut(astart, astep, aext))(aσ, aα), frag*(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsl, pal), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsl⌝ , ⌜pal⌝ )) ⊑ aext !(aα) ⊦ |
⊦ # pcsl = # pal + 1 → repla(step, cstep, cren, ren, aren, cext, aext, ⌜pcsl⌝ , ⌜pal⌝ , aσ, aα) = ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsl, pal, aσ, aα)⌝
Used simplifier rules: ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s) ⊦ ⌜n⌝ = ⌜n0⌝ ↔ n = n0; (s) Used terms: aren, ren, pal, step, aext, cren, cstep, aα, pcsl, aσ, cext
| ⊦ # pcsl = # pal + 1 → repla(step, cstep, cren, ren, aren, cext, aext, ⌜pcsl⌝ , ⌜pal⌝ , aσ, aα) = ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsl, pal, aσ, aα)⌝ |
| pcσ = ⌜pcsf⌝ , # repls(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα) ≠ # repla(step, cstep, cren, ren, aren, cext, aext, pcσ, pα, aσ, aα) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), frag(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcσ, pα), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, pcσ, pα)) ⊑ aext !(aα) ⊦ |
# repls(step, cstep, cren, ren, aren, cext, aext, ⌜pcsf⌝ , ⌜paf⌝ , aσ, aα) ≠ # repla(step, cstep, cren, ren, aren, cext, aext, ⌜pcsf⌝ , ⌜paf⌝ , aσ, aα) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα) ⊦
Used simplifier rules: ⊦ ⌜nf⌝ .f = nf; (s) ⊦ finp(σ) ↔ ¬(∃ nf. ⌜nf⌝ = σ); (ss) ⊦ frag(ioa)(⌜sf⌝ , α) ↔ fragω(ioa)(sf, α.f) ∧ ¬ finp(α); (s)
| # repls(step, cstep, cren, ren, aren, cext, aext, ⌜pcsf⌝ , ⌜paf⌝ , aσ, aα) ≠ # repla(step, cstep, cren, ren, aren, cext, aext, ⌜pcsf⌝ , ⌜paf⌝ , aσ, aα) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα) ⊦ |
⊦ cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα) → repls(step, cstep, cren, ren, aren, cext, aext, ⌜pcsf⌝ , ⌜paf⌝ , aσ, aα) = lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ )
# lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # repla(step, cstep, cren, ren, aren, cext, aext, ⌜pcsf⌝ , ⌜paf⌝ , aσ, aα) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα) ⊦
Used terms: aren, ren, paf, step, aext, cren, cstep, aα, aσ, pcsf, cext
| ⊦ cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα) → repls(step, cstep, cren, ren, aren, cext, aext, ⌜pcsf⌝ , ⌜paf⌝ , aσ, aα) = lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) |
| # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # repla(step, cstep, cren, ren, aren, cext, aext, ⌜pcsf⌝ , ⌜paf⌝ , aσ, aα) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα) ⊦ |
⊦ cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα) → repla(step, cstep, cren, ren, aren, cext, aext, ⌜pcsf⌝ , ⌜paf⌝ , aσ, aα) = lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ )
# lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα) ⊦
Used terms: aren, ren, paf, step, aext, cren, cstep, aα, aσ, pcsf, cext
| ⊦ cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα) → repla(step, cstep, cren, ren, aren, cext, aext, ⌜pcsf⌝ , ⌜paf⌝ , aσ, aα) = lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) |
| # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα) ⊦ |
mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ ⊦ # lim(⌜σf⌝ ) = # lim(⌜σg⌝ ) + ⌜m⌝
# lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα) ⊦ mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ∧ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ∧ (∀ n. # ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ = # ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ + ⌜1⌝ )
Used terms: λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) ⌝ , λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) ⌝ , 1
| mon(⌜σf⌝ ), mon(⌜σg⌝ ), ∀ n. # σf(n) = # σg(n) + ⌜m⌝ ⊦ # lim(⌜σf⌝ ) = # lim(⌜σg⌝ ) + ⌜m⌝ |
| # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα) ⊦ mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ∧ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ∧ (∀ n. # ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ = # ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ + ⌜1⌝ ) |
# lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα) ⊦ mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ∧ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ∧ # repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) + 1 = # repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)
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⌝ + ⌜m⌝ = ⌜n0⌝ ↔ n + m = n0; (s) ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s)
| # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα) ⊦ mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ∧ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ∧ # repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) + 1 = # repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) |
# lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ⊦
# lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ⊦
# lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , # repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) + 1 ≠ # repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα), frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα) ⊦
| # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ⊦ |
⊦ nounsharedextR(cren, cext, ren) ∧ Πok(ext, cext, ren, cren) ∧ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))((s, cs) ' + pcsf, paf) ∧ frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ, aα) ∧ cext !(πra(step, cstep, ren, cren, (s, cs) + ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα) → mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, (s, cs) ' + pcsf.take(n), paf.take(n), ⌜as '⌝ + aσ, aα)⌝ ⌝ )
# lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ), nounsharedextR(cren, cext, ren) ∧ Πok(ext, cext, ren, cren) ∧ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren))) ((pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)), paf) ∧ frag(IOAut(astart, astep, aext))(⌜hd(aσ) '⌝ + tl(aσ), aα) ∧ cext !(πra(step, cstep, ren, cren, (pcsf(0)._1, pcsf(0)._2) + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα) → mon (⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ ⌝ ) ⊦
Used terms: aren, ren, ext, pcsf(0)._1, hd(aσ), astep, paf, astart, step, aext, cstart, cren, cstep, aα, start, tl(aσ), λ n. pcsf(n + 1), cext, pcsf(0)._2
| ⊦ nounsharedextR(cren, cext, ren) ∧ Πok(ext, cext, ren, cren) ∧ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))((s, cs) ' + pcsf, paf) ∧ frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ, aα) ∧ cext !(πra(step, cstep, ren, cren, (s, cs) + ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα) → mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, (s, cs) ' + pcsf.take(n), paf.take(n), ⌜as '⌝ + aσ, aα)⌝ ⌝ ) |
| # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ), nounsharedextR(cren, cext, ren) ∧ Πok(ext, cext, ren, cren) ∧ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren))) ((pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)), paf) ∧ frag(IOAut(astart, astep, aext))(⌜hd(aσ) '⌝ + tl(aσ), aα) ∧ cext !(πra(step, cstep, ren, cren, (pcsf(0)._1, pcsf(0)._2) + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα) → mon (⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ ⌝ ) ⊦ |
# lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren))) ((pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)), paf) ∧ frag(IOAut(astart, astep, aext))(⌜hd(aσ) '⌝ + tl(aσ), aα) ∧ cext !(πra(step, cstep, ren, cren, ⌜(pcsf(0)._1, pcsf(0)._2) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα) → mon (⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ ⌝ ) ⊦
Used simplifier rules: ⊦ a + σ = ⌜a '⌝ + σ; (s)
| # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren))) ((pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)), paf) ∧ frag(IOAut(astart, astep, aext))(⌜hd(aσ) '⌝ + tl(aσ), aα) ∧ cext !(πra(step, cstep, ren, cren, ⌜(pcsf(0)._1, pcsf(0)._2) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα) → mon (⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ ⌝ ) ⊦ |
# lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ⊦ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren))) ((pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)), paf) ∧ frag(IOAut(astart, astep, aext))(⌜hd(aσ) '⌝ + tl(aσ), aα) ∧ cext !(πra(step, cstep, ren, cren, ⌜(pcsf(0)._1, pcsf(0)._2) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα)
# lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), mon (⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα)⌝ ⌝ ), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ⊦
| # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ⊦ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren))) ((pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)), paf) ∧ frag(IOAut(astart, astep, aext))(⌜hd(aσ) '⌝ + tl(aσ), aα) ∧ cext !(πra(step, cstep, ren, cren, ⌜(pcsf(0)._1, pcsf(0)._2) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα) |
aσ = as + aσ0, # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , aσ ≠ [], frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ⊦ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren))) ((pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)), paf) ∧ frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα) ∧ cext !(πra(step, cstep, ren, cren, ⌜(pcsf(0)._1, pcsf(0)._2) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα)
Used simplifier rules: ⊦ ¬ frag(IOAut(start, step, ext))([], α); (s) ⊦ σ ≠ [] → (a = hd(σ) ∧ σ0 = tl(σ) ↔ σ = a + σ0); (elim) Used terms: aσ, as, aσ0
| aσ = as + aσ0, # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , aσ ≠ [], frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ⊦ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren))) ((pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)), paf) ∧ frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα) ∧ cext !(πra(step, cstep, ren, cren, ⌜(pcsf(0)._1, pcsf(0)._2) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα) |
# lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ⊦ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren))) ((pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)), paf) ∧ cext !(πra(step, cstep, ren, cren, ⌜(pcsf(0)._1, pcsf(0)._2) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα)
Used simplifier rules: ⊦ a + σ = ⌜a '⌝ + σ; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ ⌜a '⌝ + σ ≠ []; (s)
| # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ⊦ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren))) ((pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)), paf) ∧ cext !(πra(step, cstep, ren, cren, ⌜(pcsf(0)._1, pcsf(0)._2) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα) |
pcsf(0) = (s, cs), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ⊦ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))((s, cs) ' + (λ n. pcsf(n + 1)), paf) ∧ cext !(πra(step, cstep, ren, cren, ⌜(s, cs) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα)
Used terms: s, cs
| pcsf(0) = (s, cs), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ⊦ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))((s, cs) ' + (λ n. pcsf(n + 1)), paf) ∧ cext !(πra(step, cstep, ren, cren, ⌜(s, cs) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα) |
pcsf(0) = (s, cs), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))((s, cs) ' + (λ n. pcsf(n + 1)), paf), ¬ mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ⊦
pcsf(0) = (s, cs), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ), ¬ cext !(πra(step, cstep, ren, cren, ⌜(s, cs) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα) ⊦
| pcsf(0) = (s, cs), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))((s, cs) ' + (λ n. pcsf(n + 1)), paf), ¬ mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ⊦ |
⊦ ⌜nf⌝ = nf(0) + ⌜λ n. nf(n + 1)⌝
pcsf(0) = (s, cs), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, pcsf(0) + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))((s, cs) ' + (λ n. pcsf(n + 1)), paf), ¬ mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ⊦
Used terms: pcsf
| ⊦ ⌜nf⌝ = nf(0) + ⌜λ n. nf(n + 1)⌝ |
| pcsf(0) = (s, cs), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, pcsf(0) + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))((s, cs) ' + (λ n. pcsf(n + 1)), paf), ¬ mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ⊦ |
pcsf(0) = (s, cs), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜(s, cs) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))((s, cs) ' + (λ n. pcsf(n + 1)), paf), ¬ mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ⊦
Used simplifier rules: ⊦ a + σ = ⌜a '⌝ + σ; (s)
| pcsf(0) = (s, cs), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜(s, cs) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))((s, cs) ' + (λ n. pcsf(n + 1)), paf), ¬ mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ⊦ |
pcsf(0) = (s, cs), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , pcsf ≠ (s, cs) ' + (λ n. pcsf(n + 1)), frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜(s, cs) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))((s, cs) ' + (λ n. pcsf(n + 1)), paf), ¬ mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ⊦
Used formulas: pcsf = (s, cs) ' + (λ n. pcsf(n + 1))
| pcsf(0) = (s, cs), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , pcsf ≠ (s, cs) ' + (λ n. pcsf(n + 1)), frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜(s, cs) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))((s, cs) ' + (λ n. pcsf(n + 1)), paf), ¬ mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ⊦ |
⊦ x + nf = (λ n. (n < # x ⊃ x[n];nf(n - # x)))
pcsf(0) = (s, cs), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , pcsf ≠ (λ n. (n < # (s, cs) ' ⊃ (s, cs) '[n];pcsf((n - # (s, cs) ') + 1))), frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜(s, cs) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren))) (λ n. (n < # (s, cs) ' ⊃ (s, cs) '[n];pcsf((n - # (s, cs) ') + 1)), paf), ¬ mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ⊦
Used terms: (s, cs) ', λ n. pcsf(n + 1)
| ⊦ x + nf = (λ n. (n < # x ⊃ x[n];nf(n - # x))) |
| pcsf(0) = (s, cs), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , pcsf ≠ (λ n. (n < # (s, cs) ' ⊃ (s, cs) '[n];pcsf((n - # (s, cs) ') + 1))), frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜(s, cs) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren))) (λ n. (n < # (s, cs) ' ⊃ (s, cs) '[n];pcsf((n - # (s, cs) ') + 1)), paf), ¬ mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ⊦ |
pcsf(0) = (s, cs), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , pcsf(n) ≠ (n = 0 ⊃ (s, cs);pcsf((n - 1) + 1)), frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜(s, cs) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(λ n0. (n0 = 0 ⊃ (s, cs);pcsf((n0 - 1) + 1)), paf), ¬ mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ⊦
Used simplifier rules: ⊦ # a ' = 0 +1; (s) ⊦ a '[0] = a; (s) ⊦ m < 1 ↔ m = 0; (s)
| pcsf(0) = (s, cs), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , pcsf(n) ≠ (n = 0 ⊃ (s, cs);pcsf((n - 1) + 1)), frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜(s, cs) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(λ n0. (n0 = 0 ⊃ (s, cs);pcsf((n0 - 1) + 1)), paf), ¬ mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ⊦ |
pcsf(0) = (s, cs), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , n ≠ 0, pcsf(n) ≠ pcsf((n - 1) + 1), frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜(s, cs) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(λ n0. (n0 = 0 ⊃ (s, cs);pcsf((n0 - 1) + 1)), paf), ¬ mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ⊦
| pcsf(0) = (s, cs), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , n ≠ 0, pcsf(n) ≠ pcsf((n - 1) + 1), frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜(s, cs) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(λ n0. (n0 = 0 ⊃ (s, cs);pcsf((n0 - 1) + 1)), paf), ¬ mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ⊦ |
Used simplifier rules: n ≠ 0 ⊦ m = n - 1 ↔ n = m + 1; (elim) Used terms: n, n1
| pcsf(0) = (s, cs), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ), ¬ cext !(πra(step, cstep, ren, cren, ⌜(s, cs) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα) ⊦ |
⊦ ⌜nf⌝ = nf(0) + ⌜λ n. nf(n + 1)⌝
Used simplifier rules: ⊦ a + σ = ⌜a '⌝ + σ; (s) Used terms: pcsf
| ⊦ ⌜nf⌝ = nf(0) + ⌜λ n. nf(n + 1)⌝ |
| # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), mon (⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα)⌝ ⌝ ), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ⊦ |
⊦ mon(σσ) ↔ (∀ n. ⌜n⌝ + ⌜1⌝ < # σσ → σσ[n] ⊑ σσ[n + 1])
# lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ), ∀ n. ⌜n⌝ + ⌜1⌝ < # ⌜λ n. ⌜repls (step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ ⌝ → ⌜λ n. ⌜repls (step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ ⌝ [n ] ⊑ ⌜λ n. ⌜repls (step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ ⌝ [n + 1 ] ⊦
Used terms: ⌜λ n. ⌜repls (step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ ⌝
| ⊦ mon(σσ) ↔ (∀ n. ⌜n⌝ + ⌜1⌝ < # σσ → σσ[n] ⊑ σσ[n + 1]) |
| # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ), ∀ n. ⌜n⌝ + ⌜1⌝ < # ⌜λ n. ⌜repls (step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ ⌝ → ⌜λ n. ⌜repls (step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ ⌝ [n ] ⊑ ⌜λ n. ⌜repls (step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ ⌝ [n + 1 ] ⊦ |
# lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ), ∀ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα)⌝ ⊑ ⌜repls (step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ ⊦
Used simplifier rules: ⊦ ⌜nf⌝ [n] = nf(n); (s) add-comm: ⊦ n∞1 + n∞2 = n∞2 + n∞1; from specification nat-inf add-assoc: ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2; from specification nat-inf ⊦ ⌜n⌝ ≠ ∞; (s) ⊦ ⌜m⌝ + n∞ = ∞ ↔ n∞ = ∞; (s) ⊦ n∞ < ∞ ↔ n∞ ≠ ∞; (s) ⊦ # ⌜nf⌝ = ∞; (s)
| # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ), ∀ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα)⌝ ⊑ ⌜repls (step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ ⊦ |
⊦ mon(σσ) ↔ (∀ n. ⌜n⌝ + ⌜1⌝ < # σσ → σσ[n] ⊑ σσ[n + 1])
# lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ∀ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα)⌝ ⊑ ⌜repls (step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ , ∃ n. ¬ ( ⌜n⌝ + ⌜1⌝ < # ⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ → ⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ [n] ⊑ ⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ [n + 1]) ⊦
Used terms: ⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) ⌝ ⌝
| ⊦ mon(σσ) ↔ (∀ n. ⌜n⌝ + ⌜1⌝ < # σσ → σσ[n] ⊑ σσ[n + 1]) |
| # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ∀ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα)⌝ ⊑ ⌜repls (step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ , ∃ n. ¬ ( ⌜n⌝ + ⌜1⌝ < # ⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ → ⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ [n] ⊑ ⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ [n + 1]) ⊦ |
# lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⊑ ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(2 + n), paf.take(n + 1), aσ, aα)⌝ , ∀ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα)⌝ ⊑ ⌜repls (step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ ⊦
Used simplifier rules: a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ ⌜nf⌝ [n] = nf(n); (s) add-comm: ⊦ n∞1 + n∞2 = n∞2 + n∞1; from specification nat-inf add-assoc: ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2; from specification nat-inf ⊦ ⌜n⌝ ≠ ∞; (s) ⊦ ⌜m⌝ + n∞ = ∞ ↔ n∞ = ∞; (s) ⊦ n∞ < ∞ ↔ n∞ ≠ ∞; (s) ⊦ # ⌜nf⌝ = ∞; (s)
| # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⊑ ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(2 + n), paf.take(n + 1), aσ, aα)⌝ , ∀ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα)⌝ ⊑ ⌜repls (step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ ⊦ |
# lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ⌜repls(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα)⌝ ⊑ ⌜repls (step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ , ¬ ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⊑ ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(2 + n), paf.take(n + 1), aσ, aα)⌝ ⊦
Used terms: n
| # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ⌜repls(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα)⌝ ⊑ ⌜repls (step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ , ¬ ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⊑ ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(2 + n), paf.take(n + 1), aσ, aα)⌝ ⊦ |
⊦ nf.take(n + 1) = nf(0) + (λ n. nf(n + 1)).take(n)
# lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), ⌜repls(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα)⌝ ⊑ ⌜repls (step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ , cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf(0) + (λ n. pcsf(n + 1)).take(n), paf.take(n), aσ, aα)⌝ ⊑ ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(2 + n), paf.take(n + 1), aσ, aα)⌝ ⊦
Used terms: pcsf, n
| ⊦ nf.take(n + 1) = nf(0) + (λ n. nf(n + 1)).take(n) |
| # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), ⌜repls(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα)⌝ ⊑ ⌜repls (step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ , cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf(0) + (λ n. pcsf(n + 1)).take(n), paf.take(n), aσ, aα)⌝ ⊑ ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(2 + n), paf.take(n + 1), aσ, aα)⌝ ⊦ |
# lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ⌜repls(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα)⌝ ⊑ ⌜repls (step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ , ¬ ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf(0) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), aσ, aα)⌝ ⊑ ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(2 + n), paf.take(n + 1), aσ, aα)⌝ ⊦
Used simplifier rules: ⊦ a + x = a ' + x; (s)
| # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ⌜repls(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα)⌝ ⊑ ⌜repls (step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ , ¬ ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf(0) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), aσ, aα)⌝ ⊑ ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(2 + n), paf.take(n + 1), aσ, aα)⌝ ⊦ |
⊦ nf.take(n + 2) = nf(0) + (λ n. nf(n + 1)).take(n + 1)
# lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), ⌜repls(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα)⌝ ⊑ ⌜repls (step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ , cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf(0) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), aσ, aα)⌝ ⊑ ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf(0) + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), aσ, aα)⌝ ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic Used terms: pcsf, n
| ⊦ nf.take(n + 2) = nf(0) + (λ n. nf(n + 1)).take(n + 1) |
| # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), ⌜repls(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα)⌝ ⊑ ⌜repls (step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ , cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf(0) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), aσ, aα)⌝ ⊑ ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf(0) + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), aσ, aα)⌝ ⊦ |
# lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ⌜repls(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα)⌝ ⊑ ⌜repls (step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ , ¬ ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf(0) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), aσ, aα)⌝ ⊑ ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf(0) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), aσ, aα)⌝ ⊦
Used simplifier rules: ⊦ a + x = a ' + x; (s)
| # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ⌜repls(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα)⌝ ⊑ ⌜repls (step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ , ¬ ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf(0) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), aσ, aα)⌝ ⊑ ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf(0) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), aσ, aα)⌝ ⊦ |
pcsf(0) = (s, cs), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), ⌜repls(step, cstep, cren, ren, aren, cext, aext, (s, cs) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα)⌝ ⊑ ⌜repls(step, cstep, cren, ren, aren, cext, aext, (s, cs) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜hd(aσ) '⌝ + tl(aσ), aα)⌝ , cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf(0) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), aσ, aα)⌝ ⊑ ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf(0) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), aσ, aα)⌝ ⊦
Used terms: s, cs
| pcsf(0) = (s, cs), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), ⌜repls(step, cstep, cren, ren, aren, cext, aext, (s, cs) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα)⌝ ⊑ ⌜repls(step, cstep, cren, ren, aren, cext, aext, (s, cs) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜hd(aσ) '⌝ + tl(aσ), aα)⌝ , cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf(0) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), aσ, aα)⌝ ⊑ ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf(0) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), aσ, aα)⌝ ⊦ |
pcsf(0) = (s, cs), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ⌜repls(step, cstep, cren, ren, aren, cext, aext, (s, cs) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα)⌝ ⊑ ⌜repls(step, cstep, cren, ren, aren, cext, aext, (s, cs) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜hd(aσ) '⌝ + tl(aσ), aα)⌝ , ¬ ⌜repls(step, cstep, cren, ren, aren, cext, aext, (s, cs) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), aσ, aα)⌝ ⊑ ⌜repls(step, cstep, cren, ren, aren, cext, aext, (s, cs) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), aσ, aα)⌝ ⊦
| pcsf(0) = (s, cs), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ⌜repls(step, cstep, cren, ren, aren, cext, aext, (s, cs) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα)⌝ ⊑ ⌜repls(step, cstep, cren, ren, aren, cext, aext, (s, cs) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜hd(aσ) '⌝ + tl(aσ), aα)⌝ , ¬ ⌜repls(step, cstep, cren, ren, aren, cext, aext, (s, cs) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), aσ, aα)⌝ ⊑ ⌜repls(step, cstep, cren, ren, aren, cext, aext, (s, cs) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), aσ, aα)⌝ ⊦ |
Used simplifier rules: ⊦ ⌜a '⌝ + σ ≠ []; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ a + σ = ⌜a '⌝ + σ; (s) ⊦ ¬ frag(IOAut(start, step, ext))([], α); (s) ⊦ σ ≠ [] → (a = hd(σ) ∧ σ0 = tl(σ) ↔ σ = a + σ0); (elim) Used terms: aσ, as, aσ0
| # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ⊦ |
⊦ nounsharedextR(cren, cext, ren) ∧ Πok(ext, cext, ren, cren) ∧ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))((s, cs) ' + pcsf, paf) ∧ frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ, aα) ∧ cext !(πra(step, cstep, ren, cren, (s, cs) + ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα) → mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, (s, cs) ' + pcsf.take(n), paf.take(n), ⌜as '⌝ + aσ, aα)⌝ ⌝ )
# lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ), nounsharedextR(cren, cext, ren) ∧ Πok(ext, cext, ren, cren) ∧ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren))) ((pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)), paf) ∧ frag(IOAut(astart, astep, aext))(⌜hd(aσ) '⌝ + tl(aσ), aα) ∧ cext !(πra(step, cstep, ren, cren, (pcsf(0)._1, pcsf(0)._2) + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα) → mon (⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ ⌝ ) ⊦
Used terms: aren, ren, ext, pcsf(0)._1, hd(aσ), astep, paf, astart, step, aext, cstart, cren, cstep, aα, start, tl(aσ), λ n. pcsf(n + 1), cext, pcsf(0)._2
| ⊦ nounsharedextR(cren, cext, ren) ∧ Πok(ext, cext, ren, cren) ∧ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))((s, cs) ' + pcsf, paf) ∧ frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ, aα) ∧ cext !(πra(step, cstep, ren, cren, (s, cs) + ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα) → mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, (s, cs) ' + pcsf.take(n), paf.take(n), ⌜as '⌝ + aσ, aα)⌝ ⌝ ) |
| # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ), nounsharedextR(cren, cext, ren) ∧ Πok(ext, cext, ren, cren) ∧ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren))) ((pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)), paf) ∧ frag(IOAut(astart, astep, aext))(⌜hd(aσ) '⌝ + tl(aσ), aα) ∧ cext !(πra(step, cstep, ren, cren, (pcsf(0)._1, pcsf(0)._2) + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα) → mon (⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ ⌝ ) ⊦ |
# lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren))) ((pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)), paf) ∧ frag(IOAut(astart, astep, aext))(⌜hd(aσ) '⌝ + tl(aσ), aα) ∧ cext !(πra(step, cstep, ren, cren, ⌜(pcsf(0)._1, pcsf(0)._2) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα) → mon (⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ ⌝ ) ⊦
Used simplifier rules: ⊦ a + σ = ⌜a '⌝ + σ; (s)
| # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren))) ((pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)), paf) ∧ frag(IOAut(astart, astep, aext))(⌜hd(aσ) '⌝ + tl(aσ), aα) ∧ cext !(πra(step, cstep, ren, cren, ⌜(pcsf(0)._1, pcsf(0)._2) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα) → mon (⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ ⌝ ) ⊦ |
# lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ⊦ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren))) ((pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)), paf) ∧ frag(IOAut(astart, astep, aext))(⌜hd(aσ) '⌝ + tl(aσ), aα) ∧ cext !(πra(step, cstep, ren, cren, ⌜(pcsf(0)._1, pcsf(0)._2) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα)
# lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), mon (⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα)⌝ ⌝ ), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ⊦
| # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ⊦ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren))) ((pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)), paf) ∧ frag(IOAut(astart, astep, aext))(⌜hd(aσ) '⌝ + tl(aσ), aα) ∧ cext !(πra(step, cstep, ren, cren, ⌜(pcsf(0)._1, pcsf(0)._2) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα) |
aσ = as + aσ0, # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , aσ ≠ [], frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ⊦ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren))) ((pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)), paf) ∧ frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα) ∧ cext !(πra(step, cstep, ren, cren, ⌜(pcsf(0)._1, pcsf(0)._2) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα)
Used simplifier rules: ⊦ ¬ frag(IOAut(start, step, ext))([], α); (s) ⊦ σ ≠ [] → (a = hd(σ) ∧ σ0 = tl(σ) ↔ σ = a + σ0); (elim) Used terms: aσ, as, aσ0
| aσ = as + aσ0, # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , aσ ≠ [], frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ⊦ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren))) ((pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)), paf) ∧ frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα) ∧ cext !(πra(step, cstep, ren, cren, ⌜(pcsf(0)._1, pcsf(0)._2) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα) |
# lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ⊦ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren))) ((pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)), paf) ∧ cext !(πra(step, cstep, ren, cren, ⌜(pcsf(0)._1, pcsf(0)._2) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα)
Used simplifier rules: ⊦ a + σ = ⌜a '⌝ + σ; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ ⌜a '⌝ + σ ≠ []; (s)
| # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ⊦ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren))) ((pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)), paf) ∧ cext !(πra(step, cstep, ren, cren, ⌜(pcsf(0)._1, pcsf(0)._2) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα) |
pcsf(0) = (s, cs), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ⊦ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))((s, cs) ' + (λ n. pcsf(n + 1)), paf) ∧ cext !(πra(step, cstep, ren, cren, ⌜(s, cs) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα)
Used terms: s, cs
| pcsf(0) = (s, cs), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ⊦ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))((s, cs) ' + (λ n. pcsf(n + 1)), paf) ∧ cext !(πra(step, cstep, ren, cren, ⌜(s, cs) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα) |
pcsf(0) = (s, cs), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))((s, cs) ' + (λ n. pcsf(n + 1)), paf), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ⊦
pcsf(0) = (s, cs), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ), ¬ cext !(πra(step, cstep, ren, cren, ⌜(s, cs) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα) ⊦
| pcsf(0) = (s, cs), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))((s, cs) ' + (λ n. pcsf(n + 1)), paf), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ⊦ |
⊦ ⌜nf⌝ = nf(0) + ⌜λ n. nf(n + 1)⌝
pcsf(0) = (s, cs), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, pcsf(0) + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))((s, cs) ' + (λ n. pcsf(n + 1)), paf), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ⊦
Used terms: pcsf
| ⊦ ⌜nf⌝ = nf(0) + ⌜λ n. nf(n + 1)⌝ |
| pcsf(0) = (s, cs), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, pcsf(0) + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))((s, cs) ' + (λ n. pcsf(n + 1)), paf), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ⊦ |
pcsf(0) = (s, cs), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜(s, cs) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))((s, cs) ' + (λ n. pcsf(n + 1)), paf), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ⊦
Used simplifier rules: ⊦ a + σ = ⌜a '⌝ + σ; (s)
| pcsf(0) = (s, cs), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜(s, cs) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))((s, cs) ' + (λ n. pcsf(n + 1)), paf), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ⊦ |
pcsf(0) = (s, cs), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , pcsf ≠ (s, cs) ' + (λ n. pcsf(n + 1)), frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜(s, cs) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))((s, cs) ' + (λ n. pcsf(n + 1)), paf), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ⊦
Used formulas: pcsf = (s, cs) ' + (λ n. pcsf(n + 1))
| pcsf(0) = (s, cs), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , pcsf ≠ (s, cs) ' + (λ n. pcsf(n + 1)), frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜(s, cs) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))((s, cs) ' + (λ n. pcsf(n + 1)), paf), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ⊦ |
⊦ x + nf = (λ n. (n < # x ⊃ x[n];nf(n - # x)))
pcsf(0) = (s, cs), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , pcsf ≠ (λ n. (n < # (s, cs) ' ⊃ (s, cs) '[n];pcsf((n - # (s, cs) ') + 1))), frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜(s, cs) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren))) (λ n. (n < # (s, cs) ' ⊃ (s, cs) '[n];pcsf((n - # (s, cs) ') + 1)), paf), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ⊦
Used terms: (s, cs) ', λ n. pcsf(n + 1)
| ⊦ x + nf = (λ n. (n < # x ⊃ x[n];nf(n - # x))) |
| pcsf(0) = (s, cs), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , pcsf ≠ (λ n. (n < # (s, cs) ' ⊃ (s, cs) '[n];pcsf((n - # (s, cs) ') + 1))), frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜(s, cs) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren))) (λ n. (n < # (s, cs) ' ⊃ (s, cs) '[n];pcsf((n - # (s, cs) ') + 1)), paf), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ⊦ |
pcsf(0) = (s, cs), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , pcsf(n) ≠ (n = 0 ⊃ (s, cs);pcsf((n - 1) + 1)), frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜(s, cs) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(λ n0. (n0 = 0 ⊃ (s, cs);pcsf((n0 - 1) + 1)), paf), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ⊦
Used simplifier rules: ⊦ # a ' = 0 +1; (s) ⊦ a '[0] = a; (s) ⊦ m < 1 ↔ m = 0; (s)
| pcsf(0) = (s, cs), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , pcsf(n) ≠ (n = 0 ⊃ (s, cs);pcsf((n - 1) + 1)), frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜(s, cs) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(λ n0. (n0 = 0 ⊃ (s, cs);pcsf((n0 - 1) + 1)), paf), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ⊦ |
pcsf(0) = (s, cs), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , n ≠ 0, pcsf(n) ≠ pcsf((n - 1) + 1), frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜(s, cs) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(λ n0. (n0 = 0 ⊃ (s, cs);pcsf((n0 - 1) + 1)), paf), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ⊦
| pcsf(0) = (s, cs), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , n ≠ 0, pcsf(n) ≠ pcsf((n - 1) + 1), frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜(s, cs) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(λ n0. (n0 = 0 ⊃ (s, cs);pcsf((n0 - 1) + 1)), paf), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ⊦ |
Used simplifier rules: n ≠ 0 ⊦ m = n - 1 ↔ n = m + 1; (elim) Used terms: n, n1
| pcsf(0) = (s, cs), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ), ¬ cext !(πra(step, cstep, ren, cren, ⌜(s, cs) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα) ⊦ |
⊦ ⌜nf⌝ = nf(0) + ⌜λ n. nf(n + 1)⌝
Used simplifier rules: ⊦ a + σ = ⌜a '⌝ + σ; (s) Used terms: pcsf
| ⊦ ⌜nf⌝ = nf(0) + ⌜λ n. nf(n + 1)⌝ |
| # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), mon (⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα)⌝ ⌝ ), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ⊦ |
⊦ mon(σσ) ↔ (∀ n. ⌜n⌝ + ⌜1⌝ < # σσ → σσ[n] ⊑ σσ[n + 1])
# lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ), ∀ n. ⌜n⌝ + ⌜1⌝ < # ⌜λ n. ⌜repla (step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ ⌝ → ⌜λ n. ⌜repla (step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ ⌝ [n ] ⊑ ⌜λ n. ⌜repla (step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ ⌝ [n + 1 ] ⊦
Used terms: ⌜λ n. ⌜repla (step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ ⌝
| ⊦ mon(σσ) ↔ (∀ n. ⌜n⌝ + ⌜1⌝ < # σσ → σσ[n] ⊑ σσ[n + 1]) |
| # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ), ∀ n. ⌜n⌝ + ⌜1⌝ < # ⌜λ n. ⌜repla (step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ ⌝ → ⌜λ n. ⌜repla (step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ ⌝ [n ] ⊑ ⌜λ n. ⌜repla (step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ ⌝ [n + 1 ] ⊦ |
# lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ), ∀ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα)⌝ ⊑ ⌜repla (step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ ⊦
Used simplifier rules: ⊦ ⌜nf⌝ [n] = nf(n); (s) add-comm: ⊦ n∞1 + n∞2 = n∞2 + n∞1; from specification nat-inf add-assoc: ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2; from specification nat-inf ⊦ ⌜n⌝ ≠ ∞; (s) ⊦ ⌜m⌝ + n∞ = ∞ ↔ n∞ = ∞; (s) ⊦ n∞ < ∞ ↔ n∞ ≠ ∞; (s) ⊦ # ⌜nf⌝ = ∞; (s)
| # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ), ∀ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα)⌝ ⊑ ⌜repla (step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ ⊦ |
⊦ mon(σσ) ↔ (∀ n. ⌜n⌝ + ⌜1⌝ < # σσ → σσ[n] ⊑ σσ[n + 1])
# lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ∀ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα)⌝ ⊑ ⌜repla (step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ , ∃ n. ¬ ( ⌜n⌝ + ⌜1⌝ < # ⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ → ⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ [n] ⊑ ⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ [n + 1]) ⊦
Used terms: ⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) ⌝ ⌝
| ⊦ mon(σσ) ↔ (∀ n. ⌜n⌝ + ⌜1⌝ < # σσ → σσ[n] ⊑ σσ[n + 1]) |
| # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ∀ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα)⌝ ⊑ ⌜repla (step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ , ∃ n. ¬ ( ⌜n⌝ + ⌜1⌝ < # ⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ → ⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ [n] ⊑ ⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ [n + 1]) ⊦ |
# lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⊑ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(2 + n), paf.take(n + 1), aσ, aα)⌝ , ∀ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα)⌝ ⊑ ⌜repla (step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ ⊦
Used simplifier rules: a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ ⌜nf⌝ [n] = nf(n); (s) add-comm: ⊦ n∞1 + n∞2 = n∞2 + n∞1; from specification nat-inf add-assoc: ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2; from specification nat-inf ⊦ ⌜n⌝ ≠ ∞; (s) ⊦ ⌜m⌝ + n∞ = ∞ ↔ n∞ = ∞; (s) ⊦ n∞ < ∞ ↔ n∞ ≠ ∞; (s) ⊦ # ⌜nf⌝ = ∞; (s)
| # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⊑ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(2 + n), paf.take(n + 1), aσ, aα)⌝ , ∀ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα)⌝ ⊑ ⌜repla (step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ ⊦ |
# lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ⌜repla(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα)⌝ ⊑ ⌜repla (step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ , ¬ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⊑ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(2 + n), paf.take(n + 1), aσ, aα)⌝ ⊦
Used terms: n
| # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ⌜repla(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜hd(aσ) '⌝ + tl(aσ), aα)⌝ ⊑ ⌜repla (step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜hd(aσ) '⌝ + tl(aσ), aα) ⌝ , ¬ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⊑ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(2 + n), paf.take(n + 1), aσ, aα)⌝ ⊦ |
aσ = as + aσ0, # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , aσ ≠ [], frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), ⌜repla(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⊑ ⌜repla(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜as '⌝ + aσ0, aα)⌝ , cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⊑ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(2 + n), paf.take(n + 1), aσ, aα)⌝ ⊦
Used simplifier rules: ⊦ ¬ frag(IOAut(start, step, ext))([], α); (s) ⊦ σ ≠ [] → (a = hd(σ) ∧ σ0 = tl(σ) ↔ σ = a + σ0); (elim) Used terms: aσ, as, aσ0
| aσ = as + aσ0, # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , aσ ≠ [], frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), ⌜repla(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⊑ ⌜repla(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜as '⌝ + aσ0, aα)⌝ , cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⊑ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(2 + n), paf.take(n + 1), aσ, aα)⌝ ⊦ |
# lim(⌜λ n0. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n0 + 1), paf.take(n0), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n0. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n0 + 1), paf.take(n0), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ⌜repla(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⊑ ⌜repla(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜as '⌝ + aσ0, aα)⌝ , ¬ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⊑ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(2 + n), paf.take(n + 1), ⌜as '⌝ + aσ0, aα)⌝ ⊦
Used simplifier rules: ⊦ a + σ = ⌜a '⌝ + σ; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ ⌜a '⌝ + σ ≠ []; (s)
| # lim(⌜λ n0. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n0 + 1), paf.take(n0), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n0. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n0 + 1), paf.take(n0), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ⌜repla(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⊑ ⌜repla(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜as '⌝ + aσ0, aα)⌝ , ¬ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⊑ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(2 + n), paf.take(n + 1), ⌜as '⌝ + aσ0, aα)⌝ ⊦ |
⊦ nf.take(n + 1) = nf(0) + (λ n. nf(n + 1)).take(n)
# lim(⌜λ n0. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n0 + 1), paf.take(n0), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n0. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n0 + 1), paf.take(n0), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), ⌜repla(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⊑ ⌜repla(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜as '⌝ + aσ0, aα)⌝ , cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf(0) + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⊑ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(2 + n), paf.take(n + 1), ⌜as '⌝ + aσ0, aα)⌝ ⊦
Used terms: pcsf, n
| ⊦ nf.take(n + 1) = nf(0) + (λ n. nf(n + 1)).take(n) |
| # lim(⌜λ n0. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n0 + 1), paf.take(n0), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n0. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n0 + 1), paf.take(n0), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), ⌜repla(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⊑ ⌜repla(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜as '⌝ + aσ0, aα)⌝ , cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf(0) + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⊑ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(2 + n), paf.take(n + 1), ⌜as '⌝ + aσ0, aα)⌝ ⊦ |
# lim(⌜λ n0. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n0 + 1), paf.take(n0), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n0. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n0 + 1), paf.take(n0), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ⌜repla(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⊑ ⌜repla(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜as '⌝ + aσ0, aα)⌝ , ¬ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf(0) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⊑ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(2 + n), paf.take(n + 1), ⌜as '⌝ + aσ0, aα)⌝ ⊦
Used simplifier rules: ⊦ a + x = a ' + x; (s)
| # lim(⌜λ n0. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n0 + 1), paf.take(n0), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n0. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n0 + 1), paf.take(n0), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ⌜repla(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⊑ ⌜repla(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜as '⌝ + aσ0, aα)⌝ , ¬ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf(0) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⊑ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(2 + n), paf.take(n + 1), ⌜as '⌝ + aσ0, aα)⌝ ⊦ |
⊦ nf.take(n + 2) = nf(0) + (λ n. nf(n + 1)).take(n + 1)
# lim(⌜λ n0. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n0 + 1), paf.take(n0), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n0. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n0 + 1), paf.take(n0), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), ⌜repla(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⊑ ⌜repla(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜as '⌝ + aσ0, aα)⌝ , cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf(0) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⊑ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf(0) + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜as '⌝ + aσ0, aα)⌝ ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic Used terms: pcsf, n
| ⊦ nf.take(n + 2) = nf(0) + (λ n. nf(n + 1)).take(n + 1) |
| # lim(⌜λ n0. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n0 + 1), paf.take(n0), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n0. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n0 + 1), paf.take(n0), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), ⌜repla(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⊑ ⌜repla(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜as '⌝ + aσ0, aα)⌝ , cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf(0) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⊑ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf(0) + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜as '⌝ + aσ0, aα)⌝ ⊦ |
# lim(⌜λ n0. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n0 + 1), paf.take(n0), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n0. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n0 + 1), paf.take(n0), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ⌜repla(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⊑ ⌜repla(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜as '⌝ + aσ0, aα)⌝ , ¬ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf(0) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⊑ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf(0) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜as '⌝ + aσ0, aα)⌝ ⊦
Used simplifier rules: ⊦ a + x = a ' + x; (s)
| # lim(⌜λ n0. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n0 + 1), paf.take(n0), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) ≠ # lim(⌜λ n0. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n0 + 1), paf.take(n0), ⌜as '⌝ + aσ0, aα)⌝ ⌝ ) + ⌜1⌝ , frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ0, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ⌜repla(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⊑ ⌜repla(step, cstep, cren, ren, aren, cext, aext, (pcsf(0)._1, pcsf(0)._2) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜as '⌝ + aσ0, aα)⌝ , ¬ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf(0) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜as '⌝ + aσ0, aα)⌝ ⊑ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf(0) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜as '⌝ + aσ0, aα)⌝ ⊦ |
Used terms: s, cs
| # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , # repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) + 1 ≠ # repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα), frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα) ⊦ |
⊦ nounsharedextR(cren, cext, ren) ∧ Πok(ext, cext, ren, cren) ∧ frag*(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsl, pal) ∧ frag(IOAut(astart, astep, aext))(aσ, aα) ∧ cext !(πra(step, cstep, ren, cren, ⌜pcsl⌝ , ⌜pal⌝ )) ⊑ aext !(aα) → # repls(step, cstep, cren, ren, aren, cext, aext, pcsl, pal, aσ, aα) = # repla(step, cstep, cren, ren, aren, cext, aext, pcsl, pal, aσ, aα) + 1
# lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , # repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) + 1 ≠ # repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα), frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), nounsharedextR(cren, cext, ren) ∧ Πok(ext, cext, ren, cren) ∧ frag*(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf.take(n + 1), paf.take(n)) ∧ frag(IOAut(astart, astep, aext))(aσ, aα) ∧ cext !(πra(step, cstep, ren, cren, ⌜pcsf.take(n + 1)⌝ , ⌜paf.take(n)⌝ )) ⊑ aext !(aα) → # repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) = # repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) + 1 ⊦
Used terms: aren, ren, ext, astep, astart, paf.take(n), step, aext, cstart, cren, cstep, aα, pcsf.take(n + 1), start, aσ, cext
| ⊦ nounsharedextR(cren, cext, ren) ∧ Πok(ext, cext, ren, cren) ∧ frag*(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsl, pal) ∧ frag(IOAut(astart, astep, aext))(aσ, aα) ∧ cext !(πra(step, cstep, ren, cren, ⌜pcsl⌝ , ⌜pal⌝ )) ⊑ aext !(aα) → # repls(step, cstep, cren, ren, aren, cext, aext, pcsl, pal, aσ, aα) = # repla(step, cstep, cren, ren, aren, cext, aext, pcsl, pal, aσ, aα) + 1 |
| # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , # repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) + 1 ≠ # repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα), frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), nounsharedextR(cren, cext, ren) ∧ Πok(ext, cext, ren, cren) ∧ frag*(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf.take(n + 1), paf.take(n)) ∧ frag(IOAut(astart, astep, aext))(aσ, aα) ∧ cext !(πra(step, cstep, ren, cren, ⌜pcsf.take(n + 1)⌝ , ⌜paf.take(n)⌝ )) ⊑ aext !(aα) → # repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) = # repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) + 1 ⊦ |
# lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , # repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) + 1 ≠ # repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα), frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ cext !(πra(step, cstep, ren, cren, ⌜pcsf.take(n + 1)⌝ , ⌜paf.take(n)⌝ )) ⊑ aext !(aα) ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ fragω(IOAut(start, step, ext))(sf, af) → (frag*(IOAut(start, step, ext))(sf.take(n + 1), af.take(n)) ↔ true); (ss)
| # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , # repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) + 1 ≠ # repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα), frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(πra(step, cstep, ren, cren, ⌜pcsf⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ cext !(πra(step, cstep, ren, cren, ⌜pcsf.take(n + 1)⌝ , ⌜paf.take(n)⌝ )) ⊑ aext !(aα) ⊦ |
⊦ πra(lstep, rstep, lren, rren, ⌜psf⌝ , ⌜paf⌝ ) = lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ )
# lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , # repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) + 1 ≠ # repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα), frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ )) ⊑ aext !(aα), ¬ cext !(πra(step, cstep, ren, cren, ⌜pcsf.take(n + 1)⌝ , ⌜paf.take(n)⌝ )) ⊑ aext !(aα) ⊦
Used terms: paf, cstep, ren, cren, step, pcsf
| ⊦ πra(lstep, rstep, lren, rren, ⌜psf⌝ , ⌜paf⌝ ) = lim(⌜λ n. ⌜πra(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))⌝ ⌝ ) |
| # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , # repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) + 1 ≠ # repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα), frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ )) ⊑ aext !(aα), ¬ cext !(πra(step, cstep, ren, cren, ⌜pcsf.take(n + 1)⌝ , ⌜paf.take(n)⌝ )) ⊑ aext !(aα) ⊦ |
⊦ mon(σσ) ∧ σσ ≠ [] → (∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ lim(σσ)) ∧ (∀ m. ¬ # lim(σσ) < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜lim(σσ).take(m)⌝ ⊑ σσ[n]))
# lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , # repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) + 1 ≠ # repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα), frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ )) ⊑ aext !(aα), ¬ cext !(πra(step, cstep, ren, cren, ⌜pcsf.take(n + 1)⌝ , ⌜paf.take(n)⌝ )) ⊑ aext !(aα), mon(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ) ∧ ⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ≠ [] → (∀ n. ⌜n⌝ < # ⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ → ⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ [n] ⊑ lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ )) ∧ (∀ m. ¬ # lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜n⌝ < # ⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ∧ ⌜lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ [n])) ⊦
Used terms: ⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝
| ⊦ mon(σσ) ∧ σσ ≠ [] → (∀ n. ⌜n⌝ < # σσ → σσ[n] ⊑ lim(σσ)) ∧ (∀ m. ¬ # lim(σσ) < ⌜m⌝ → (∃ n. ⌜n⌝ < # σσ ∧ ⌜lim(σσ).take(m)⌝ ⊑ σσ[n])) |
| # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , # repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) + 1 ≠ # repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα), frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ )) ⊑ aext !(aα), ¬ cext !(πra(step, cstep, ren, cren, ⌜pcsf.take(n + 1)⌝ , ⌜paf.take(n)⌝ )) ⊑ aext !(aα), mon(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ) ∧ ⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ≠ [] → (∀ n. ⌜n⌝ < # ⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ → ⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ [n] ⊑ lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ )) ∧ (∀ m. ¬ # lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n. ⌜n⌝ < # ⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ∧ ⌜lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ [n])) ⊦ |
# lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , # repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) + 1 ≠ # repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα), frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ )) ⊑ aext !(aα), ¬ cext !(πra(step, cstep, ren, cren, ⌜pcsf.take(n + 1)⌝ , ⌜paf.take(n)⌝ )) ⊑ aext !(aα), mon(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ) → (∀ n0. ⌜πra(step, cstep, ren, cren, pcsf.take(n0 + 1), paf.take(n0))⌝ ⊑ lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ )) ∧ (∀ m. ¬ # lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n0. ⌜lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πra(step, cstep, ren, cren, pcsf.take(n0 + 1), paf.take(n0))⌝ )) ⊦
Used simplifier rules: ⊦ ⌜nf⌝ [n] = nf(n); (s) ⊦ ⌜m⌝ < ∞; (s) ⊦ # ⌜nf⌝ = ∞; (s) ⊦ [] ≠ ⌜nf⌝ ; (s)
| # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , # repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) + 1 ≠ # repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα), frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ )) ⊑ aext !(aα), ¬ cext !(πra(step, cstep, ren, cren, ⌜pcsf.take(n + 1)⌝ , ⌜paf.take(n)⌝ )) ⊑ aext !(aα), mon(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ) → (∀ n0. ⌜πra(step, cstep, ren, cren, pcsf.take(n0 + 1), paf.take(n0))⌝ ⊑ lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ )) ∧ (∀ m. ¬ # lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n0. ⌜lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πra(step, cstep, ren, cren, pcsf.take(n0 + 1), paf.take(n0))⌝ )) ⊦ |
# lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , # repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) + 1 ≠ # repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα), frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ), ¬ cext !(πra(step, cstep, ren, cren, ⌜pcsf.take(n + 1)⌝ , ⌜paf.take(n)⌝ )) ⊑ aext !(aα) ⊦
# lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , # repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) + 1 ≠ # repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα), frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ )) ⊑ aext !(aα), ¬ cext !(πra(step, cstep, ren, cren, ⌜pcsf.take(n + 1)⌝ , ⌜paf.take(n)⌝ )) ⊑ aext !(aα), ∀ n0. ⌜πra(step, cstep, ren, cren, pcsf.take(n0 + 1), paf.take(n0))⌝ ⊑ lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n0. ⌜lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πra(step, cstep, ren, cren, pcsf.take(n0 + 1), paf.take(n0))⌝ ) ⊦
| # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , # repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) + 1 ≠ # repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα), frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ), ¬ cext !(πra(step, cstep, ren, cren, ⌜pcsf.take(n + 1)⌝ , ⌜paf.take(n)⌝ )) ⊑ aext !(aα) ⊦ |
⊦ 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: cext, paf, cstep, cstart, ren, cren, start, step, pcsf, ext
| ⊦ 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))⌝ ⌝ ) |
| # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , # repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) + 1 ≠ # repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα), frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ )) ⊑ aext !(aα), ¬ cext !(πra(step, cstep, ren, cren, ⌜pcsf.take(n + 1)⌝ , ⌜paf.take(n)⌝ )) ⊑ aext !(aα), ∀ n0. ⌜πra(step, cstep, ren, cren, pcsf.take(n0 + 1), paf.take(n0))⌝ ⊑ lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ), ∀ m. ¬ # lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n0. ⌜lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πra(step, cstep, ren, cren, pcsf.take(n0 + 1), paf.take(n0))⌝ ) ⊦ |
# lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , # repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) + 1 ≠ # repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα), frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ )) ⊑ aext !(aα), ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ), ¬ cext !(πra(step, cstep, ren, cren, ⌜pcsf.take(n + 1)⌝ , ⌜paf.take(n)⌝ )) ⊑ aext !(aα), ∀ m. ¬ # lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n0. ⌜lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πra(step, cstep, ren, cren, pcsf.take(n0 + 1), paf.take(n0))⌝ ) ⊦
Used terms: n
| # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , # repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) + 1 ≠ # repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα), frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ )) ⊑ aext !(aα), ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⊑ lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ), ¬ cext !(πra(step, cstep, ren, cren, ⌜pcsf.take(n + 1)⌝ , ⌜paf.take(n)⌝ )) ⊑ aext !(aα), ∀ m. ¬ # lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n0. ⌜lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πra(step, cstep, ren, cren, pcsf.take(n0 + 1), paf.take(n0))⌝ ) ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
# lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , # repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) + 1 ≠ # repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα), frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ )) ⊑ aext !(aα), ¬ cext !(πra(step, cstep, ren, cren, ⌜pcsf.take(n + 1)⌝ , ⌜paf.take(n)⌝ )) ⊑ aext !(aα), ∀ m. ¬ # lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n0. ⌜lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πra(step, cstep, ren, cren, pcsf.take(n0 + 1), paf.take(n0))⌝ ), ∃ σ1. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ + σ1 = lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ) ⊦
Used terms: ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ , lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ )
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , # repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) + 1 ≠ # repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα), frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), cext !(lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ )) ⊑ aext !(aα), ¬ cext !(πra(step, cstep, ren, cren, ⌜pcsf.take(n + 1)⌝ , ⌜paf.take(n)⌝ )) ⊑ aext !(aα), ∀ m. ¬ # lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ) < ⌜m⌝ → (∃ n0. ⌜lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ).take(m)⌝ ⊑ ⌜πra(step, cstep, ren, cren, pcsf.take(n0 + 1), paf.take(n0))⌝ ), ∃ σ1. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ + σ1 = lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ) ⊦ |
⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ + cα = lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , # repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) + 1 ≠ # repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα), frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), ⌜cext !(πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n)))⌝ + cext !(cα) ⊑ aext !(aα), ¬ cext !(πra(step, cstep, ren, cren, ⌜pcsf.take(n + 1)⌝ , ⌜paf.take(n)⌝ )) ⊑ aext !(aα), ∀ m. ¬ ⌜# πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ + # cα < ⌜m⌝ → (∃ n0. ⌜(⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ + cα).take(m)⌝ ⊑ ⌜πra(step, cstep, ren, cren, pcsf.take(n0 + 1), paf.take(n0))⌝ ) ⊦
Used simplifier rules: append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream ⊦ # ⌜x⌝ = ⌜# x⌝ ; (s) ⊦ #(σ + σ1) = # σ + # σ1; (s) ⊦ ext !(⌜al⌝ + α2) = ⌜ext !(al)⌝ + ext !(α2); (s)
| ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ + cα = lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , # repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) + 1 ≠ # repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα), frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), ⌜cext !(πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n)))⌝ + cext !(cα) ⊑ aext !(aα), ¬ cext !(πra(step, cstep, ren, cren, ⌜pcsf.take(n + 1)⌝ , ⌜paf.take(n)⌝ )) ⊑ aext !(aα), ∀ m. ¬ ⌜# πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ + # cα < ⌜m⌝ → (∃ n0. ⌜(⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ + cα).take(m)⌝ ⊑ ⌜πra(step, cstep, ren, cren, pcsf.take(n0 + 1), paf.take(n0))⌝ ) ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ + cα = lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , # repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) + 1 ≠ # repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα), frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), ⌜cext !(πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n)))⌝ + cext !(cα) ⊑ aext !(aα), ∀ m. ¬ ⌜# πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ + # cα < ⌜m⌝ → (∃ n0. ⌜(⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ + cα).take(m)⌝ ⊑ ⌜πra(step, cstep, ren, cren, pcsf.take(n0 + 1), paf.take(n0))⌝ ), ∀ σ1. cext !(πra(step, cstep, ren, cren, ⌜pcsf.take(n + 1)⌝ , ⌜paf.take(n)⌝ )) + σ1 ≠ aext !(aα) ⊦
Used terms: cext !(πra(step, cstep, ren, cren, ⌜pcsf.take(n + 1)⌝ , ⌜paf.take(n)⌝ )), aext !(aα)
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ + cα = lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , # repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) + 1 ≠ # repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα), frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), ⌜cext !(πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n)))⌝ + cext !(cα) ⊑ aext !(aα), ∀ m. ¬ ⌜# πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ + # cα < ⌜m⌝ → (∃ n0. ⌜(⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ + cα).take(m)⌝ ⊑ ⌜πra(step, cstep, ren, cren, pcsf.take(n0 + 1), paf.take(n0))⌝ ), ∀ σ1. cext !(πra(step, cstep, ren, cren, ⌜pcsf.take(n + 1)⌝ , ⌜paf.take(n)⌝ )) + σ1 ≠ aext !(aα) ⊦ |
⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0)
⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ + cα = lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , # repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) + 1 ≠ # repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα), frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), ∀ σ1. cext !(πra(step, cstep, ren, cren, ⌜pcsf.take(n + 1)⌝ , ⌜paf.take(n)⌝ )) + σ1 ≠ aext !(aα), ∀ m. ¬ ⌜# πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ + # cα < ⌜m⌝ → (∃ n0. ⌜(⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ + cα).take(m)⌝ ⊑ ⌜πra(step, cstep, ren, cren, pcsf.take(n0 + 1), paf.take(n0))⌝ ), ∃ σ1. (⌜cext !(πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n)))⌝ + cext !(cα)) + σ1 = aext !(aα) ⊦
Used terms: ⌜cext !(πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n)))⌝ + cext !(cα), aext !(aα)
| ⊦ σ ⊑ σ0 ↔ (∃ σ1. σ + σ1 = σ0) |
| ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ + cα = lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , # repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) + 1 ≠ # repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα), frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), ∀ σ1. cext !(πra(step, cstep, ren, cren, ⌜pcsf.take(n + 1)⌝ , ⌜paf.take(n)⌝ )) + σ1 ≠ aext !(aα), ∀ m. ¬ ⌜# πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ + # cα < ⌜m⌝ → (∃ n0. ⌜(⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ + cα).take(m)⌝ ⊑ ⌜πra(step, cstep, ren, cren, pcsf.take(n0 + 1), paf.take(n0))⌝ ), ∃ σ1. (⌜cext !(πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n)))⌝ + cext !(cα)) + σ1 = aext !(aα) ⊦ |
(⌜cext !(πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n)))⌝ + cext !(cα)) + β = aext !(aα), ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ + cα = lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , # repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) + 1 ≠ # repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα), frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), ∀ m. ¬ ⌜# πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ + # cα < ⌜m⌝ → (∃ n0. ⌜(⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ + cα).take(m)⌝ ⊑ ⌜πra(step, cstep, ren, cren, pcsf.take(n0 + 1), paf.take(n0))⌝ ), ∀ σ1. cext !(πra(step, cstep, ren, cren, ⌜pcsf.take(n + 1)⌝ , ⌜paf.take(n)⌝ )) + σ1 ≠ aext !(aα) ⊦
| (⌜cext !(πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n)))⌝ + cext !(cα)) + β = aext !(aα), ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ + cα = lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , # repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) + 1 ≠ # repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα), frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), ∀ m. ¬ ⌜# πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ + # cα < ⌜m⌝ → (∃ n0. ⌜(⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ + cα).take(m)⌝ ⊑ ⌜πra(step, cstep, ren, cren, pcsf.take(n0 + 1), paf.take(n0))⌝ ), ∀ σ1. cext !(πra(step, cstep, ren, cren, ⌜pcsf.take(n + 1)⌝ , ⌜paf.take(n)⌝ )) + σ1 ≠ aext !(aα) ⊦ |
⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ + cα = lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ), (⌜cext !(πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n)))⌝ + cext !(cα)) + β = aext !(aα), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , cext !(πra(step, cstep, ren, cren, ⌜pcsf.take(n + 1)⌝ , ⌜paf.take(n)⌝ )) + cext !(cα) + β ≠ aext !(aα), # repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) + 1 ≠ # repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα), frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), ∀ m. ¬ ⌜# πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ + # cα < ⌜m⌝ → (∃ n0. ⌜(⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ + cα).take(m)⌝ ⊑ ⌜πra(step, cstep, ren, cren, pcsf.take(n0 + 1), paf.take(n0))⌝ ) ⊦
Used terms: cext !(cα) + β
| ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ + cα = lim(⌜λ n. ⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ ⌝ ), (⌜cext !(πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n)))⌝ + cext !(cα)) + β = aext !(aα), # lim(⌜λ n. ⌜repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) ≠ # lim(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα)⌝ ⌝ ) + ⌜1⌝ , cext !(πra(step, cstep, ren, cren, ⌜pcsf.take(n + 1)⌝ , ⌜paf.take(n)⌝ )) + cext !(cα) + β ≠ aext !(aα), # repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα) + 1 ≠ # repls(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), aσ, aα), frag(IOAut(astart, astep, aext))(aσ, aα), fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf), nounsharedextR(cren, cext, ren), Πok(ext, cext, ren, cren), ∀ m. ¬ ⌜# πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ + # cα < ⌜m⌝ → (∃ n0. ⌜(⌜πra(step, cstep, ren, cren, pcsf.take(n + 1), paf.take(n))⌝ + cα).take(m)⌝ ⊑ ⌜πra(step, cstep, ren, cren, pcsf.take(n0 + 1), paf.take(n0))⌝ ) ⊦ |
⊦ # psl = # pal + 1 → πra(lstep, rstep, lren, rren, ⌜psl⌝ , ⌜pal⌝ ) = ⌜πra(lstep, rstep, lren, rren, psl, pal)⌝
Used simplifier rules: ⊦ # nf.take(n) = n; (s) ⊦ m + n = m + n0 ↔ n = n0; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ ext !(⌜al⌝ ) = ⌜ext !(al)⌝ ; (s) append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2; from specification stream Used terms: pcsf.take(n + 1), paf.take(n), cstep, ren, cren, step
| ⊦ # psl = # pal + 1 → πra(lstep, rstep, lren, rren, ⌜psl⌝ , ⌜pal⌝ ) = ⌜πra(lstep, rstep, lren, rren, psl, pal)⌝ |
The following image shows the proof tree of sequent calculus. The proved goal is at the bottom. You can click on the nodes to view additional rules. See here for details on colors in a proof tree.