| exec*(Π(IOAut(lstart, lstep, lext), IOAut(rstart, rstep, rext), lren, rren))(psl, pal) ⊦ exec*(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, psl, pal), πra(lstep, rstep, lren, rren, psl, pal)) |
exec*(Π(IOAut(lstart, lstep, lext), IOAut(rstart, rstep, rext), lren, rren))(psl, pal), ¬ exec*(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, psl, pal), πra(lstep, rstep, lren, rren, psl, pal)) ⊦
| exec*(Π(IOAut(lstart, lstep, lext), IOAut(rstart, rstep, rext), lren, rren))(psl, pal), ¬ exec*(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, psl, pal), πra(lstep, rstep, lren, rren, psl, pal)) ⊦ |
frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal), Π(lstart, rstart)(psl[0]) ⊦ frag*(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, psl, pal), πra(lstep, rstep, lren, rren, psl, pal)) ∧ rstart(πrs(lstep, rstep, lren, rren, psl, pal)[0])
Used simplifier rules: ⊦ IOAut(start, step, ext).start = start; (s) ⊦ exec*(ioa)(sl, al) ↔ frag*(ioa)(sl, al) ∧ ioa.start(sl[0]); (s) ⊦ Π(IOAut(lstart, lstep, lext), IOAut(rstart, rstep, rext), lren, rren) = IOAut (Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)); (s)
| frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal), Π(lstart, rstart)(psl[0]) ⊦ frag*(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, psl, pal), πra(lstep, rstep, lren, rren, psl, pal)) ∧ rstart(πrs(lstep, rstep, lren, rren, psl, pal)[0]) |
⊦ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal) → πrs(lstep, rstep, lren, rren, psl, pal) ≠ [] ∧ πrs(lstep, rstep, lren, rren, psl, pal).head = psl.head._2
frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal), Π(lstart, rstart)(psl[0]), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal) → πrs(lstep, rstep, lren, rren, psl, pal) ≠ [] ∧ πrs(lstep, rstep, lren, rren, psl, pal).head = psl.head._2 ⊦ frag*(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, psl, pal), πra(lstep, rstep, lren, rren, psl, pal)) ∧ rstart(πrs(lstep, rstep, lren, rren, psl, pal)[0])
Used terms: rext, psl, pal, rstep, rstart, lren, rren, lstart, lstep, lext
| ⊦ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal) → πrs(lstep, rstep, lren, rren, psl, pal) ≠ [] ∧ πrs(lstep, rstep, lren, rren, psl, pal).head = psl.head._2 |
| frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal), Π(lstart, rstart)(psl[0]), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal) → πrs(lstep, rstep, lren, rren, psl, pal) ≠ [] ∧ πrs(lstep, rstep, lren, rren, psl, pal).head = psl.head._2 ⊦ frag*(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, psl, pal), πra(lstep, rstep, lren, rren, psl, pal)) ∧ rstart(πrs(lstep, rstep, lren, rren, psl, pal)[0]) |
πrs(lstep, rstep, lren, rren, psl, pal) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal), Π(lstart, rstart)(psl[0]) ⊦ frag*(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, psl, pal), πra(lstep, rstep, lren, rren, psl, pal)) ∧ rstart(psl.head._2)
Used simplifier rules: finfrag-init: ⊦ frag* (IOAut (Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren))) (psl, pal) → πrs(lstep, rstep, lren, rren, psl, pal).head = psl.head._2; ⊦ x ≠ [] → x[0] = x.head; (s)
| πrs(lstep, rstep, lren, rren, psl, pal) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal), Π(lstart, rstart)(psl[0]) ⊦ frag*(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, psl, pal), πra(lstep, rstep, lren, rren, psl, pal)) ∧ rstart(psl.head._2) |
psl = ps + psl0, psl ≠ [], πrs(lstep, rstep, lren, rren, psl, pal) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal), Π(lstart, rstart)(psl[0]) ⊦ frag*(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, psl, pal), πra(lstep, rstep, lren, rren, psl, pal)) ∧ rstart(ps._2)
Used simplifier rules: ⊦ ¬ frag*(IOAut(start, step, ext))([], al); (s) x ≠ [] ⊦ a = x.head ∧ y = x.tail ↔ x = a + y; (elim) Used terms: psl, ps, psl0
| psl = ps + psl0, psl ≠ [], πrs(lstep, rstep, lren, rren, psl, pal) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal), Π(lstart, rstart)(psl[0]) ⊦ frag*(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, psl, pal), πra(lstep, rstep, lren, rren, psl, pal)) ∧ rstart(ps._2) |
πrs(lstep, rstep, lren, rren, ps ' + psl0, pal) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(ps ' + psl0, pal), Π(lstart, rstart)(ps) ⊦ frag*(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, ps ' + psl0, pal), πra(lstep, rstep, lren, rren, ps ' + psl0, pal)) ∧ rstart(ps._2)
Used simplifier rules: ⊦ a + x = a ' + x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ (a ' + x)[0] = a; (s) ⊦ a ' ≠ []; (s) ⊦ x + y = [] ↔ x = [] ∧ y = []; (s)
| πrs(lstep, rstep, lren, rren, ps ' + psl0, pal) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(ps ' + psl0, pal), Π(lstart, rstart)(ps) ⊦ frag*(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, ps ' + psl0, pal), πra(lstep, rstep, lren, rren, ps ' + psl0, pal)) ∧ rstart(ps._2) |
ps = (ls, rs), πrs(lstep, rstep, lren, rren, ps ' + psl0, pal) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(ps ' + psl0, pal), Π(lstart, rstart)(ps) ⊦ frag*(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, ps ' + psl0, pal), πra(lstep, rstep, lren, rren, ps ' + psl0, pal)) ∧ rstart(ps._2)
| ps = (ls, rs), πrs(lstep, rstep, lren, rren, ps ' + psl0, pal) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(ps ' + psl0, pal), Π(lstart, rstart)(ps) ⊦ frag*(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, ps ' + psl0, pal), πra(lstep, rstep, lren, rren, ps ' + psl0, pal)) ∧ rstart(ps._2) |
πrs(lstep, rstep, lren, rren, (ls, rs) ' + psl0, pal) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls, rs) ' + psl0, pal), lstart(ls), rstart(rs), ¬ frag*(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, (ls, rs) ' + psl0, pal), πra(lstep, rstep, lren, rren, (ls, rs) ' + psl0, pal)) ⊦
Used simplifier rules: ⊦ Π(lstart, rstart)((ls, rs)) ↔ lstart(ls) ∧ rstart(rs); (s)
| πrs(lstep, rstep, lren, rren, (ls, rs) ' + psl0, pal) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls, rs) ' + psl0, pal), lstart(ls), rstart(rs), ¬ frag*(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, (ls, rs) ' + psl0, pal), πra(lstep, rstep, lren, rren, (ls, rs) ' + psl0, pal)) ⊦ |
πrs(lstep, rstep, lren, rren, (ls, rs) ' + psl0, pal) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls, rs) ' + psl0, pal), ¬ frag*(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, (ls, rs) ' + psl0, pal), πra(lstep, rstep, lren, rren, (ls, rs) ' + psl0, pal)) ⊦
| πrs(lstep, rstep, lren, rren, (ls, rs) ' + psl0, pal) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls, rs) ' + psl0, pal), ¬ frag*(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, (ls, rs) ' + psl0, pal), πra(lstep, rstep, lren, rren, (ls, rs) ' + psl0, pal)) ⊦ |
# psl0 = # pal, πrs(lstep, rstep, lren, rren, (ls, rs) ' + psl0, pal) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls, rs) ' + psl0, pal), ¬ frag*(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, (ls, rs) ' + psl0, pal), πra(lstep, rstep, lren, rren, (ls, rs) ' + psl0, pal)) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ frag*(IOAut(start, step, ext))(s ' + sl, al) → (# sl = # al ↔ true); (ss) Used formulas: # psl0 = # pal
| # psl0 = # pal, πrs(lstep, rstep, lren, rren, (ls, rs) ' + psl0, pal) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls, rs) ' + psl0, pal), ¬ frag*(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, (ls, rs) ' + psl0, pal), πra(lstep, rstep, lren, rren, (ls, rs) ' + psl0, pal)) ⊦ |
#(ps + psl) = # pal, πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ps + psl), pal) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls, rs) ' + (ps + psl), pal), ¬ frag*(IOAut(rstart, rstep, rext)) (πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ps + psl), pal), πra(lstep, rstep, lren, rren, (ls, rs) ' + (ps + psl), pal)), ∀ pal, lstep, rstep, lren, rren, ls, rs, lstart, rstart, lext, rext. ¬ ( # psl = # pal ∧ πrs(lstep, rstep, lren, rren, (ls, rs) ' + psl, pal) ≠ [] ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls, rs) ' + psl, pal) ∧ ¬ frag*(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, (ls, rs) ' + psl, pal), πra(lstep, rstep, lren, rren, (ls, rs) ' + psl, pal))) ⊦
Used simplifier rules: projstate-base: ⊦ πrs(lstep, rstep, lren, rren, (ls, rs) ', []) = rs '; projaction-base: ⊦ πra(lstep, rstep, lren, rren, (ls, rs) ', []) = []; List('a) freely generated by [], +;; ⊦ # [] = 0; (s) ⊦ # x = 0 ↔ x = []; (s) ⊦ x + [] = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ' ≠ []; (s) ⊦ frag*(IOAut(start, step, ext))(s ', []); (s)
| #(ps + psl) = # pal, πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ps + psl), pal) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls, rs) ' + (ps + psl), pal), ¬ frag*(IOAut(rstart, rstep, rext)) (πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ps + psl), pal), πra(lstep, rstep, lren, rren, (ls, rs) ' + (ps + psl), pal)), ∀ pal, lstep, rstep, lren, rren, ls, rs, lstart, rstart, lext, rext. ¬ ( # psl = # pal ∧ πrs(lstep, rstep, lren, rren, (ls, rs) ' + psl, pal) ≠ [] ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls, rs) ' + psl, pal) ∧ ¬ frag*(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, (ls, rs) ' + psl, pal), πra(lstep, rstep, lren, rren, (ls, rs) ' + psl, pal))) ⊦ |
# psl + 1 = # pal, πrs(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl, pal) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls, rs) ' + ps ' + psl, pal), ¬ frag*(IOAut(rstart, rstep, rext)) (πrs(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl, pal), πra(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl, pal)), ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)) ⊦
Used simplifier rules: finfrag-pis-nonempty: ⊦ frag* (IOAut (Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren))) (psl, pal) → πrs(lstep, rstep, lren, rren, psl, pal) ≠ []; ⊦ frag*(IOAut(start, step, ext))(s ' + sl, al) → (# sl = # al ↔ true); (ss) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a + x = a ' + x; (s) ⊦ m +1 = m + 1; (s) ⊦ #(a ' + x) = (# x)+1; (s)
| # psl + 1 = # pal, πrs(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl, pal) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls, rs) ' + ps ' + psl, pal), ¬ frag*(IOAut(rstart, rstep, rext)) (πrs(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl, pal), πra(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl, pal)), ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)) ⊦ |
# psl + 1 = # pal, pal = pa + pal1, πrs(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl, pal) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls, rs) ' + ps ' + psl, pal), ¬ frag*(IOAut(rstart, rstep, rext)) (πrs(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl, pal), πra(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl, pal)), ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)) ⊦
Used simplifier rules: List('a) freely generated by [], +;; ⊦ # [] = 0; (s) ⊦ m + n = 0 ↔ m = 0 ∧ n = 0; (ws) ⊦ # x = 0 ↔ x = []; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic
| # psl + 1 = # pal, pal = pa + pal1, πrs(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl, pal) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls, rs) ' + ps ' + psl, pal), ¬ frag*(IOAut(rstart, rstep, rext)) (πrs(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl, pal), πra(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl, pal)), ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)) ⊦ |
# psl = # pal1, πrs(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl, pa ' + pal1) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls, rs) ' + ps ' + psl, pa ' + pal1), ¬ frag*(IOAut(rstart, rstep, rext)) (πrs(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl, pa ' + pal1), πra(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl, pa ' + pal1)), ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)) ⊦
Used simplifier rules: ⊦ a + x = a ' + x; (s) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m + n = m + n0 ↔ n = n0; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ m +1 = m + 1; (s) ⊦ #(a ' + x) = (# x)+1; (s)
| # psl = # pal1, πrs(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl, pa ' + pal1) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls, rs) ' + ps ' + psl, pa ' + pal1), ¬ frag*(IOAut(rstart, rstep, rext)) (πrs(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl, pa ' + pal1), πra(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl, pa ' + pal1)), ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)) ⊦ |
⊦ frag*(IOAut(start, step, ext))(s ' + sl, a ' + al) ↔ step(s, a, sl.head) ∧ frag*(IOAut(start, step, ext))(sl, al)
# psl = # pal1, πrs(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl, pa ' + pal1) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(ps ' + psl, pal1), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), pa, (ps ' + psl).head), ¬ frag*(IOAut(rstart, rstep, rext)) (πrs(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl, pa ' + pal1), πra(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl, pa ' + pal1)), ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: Π(lext, rext, lren, rren), (ls, rs), pal1, pa, Π(lstep, rstep, lren, rren, lext, rext), Π(lstart, rstart), ps ' + psl
| ⊦ frag*(IOAut(start, step, ext))(s ' + sl, a ' + al) ↔ step(s, a, sl.head) ∧ frag*(IOAut(start, step, ext))(sl, al) |
| # psl = # pal1, πrs(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl, pa ' + pal1) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(ps ' + psl, pal1), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), pa, (ps ' + psl).head), ¬ frag*(IOAut(rstart, rstep, rext)) (πrs(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl, pa ' + pal1), πra(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl, pa ' + pal1)), ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)) ⊦ |
# psl = # pal1, πrs(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl, pa ' + pal1) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(ps ' + psl, pal1), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), pa, ps), ¬ frag*(IOAut(rstart, rstep, rext)) (πrs(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl, pa ' + pal1), πra(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl, pa ' + pal1)), ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ (a ' + x).head = a; (s)
| # psl = # pal1, πrs(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl, pa ' + pal1) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(ps ' + psl, pal1), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), pa, ps), ¬ frag*(IOAut(rstart, rstep, rext)) (πrs(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl, pa ' + pal1), πra(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl, pa ' + pal1)), ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)) ⊦ |
# psl = # pal1, ps = (ls1, rs1), πrs(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl, pa ' + pal1) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(ps ' + psl, pal1), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), pa, ps), ¬ frag*(IOAut(rstart, rstep, rext)) (πrs(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl, pa ' + pal1), πra(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl, pa ' + pal1)), ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)) ⊦
| # psl = # pal1, ps = (ls1, rs1), πrs(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl, pa ' + pal1) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(ps ' + psl, pal1), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), pa, ps), ¬ frag*(IOAut(rstart, rstep, rext)) (πrs(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl, pa ' + pal1), πra(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl, pa ' + pal1)), ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)) ⊦ |
# psl = # pal1, πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls1, rs1) ' + psl, pa ' + pal1) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls1, rs1) ' + psl, pal1), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), pa, (ls1, rs1)), ¬ frag*(IOAut(rstart, rstep, rext)) (πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls1, rs1) ' + psl, pa ' + pal1), πra(lstep, rstep, lren, rren, (ls, rs) ' + (ls1, rs1) ' + psl, pa ' + pal1)), ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)) ⊦
| # psl = # pal1, πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls1, rs1) ' + psl, pa ' + pal1) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls1, rs1) ' + psl, pal1), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), pa, (ls1, rs1)), ¬ frag*(IOAut(rstart, rstep, rext)) (πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls1, rs1) ' + psl, pa ' + pal1), πra(lstep, rstep, lren, rren, (ls, rs) ' + (ls1, rs1) ' + psl, pa ' + pal1)), ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)) ⊦ |
⊦ Π(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))
# psl = # pal1, πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls1, rs1) ' + psl, pa ' + pal1) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls1, rs1) ' + psl, pal1), ¬ frag*(IOAut(rstart, rstep, rext)) (πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls1, rs1) ' + psl, pa ' + pal1), πra(lstep, rstep, lren, rren, (ls, rs) ' + (ls1, rs1) ' + psl, pa ' + pal1)), ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)), rs = rs1 ∧ (∃ la. lstep(ls, la, ls1) ∧ pa = lren(la) ∧ ¬ cod(rren)(pa)) ∨ ls = ls1 ∧ (∃ ra. rstep(rs, ra, rs1) ∧ pa = rren(ra) ∧ ¬ cod(lren)(pa)) ∨ (∃ la, ra. lstep(ls, la, ls1) ∧ lext(la) ≠ None ∧ pa = lren(la) ∧ rstep(rs, ra, rs1) ∧ rext(ra) ≠ None ∧ pa = rren(ra)) ⊦
Used terms: rext, pa, rs, rstep, lren, rren, rs1, lstep, lext, ls, ls1
| ⊦ Π(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)) |
| # psl = # pal1, πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls1, rs1) ' + psl, pa ' + pal1) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls1, rs1) ' + psl, pal1), ¬ frag*(IOAut(rstart, rstep, rext)) (πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls1, rs1) ' + psl, pa ' + pal1), πra(lstep, rstep, lren, rren, (ls, rs) ' + (ls1, rs1) ' + psl, pa ' + pal1)), ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)), rs = rs1 ∧ (∃ la. lstep(ls, la, ls1) ∧ pa = lren(la) ∧ ¬ cod(rren)(pa)) ∨ ls = ls1 ∧ (∃ ra. rstep(rs, ra, rs1) ∧ pa = rren(ra) ∧ ¬ cod(lren)(pa)) ∨ (∃ la, ra. lstep(ls, la, ls1) ∧ lext(la) ≠ None ∧ pa = lren(la) ∧ rstep(rs, ra, rs1) ∧ rext(ra) ≠ None ∧ pa = rren(ra)) ⊦ |
# psl = # pal1, πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls1, rs1) ' + psl, pa ' + pal1) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls1, rs1) ' + psl, pal1), ¬ frag*(IOAut(rstart, rstep, rext)) (πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls1, rs1) ' + psl, pa ' + pal1), πra(lstep, rstep, lren, rren, (ls, rs) ' + (ls1, rs1) ' + psl, pa ' + pal1)), ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)), rs = rs1 ∧ lstep(ls, la, ls1) ∧ pa = lren(la) ∧ ¬ cod(rren)(lren(la)) ∨ ls = ls1 ∧ rstep(rs, ra, rs1) ∧ pa = rren(ra) ∧ ¬ cod(lren)(rren(ra)) ∨ lstep(ls, la0, ls1) ∧ lext(la0) ≠ None ∧ rren(ra0) = lren(la0) ∧ rstep(rs, ra0, rs1) ∧ rext(ra0) ≠ None ∧ pa = rren(ra0) ⊦
| # psl = # pal1, πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls1, rs1) ' + psl, pa ' + pal1) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls1, rs1) ' + psl, pal1), ¬ frag*(IOAut(rstart, rstep, rext)) (πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls1, rs1) ' + psl, pa ' + pal1), πra(lstep, rstep, lren, rren, (ls, rs) ' + (ls1, rs1) ' + psl, pa ' + pal1)), ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)), rs = rs1 ∧ lstep(ls, la, ls1) ∧ pa = lren(la) ∧ ¬ cod(rren)(lren(la)) ∨ ls = ls1 ∧ rstep(rs, ra, rs1) ∧ pa = rren(ra) ∧ ¬ cod(lren)(rren(ra)) ∨ lstep(ls, la0, ls1) ∧ lext(la0) ≠ None ∧ rren(ra0) = lren(la0) ∧ rstep(rs, ra0, rs1) ∧ rext(ra0) ≠ None ∧ pa = rren(ra0) ⊦ |
# psl = # pal1, pa = lren(la), rs = rs1, πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls1, rs1) ' + psl, pa ' + pal1) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls1, rs1) ' + psl, pal1), lstep(ls, la, ls1), ¬ cod(rren)(lren(la)), ¬ frag*(IOAut(rstart, rstep, rext)) (πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls1, rs1) ' + psl, pa ' + pal1), πra(lstep, rstep, lren, rren, (ls, rs) ' + (ls1, rs1) ' + psl, pa ' + pal1)), ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)) ⊦
# psl = # pal1, ls = ls1, pa = rren(ra), πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls1, rs1) ' + psl, pa ' + pal1) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls1, rs1) ' + psl, pal1), rstep(rs, ra, rs1), ¬ cod(lren)(rren(ra)), ¬ frag*(IOAut(rstart, rstep, rext)) (πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls1, rs1) ' + psl, pa ' + pal1), πra(lstep, rstep, lren, rren, (ls, rs) ' + (ls1, rs1) ' + psl, pa ' + pal1)), ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)) ⊦
# psl = # pal1, pa = rren(ra0), rren(ra0) = lren(la0), lext(la0) ≠ None, rext(ra0) ≠ None, πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls1, rs1) ' + psl, pa ' + pal1) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls1, rs1) ' + psl, pal1), lstep(ls, la0, ls1), rstep(rs, ra0, rs1), ¬ frag*(IOAut(rstart, rstep, rext)) (πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls1, rs1) ' + psl, pa ' + pal1), πra(lstep, rstep, lren, rren, (ls, rs) ' + (ls1, rs1) ' + psl, pa ' + pal1)), ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)) ⊦
| # psl = # pal1, pa = lren(la), rs = rs1, πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls1, rs1) ' + psl, pa ' + pal1) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls1, rs1) ' + psl, pal1), lstep(ls, la, ls1), ¬ cod(rren)(lren(la)), ¬ frag*(IOAut(rstart, rstep, rext)) (πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls1, rs1) ' + psl, pa ' + pal1), πra(lstep, rstep, lren, rren, (ls, rs) ' + (ls1, rs1) ' + psl, pa ' + pal1)), ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)) ⊦ |
# psl = # pal1, πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls1, rs1) ' + psl, pal1), lstep(ls, la, ls1), ¬ cod(rren)(lren(la)), ¬ frag*(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1), πra(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1)), ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)) ⊦
Used simplifier rules: projstate-rec-skipL: ⊦ # 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); projaction-rec-skipL: ⊦ # psl = # pal ∧ lstep(ls, la, ls0) ∧ ¬ cod(rren)(lren(la)) → πra(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs) ' + psl, lren(la) ' + pal) = πra(lstep, rstep, lren, rren, (ls0, rs) ' + psl, pal); a: ⊦ (x + y) + z = x + y + z; from specification list
| # psl = # pal1, πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls1, rs1) ' + psl, pal1), lstep(ls, la, ls1), ¬ cod(rren)(lren(la)), ¬ frag*(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1), πra(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1)), ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)) ⊦ |
Used terms: pal1, lstep, rstep, lren, rren, ls1, rs1, lstart, rstart, lext, rext
| # psl = # pal1, ls = ls1, pa = rren(ra), πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls1, rs1) ' + psl, pa ' + pal1) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls1, rs1) ' + psl, pal1), rstep(rs, ra, rs1), ¬ cod(lren)(rren(ra)), ¬ frag*(IOAut(rstart, rstep, rext)) (πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls1, rs1) ' + psl, pa ' + pal1), πra(lstep, rstep, lren, rren, (ls, rs) ' + (ls1, rs1) ' + psl, pa ' + pal1)), ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)) ⊦ |
# psl = # pal1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls1, rs1) ' + psl, pal1), rstep(rs, ra, rs1), ¬ cod(lren)(rren(ra)), ¬ frag*(IOAut(rstart, rstep, rext)) (rs ' + πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1), ra ' + πra(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1)), ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)) ⊦
Used simplifier rules: projstate-rec-addR: ⊦ # 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); projaction-rec-addR: ⊦ # psl = # pal ∧ rstep(rs, ra, rs0) ∧ ¬ cod(lren)(rren(ra)) → πra(lstep, rstep, lren, rren, (ls, rs) ' + (ls, rs0) ' + psl, rren(ra) ' + pal) = ra + πra(lstep, rstep, lren, rren, (ls, rs0) + psl, pal); a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a + x = a ' + x; (s) ⊦ a ' ≠ []; (s) ⊦ x + y = [] ↔ x = [] ∧ y = []; (s)
| # psl = # pal1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls1, rs1) ' + psl, pal1), rstep(rs, ra, rs1), ¬ cod(lren)(rren(ra)), ¬ frag*(IOAut(rstart, rstep, rext)) (rs ' + πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1), ra ' + πra(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1)), ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)) ⊦ |
⊦ frag*(IOAut(start, step, ext))(s ' + sl, a ' + al) ↔ step(s, a, sl.head) ∧ frag*(IOAut(start, step, ext))(sl, al)
# psl = # pal1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls1, rs1) ' + psl, pal1), rstep(rs, ra, rs1), ¬ cod(lren)(rren(ra)), ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)), ¬ rstep(rs, ra, πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1).head) ∨ ¬ frag*(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1), πra(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1)) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: rext, rs, πra(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1), ra, rstep, rstart, πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1)
| ⊦ frag*(IOAut(start, step, ext))(s ' + sl, a ' + al) ↔ step(s, a, sl.head) ∧ frag*(IOAut(start, step, ext))(sl, al) |
| # psl = # pal1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls1, rs1) ' + psl, pal1), rstep(rs, ra, rs1), ¬ cod(lren)(rren(ra)), ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)), ¬ rstep(rs, ra, πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1).head) ∨ ¬ frag*(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1), πra(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1)) ⊦ |
⊦ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal) → πrs(lstep, rstep, lren, rren, psl, pal) ≠ [] ∧ πrs(lstep, rstep, lren, rren, psl, pal).head = psl.head._2
# psl = # pal1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls1, rs1) ' + psl, pal1), rstep(rs, ra, rs1), ¬ cod(lren)(rren(ra)), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls1, rs1) ' + psl, pal1) → πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1) ≠ [] ∧ πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1).head = ((ls1, rs1) ' + psl).head._2, ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)), ¬ rstep(rs, ra, πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1).head) ∨ ¬ frag*(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1), πra(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1)) ⊦
Used terms: rext, (ls1, rs1) ' + psl, pal1, rstep, rstart, lren, rren, lstart, lstep, lext
| ⊦ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal) → πrs(lstep, rstep, lren, rren, psl, pal) ≠ [] ∧ πrs(lstep, rstep, lren, rren, psl, pal).head = psl.head._2 |
| # psl = # pal1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls1, rs1) ' + psl, pal1), rstep(rs, ra, rs1), ¬ cod(lren)(rren(ra)), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls1, rs1) ' + psl, pal1) → πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1) ≠ [] ∧ πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1).head = ((ls1, rs1) ' + psl).head._2, ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)), ¬ rstep(rs, ra, πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1).head) ∨ ¬ frag*(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1), πra(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1)) ⊦ |
# psl = # pal1, πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls1, rs1) ' + psl, pal1), rstep(rs, ra, rs1), ¬ cod(lren)(rren(ra)), ¬ frag*(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1), πra(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1)), ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)) ⊦
Used simplifier rules: finfrag-init: ⊦ frag* (IOAut (Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren))) (psl, pal) → πrs(lstep, rstep, lren, rren, psl, pal).head = psl.head._2; a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ (a ' + x).head = a; (s)
| # psl = # pal1, πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls1, rs1) ' + psl, pal1), rstep(rs, ra, rs1), ¬ cod(lren)(rren(ra)), ¬ frag*(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1), πra(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1)), ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)) ⊦ |
Used terms: pal1, lstep, rstep, lren, rren, ls1, rs1, lstart, rstart, lext, rext
| # psl = # pal1, pa = rren(ra0), rren(ra0) = lren(la0), lext(la0) ≠ None, rext(ra0) ≠ None, πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls1, rs1) ' + psl, pa ' + pal1) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls1, rs1) ' + psl, pal1), lstep(ls, la0, ls1), rstep(rs, ra0, rs1), ¬ frag*(IOAut(rstart, rstep, rext)) (πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls1, rs1) ' + psl, pa ' + pal1), πra(lstep, rstep, lren, rren, (ls, rs) ' + (ls1, rs1) ' + psl, pa ' + pal1)), ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)) ⊦ |
# psl = # pal1, rren(ra0) = lren(la0), lext(la0) ≠ None, rext(ra0) ≠ None, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls1, rs1) ' + psl, pal1), lstep(ls, la0, ls1), rstep(rs, ra0, rs1), ¬ frag*(IOAut(rstart, rstep, rext)) (rs ' + πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1), ra0 ' + πra(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1)), ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)) ⊦
Used simplifier rules: projstate-rec-addboth: 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); projaction-rec-addboth: pa = lren(la) ⊦ # psl = # pal ∧ rstep(rs, ra, rs0) ∧ rren(ra) = lren(la) ∧ lstep(ls, la, ls0) → πra(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + psl, pa ' + pal) = ra + πra(lstep, rstep, lren, rren, (ls0, rs0) ' + psl, pal); a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a + x = a ' + x; (s) ⊦ a ' ≠ []; (s) ⊦ x + y = [] ↔ x = [] ∧ y = []; (s)
| # psl = # pal1, rren(ra0) = lren(la0), lext(la0) ≠ None, rext(ra0) ≠ None, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls1, rs1) ' + psl, pal1), lstep(ls, la0, ls1), rstep(rs, ra0, rs1), ¬ frag*(IOAut(rstart, rstep, rext)) (rs ' + πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1), ra0 ' + πra(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1)), ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)) ⊦ |
⊦ frag*(IOAut(start, step, ext))(s ' + sl, a ' + al) ↔ step(s, a, sl.head) ∧ frag*(IOAut(start, step, ext))(sl, al)
# psl = # pal1, rren(ra0) = lren(la0), lext(la0) ≠ None, rext(ra0) ≠ None, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls1, rs1) ' + psl, pal1), lstep(ls, la0, ls1), rstep(rs, ra0, rs1), ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)), ¬ rstep(rs, ra0, πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1).head) ∨ ¬ frag*(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1), πra(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1)) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: rext, rs, πra(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1), ra0, rstep, rstart, πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1)
| ⊦ frag*(IOAut(start, step, ext))(s ' + sl, a ' + al) ↔ step(s, a, sl.head) ∧ frag*(IOAut(start, step, ext))(sl, al) |
| # psl = # pal1, rren(ra0) = lren(la0), lext(la0) ≠ None, rext(ra0) ≠ None, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls1, rs1) ' + psl, pal1), lstep(ls, la0, ls1), rstep(rs, ra0, rs1), ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)), ¬ rstep(rs, ra0, πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1).head) ∨ ¬ frag*(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1), πra(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1)) ⊦ |
⊦ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal) → πrs(lstep, rstep, lren, rren, psl, pal) ≠ [] ∧ πrs(lstep, rstep, lren, rren, psl, pal).head = psl.head._2
# psl = # pal1, rren(ra0) = lren(la0), lext(la0) ≠ None, rext(ra0) ≠ None, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls1, rs1) ' + psl, pal1), lstep(ls, la0, ls1), rstep(rs, ra0, rs1), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls1, rs1) ' + psl, pal1) → πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1) ≠ [] ∧ πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1).head = ((ls1, rs1) ' + psl).head._2, ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)), ¬ rstep(rs, ra0, πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1).head) ∨ ¬ frag*(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1), πra(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1)) ⊦
Used terms: rext, (ls1, rs1) ' + psl, pal1, rstep, rstart, lren, rren, lstart, lstep, lext
| ⊦ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal) → πrs(lstep, rstep, lren, rren, psl, pal) ≠ [] ∧ πrs(lstep, rstep, lren, rren, psl, pal).head = psl.head._2 |
| # psl = # pal1, rren(ra0) = lren(la0), lext(la0) ≠ None, rext(ra0) ≠ None, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls1, rs1) ' + psl, pal1), lstep(ls, la0, ls1), rstep(rs, ra0, rs1), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls1, rs1) ' + psl, pal1) → πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1) ≠ [] ∧ πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1).head = ((ls1, rs1) ' + psl).head._2, ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)), ¬ rstep(rs, ra0, πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1).head) ∨ ¬ frag*(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1), πra(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1)) ⊦ |
# psl = # pal1, rren(ra0) = lren(la0), lext(la0) ≠ None, rext(ra0) ≠ None, πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls1, rs1) ' + psl, pal1), lstep(ls, la0, ls1), rstep(rs, ra0, rs1), ¬ frag*(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1), πra(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1)), ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)) ⊦
Used simplifier rules: finfrag-init: ⊦ frag* (IOAut (Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren))) (psl, pal) → πrs(lstep, rstep, lren, rren, psl, pal).head = psl.head._2; a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ (a ' + x).head = a; (s)
| # psl = # pal1, rren(ra0) = lren(la0), lext(la0) ≠ None, rext(ra0) ≠ None, πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1) ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls1, rs1) ' + psl, pal1), lstep(ls, la0, ls1), rstep(rs, ra0, rs1), ¬ frag*(IOAut(rstart, rstep, rext))(πrs(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1), πra(lstep, rstep, lren, rren, (ls1, rs1) ' + psl, pal1)), ∀ pal0, lstep0, rstep0, lren0, rren0, ls0, rs0, lstart0, rstart0, lext0, rext0. ¬ frag*(IOAut(Π(lstart0, rstart0), Π(lstep0, rstep0, lren0, rren0, lext0, rext0), Π(lext0, rext0, lren0, rren0)))((ls0, rs0) ' + psl, pal0) ∨ frag*(IOAut(rstart0, rstep0, rext0)) (πrs(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0), πra(lstep0, rstep0, lren0, rren0, (ls0, rs0) ' + psl, pal0)) ⊦ |
Used terms: pal1, lstep, rstep, lren, rren, ls1, rs1, lstart, rstart, lext, rext
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.