| ⊦ nounsharedextR(cren, cext, ren) ∧ Πok(ext, cext, ren, cren) ∧ fragω(IOAut(Π(start, cstart), Π(step, cstep, ren, cren, ext, cext), Π(ext, cext, ren, cren)))(pcsf, paf) ∧ frag(IOAut(astart, astep, aext))(⌜as '⌝ + aσ, aα) ∧ 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σ, aα)⌝ ⌝ ) |
frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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), ⌜as '⌝ + aσ, aα)⌝ ⌝ ) ⊦
| frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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), ⌜as '⌝ + 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α)⌝ ⌝ )
frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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), ⌜as '⌝ + 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))(⌜as '⌝ + 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), ⌜as '⌝ + aσ, aα)⌝ ⌝ ) ⊦
Used terms: aren, ren, ext, pcsf(0)._1, as, astep, paf, astart, step, aext, cstart, cren, cstep, aα, start, 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α)⌝ ⌝ ) |
| frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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), ⌜as '⌝ + 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))(⌜as '⌝ + 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), ⌜as '⌝ + aσ, aα)⌝ ⌝ ) ⊦ |
frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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), ⌜as '⌝ + 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) ∧ 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), ⌜as '⌝ + aσ, aα)⌝ ⌝ ) ⊦
Used simplifier rules: ⊦ a + σ = ⌜a '⌝ + σ; (s)
| frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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), ⌜as '⌝ + 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) ∧ 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), ⌜as '⌝ + aσ, aα)⌝ ⌝ ) ⊦ |
frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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), ⌜as '⌝ + 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) ∧ cext !(πra(step, cstep, ren, cren, ⌜(pcsf(0)._1, pcsf(0)._2) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα)
frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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), ⌜as '⌝ + 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), ⌜as '⌝ + aσ, aα)⌝ ⌝ ) ⊦
| frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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), ⌜as '⌝ + 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) ∧ cext !(πra(step, cstep, ren, cren, ⌜(pcsf(0)._1, pcsf(0)._2) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα) |
⊦ ⌜nf⌝ = nf(0) + ⌜λ n. nf(n + 1)⌝
frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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(0) + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + 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) ∧ cext !(πra(step, cstep, ren, cren, ⌜(pcsf(0)._1, pcsf(0)._2) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα)
Used terms: pcsf
| ⊦ ⌜nf⌝ = nf(0) + ⌜λ n. nf(n + 1)⌝ |
| frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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(0) + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + 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) ∧ cext !(πra(step, cstep, ren, cren, ⌜(pcsf(0)._1, pcsf(0)._2) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα) |
frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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(0) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + 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) ∧ 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)
| frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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(0) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + 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) ∧ cext !(πra(step, cstep, ren, cren, ⌜(pcsf(0)._1, pcsf(0)._2) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα) |
(s, cs) = pcsf(0), frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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(0) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + 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) ∧ cext !(πra(step, cstep, ren, cren, ⌜(pcsf(0)._1, pcsf(0)._2) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα)
| (s, cs) = pcsf(0), frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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(0) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα), ¬ mon(⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + 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) ∧ cext !(πra(step, cstep, ren, cren, ⌜(pcsf(0)._1, pcsf(0)._2) '⌝ + ⌜λ n. pcsf(n + 1)⌝ , ⌜paf⌝ )) ⊑ aext !(aα) |
(s, cs) = pcsf(0), frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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, ⌜(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σ, aα)⌝ ⌝ ) ⊦
| (s, cs) = pcsf(0), frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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, ⌜(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σ, aα)⌝ ⌝ ) ⊦ |
(s, cs) = pcsf(0), pcsf ≠ (s, cs) ' + (λ n. pcsf(n + 1)), frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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, ⌜(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σ, aα)⌝ ⌝ ) ⊦
Used formulas: pcsf = (s, cs) ' + (λ n. pcsf(n + 1))
| (s, cs) = pcsf(0), pcsf ≠ (s, cs) ' + (λ n. pcsf(n + 1)), frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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, ⌜(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σ, aα)⌝ ⌝ ) ⊦ |
⊦ x + nf = (λ n. (n < # x ⊃ x[n];nf(n - # x)))
(s, cs) = pcsf(0), pcsf ≠ (λ n. (n < # (s, cs) ' ⊃ (s, cs) '[n];pcsf((n - # (s, cs) ') + 1))), frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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, ⌜(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σ, aα)⌝ ⌝ ) ⊦
Used terms: (s, cs) ', λ n. pcsf(n + 1)
| ⊦ x + nf = (λ n. (n < # x ⊃ x[n];nf(n - # x))) |
| (s, cs) = pcsf(0), pcsf ≠ (λ n. (n < # (s, cs) ' ⊃ (s, cs) '[n];pcsf((n - # (s, cs) ') + 1))), frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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, ⌜(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σ, aα)⌝ ⌝ ) ⊦ |
(s, cs) = pcsf(0), pcsf(n) ≠ (n = 0 ⊃ (s, cs);pcsf((n - 1) + 1)), frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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, ⌜(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σ, aα)⌝ ⌝ ) ⊦
Used simplifier rules: ⊦ # a ' = 0 +1; (s) ⊦ a '[0] = a; (s) ⊦ m < 1 ↔ m = 0; (s)
| (s, cs) = pcsf(0), pcsf(n) ≠ (n = 0 ⊃ (s, cs);pcsf((n - 1) + 1)), frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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, ⌜(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σ, aα)⌝ ⌝ ) ⊦ |
(s, cs) = pcsf(0), n ≠ 0, pcsf(n) ≠ pcsf((n - 1) + 1), frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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, ⌜(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σ, aα)⌝ ⌝ ) ⊦
| (s, cs) = pcsf(0), n ≠ 0, pcsf(n) ≠ pcsf((n - 1) + 1), frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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, ⌜(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σ, aα)⌝ ⌝ ) ⊦ |
Used simplifier rules: n ≠ 0 ⊦ m = n - 1 ↔ n = m + 1; (elim) Used terms: n, n1
| frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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), ⌜as '⌝ + 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), ⌜as '⌝ + aσ, aα)⌝ ⌝ ) ⊦ |
⊦ mon(σσ) ↔ (∀ n. ⌜n⌝ + ⌜1⌝ < # σσ → σσ[n] ⊑ σσ[n + 1])
frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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), ⌜as '⌝ + 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), ⌜as '⌝ + 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), ⌜as '⌝ + 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), ⌜as '⌝ + 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), ⌜as '⌝ + aσ, aα) ⌝ ⌝
| ⊦ mon(σσ) ↔ (∀ n. ⌜n⌝ + ⌜1⌝ < # σσ → σσ[n] ⊑ σσ[n + 1]) |
| frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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), ⌜as '⌝ + 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), ⌜as '⌝ + 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), ⌜as '⌝ + 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), ⌜as '⌝ + aσ, aα)⌝ ⌝ [n + 1 ] ⊦ |
frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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), ⌜as '⌝ + 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), ⌜as '⌝ + 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), ⌜as '⌝ + 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)
| frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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), ⌜as '⌝ + 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), ⌜as '⌝ + 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), ⌜as '⌝ + aσ, aα)⌝ ⊦ |
⊦ mon(σσ) ↔ (∀ n. ⌜n⌝ + ⌜1⌝ < # σσ → σσ[n] ⊑ σσ[n + 1])
frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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), ⌜as '⌝ + 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), ⌜as '⌝ + aσ, aα)⌝ , ∃ n. ¬ ( ⌜n⌝ + ⌜1⌝ < # ⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ, aα)⌝ ⌝ → ⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ, aα)⌝ ⌝ [n] ⊑ ⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ, aα)⌝ ⌝ [n + 1]) ⊦
Used terms: ⌜λ n. ⌜repla (step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ, aα) ⌝ ⌝
| ⊦ mon(σσ) ↔ (∀ n. ⌜n⌝ + ⌜1⌝ < # σσ → σσ[n] ⊑ σσ[n + 1]) |
| frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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), ⌜as '⌝ + 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), ⌜as '⌝ + aσ, aα)⌝ , ∃ n. ¬ ( ⌜n⌝ + ⌜1⌝ < # ⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ, aα)⌝ ⌝ → ⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ, aα)⌝ ⌝ [n] ⊑ ⌜λ n. ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(n + 1), paf.take(n), ⌜as '⌝ + aσ, aα)⌝ ⌝ [n + 1]) ⊦ |
frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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), ⌜as '⌝ + aσ, aα)⌝ ⊑ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(2 + n), paf.take(n + 1), ⌜as '⌝ + 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), ⌜as '⌝ + 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), ⌜as '⌝ + 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)
| frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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), ⌜as '⌝ + aσ, aα)⌝ ⊑ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(2 + n), paf.take(n + 1), ⌜as '⌝ + 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), ⌜as '⌝ + 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), ⌜as '⌝ + aσ, aα)⌝ ⊦ |
⊦ nf.take(n + 1) = nf(0) + (λ n. nf(n + 1)).take(n)
frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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) + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜as '⌝ + aσ, aα)⌝ ⊑ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(2 + n), paf.take(n + 1), ⌜as '⌝ + 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), ⌜as '⌝ + 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), ⌜as '⌝ + aσ, aα)⌝ ⊦
Used terms: pcsf, n
| ⊦ nf.take(n + 1) = nf(0) + (λ n. nf(n + 1)).take(n) |
| frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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) + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜as '⌝ + aσ, aα)⌝ ⊑ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(2 + n), paf.take(n + 1), ⌜as '⌝ + 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), ⌜as '⌝ + 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), ⌜as '⌝ + aσ, aα)⌝ ⊦ |
frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜as '⌝ + aσ, aα)⌝ ⊑ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(2 + n), paf.take(n + 1), ⌜as '⌝ + 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), ⌜as '⌝ + 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), ⌜as '⌝ + aσ, aα)⌝ ⊦
Used simplifier rules: ⊦ a + x = a ' + x; (s)
| frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜as '⌝ + aσ, aα)⌝ ⊑ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf.take(2 + n), paf.take(n + 1), ⌜as '⌝ + 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), ⌜as '⌝ + 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), ⌜as '⌝ + aσ, aα)⌝ ⊦ |
⊦ nf.take(n + 2) = nf(0) + (λ n. nf(n + 1)).take(n + 1)
frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜as '⌝ + aσ, aα)⌝ ⊑ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf(0) + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜as '⌝ + 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), ⌜as '⌝ + 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), ⌜as '⌝ + 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) |
| frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜as '⌝ + aσ, aα)⌝ ⊑ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf(0) + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜as '⌝ + 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), ⌜as '⌝ + 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), ⌜as '⌝ + aσ, aα)⌝ ⊦ |
frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜as '⌝ + aσ, aα)⌝ ⊑ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf(0) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜as '⌝ + 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), ⌜as '⌝ + 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), ⌜as '⌝ + aσ, aα)⌝ ⊦
Used simplifier rules: ⊦ a + x = a ' + x; (s)
| frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜as '⌝ + aσ, aα)⌝ ⊑ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf(0) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜as '⌝ + 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), ⌜as '⌝ + 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), ⌜as '⌝ + aσ, aα)⌝ ⊦ |
frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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), ⌜as '⌝ + 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), ⌜as '⌝ + aσ, aα)⌝ , ¬ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf(0) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜as '⌝ + aσ, aα)⌝ ⊑ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf(0) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜as '⌝ + aσ, aα)⌝ ⊦
Used terms: n
| frag(IOAut(astart, astep, aext))(⌜as '⌝ + 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), ⌜as '⌝ + 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), ⌜as '⌝ + aσ, aα)⌝ , ¬ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf(0) ' + (λ n. pcsf(n + 1)).take(n), paf.take(n), ⌜as '⌝ + aσ, aα)⌝ ⊑ ⌜repla(step, cstep, cren, ren, aren, cext, aext, pcsf(0) ' + (λ n. pcsf(n + 1)).take(n + 1), paf.take(n + 1), ⌜as '⌝ + aσ, aα)⌝ ⊦ |
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.