| ⊦ fragω(Π(IOAut(lstart, lstep, lext), IOAut(rstart, rstep, rext), lren, rren))(psf, paf) → πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))[0] = psf(0)._2 |
πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))[0] ≠ psf(0)._2, fragω(Π(IOAut(lstart, lstep, lext), IOAut(rstart, rstep, rext), lren, rren))(psf, paf) ⊦
| πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))[0] ≠ psf(0)._2, fragω(Π(IOAut(lstart, lstep, lext), IOAut(rstart, rstep, rext), lren, rren))(psf, paf) ⊦ |
πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))[0] ≠ psf(0)._2, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf) ⊦
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)
| πrs(lstep, rstep, lren, rren, psf.take(n + 1), paf.take(n))[0] ≠ psf(0)._2, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf) ⊦ |
πrs(lstep, rstep, lren, rren, psf.take(0 + 1), paf.take(0))[0] ≠ psf(0)._2, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf) ⊦
πrs(lstep, rstep, lren, rren, psf.take(n0 +1 + 1), paf.take(n0 +1))[0] ≠ psf(0)._2, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), ∀ lstep, rstep, lren, rren, psf, paf, lstart, rstart, lext, rext. ¬ ( πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[0] ≠ psf(0)._2 ∧ fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf)) ⊦
Used simplifier rules: Nat freely generated by 0, +1;;
| πrs(lstep, rstep, lren, rren, psf.take(0 + 1), paf.take(0))[0] ≠ psf(0)._2, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf) ⊦ |
πrs(lstep, rstep, lren, rren, psf(0) ', [])[0] ≠ psf(0)._2, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf) ⊦
Used simplifier rules: ⊦ nf.take(0) = []; (s) ⊦ nf.take(1) = nf(0) '; (s) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic
| πrs(lstep, rstep, lren, rren, psf(0) ', [])[0] ≠ psf(0)._2, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf) ⊦ |
Used simplifier rules: projstate-base: ⊦ πrs(lstep, rstep, lren, rren, (ls, rs) ', []) = rs '; ⊦ a '[0] = a; (s)
| πrs(lstep, rstep, lren, rren, psf.take(n0 +1 + 1), paf.take(n0 +1))[0] ≠ psf(0)._2, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), ∀ lstep, rstep, lren, rren, psf, paf, lstart, rstart, lext, rext. ¬ ( πrs(lstep, rstep, lren, rren, psf.take(n0 + 1), paf.take(n0))[0] ≠ psf(0)._2 ∧ fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf)) ⊦ |
πrs(lstep, rstep, lren, rren, psf.take(2 + n0), paf.take(n0 + 1))[0] ≠ psf(0)._2, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦
Used simplifier rules: ⊦ m +1 = m + 1; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic
| πrs(lstep, rstep, lren, rren, psf.take(2 + n0), paf.take(n0 + 1))[0] ≠ psf(0)._2, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦ |
⊦ nf.take(n + 2) = nf(0) + (λ n. nf(n + 1)).take(n + 1)
πrs(lstep, rstep, lren, rren, psf(0) + (λ n. psf(n + 1)).take(n0 + 1), paf.take(n0 + 1))[0] ≠ psf(0)._2, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic Used terms: psf, n0
| ⊦ nf.take(n + 2) = nf(0) + (λ n. nf(n + 1)).take(n + 1) |
| πrs(lstep, rstep, lren, rren, psf(0) + (λ n. psf(n + 1)).take(n0 + 1), paf.take(n0 + 1))[0] ≠ psf(0)._2, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦ |
πrs(lstep, rstep, lren, rren, psf(0) ' + (λ n. psf(n + 1)).take(n0 + 1), paf.take(n0 + 1))[0] ≠ psf(0)._2, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦
Used simplifier rules: ⊦ a + x = a ' + x; (s)
| πrs(lstep, rstep, lren, rren, psf(0) ' + (λ n. psf(n + 1)).take(n0 + 1), paf.take(n0 + 1))[0] ≠ psf(0)._2, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦ |
(ls, rs) = psf(0), πrs(lstep, rstep, lren, rren, psf(0) ' + (λ n. psf(n + 1)).take(n0 + 1), paf.take(n0 + 1))[0] ≠ psf(0)._2, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦
| (ls, rs) = psf(0), πrs(lstep, rstep, lren, rren, psf(0) ' + (λ n. psf(n + 1)).take(n0 + 1), paf.take(n0 + 1))[0] ≠ psf(0)._2, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦ |
(ls, rs) = psf(0), πrs(lstep, rstep, lren, rren, (ls, rs) ' + (λ n. psf(n + 1)).take(n0 + 1), paf.take(n0 + 1))[0] ≠ rs, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦
| (ls, rs) = psf(0), πrs(lstep, rstep, lren, rren, (ls, rs) ' + (λ n. psf(n + 1)).take(n0 + 1), paf.take(n0 + 1))[0] ≠ rs, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf, paf), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦ |
⊦ ⌜nf⌝ = nf(0) + ⌜λ n. nf(n + 1)⌝
(ls, rs) = psf(0), πrs(lstep, rstep, lren, rren, (ls, rs) ' + (λ n. psf(n + 1)).take(n0 + 1), paf.take(n0 + 1))[0] ≠ rs, frag(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf(0) + ⌜λ n. psf(n + 1)⌝ , ⌜paf⌝ ), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦
Used terms: psf
| ⊦ ⌜nf⌝ = nf(0) + ⌜λ n. nf(n + 1)⌝ |
| (ls, rs) = psf(0), πrs(lstep, rstep, lren, rren, (ls, rs) ' + (λ n. psf(n + 1)).take(n0 + 1), paf.take(n0 + 1))[0] ≠ rs, frag(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psf(0) + ⌜λ n. psf(n + 1)⌝ , ⌜paf⌝ ), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦ |
(ls, rs) = psf(0), πrs(lstep, rstep, lren, rren, (ls, rs) ' + (λ n. psf(n + 1)).take(n0 + 1), paf.take(n0 + 1))[0] ≠ rs, frag(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(⌜(ls, rs) '⌝ + ⌜λ n. psf(n + 1)⌝ , ⌜paf⌝ ), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦
Used simplifier rules: ⊦ a + σ = ⌜a '⌝ + σ; (s)
| (ls, rs) = psf(0), πrs(lstep, rstep, lren, rren, (ls, rs) ' + (λ n. psf(n + 1)).take(n0 + 1), paf.take(n0 + 1))[0] ≠ rs, frag(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(⌜(ls, rs) '⌝ + ⌜λ n. psf(n + 1)⌝ , ⌜paf⌝ ), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦ |
⊦ ⌜nf⌝ = nf(0) + ⌜λ n. nf(n + 1)⌝
(ls, rs) = psf(0), πrs(lstep, rstep, lren, rren, (ls, rs) ' + (λ n. psf(n + 1)).take(n0 + 1), paf.take(n0 + 1))[0] ≠ rs, frag(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren))) (⌜(ls, rs) '⌝ + ⌜λ n. psf(n + 1)⌝ , paf(0) + ⌜λ n. paf(n + 1)⌝ ), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦
Used terms: paf
| ⊦ ⌜nf⌝ = nf(0) + ⌜λ n. nf(n + 1)⌝ |
| (ls, rs) = psf(0), πrs(lstep, rstep, lren, rren, (ls, rs) ' + (λ n. psf(n + 1)).take(n0 + 1), paf.take(n0 + 1))[0] ≠ rs, frag(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren))) (⌜(ls, rs) '⌝ + ⌜λ n. psf(n + 1)⌝ , paf(0) + ⌜λ n. paf(n + 1)⌝ ), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦ |
(ls, rs) = psf(0), πrs(lstep, rstep, lren, rren, (ls, rs) ' + (λ n. psf(n + 1)).take(n0 + 1), paf.take(n0 + 1))[0] ≠ rs, frag(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren))) (⌜(ls, rs) '⌝ + ⌜λ n. psf(n + 1)⌝ , ⌜paf(0) '⌝ + ⌜λ n. paf(n + 1)⌝ ), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦
Used simplifier rules: ⊦ a + σ = ⌜a '⌝ + σ; (s)
| (ls, rs) = psf(0), πrs(lstep, rstep, lren, rren, (ls, rs) ' + (λ n. psf(n + 1)).take(n0 + 1), paf.take(n0 + 1))[0] ≠ rs, frag(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren))) (⌜(ls, rs) '⌝ + ⌜λ n. psf(n + 1)⌝ , ⌜paf(0) '⌝ + ⌜λ n. paf(n + 1)⌝ ), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦ |
⊦ frag(IOAut(start, step, ext))(⌜s '⌝ + σ, ⌜a '⌝ + α) ↔ step(s, a, hd(σ)) ∧ frag(IOAut(start, step, ext))(σ, α)
(ls, rs) = psf(0), πrs(lstep, rstep, lren, rren, (ls, rs) ' + (λ n. psf(n + 1)).take(n0 + 1), paf.take(n0 + 1))[0] ≠ rs, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), paf(0), hd(⌜λ n. psf(n + 1)⌝ )), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦
Used terms: Π(lext, rext, lren, rren), (ls, rs), ⌜λ n. paf(n + 1)⌝ , paf(0), Π(lstep, rstep, lren, rren, lext, rext), Π(lstart, rstart), ⌜λ n. psf(n + 1)⌝
| ⊦ frag(IOAut(start, step, ext))(⌜s '⌝ + σ, ⌜a '⌝ + α) ↔ step(s, a, hd(σ)) ∧ frag(IOAut(start, step, ext))(σ, α) |
| (ls, rs) = psf(0), πrs(lstep, rstep, lren, rren, (ls, rs) ' + (λ n. psf(n + 1)).take(n0 + 1), paf.take(n0 + 1))[0] ≠ rs, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), paf(0), hd(⌜λ n. psf(n + 1)⌝ )), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦ |
⊦ hd(⌜nf⌝ ) = nf(0)
(ls, rs) = psf(0), πrs(lstep, rstep, lren, rren, (ls, rs) ' + (λ n. psf(n + 1)).take(n0 + 1), paf.take(n0 + 1))[0] ≠ rs, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), paf(0), psf(0 + 1)), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦
Used terms: λ n. psf(n + 1)
| ⊦ hd(⌜nf⌝ ) = nf(0) |
| (ls, rs) = psf(0), πrs(lstep, rstep, lren, rren, (ls, rs) ' + (λ n. psf(n + 1)).take(n0 + 1), paf.take(n0 + 1))[0] ≠ rs, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), paf(0), psf(0 + 1)), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦ |
(ls, rs) = psf(0), πrs(lstep, rstep, lren, rren, (ls, rs) ' + (λ n. psf(n + 1)).take(n0 + 1), paf.take(n0 + 1))[0] ≠ rs, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), paf(0), psf(1)), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic
| (ls, rs) = psf(0), πrs(lstep, rstep, lren, rren, (ls, rs) ' + (λ n. psf(n + 1)).take(n0 + 1), paf.take(n0 + 1))[0] ≠ rs, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), paf(0), psf(1)), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦ |
⊦ nf.take(n + 1) = nf(0) + (λ n. nf(n + 1)).take(n)
(ls, rs) = psf(0), πrs(lstep, rstep, lren, rren, (ls, rs) ' + (psf(0 + 1) + (λ n. psf((n + 1) + 1)).take(n0)), paf.take(n0 + 1))[0] ≠ rs, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), paf(0), psf(1)), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦
Used terms: λ n. psf(n + 1), n0
| ⊦ nf.take(n + 1) = nf(0) + (λ n. nf(n + 1)).take(n) |
| (ls, rs) = psf(0), πrs(lstep, rstep, lren, rren, (ls, rs) ' + (psf(0 + 1) + (λ n. psf((n + 1) + 1)).take(n0)), paf.take(n0 + 1))[0] ≠ rs, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), paf(0), psf(1)), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦ |
(ls, rs) = psf(0), πrs(lstep, rstep, lren, rren, (ls, rs) ' + psf(1) ' + (λ n. psf(2 + n)).take(n0), paf.take(n0 + 1))[0] ≠ rs, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), paf(0), psf(1)), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a + x = a ' + x; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic
| (ls, rs) = psf(0), πrs(lstep, rstep, lren, rren, (ls, rs) ' + psf(1) ' + (λ n. psf(2 + n)).take(n0), paf.take(n0 + 1))[0] ≠ rs, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), paf(0), psf(1)), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦ |
⊦ nf.take(n + 1) = nf(0) + (λ n. nf(n + 1)).take(n)
(ls, rs) = psf(0), πrs(lstep, rstep, lren, rren, (ls, rs) ' + psf(1) ' + (λ n. psf(2 + n)).take(n0), paf(0) + (λ n. paf(n + 1)).take(n0))[0] ≠ rs, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), paf(0), psf(1)), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦
Used terms: paf, n0
| ⊦ nf.take(n + 1) = nf(0) + (λ n. nf(n + 1)).take(n) |
| (ls, rs) = psf(0), πrs(lstep, rstep, lren, rren, (ls, rs) ' + psf(1) ' + (λ n. psf(2 + n)).take(n0), paf(0) + (λ n. paf(n + 1)).take(n0))[0] ≠ rs, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), paf(0), psf(1)), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦ |
(ls, rs) = psf(0), πrs(lstep, rstep, lren, rren, (ls, rs) ' + psf(1) ' + (λ n. psf(2 + n)).take(n0), paf(0) ' + (λ n. paf(n + 1)).take(n0))[0] ≠ rs, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), paf(0), psf(1)), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦
Used simplifier rules: ⊦ a + x = a ' + x; (s)
| (ls, rs) = psf(0), πrs(lstep, rstep, lren, rren, (ls, rs) ' + psf(1) ' + (λ n. psf(2 + n)).take(n0), paf(0) ' + (λ n. paf(n + 1)).take(n0))[0] ≠ rs, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), paf(0), psf(1)), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦ |
(ls, rs) = psf(0), (ls0, rs0) = psf(1), πrs(lstep, rstep, lren, rren, (ls, rs) ' + psf(1) ' + (λ n. psf(2 + n)).take(n0), paf(0) ' + (λ n. paf(n + 1)).take(n0))[0] ≠ rs, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), paf(0), psf(1)), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦
| (ls, rs) = psf(0), (ls0, rs0) = psf(1), πrs(lstep, rstep, lren, rren, (ls, rs) ' + psf(1) ' + (λ n. psf(2 + n)).take(n0), paf(0) ' + (λ n. paf(n + 1)).take(n0))[0] ≠ rs, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), paf(0), psf(1)), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦ |
(ls0, rs0) = psf(1), (ls, rs) = psf(0), πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + (λ n. psf(2 + n)).take(n0), paf(0) ' + (λ n. paf(n + 1)).take(n0))[0] ≠ rs, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), paf(0), (ls0, rs0)), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦
| (ls0, rs0) = psf(1), (ls, rs) = psf(0), πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + (λ n. psf(2 + n)).take(n0), paf(0) ' + (λ n. paf(n + 1)).take(n0))[0] ≠ rs, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), paf(0), (ls0, rs0)), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦ |
⊦ Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), pa, (ls0, rs0)) ↔ rs = rs0 ∧ (∃ la. lstep(ls, la, ls0) ∧ pa = lren(la) ∧ ¬ cod(rren)(pa)) ∨ ls = ls0 ∧ (∃ ra. rstep(rs, ra, rs0) ∧ pa = rren(ra) ∧ ¬ cod(lren)(pa)) ∨ (∃ la, ra. lstep(ls, la, ls0) ∧ lext(la) ≠ None ∧ pa = lren(la) ∧ rstep(rs, ra, rs0) ∧ rext(ra) ≠ None ∧ pa = rren(ra))
(ls, rs) = psf(0), (ls0, rs0) = psf(1), πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + (λ n. psf(2 + n)).take(n0), paf(0) ' + (λ n. paf(n + 1)).take(n0))[0] ≠ rs, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0), rs = rs0 ∧ (∃ la. lstep(ls, la, ls0) ∧ paf(0) = lren(la) ∧ ¬ cod(rren)(paf(0))) ∨ ls = ls0 ∧ (∃ ra. rstep(rs, ra, rs0) ∧ paf(0) = rren(ra) ∧ ¬ cod(lren)(paf(0))) ∨ (∃ la, ra. lstep(ls, la, ls0) ∧ lext(la) ≠ None ∧ paf(0) = lren(la) ∧ rstep(rs, ra, rs0) ∧ rext(ra) ≠ None ∧ paf(0) = rren(ra)) ⊦
Used terms: rext, paf(0), rs, rstep, lren, rren, rs0, lstep, lext, ls, ls0
| ⊦ Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), pa, (ls0, rs0)) ↔ rs = rs0 ∧ (∃ la. lstep(ls, la, ls0) ∧ pa = lren(la) ∧ ¬ cod(rren)(pa)) ∨ ls = ls0 ∧ (∃ ra. rstep(rs, ra, rs0) ∧ pa = rren(ra) ∧ ¬ cod(lren)(pa)) ∨ (∃ la, ra. lstep(ls, la, ls0) ∧ lext(la) ≠ None ∧ pa = lren(la) ∧ rstep(rs, ra, rs0) ∧ rext(ra) ≠ None ∧ pa = rren(ra)) |
| (ls, rs) = psf(0), (ls0, rs0) = psf(1), πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + (λ n. psf(2 + n)).take(n0), paf(0) ' + (λ n. paf(n + 1)).take(n0))[0] ≠ rs, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0), rs = rs0 ∧ (∃ la. lstep(ls, la, ls0) ∧ paf(0) = lren(la) ∧ ¬ cod(rren)(paf(0))) ∨ ls = ls0 ∧ (∃ ra. rstep(rs, ra, rs0) ∧ paf(0) = rren(ra) ∧ ¬ cod(lren)(paf(0))) ∨ (∃ la, ra. lstep(ls, la, ls0) ∧ lext(la) ≠ None ∧ paf(0) = lren(la) ∧ rstep(rs, ra, rs0) ∧ rext(ra) ≠ None ∧ paf(0) = rren(ra)) ⊦ |
(ls0, rs0) = psf(1), (ls, rs) = psf(0), πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + (λ n. psf(2 + n)).take(n0), paf(0) ' + (λ n. paf(n + 1)).take(n0))[0] ≠ rs, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0), rs = rs0 ∧ lstep(ls, la, ls0) ∧ paf(0) = lren(la) ∧ ¬ cod(rren)(paf(0)) ∨ ls = ls0 ∧ rstep(rs, ra, rs0) ∧ paf(0) = rren(ra) ∧ ¬ cod(lren)(paf(0)) ∨ lstep(ls, la0, ls0) ∧ lext(la0) ≠ None ∧ paf(0) = lren(la0) ∧ rstep(rs, ra0, rs0) ∧ rext(ra0) ≠ None ∧ paf(0) = rren(ra0) ⊦
| (ls0, rs0) = psf(1), (ls, rs) = psf(0), πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + (λ n. psf(2 + n)).take(n0), paf(0) ' + (λ n. paf(n + 1)).take(n0))[0] ≠ rs, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0), rs = rs0 ∧ lstep(ls, la, ls0) ∧ paf(0) = lren(la) ∧ ¬ cod(rren)(paf(0)) ∨ ls = ls0 ∧ rstep(rs, ra, rs0) ∧ paf(0) = rren(ra) ∧ ¬ cod(lren)(paf(0)) ∨ lstep(ls, la0, ls0) ∧ lext(la0) ≠ None ∧ paf(0) = lren(la0) ∧ rstep(rs, ra0, rs0) ∧ rext(ra0) ≠ None ∧ paf(0) = rren(ra0) ⊦ |
(ls, rs) = psf(0), (ls0, rs0) = psf(1), paf(0) = lren(la), rs = rs0, πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + (λ n. psf(2 + n)).take(n0), paf(0) ' + (λ n. paf(n + 1)).take(n0))[0] ≠ rs, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), lstep(ls, la, ls0), ¬ cod(rren)(paf(0)), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦
(ls, rs) = psf(0), (ls0, rs0) = psf(1), ls = ls0, paf(0) = rren(ra), πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + (λ n. psf(2 + n)).take(n0), paf(0) ' + (λ n. paf(n + 1)).take(n0))[0] ≠ rs, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), rstep(rs, ra, rs0), ¬ cod(lren)(paf(0)), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦
(ls, rs) = psf(0), (ls0, rs0) = psf(1), paf(0) = lren(la0), paf(0) = rren(ra0), πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + (λ n. psf(2 + n)).take(n0), paf(0) ' + (λ n. paf(n + 1)).take(n0))[0] ≠ rs, lext(la0) ≠ None, rext(ra0) ≠ None, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), lstep(ls, la0, ls0), rstep(rs, ra0, rs0), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦
| (ls, rs) = psf(0), (ls0, rs0) = psf(1), paf(0) = lren(la), rs = rs0, πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + (λ n. psf(2 + n)).take(n0), paf(0) ' + (λ n. paf(n + 1)).take(n0))[0] ≠ rs, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), lstep(ls, la, ls0), ¬ cod(rren)(paf(0)), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦ |
(ls0, rs0) = psf(1), (ls, rs0) = psf(0), paf(0) = lren(la), πrs(lstep, rstep, lren, rren, (ls, rs0) ' + (ls0, rs0) ' + (λ n. psf(2 + n)).take(n0), lren(la) ' + (λ n. paf(n + 1)).take(n0))[0] ≠ rs0, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), lstep(ls, la, ls0), ¬ cod(rren)(lren(la)), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦
| (ls0, rs0) = psf(1), (ls, rs0) = psf(0), paf(0) = lren(la), πrs(lstep, rstep, lren, rren, (ls, rs0) ' + (ls0, rs0) ' + (λ n. psf(2 + n)).take(n0), lren(la) ' + (λ n. paf(n + 1)).take(n0))[0] ≠ rs0, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), lstep(ls, la, ls0), ¬ cod(rren)(lren(la)), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦ |
⊦ # psl = # pal ∧ lstep(ls, la, ls0) ∧ ¬ cod(rren)(lren(la)) → πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs) ' + psl, lren(la) ' + pal) = πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psl, pal)
# (λ n. psf(2 + n)).take(n0) = # (λ n. paf(n + 1)).take(n0), (ls, rs0) = psf(0), (ls0, rs0) = psf(1), paf(0) = lren(la), πrs(lstep, rstep, lren, rren, (ls0, rs0) ' + (λ n. psf(2 + n)).take(n0), (λ n. paf(n + 1)).take(n0))[0] ≠ rs0, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), lstep(ls, la, ls0), ¬ cod(rren)(lren(la)), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦
Used simplifier rules: ⊦ # nf.take(n) = n; (s) Used terms: (λ n. psf(2 + n)).take(n0), rs0, (λ n. paf(n + 1)).take(n0), rstep, lren, rren, la, lstep, ls, ls0
| ⊦ # psl = # pal ∧ lstep(ls, la, ls0) ∧ ¬ cod(rren)(lren(la)) → πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs) ' + psl, lren(la) ' + pal) = πrs(lstep, rstep, lren, rren, (ls0, rs) ' + psl, pal) |
| # (λ n. psf(2 + n)).take(n0) = # (λ n. paf(n + 1)).take(n0), (ls, rs0) = psf(0), (ls0, rs0) = psf(1), paf(0) = lren(la), πrs(lstep, rstep, lren, rren, (ls0, rs0) ' + (λ n. psf(2 + n)).take(n0), (λ n. paf(n + 1)).take(n0))[0] ≠ rs0, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), lstep(ls, la, ls0), ¬ cod(rren)(lren(la)), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦ |
(ls0, rs0) = psf(1), (ls, rs0) = psf(0), paf(0) = lren(la), πrs(lstep, rstep, lren, rren, (ls0, rs0) ' + (λ n. psf(2 + n)).take(n0), (λ n. paf(n + 1)).take(n0))[0] ≠ rs0, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), lstep(ls, la, ls0), ¬ cod(rren)(lren(la)), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦
Used simplifier rules: ⊦ # nf.take(n) = n; (s)
| (ls0, rs0) = psf(1), (ls, rs0) = psf(0), paf(0) = lren(la), πrs(lstep, rstep, lren, rren, (ls0, rs0) ' + (λ n. psf(2 + n)).take(n0), (λ n. paf(n + 1)).take(n0))[0] ≠ rs0, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), lstep(ls, la, ls0), ¬ cod(rren)(lren(la)), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦ |
(ls, rs0) = psf(0), (ls0, rs0) = psf(1), paf(0) = lren(la), πrs(lstep, rstep, lren, rren, (ls0, rs0) ' + (λ n. psf(2 + n)).take(n0), (λ n. paf(n + 1)).take(n0))[0] ≠ rs0, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), lstep(ls, la, ls0), ¬ cod(rren)(lren(la)), πrs(lstep, rstep, lren, rren, (λ n. psf(n + 1)).take(n0 + 1), (λ n. paf(n + 1)).take(n0))[0] = psf(0 + 1)._2 ∨ ¬ fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)) ⊦
Used terms: lstep, rstep, lren, rren, λ n. psf(n + 1), λ n. paf(n + 1), lstart, rstart, lext, rext
| (ls, rs0) = psf(0), (ls0, rs0) = psf(1), paf(0) = lren(la), πrs(lstep, rstep, lren, rren, (ls0, rs0) ' + (λ n. psf(2 + n)).take(n0), (λ n. paf(n + 1)).take(n0))[0] ≠ rs0, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), lstep(ls, la, ls0), ¬ cod(rren)(lren(la)), πrs(lstep, rstep, lren, rren, (λ n. psf(n + 1)).take(n0 + 1), (λ n. paf(n + 1)).take(n0))[0] = psf(0 + 1)._2 ∨ ¬ fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)) ⊦ |
(ls0, πrs(lstep, rstep, lren, rren, (λ n. psf(n + 1)).take(n0 + 1), (λ n. paf(n + 1)).take(n0))[0]) = psf(1), (ls, πrs(lstep, rstep, lren, rren, (λ n. psf(n + 1)).take(n0 + 1), (λ n. paf(n + 1)).take(n0))[0]) = psf(0), paf(0) = lren(la), πrs(lstep, rstep, lren, rren, psf(1) ' + (λ n. psf(2 + n)).take(n0), (λ n. paf(n + 1)).take(n0))[0] ≠ πrs(lstep, rstep, lren, rren, (λ n. psf(n + 1)).take(n0 + 1), (λ n. paf(n + 1)).take(n0))[0], fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), lstep(ls, la, ls0), ¬ cod(rren)(lren(la)) ⊦
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic
| (ls0, πrs(lstep, rstep, lren, rren, (λ n. psf(n + 1)).take(n0 + 1), (λ n. paf(n + 1)).take(n0))[0]) = psf(1), (ls, πrs(lstep, rstep, lren, rren, (λ n. psf(n + 1)).take(n0 + 1), (λ n. paf(n + 1)).take(n0))[0]) = psf(0), paf(0) = lren(la), πrs(lstep, rstep, lren, rren, psf(1) ' + (λ n. psf(2 + n)).take(n0), (λ n. paf(n + 1)).take(n0))[0] ≠ πrs(lstep, rstep, lren, rren, (λ n. psf(n + 1)).take(n0 + 1), (λ n. paf(n + 1)).take(n0))[0], fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), lstep(ls, la, ls0), ¬ cod(rren)(lren(la)) ⊦ |
⊦ nf.take(n + 1) = nf(0) + (λ n. nf(n + 1)).take(n)
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ a + x = a ' + x; (s) Used terms: λ n. psf(n + 1), n0
| ⊦ nf.take(n + 1) = nf(0) + (λ n. nf(n + 1)).take(n) |
| (ls, rs) = psf(0), (ls0, rs0) = psf(1), ls = ls0, paf(0) = rren(ra), πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + (λ n. psf(2 + n)).take(n0), paf(0) ' + (λ n. paf(n + 1)).take(n0))[0] ≠ rs, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), rstep(rs, ra, rs0), ¬ cod(lren)(paf(0)), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦ |
(ls0, rs0) = psf(1), (ls0, rs) = psf(0), paf(0) = rren(ra), πrs(lstep, rstep, lren, rren, (ls0, rs) ' + (ls0, rs0) ' + (λ n. psf(2 + n)).take(n0), rren(ra) ' + (λ n. paf(n + 1)).take(n0))[0] ≠ rs, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), rstep(rs, ra, rs0), ¬ cod(lren)(rren(ra)), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦
| (ls0, rs0) = psf(1), (ls0, rs) = psf(0), paf(0) = rren(ra), πrs(lstep, rstep, lren, rren, (ls0, rs) ' + (ls0, rs0) ' + (λ n. psf(2 + n)).take(n0), rren(ra) ' + (λ n. paf(n + 1)).take(n0))[0] ≠ rs, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), rstep(rs, ra, rs0), ¬ cod(lren)(rren(ra)), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦ |
⊦ # psl = # pal ∧ rstep(rs, ra, rs0) ∧ ¬ cod(lren)(rren(ra)) → πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls, rs0) ' + psl, rren(ra) ' + pal) = rs ' + πrs(lstep, rstep, lren, rren, (ls, rs0) ' + psl, pal)
Used simplifier rules: ⊦ # nf.take(n) = n; (s) ⊦ (a ' + x)[0] = a; (s) a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: (λ n. psf(2 + n)).take(n0), rs, ra, (λ n. paf(n + 1)).take(n0), rstep, lren, rren, rs0, lstep, ls0
| ⊦ # psl = # pal ∧ rstep(rs, ra, rs0) ∧ ¬ cod(lren)(rren(ra)) → πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls, rs0) ' + psl, rren(ra) ' + pal) = rs ' + πrs(lstep, rstep, lren, rren, (ls, rs0) ' + psl, pal) |
| (ls, rs) = psf(0), (ls0, rs0) = psf(1), paf(0) = lren(la0), paf(0) = rren(ra0), πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + (λ n. psf(2 + n)).take(n0), paf(0) ' + (λ n. paf(n + 1)).take(n0))[0] ≠ rs, lext(la0) ≠ None, rext(ra0) ≠ None, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), lstep(ls, la0, ls0), rstep(rs, ra0, rs0), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦ |
(ls0, rs0) = psf(1), (ls, rs) = psf(0), lren(la0) = rren(ra0), paf(0) = rren(ra0), πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + (λ n. psf(2 + n)).take(n0), rren(ra0) ' + (λ n. paf(n + 1)).take(n0))[0] ≠ rs, lext(la0) ≠ None, rext(ra0) ≠ None, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), lstep(ls, la0, ls0), rstep(rs, ra0, rs0), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦
| (ls0, rs0) = psf(1), (ls, rs) = psf(0), lren(la0) = rren(ra0), paf(0) = rren(ra0), πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + (λ n. psf(2 + n)).take(n0), rren(ra0) ' + (λ n. paf(n + 1)).take(n0))[0] ≠ rs, lext(la0) ≠ None, rext(ra0) ≠ None, fragω(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(λ n. psf(n + 1), λ n. paf(n + 1)), lstep(ls, la0, ls0), rstep(rs, ra0, rs0), ∀ lstep0, rstep0, lren0, rren0, psf0, paf0, lstart0, rstart0, lext0, rext0. πrs(lstep0, rstep0, lren0, rren0, psf0.take(n0 + 1), paf0.take(n0))[0] = psf0(0)._2 ∨ ¬ fragω(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))(psf0, paf0) ⊦ |
pa = lren(la) ⊦ # psl = # pal ∧ rstep(rs, ra, rs0) ∧ rren(ra) = lren(la) ∧ lstep(ls, la, ls0) → πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + psl, pa ' + pal) = rs ' + πrs(lstep, rstep, lren, rren, (ls0, rs0) ' + psl, pal)
Used simplifier rules: ⊦ # nf.take(n) = n; (s) ⊦ (a ' + x)[0] = a; (s) a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: rren(ra0), (λ n. psf(2 + n)).take(n0), rs, ra0, (λ n. paf(n + 1)).take(n0), rstep, lren, rren, la0, rs0, lstep, ls, ls0
| pa = lren(la) ⊦ # psl = # pal ∧ rstep(rs, ra, rs0) ∧ rren(ra) = lren(la) ∧ lstep(ls, la, ls0) → πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + psl, pa ' + pal) = rs ' + πrs(lstep, rstep, lren, rren, (ls0, rs0) ' + 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.