| ⊦ pmon(frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))) (λ psl, pal. πrs(lstep, rstep, lren, rren, psl, pal)) |
¬ pmon(frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))) (λ psl, pal. πrs(lstep, rstep, lren, rren, psl, pal)) ⊦
| ¬ pmon(frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))) (λ psl, pal. πrs(lstep, rstep, lren, rren, psl, pal)) ⊦ |
⊦ pmon(trlp)(trf) ↔ (∀ sl1, al1, sl2, al2. # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 ∧ al1 ⊑ al2 ∧ sl1 ⊑ sl2 ∧ trlp(sl1, al1) ∧ trlp(sl2, al2) → trf(sl1, al1) ⊑ trf(sl2, al2))
∃ sl1, al1, sl2, al2. ¬ ( # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 ∧ al1 ⊑ al2 ∧ sl1 ⊑ sl2 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(sl1, al1) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(sl2, al2) → πrs(lstep, rstep, lren, rren, sl1, al1) ⊑ πrs(lstep, rstep, lren, rren, sl2, al2)) ⊦
Used terms: frag* (IOAut (Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren))), λ psl, pal. πrs(lstep, rstep, lren, rren, psl, pal)
| ⊦ pmon(trlp)(trf) ↔ (∀ sl1, al1, sl2, al2. # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 ∧ al1 ⊑ al2 ∧ sl1 ⊑ sl2 ∧ trlp(sl1, al1) ∧ trlp(sl2, al2) → trf(sl1, al1) ⊑ trf(sl2, al2)) |
| ∃ sl1, al1, sl2, al2. ¬ ( # sl1 = # al1 + 1 ∧ # sl2 = # al2 + 1 ∧ al1 ⊑ al2 ∧ sl1 ⊑ sl2 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(sl1, al1) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(sl2, al2) → πrs(lstep, rstep, lren, rren, sl1, al1) ⊑ πrs(lstep, rstep, lren, rren, sl2, al2)) ⊦ |
# psl = # pal + 1, # psl0 = # pal0 + 1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl0, pal0), pal ⊑ pal0, psl ⊑ psl0, ¬ πrs(lstep, rstep, lren, rren, psl, pal) ⊑ πrs(lstep, rstep, lren, rren, psl0, pal0) ⊦
| # psl = # pal + 1, # psl0 = # pal0 + 1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl0, pal0), pal ⊑ pal0, psl ⊑ psl0, ¬ πrs(lstep, rstep, lren, rren, psl, pal) ⊑ πrs(lstep, rstep, lren, rren, psl0, pal0) ⊦ |
⊦ x ⊑ y ↔ (∃ z. x + z = y)
# psl0 = # pal0 + 1, # psl = # pal + 1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl0, pal0), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal), psl ⊑ psl0, ¬ πrs(lstep, rstep, lren, rren, psl, pal) ⊑ πrs(lstep, rstep, lren, rren, psl0, pal0), ∃ z. pal + z = pal0 ⊦
Used terms: pal, pal0
| ⊦ x ⊑ y ↔ (∃ z. x + z = y) |
| # psl0 = # pal0 + 1, # psl = # pal + 1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl0, pal0), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal), psl ⊑ psl0, ¬ πrs(lstep, rstep, lren, rren, psl, pal) ⊑ πrs(lstep, rstep, lren, rren, psl0, pal0), ∃ z. pal + z = pal0 ⊦ |
# psl = # pal + 1, # psl0 = (# pal + # pal1) + 1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl0, pal + pal1), psl ⊑ psl0, ¬ πrs(lstep, rstep, lren, rren, psl, pal) ⊑ πrs(lstep, rstep, lren, rren, psl0, pal + pal1) ⊦
Used simplifier rules: a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ #(x + y) = # x + # y; (s)
| # psl = # pal + 1, # psl0 = (# pal + # pal1) + 1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl0, pal + pal1), psl ⊑ psl0, ¬ πrs(lstep, rstep, lren, rren, psl, pal) ⊑ πrs(lstep, rstep, lren, rren, psl0, pal + pal1) ⊦ |
⊦ x ⊑ y ↔ (∃ z. x + z = y)
# psl0 = (# pal + # pal1) + 1, # psl = # pal + 1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl0, pal + 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, psl0, pal + pal1), ∃ z. psl + z = psl0 ⊦
Used terms: psl, psl0
| ⊦ x ⊑ y ↔ (∃ z. x + z = y) |
| # psl0 = (# pal + # pal1) + 1, # psl = # pal + 1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl0, pal + 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, psl0, pal + pal1), ∃ z. psl + z = psl0 ⊦ |
# psl = # pal + 1, # psl + # psl1 = (# pal + # pal1) + 1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal + pal1), ¬ πrs(lstep, rstep, lren, rren, psl, pal) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal + pal1) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ #(x + y) = # x + # y; (s)
| # psl = # pal + 1, # psl + # psl1 = (# pal + # pal1) + 1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal + pal1), ¬ πrs(lstep, rstep, lren, rren, psl, pal) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal + pal1) ⊦ |
# psl = # pal + 1, # psl + # psl1 = (# pal + # pal1) + 1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal + pal1), ¬ πrs(lstep, rstep, lren, rren, psl, pal) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < # pal + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦
Used simplifier rules: <; (wellfounded) Used terms: # pal + # pal1
| # psl = # pal + 1, # psl + # psl1 = (# pal + # pal1) + 1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal + pal1), ¬ πrs(lstep, rstep, lren, rren, psl, pal) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < # pal + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦ |
# psl = # pal + 1, # psl + # psl1 = (# pal + # pal1) + 1, pal = [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal + 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 + psl1, pal + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < # pal + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦
# psl = # pal + 1, # psl + # psl1 = (# pal + # pal1) + 1, pal = pa + pal3, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal + 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 + psl1, pal + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < # pal + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦
Used simplifier rules: List('a) freely generated by [], +;;
| # psl = # pal + 1, # psl + # psl1 = (# pal + # pal1) + 1, pal = [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal + 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 + psl1, pal + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < # pal + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦ |
# psl + # psl1 = 1 + # pal1, psl = psl.head ', frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal1), ¬ πrs(lstep, rstep, lren, rren, psl, []) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < # [] + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ [] + x = x; (s) ⊦ frag*(IOAut(start, step, ext))(sl, []) ↔ sl = sl.head '; (s) ⊦ x + [] = x; (s) ⊦ a + x = a ' + x; (s) ⊦ # x = 1 ↔ x = x.head + []; (as) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ # [] = 0; (s)
| # psl + # psl1 = 1 + # pal1, psl = psl.head ', frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal1), ¬ πrs(lstep, rstep, lren, rren, psl, []) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < # [] + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦ |
# psl + # psl1 = 1 + # pal1, psl = ps ', psl = ps + psl0, psl ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal1), ¬ πrs(lstep, rstep, lren, rren, psl, []) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < # [] + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦
Used simplifier rules: ⊦ a ' ≠ []; (s) x ≠ [] ⊦ a = x.head ∧ y = x.tail ↔ x = a + y; (elim) Used terms: psl, ps, psl0
| # psl + # psl1 = 1 + # pal1, psl = ps ', psl = ps + psl0, psl ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal1), ¬ πrs(lstep, rstep, lren, rren, psl, []) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < # [] + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦ |
# psl1 = # pal1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(ps ' + psl1, pal1), ¬ πrs(lstep, rstep, lren, rren, ps ', []) ⊑ πrs(lstep, rstep, lren, rren, ps ' + psl1, pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < # [] + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ [] + x = x; (s) ⊦ x + [] = x; (s) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ n + 0 = n; (s) ⊦ # [] = 0; (s) ⊦ a + x = a ' + x; (s) ⊦ a ' ≠ []; (s) ⊦ x + y = [] ↔ x = [] ∧ y = []; (s) ⊦ m + n = m + n0 ↔ n = n0; (s) ⊦ m +1 = m + 1; (s) ⊦ #(a ' + x) = (# x)+1; (s) ⊦ a ' = a0 ' + x ↔ a = a0 ∧ x = []; (ws)
| # psl1 = # pal1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(ps ' + psl1, pal1), ¬ πrs(lstep, rstep, lren, rren, ps ', []) ⊑ πrs(lstep, rstep, lren, rren, ps ' + psl1, pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < # [] + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦ |
# psl1 = # pal1, ps = (ls, rs), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(ps ' + psl1, pal1), ¬ πrs(lstep, rstep, lren, rren, ps ', []) ⊑ πrs(lstep, rstep, lren, rren, ps ' + psl1, pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < # [] + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦
| # psl1 = # pal1, ps = (ls, rs), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(ps ' + psl1, pal1), ¬ πrs(lstep, rstep, lren, rren, ps ', []) ⊑ πrs(lstep, rstep, lren, rren, ps ' + psl1, pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < # [] + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦ |
# psl1 = # pal1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls, rs) ' + psl1, pal1), ¬ rs ' ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + psl1, pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < # [] + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦
Used simplifier rules: projstate-base: ⊦ πrs(lstep, rstep, lren, rren, (ls, rs) ', []) = rs ';
| # psl1 = # pal1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls, rs) ' + psl1, pal1), ¬ rs ' ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + psl1, pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < # [] + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦ |
# psl1 = # pal1, pal1 = pa + pal, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls, rs) ' + psl1, pal1), ¬ rs ' ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + psl1, pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < # [] + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦
Used simplifier rules: projstate-base: ⊦ πrs(lstep, rstep, lren, rren, (ls, rs) ', []) = rs '; List('a) freely generated by [], +;; ⊦ # [] = 0; (s) ⊦ # x = 0 ↔ x = []; (s) ⊦ frag*(IOAut(start, step, ext))(sl, []) ↔ sl = sl.head '; (s) ⊦ (a ' + x).head = a; (s) ⊦ a ' = a0 ' + x ↔ a = a0 ∧ x = []; (ws) ⊦ x + [] = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ x ⊑ a ' ↔ x = [] ∨ x = a '; (s) ⊦ a ' ≠ []; (s)
| # psl1 = # pal1, pal1 = pa + pal, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls, rs) ' + psl1, pal1), ¬ rs ' ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + psl1, pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < # [] + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦ |
# psl1 = # pal + 1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls, rs) ' + psl1, pa ' + pal), ¬ rs ' ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + psl1, pa ' + pal), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < # [] + #(pa + pal) → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦
Used simplifier rules: ⊦ a + x = a ' + x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ m +1 = m + 1; (s) ⊦ #(a ' + x) = (# x)+1; (s)
| # psl1 = # pal + 1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls, rs) ' + psl1, pa ' + pal), ¬ rs ' ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + psl1, pa ' + pal), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < # [] + #(pa + pal) → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦ |
⊦ frag*(IOAut(start, step, ext))(s ' + sl, a ' + al) ↔ step(s, a, sl.head) ∧ frag*(IOAut(start, step, ext))(sl, al)
# psl1 = # pal + 1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl1, pal), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), pa, psl1.head), ¬ rs ' ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + psl1, pa ' + pal), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < # [] + #(pa + pal) → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦
Used terms: pal, (ls, rs), Π(lext, rext, lren, rren), psl1, pa, Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext)
| ⊦ frag*(IOAut(start, step, ext))(s ' + sl, a ' + al) ↔ step(s, a, sl.head) ∧ frag*(IOAut(start, step, ext))(sl, al) |
| # psl1 = # pal + 1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl1, pal), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), pa, psl1.head), ¬ rs ' ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + psl1, pa ' + pal), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < # [] + #(pa + pal) → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦ |
# psl1 = # pal + 1, psl1 = ps + psl0, psl1 ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl1, pal), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), pa, ps), ¬ rs ' ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + psl1, pa ' + pal), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < # [] + #(pa + pal) → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦
Used simplifier rules: ⊦ # [] = 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 x ≠ [] ⊦ a = x.head ∧ y = x.tail ↔ x = a + y; (elim) Used terms: psl1, ps, psl0
| # psl1 = # pal + 1, psl1 = ps + psl0, psl1 ≠ [], frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl1, pal), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), pa, ps), ¬ rs ' ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + psl1, pa ' + pal), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < # [] + #(pa + pal) → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦ |
# psl0 = # pal, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(ps ' + psl0, pal), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), pa, ps), ¬ rs ' ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl0, pa ' + pal), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < # [] + #(pa + pal) → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a + x = a ' + x; (s) ⊦ a ' ≠ []; (s) ⊦ x + y = [] ↔ x = [] ∧ y = []; (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) ⊦ m +1 = m + 1; (s) ⊦ #(a ' + x) = (# x)+1; (s)
| # psl0 = # pal, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(ps ' + psl0, pal), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), pa, ps), ¬ rs ' ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl0, pa ' + pal), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < # [] + #(pa + pal) → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦ |
# psl0 = # pal, ps = (ls0, rs0), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(ps ' + psl0, pal), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), pa, ps), ¬ rs ' ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl0, pa ' + pal), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < # [] + #(pa + pal) → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦
| # psl0 = # pal, ps = (ls0, rs0), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(ps ' + psl0, pal), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), pa, ps), ¬ rs ' ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl0, pa ' + pal), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < # [] + #(pa + pal) → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦ |
# psl0 = # pal, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl0, pal), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), pa, (ls0, rs0)), ¬ rs ' ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + psl0, pa ' + pal), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < # [] + #(pa + pal) → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦
| # psl0 = # pal, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl0, pal), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), pa, (ls0, rs0)), ¬ rs ' ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + psl0, pa ' + pal), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < # [] + #(pa + pal) → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦ |
⊦ Π(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))
# psl0 = # pal, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl0, pal), ¬ rs ' ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + psl0, pa ' + pal), 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)), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < # [] + #(pa + pal) → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦
Used terms: pa, rs, rstep, lren, rren, lext, rs0, rext, lstep, 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)) |
| # psl0 = # pal, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl0, pal), ¬ rs ' ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + psl0, pa ' + pal), 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)), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < # [] + #(pa + pal) → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦ |
# psl0 = # pal, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl0, pal), ¬ rs ' ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + psl0, pa ' + pal), rs = rs0 ∧ lstep(ls, la, ls0) ∧ pa = lren(la) ∧ ¬ cod(rren)(lren(la)) ∨ ls = ls0 ∧ rstep(rs, ra, rs0) ∧ pa = rren(ra) ∧ ¬ cod(lren)(rren(ra)) ∨ lstep(ls, la0, ls0) ∧ lext(la0) ≠ None ∧ rren(ra0) = lren(la0) ∧ rstep(rs, ra0, rs0) ∧ rext(ra0) ≠ None ∧ pa = rren(ra0), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < # [] + #(pa + pal) → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦
| # psl0 = # pal, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl0, pal), ¬ rs ' ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + psl0, pa ' + pal), rs = rs0 ∧ lstep(ls, la, ls0) ∧ pa = lren(la) ∧ ¬ cod(rren)(lren(la)) ∨ ls = ls0 ∧ rstep(rs, ra, rs0) ∧ pa = rren(ra) ∧ ¬ cod(lren)(rren(ra)) ∨ lstep(ls, la0, ls0) ∧ lext(la0) ≠ None ∧ rren(ra0) = lren(la0) ∧ rstep(rs, ra0, rs0) ∧ rext(ra0) ≠ None ∧ pa = rren(ra0), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < # [] + #(pa + pal) → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦ |
# psl0 = # pal, pa = lren(la), rs = rs0, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl0, pal), lstep(ls, la, ls0), ¬ cod(rren)(lren(la)), ¬ rs ' ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + psl0, pa ' + pal), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < # [] + #(pa + pal) → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦
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); 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); ⊦ a ' ⊑ b ' + x ↔ a = b; (s) a: ⊦ (x + y) + z = x + y + z; from specification list
| # psl0 = # pal, pa = lren(la), rs = rs0, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl0, pal), lstep(ls, la, ls0), ¬ cod(rren)(lren(la)), ¬ rs ' ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + psl0, pa ' + pal), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < # [] + #(pa + pal) → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦ |
# psl0 = # pal, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl0, pal), lstep(ls, la, ls0), ¬ cod(rren)(lren(la)), ¬ rs0 ' ⊑ πrs(lstep, rstep, lren, rren, (ls0, rs0) ' + psl0, pal), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren0, rren, lext, rext. # pal0 + # pal2 < # [] + #(lren(la) + pal) → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren0, rren, lext, rext), Π(lext, rext, lren0, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren0, rren, lext, rext), Π(lext, rext, lren0, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren0, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren0, rren, psl + psl1, pal0 + pal2) → false ⊦
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); a: ⊦ (x + y) + z = x + y + z; from specification list
| # psl0 = # pal, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl0, pal), lstep(ls, la, ls0), ¬ cod(rren)(lren(la)), ¬ rs0 ' ⊑ πrs(lstep, rstep, lren, rren, (ls0, rs0) ' + psl0, pal), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren0, rren, lext, rext. # pal0 + # pal2 < # [] + #(lren(la) + pal) → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren0, rren, lext, rext), Π(lext, rext, lren0, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren0, rren, lext, rext), Π(lext, rext, lren0, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren0, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren0, rren, psl + psl1, pal0 + pal2) → false ⊦ |
Used simplifier rules: projstate-base: ⊦ πrs(lstep, rstep, lren, rren, (ls, rs) ', []) = rs '; ⊦ # a ' = 0 +1; (s) ⊦ # [] = 0; (s) ⊦ m + n = m + n0 ↔ n = n0; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ frag*(IOAut(start, step, ext))(s ', []); (s) ⊦ [] + x = x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ n + 0 = n; (s) ⊦ a + x = a ' + x; (s) ⊦ #(a ' + x) = (# x)+1; (s) ⊦ m +1 = m + 1; (s) ⊦ m < n + 1 ↔ ¬ n < m; (s) ⊦ ¬ n < n; (s) Used terms: [], pal, (ls0, rs0) ', psl0, lstart, rstart, lstep, rstep, lren, rren, lext, rext
| # psl = # pal + 1, # psl + # psl1 = (# pal + # pal1) + 1, pal = pa + pal3, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal + 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 + psl1, pal + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < # pal + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦ |
# psl = 2 + # pal3, # psl + # psl1 = 2 + # pal3 + # pal1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pa ' + pal3), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, (pa ' + pal3) + pal1), ¬ πrs(lstep, rstep, lren, rren, psl, pa ' + pal3) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, (pa ' + pal3) + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < #(pa + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦
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 ⊦ m +1 = m + 1; (s) ⊦ #(a ' + x) = (# x)+1; (s)
| # psl = 2 + # pal3, # psl + # psl1 = 2 + # pal3 + # pal1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pa ' + pal3), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, (pa ' + pal3) + pal1), ¬ πrs(lstep, rstep, lren, rren, psl, pa ' + pal3) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, (pa ' + pal3) + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < #(pa + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦ |
# psl = 2 + # pal3, # psl + # psl1 = 2 + # pal3 + # pal1, psl = ps + psl0, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, (pa ' + pal3) + pal1), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pa ' + pal3), ¬ πrs(lstep, rstep, lren, rren, psl, pa ' + pal3) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, (pa ' + pal3) + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < #(pa + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦
Used simplifier rules: List('a) freely generated by [], +;; ⊦ n + 0 = n; (s) ⊦ # [] = 0; (s) ⊦ m + n = 0 ↔ m = 0 ∧ n = 0; (ws) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic
| # psl = 2 + # pal3, # psl + # psl1 = 2 + # pal3 + # pal1, psl = ps + psl0, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, (pa ' + pal3) + pal1), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pa ' + pal3), ¬ πrs(lstep, rstep, lren, rren, psl, pa ' + pal3) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, (pa ' + pal3) + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < #(pa + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦ |
# psl0 = # pal3 + 1, # psl0 + # psl1 = # pal3 + # pal1 + 1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(ps ' + psl0, pa ' + pal3), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ps ' + psl0) + psl1, (pa ' + pal3) + pal1), ¬ πrs(lstep, rstep, lren, rren, ps ' + psl0, pa ' + pal3) ⊑ πrs(lstep, rstep, lren, rren, (ps ' + psl0) + psl1, (pa ' + pal3) + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < #(pa + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ 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 n < n0 ⊦ m + (* n) = m0 + (* n0) ↔ m = m0 + (n0 - n); (s) ⊦ m +1 = m + 1; (s) ⊦ #(a ' + x) = (# x)+1; (s)
| # psl0 = # pal3 + 1, # psl0 + # psl1 = # pal3 + # pal1 + 1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(ps ' + psl0, pa ' + pal3), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ps ' + psl0) + psl1, (pa ' + pal3) + pal1), ¬ πrs(lstep, rstep, lren, rren, ps ' + psl0, pa ' + pal3) ⊑ πrs(lstep, rstep, lren, rren, (ps ' + psl0) + psl1, (pa ' + pal3) + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < #(pa + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦ |
# psl0 = # pal3 + 1, # psl0 + # psl1 = # pal3 + # pal1 + 1, ps = (ls, rs), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ps ' + psl0) + psl1, (pa ' + pal3) + pal1), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(ps ' + psl0, pa ' + pal3), ¬ πrs(lstep, rstep, lren, rren, ps ' + psl0, pa ' + pal3) ⊑ πrs(lstep, rstep, lren, rren, (ps ' + psl0) + psl1, (pa ' + pal3) + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < #(pa + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦
| # psl0 = # pal3 + 1, # psl0 + # psl1 = # pal3 + # pal1 + 1, ps = (ls, rs), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ps ' + psl0) + psl1, (pa ' + pal3) + pal1), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(ps ' + psl0, pa ' + pal3), ¬ πrs(lstep, rstep, lren, rren, ps ' + psl0, pa ' + pal3) ⊑ πrs(lstep, rstep, lren, rren, (ps ' + psl0) + psl1, (pa ' + pal3) + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < #(pa + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦ |
# psl0 = # pal3 + 1, # psl0 + # psl1 = # pal3 + # pal1 + 1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls, rs) ' + psl0, pa ' + pal3), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(((ls, rs) ' + psl0) + psl1, (pa ' + pal3) + pal1), ¬ πrs(lstep, rstep, lren, rren, (ls, rs) ' + psl0, pa ' + pal3) ⊑ πrs(lstep, rstep, lren, rren, ((ls, rs) ' + psl0) + psl1, (pa ' + pal3) + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < #(pa + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦
| # psl0 = # pal3 + 1, # psl0 + # psl1 = # pal3 + # pal1 + 1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls, rs) ' + psl0, pa ' + pal3), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(((ls, rs) ' + psl0) + psl1, (pa ' + pal3) + pal1), ¬ πrs(lstep, rstep, lren, rren, (ls, rs) ' + psl0, pa ' + pal3) ⊑ πrs(lstep, rstep, lren, rren, ((ls, rs) ' + psl0) + psl1, (pa ' + pal3) + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < #(pa + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦ |
⊦ frag*(IOAut(start, step, ext))(s ' + sl, a ' + al) ↔ step(s, a, sl.head) ∧ frag*(IOAut(start, step, ext))(sl, al)
# psl0 = # pal3 + 1, # psl0 + # psl1 = # pal3 + # pal1 + 1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl0 + psl1, pal3 + pal1), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls, rs) ' + psl0, pa ' + pal3), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), pa, (psl0 + psl1).head), ¬ πrs(lstep, rstep, lren, rren, (ls, rs) ' + psl0, pa ' + pal3) ⊑ πrs(lstep, rstep, lren, rren, ((ls, rs) ' + psl0) + psl1, (pa ' + pal3) + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < #(pa + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: pal3 + pal1, (ls, rs), Π(lext, rext, lren, rren), psl0 + psl1, pa, Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext)
| ⊦ frag*(IOAut(start, step, ext))(s ' + sl, a ' + al) ↔ step(s, a, sl.head) ∧ frag*(IOAut(start, step, ext))(sl, al) |
| # psl0 = # pal3 + 1, # psl0 + # psl1 = # pal3 + # pal1 + 1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl0 + psl1, pal3 + pal1), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls, rs) ' + psl0, pa ' + pal3), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), pa, (psl0 + psl1).head), ¬ πrs(lstep, rstep, lren, rren, (ls, rs) ' + psl0, pa ' + pal3) ⊑ πrs(lstep, rstep, lren, rren, ((ls, rs) ' + psl0) + psl1, (pa ' + pal3) + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < #(pa + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦ |
# psl0 = # pal3 + 1, # psl0 + # psl1 = # pal3 + # pal1 + 1, psl0 = ps + psl2, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls, rs) ' + psl0, pa ' + pal3), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl0 + psl1, pal3 + pal1), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), pa, (psl0 + psl1).head), ¬ πrs(lstep, rstep, lren, rren, (ls, rs) ' + psl0, pa ' + pal3) ⊑ πrs(lstep, rstep, lren, rren, ((ls, rs) ' + psl0) + psl1, (pa ' + pal3) + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < #(pa + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦
Used simplifier rules: List('a) freely generated by [], +;; ⊦ n + 0 = n; (s) ⊦ # [] = 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
| # psl0 = # pal3 + 1, # psl0 + # psl1 = # pal3 + # pal1 + 1, psl0 = ps + psl2, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls, rs) ' + psl0, pa ' + pal3), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl0 + psl1, pal3 + pal1), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), pa, (psl0 + psl1).head), ¬ πrs(lstep, rstep, lren, rren, (ls, rs) ' + psl0, pa ' + pal3) ⊑ πrs(lstep, rstep, lren, rren, ((ls, rs) ' + psl0) + psl1, (pa ' + pal3) + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < #(pa + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦ |
# psl2 = # pal3, # psl1 = # pal1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls, rs) ' + ps ' + psl2, pa ' + pal3), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ps ' + psl2) + psl1, pal3 + pal1), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), pa, ps), ¬ πrs(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl2, pa ' + pal3) ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ps ' + psl2) + psl1, (pa ' + pal3) + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < #(pa + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦
Used simplifier rules: 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 ⊦ a + x = a ' + x; (s) ⊦ (a ' + x).head = a; (s) ⊦ m +1 = m + 1; (s) ⊦ #(a ' + x) = (# x)+1; (s)
| # psl2 = # pal3, # psl1 = # pal1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls, rs) ' + ps ' + psl2, pa ' + pal3), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ps ' + psl2) + psl1, pal3 + pal1), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), pa, ps), ¬ πrs(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl2, pa ' + pal3) ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ps ' + psl2) + psl1, (pa ' + pal3) + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < #(pa + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦ |
# psl1 = # pal1, # psl2 = # pal3, ps = (ls0, rs0), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ps ' + psl2) + psl1, pal3 + pal1), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls, rs) ' + ps ' + psl2, pa ' + pal3), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), pa, ps), ¬ πrs(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl2, pa ' + pal3) ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ps ' + psl2) + psl1, (pa ' + pal3) + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < #(pa + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦
| # psl1 = # pal1, # psl2 = # pal3, ps = (ls0, rs0), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ps ' + psl2) + psl1, pal3 + pal1), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls, rs) ' + ps ' + psl2, pa ' + pal3), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), pa, ps), ¬ πrs(lstep, rstep, lren, rren, (ls, rs) ' + ps ' + psl2, pa ' + pal3) ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ps ' + psl2) + psl1, (pa ' + pal3) + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < #(pa + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦ |
# psl2 = # pal3, # psl1 = # pal1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls, rs) ' + (ls0, rs0) ' + psl2, pa ' + pal3), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(((ls0, rs0) ' + psl2) + psl1, pal3 + pal1), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), pa, (ls0, rs0)), ¬ πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + psl2, pa ' + pal3) ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + ((ls0, rs0) ' + psl2) + psl1, (pa ' + pal3) + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < #(pa + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦
| # psl2 = # pal3, # psl1 = # pal1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls, rs) ' + (ls0, rs0) ' + psl2, pa ' + pal3), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(((ls0, rs0) ' + psl2) + psl1, pal3 + pal1), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), pa, (ls0, rs0)), ¬ πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + psl2, pa ' + pal3) ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + ((ls0, rs0) ' + psl2) + psl1, (pa ' + pal3) + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < #(pa + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦ |
⊦ frag*(IOAut(start, step, ext))(s ' + sl, a ' + al) ↔ step(s, a, sl.head) ∧ frag*(IOAut(start, step, ext))(sl, al)
# psl1 = # pal1, # psl2 = # pal3, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(((ls0, rs0) ' + psl2) + psl1, pal3 + pal1), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl2, pal3), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), pa, (ls0, rs0)), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), pa, ((ls0, rs0) ' + psl2).head), ¬ πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + psl2, pa ' + pal3) ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + ((ls0, rs0) ' + psl2) + psl1, (pa ' + pal3) + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < #(pa + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: pal3, (ls, rs), Π(lext, rext, lren, rren), (ls0, rs0) ' + psl2, pa, Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext)
| ⊦ frag*(IOAut(start, step, ext))(s ' + sl, a ' + al) ↔ step(s, a, sl.head) ∧ frag*(IOAut(start, step, ext))(sl, al) |
| # psl1 = # pal1, # psl2 = # pal3, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(((ls0, rs0) ' + psl2) + psl1, pal3 + pal1), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl2, pal3), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), pa, (ls0, rs0)), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), pa, ((ls0, rs0) ' + psl2).head), ¬ πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + psl2, pa ' + pal3) ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + ((ls0, rs0) ' + psl2) + psl1, (pa ' + pal3) + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < #(pa + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦ |
# psl2 = # pal3, # psl1 = # pal1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl2, pal3), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(((ls0, rs0) ' + psl2) + psl1, pal3 + pal1), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), pa, (ls0, rs0)), ¬ πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + psl2, pa ' + pal3) ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + ((ls0, rs0) ' + psl2) + psl1, (pa ' + pal3) + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < #(pa + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ (a ' + x).head = a; (s)
| # psl2 = # pal3, # psl1 = # pal1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl2, pal3), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(((ls0, rs0) ' + psl2) + psl1, pal3 + pal1), Π(lstep, rstep, lren, rren, lext, rext)((ls, rs), pa, (ls0, rs0)), ¬ πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + psl2, pa ' + pal3) ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + ((ls0, rs0) ' + psl2) + psl1, (pa ' + pal3) + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < #(pa + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦ |
⊦ Π(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))
# psl1 = # pal1, # psl2 = # pal3, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(((ls0, rs0) ' + psl2) + psl1, pal3 + pal1), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl2, pal3), ¬ πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + psl2, pa ' + pal3) ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + ((ls0, rs0) ' + psl2) + psl1, (pa ' + pal3) + pal1), 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)), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < #(pa + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦
Used terms: pa, rs, rstep, lren, rren, lext, rs0, rext, lstep, 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)) |
| # psl1 = # pal1, # psl2 = # pal3, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(((ls0, rs0) ' + psl2) + psl1, pal3 + pal1), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl2, pal3), ¬ πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + psl2, pa ' + pal3) ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + ((ls0, rs0) ' + psl2) + psl1, (pa ' + pal3) + pal1), 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)), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < #(pa + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦ |
# psl2 = # pal3, # psl1 = # pal1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl2, pal3), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(((ls0, rs0) ' + psl2) + psl1, pal3 + pal1), ¬ πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + psl2, pa ' + pal3) ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + ((ls0, rs0) ' + psl2) + psl1, (pa ' + pal3) + pal1), rs = rs0 ∧ lstep(ls, la, ls0) ∧ pa = lren(la) ∧ ¬ cod(rren)(lren(la)) ∨ ls = ls0 ∧ rstep(rs, ra, rs0) ∧ pa = rren(ra) ∧ ¬ cod(lren)(rren(ra)) ∨ lstep(ls, la0, ls0) ∧ lext(la0) ≠ None ∧ rren(ra0) = lren(la0) ∧ rstep(rs, ra0, rs0) ∧ rext(ra0) ≠ None ∧ pa = rren(ra0), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < #(pa + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦
| # psl2 = # pal3, # psl1 = # pal1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl2, pal3), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(((ls0, rs0) ' + psl2) + psl1, pal3 + pal1), ¬ πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + psl2, pa ' + pal3) ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + ((ls0, rs0) ' + psl2) + psl1, (pa ' + pal3) + pal1), rs = rs0 ∧ lstep(ls, la, ls0) ∧ pa = lren(la) ∧ ¬ cod(rren)(lren(la)) ∨ ls = ls0 ∧ rstep(rs, ra, rs0) ∧ pa = rren(ra) ∧ ¬ cod(lren)(rren(ra)) ∨ lstep(ls, la0, ls0) ∧ lext(la0) ≠ None ∧ rren(ra0) = lren(la0) ∧ rstep(rs, ra0, rs0) ∧ rext(ra0) ≠ None ∧ pa = rren(ra0), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < #(pa + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦ |
# psl1 = # pal1, # psl2 = # pal3, pa = lren(la), rs = rs0, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(((ls0, rs0) ' + psl2) + psl1, pal3 + pal1), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl2, pal3), lstep(ls, la, ls0), ¬ cod(rren)(lren(la)), ¬ πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + psl2, pa ' + pal3) ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + ((ls0, rs0) ' + psl2) + psl1, (pa ' + pal3) + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < #(pa + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦
# psl1 = # pal1, # psl2 = # pal3, ls = ls0, pa = rren(ra), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(((ls0, rs0) ' + psl2) + psl1, pal3 + pal1), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl2, pal3), rstep(rs, ra, rs0), ¬ cod(lren)(rren(ra)), ¬ πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + psl2, pa ' + pal3) ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + ((ls0, rs0) ' + psl2) + psl1, (pa ' + pal3) + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < #(pa + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦
# psl1 = # pal1, # psl2 = # pal3, pa = rren(ra0), rren(ra0) = lren(la0), lext(la0) ≠ None, rext(ra0) ≠ None, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(((ls0, rs0) ' + psl2) + psl1, pal3 + pal1), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl2, pal3), lstep(ls, la0, ls0), rstep(rs, ra0, rs0), ¬ πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + psl2, pa ' + pal3) ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + ((ls0, rs0) ' + psl2) + psl1, (pa ' + pal3) + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < #(pa + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦
| # psl1 = # pal1, # psl2 = # pal3, pa = lren(la), rs = rs0, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(((ls0, rs0) ' + psl2) + psl1, pal3 + pal1), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl2, pal3), lstep(ls, la, ls0), ¬ cod(rren)(lren(la)), ¬ πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + psl2, pa ' + pal3) ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + ((ls0, rs0) ' + psl2) + psl1, (pa ' + pal3) + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < #(pa + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦ |
# psl2 = # pal3, # psl1 = # pal1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl2, pal3), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(((ls0, rs0) ' + psl2) + psl1, pal3 + pal1), lstep(ls, la, ls0), ¬ cod(rren)(lren(la)), ¬ πrs(lstep, rstep, lren, rren, (ls0, rs0) ' + psl2, pal3) ⊑ πrs(lstep, rstep, lren, rren, (ls, rs0) ' + ((ls0, rs0) ' + psl2) + psl1, (lren(la) ' + pal3) + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren0, rren, lext, rext. # pal0 + # pal2 < #(lren(la) + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren0, rren, lext, rext), Π(lext, rext, lren0, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren0, rren, lext, rext), Π(lext, rext, lren0, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren0, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren0, rren, psl + psl1, pal0 + pal2) → false ⊦
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); a: ⊦ (x + y) + z = x + y + z; from specification list
| # psl2 = # pal3, # psl1 = # pal1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl2, pal3), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(((ls0, rs0) ' + psl2) + psl1, pal3 + pal1), lstep(ls, la, ls0), ¬ cod(rren)(lren(la)), ¬ πrs(lstep, rstep, lren, rren, (ls0, rs0) ' + psl2, pal3) ⊑ πrs(lstep, rstep, lren, rren, (ls, rs0) ' + ((ls0, rs0) ' + psl2) + psl1, (lren(la) ' + pal3) + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren0, rren, lext, rext. # pal0 + # pal2 < #(lren(la) + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren0, rren, lext, rext), Π(lext, rext, lren0, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren0, rren, lext, rext), Π(lext, rext, lren0, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren0, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren0, rren, psl + psl1, pal0 + pal2) → false ⊦ |
# psl1 = # pal1, # psl2 = # pal3, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(((ls0, rs0) ' + psl2) + psl1, pal3 + pal1), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl2, pal3), lstep(ls, la, ls0), ¬ cod(rren)(lren(la)), ¬ πrs(lstep, rstep, lren, rren, (ls0, rs0) ' + psl2, pal3) ⊑ πrs(lstep, rstep, lren, rren, (ls, rs0) ' + ((ls0, rs0) ' + psl2) + psl1, (lren(la) ' + pal3) + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren0, rren, lext, rext. # pal0 + # pal2 < #(lren(la) + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren0, rren, lext, rext), Π(lext, rext, lren0, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren0, rren, lext, rext), Π(lext, rext, lren0, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren0, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren0, rren, psl + psl1, pal0 + pal2) → false ⊦ #((ls0, rs0) ' + psl2) = # pal3 + 1 ∧ #((ls0, rs0) ' + psl2) + # psl1 = (# pal3 + # pal1) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl2, pal3) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(((ls0, rs0) ' + psl2) + psl1, pal3 + pal1) ∧ ¬ πrs(lstep, rstep, lren, rren, (ls0, rs0) ' + psl2, pal3) ⊑ πrs(lstep, rstep, lren, rren, ((ls0, rs0) ' + psl2) + psl1, pal3 + pal1)
Used simplifier rules: ⊦ a + x = a ' + x; (s) ⊦ #(a ' + x) = (# x)+1; (s) ⊦ m +1 = m + 1; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ m + n < m + n0 ↔ n < n0; (s) ⊦ m < n + 1 ↔ ¬ n < m; (s) ⊦ ¬ n < n; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: pal3, pal1, (ls0, rs0) ' + psl2, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext
| # psl1 = # pal1, # psl2 = # pal3, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(((ls0, rs0) ' + psl2) + psl1, pal3 + pal1), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl2, pal3), lstep(ls, la, ls0), ¬ cod(rren)(lren(la)), ¬ πrs(lstep, rstep, lren, rren, (ls0, rs0) ' + psl2, pal3) ⊑ πrs(lstep, rstep, lren, rren, (ls, rs0) ' + ((ls0, rs0) ' + psl2) + psl1, (lren(la) ' + pal3) + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren0, rren, lext, rext. # pal0 + # pal2 < #(lren(la) + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren0, rren, lext, rext), Π(lext, rext, lren0, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren0, rren, lext, rext), Π(lext, rext, lren0, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren0, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren0, rren, psl + psl1, pal0 + pal2) → false ⊦ #((ls0, rs0) ' + psl2) = # pal3 + 1 ∧ #((ls0, rs0) ' + psl2) + # psl1 = (# pal3 + # pal1) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl2, pal3) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(((ls0, rs0) ' + psl2) + psl1, pal3 + pal1) ∧ ¬ πrs(lstep, rstep, lren, rren, (ls0, rs0) ' + psl2, pal3) ⊑ πrs(lstep, rstep, lren, rren, ((ls0, rs0) ' + psl2) + psl1, pal3 + pal1) |
# psl1 = # pal1, # psl2 = # pal3, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(((ls0, rs0) ' + psl2) + psl1, pal3 + pal1), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl2, pal3), lstep(ls, la, ls0), πrs(lstep, rstep, lren, rren, (ls0, rs0) ' + psl2, pal3) ⊑ πrs(lstep, rstep, lren, rren, ((ls0, rs0) ' + psl2) + psl1, pal3 + pal1), ¬ cod(rren)(lren(la)), ¬ πrs(lstep, rstep, lren, rren, (ls0, rs0) ' + psl2, pal3) ⊑ πrs(lstep, rstep, lren, rren, (ls, rs0) ' + ((ls0, rs0) ' + psl2) + psl1, (lren(la) ' + pal3) + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren0, rren, lext, rext. # pal0 + # pal2 < #(lren(la) + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren0, rren, lext, rext), Π(lext, rext, lren0, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren0, rren, lext, rext), Π(lext, rext, lren0, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren0, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren0, rren, psl + psl1, pal0 + pal2) → false ⊦
Used simplifier rules: 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)
| # psl1 = # pal1, # psl2 = # pal3, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(((ls0, rs0) ' + psl2) + psl1, pal3 + pal1), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl2, pal3), lstep(ls, la, ls0), πrs(lstep, rstep, lren, rren, (ls0, rs0) ' + psl2, pal3) ⊑ πrs(lstep, rstep, lren, rren, ((ls0, rs0) ' + psl2) + psl1, pal3 + pal1), ¬ cod(rren)(lren(la)), ¬ πrs(lstep, rstep, lren, rren, (ls0, rs0) ' + psl2, pal3) ⊑ πrs(lstep, rstep, lren, rren, (ls, rs0) ' + ((ls0, rs0) ' + psl2) + psl1, (lren(la) ' + pal3) + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren0, rren, lext, rext. # pal0 + # pal2 < #(lren(la) + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren0, rren, lext, rext), Π(lext, rext, lren0, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren0, rren, lext, rext), Π(lext, rext, lren0, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren0, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren0, rren, psl + psl1, pal0 + pal2) → false ⊦ |
⊦ # 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)
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ #(x + y) = # x + # y; (s) Used terms: psl2 + psl1, rs0, rstep, pal3 + pal1, 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) |
| # psl1 = # pal1, # psl2 = # pal3, ls = ls0, pa = rren(ra), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(((ls0, rs0) ' + psl2) + psl1, pal3 + pal1), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl2, pal3), rstep(rs, ra, rs0), ¬ cod(lren)(rren(ra)), ¬ πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + psl2, pa ' + pal3) ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + ((ls0, rs0) ' + psl2) + psl1, (pa ' + pal3) + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < #(pa + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦ |
# psl2 = # pal3, # psl1 = # pal1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl2, pal3), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(((ls0, rs0) ' + psl2) + psl1, pal3 + pal1), rstep(rs, ra, rs0), ¬ cod(lren)(rren(ra)), ¬ rs ' + πrs(lstep, rstep, lren, rren, (ls0, rs0) ' + psl2, pal3) ⊑ πrs(lstep, rstep, lren, rren, (ls0, rs) ' + ((ls0, rs0) ' + psl2) + psl1, (rren(ra) ' + pal3) + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren0, lext, rext. # pal0 + # pal2 < #(rren(ra) + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren0, lext, rext), Π(lext, rext, lren, rren0)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren0, lext, rext), Π(lext, rext, lren, rren0)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren0, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren0, psl + psl1, pal0 + pal2) → false ⊦
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); a: ⊦ (x + y) + z = x + y + z; from specification list
| # psl2 = # pal3, # psl1 = # pal1, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl2, pal3), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(((ls0, rs0) ' + psl2) + psl1, pal3 + pal1), rstep(rs, ra, rs0), ¬ cod(lren)(rren(ra)), ¬ rs ' + πrs(lstep, rstep, lren, rren, (ls0, rs0) ' + psl2, pal3) ⊑ πrs(lstep, rstep, lren, rren, (ls0, rs) ' + ((ls0, rs0) ' + psl2) + psl1, (rren(ra) ' + pal3) + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren0, lext, rext. # pal0 + # pal2 < #(rren(ra) + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren0, lext, rext), Π(lext, rext, lren, rren0)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren0, lext, rext), Π(lext, rext, lren, rren0)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren0, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren0, psl + psl1, pal0 + pal2) → false ⊦ |
⊦ # 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)
# psl1 = # pal1, # psl2 = # pal3, #(psl2 + psl1) = #(pal3 + pal1), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(((ls0, rs0) ' + psl2) + psl1, pal3 + pal1), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl2, pal3), rstep(rs, ra, rs0), ¬ cod(lren)(rren(ra)), ¬ rs ' + πrs(lstep, rstep, lren, rren, (ls0, rs0) ' + psl2, pal3) ⊑ rs ' + πrs(lstep, rstep, lren, rren, (ls0, rs0) ' + psl2 + psl1, pal3 + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren0, lext, rext. # pal0 + # pal2 < #(rren(ra) + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren0, lext, rext), Π(lext, rext, lren, rren0)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren0, lext, rext), Π(lext, rext, lren, rren0)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren0, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren0, psl + psl1, pal0 + pal2) → false ⊦
Used simplifier rules: ⊦ #(x + y) = # x + # y; (s) a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: psl2 + psl1, rs, rstep, ra, pal3 + pal1, 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) |
| # psl1 = # pal1, # psl2 = # pal3, #(psl2 + psl1) = #(pal3 + pal1), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(((ls0, rs0) ' + psl2) + psl1, pal3 + pal1), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl2, pal3), rstep(rs, ra, rs0), ¬ cod(lren)(rren(ra)), ¬ rs ' + πrs(lstep, rstep, lren, rren, (ls0, rs0) ' + psl2, pal3) ⊑ rs ' + πrs(lstep, rstep, lren, rren, (ls0, rs0) ' + psl2 + psl1, pal3 + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren0, lext, rext. # pal0 + # pal2 < #(rren(ra) + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren0, lext, rext), Π(lext, rext, lren, rren0)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren0, lext, rext), Π(lext, rext, lren, rren0)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren0, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren0, psl + psl1, pal0 + pal2) → false ⊦ |
# psl1 = # pal1, # psl2 = # pal3, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(((ls0, rs0) ' + psl2) + psl1, pal3 + pal1), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl2, pal3), rstep(rs, ra, rs0), ¬ cod(lren)(rren(ra)), ¬ πrs(lstep, rstep, lren, rren, (ls0, rs0) ' + psl2, pal3) ⊑ πrs(lstep, rstep, lren, rren, (ls0, rs0) ' + psl2 + psl1, pal3 + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren0, lext, rext. # pal0 + # pal2 < #(rren(ra) + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren0, lext, rext), Π(lext, rext, lren, rren0)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren0, lext, rext), Π(lext, rext, lren, rren0)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren0, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren0, psl + psl1, pal0 + pal2) → false ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ' + x ⊑ b ' + y ↔ a = b ∧ x ⊑ y; (ws) ⊦ #(x + y) = # x + # y; (s)
| # psl1 = # pal1, # psl2 = # pal3, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(((ls0, rs0) ' + psl2) + psl1, pal3 + pal1), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl2, pal3), rstep(rs, ra, rs0), ¬ cod(lren)(rren(ra)), ¬ πrs(lstep, rstep, lren, rren, (ls0, rs0) ' + psl2, pal3) ⊑ πrs(lstep, rstep, lren, rren, (ls0, rs0) ' + psl2 + psl1, pal3 + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren0, lext, rext. # pal0 + # pal2 < #(rren(ra) + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren0, lext, rext), Π(lext, rext, lren, rren0)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren0, lext, rext), Π(lext, rext, lren, rren0)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren0, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren0, psl + psl1, pal0 + pal2) → false ⊦ |
Used simplifier rules: ⊦ #(a ' + x) = (# x)+1; (s) ⊦ m +1 = m + 1; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ m + n = m + n0 ↔ n = n0; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ a + x = a ' + x; (s) ⊦ m + n < m + n0 ↔ n < n0; (s) ⊦ m < n + 1 ↔ ¬ n < m; (s) ⊦ ¬ n < n; (s) Used terms: pal3, pal1, (ls0, rs0) ' + psl2, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext
| # psl1 = # pal1, # psl2 = # pal3, pa = rren(ra0), rren(ra0) = lren(la0), lext(la0) ≠ None, rext(ra0) ≠ None, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(((ls0, rs0) ' + psl2) + psl1, pal3 + pal1), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl2, pal3), lstep(ls, la0, ls0), rstep(rs, ra0, rs0), ¬ πrs(lstep, rstep, lren, rren, (ls, rs) ' + (ls0, rs0) ' + psl2, pa ' + pal3) ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + ((ls0, rs0) ' + psl2) + psl1, (pa ' + pal3) + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren, lext, rext. # pal0 + # pal2 < #(pa + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren, psl + psl1, pal0 + pal2) → false ⊦ |
# psl2 = # pal3, # psl1 = # 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)))((ls0, rs0) ' + psl2, pal3), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(((ls0, rs0) ' + psl2) + psl1, pal3 + pal1), lstep(ls, la0, ls0), rstep(rs, ra0, rs0), ¬ rs ' + πrs(lstep, rstep, lren, rren, (ls0, rs0) ' + psl2, pal3) ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + ((ls0, rs0) ' + psl2) + psl1, (lren(la0) ' + pal3) + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren0, lext, rext. # pal0 + # pal2 < #(rren(ra0) + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren0, lext, rext), Π(lext, rext, lren, rren0)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren0, lext, rext), Π(lext, rext, lren, rren0)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren0, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren0, psl + psl1, pal0 + pal2) → false ⊦
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); a: ⊦ (x + y) + z = x + y + z; from specification list
| # psl2 = # pal3, # psl1 = # 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)))((ls0, rs0) ' + psl2, pal3), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(((ls0, rs0) ' + psl2) + psl1, pal3 + pal1), lstep(ls, la0, ls0), rstep(rs, ra0, rs0), ¬ rs ' + πrs(lstep, rstep, lren, rren, (ls0, rs0) ' + psl2, pal3) ⊑ πrs(lstep, rstep, lren, rren, (ls, rs) ' + ((ls0, rs0) ' + psl2) + psl1, (lren(la0) ' + pal3) + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren0, lext, rext. # pal0 + # pal2 < #(rren(ra0) + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren0, lext, rext), Π(lext, rext, lren, rren0)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren0, lext, rext), Π(lext, rext, lren, rren0)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren0, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren0, psl + psl1, pal0 + pal2) → false ⊦ |
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)
# psl1 = # pal1, # psl2 = # pal3, #(psl2 + psl1) = #(pal3 + pal1), lren(la0) = lren(la0), rren(ra0) = lren(la0), lext(la0) ≠ None, rext(ra0) ≠ None, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(((ls0, rs0) ' + psl2) + psl1, pal3 + pal1), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl2, pal3), lstep(ls, la0, ls0), rstep(rs, ra0, rs0), ¬ rs ' + πrs(lstep, rstep, lren, rren, (ls0, rs0) ' + psl2, pal3) ⊑ rs ' + πrs(lstep, rstep, lren, rren, (ls0, rs0) ' + psl2 + psl1, pal3 + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren0, lext, rext. # pal0 + # pal2 < #(rren(ra0) + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren0, lext, rext), Π(lext, rext, lren, rren0)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren0, lext, rext), Π(lext, rext, lren, rren0)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren0, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren0, psl + psl1, pal0 + pal2) → false ⊦
Used simplifier rules: ⊦ #(x + y) = # x + # y; (s) a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: psl2 + psl1, lren(la0), rs, rstep, ra0, pal3 + pal1, 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) |
| # psl1 = # pal1, # psl2 = # pal3, #(psl2 + psl1) = #(pal3 + pal1), lren(la0) = lren(la0), rren(ra0) = lren(la0), lext(la0) ≠ None, rext(ra0) ≠ None, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(((ls0, rs0) ' + psl2) + psl1, pal3 + pal1), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl2, pal3), lstep(ls, la0, ls0), rstep(rs, ra0, rs0), ¬ rs ' + πrs(lstep, rstep, lren, rren, (ls0, rs0) ' + psl2, pal3) ⊑ rs ' + πrs(lstep, rstep, lren, rren, (ls0, rs0) ' + psl2 + psl1, pal3 + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren0, lext, rext. # pal0 + # pal2 < #(rren(ra0) + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren0, lext, rext), Π(lext, rext, lren, rren0)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren0, lext, rext), Π(lext, rext, lren, rren0)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren0, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren0, psl + psl1, pal0 + pal2) → false ⊦ |
# psl1 = # pal1, # psl2 = # pal3, rren(ra0) = lren(la0), lext(la0) ≠ None, rext(ra0) ≠ None, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(((ls0, rs0) ' + psl2) + psl1, pal3 + pal1), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl2, pal3), lstep(ls, la0, ls0), rstep(rs, ra0, rs0), ¬ πrs(lstep, rstep, lren, rren, (ls0, rs0) ' + psl2, pal3) ⊑ πrs(lstep, rstep, lren, rren, (ls0, rs0) ' + psl2 + psl1, pal3 + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren0, lext, rext. # pal0 + # pal2 < #(rren(ra0) + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren0, lext, rext), Π(lext, rext, lren, rren0)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren0, lext, rext), Π(lext, rext, lren, rren0)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren0, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren0, psl + psl1, pal0 + pal2) → false ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ a ' + x ⊑ b ' + y ↔ a = b ∧ x ⊑ y; (ws) ⊦ #(x + y) = # x + # y; (s)
| # psl1 = # pal1, # psl2 = # pal3, rren(ra0) = lren(la0), lext(la0) ≠ None, rext(ra0) ≠ None, frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))(((ls0, rs0) ' + psl2) + psl1, pal3 + pal1), frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren, lext, rext), Π(lext, rext, lren, rren)))((ls0, rs0) ' + psl2, pal3), lstep(ls, la0, ls0), rstep(rs, ra0, rs0), ¬ πrs(lstep, rstep, lren, rren, (ls0, rs0) ' + psl2, pal3) ⊑ πrs(lstep, rstep, lren, rren, (ls0, rs0) ' + psl2 + psl1, pal3 + pal1), ∀ pal0, pal2, psl, psl1, lstart, rstart, lstep, rstep, lren, rren0, lext, rext. # pal0 + # pal2 < #(rren(ra0) + pal3) + # pal1 → # psl = # pal0 + 1 ∧ # psl + # psl1 = (# pal0 + # pal2) + 1 ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren0, lext, rext), Π(lext, rext, lren, rren0)))(psl, pal0) ∧ frag*(IOAut(Π(lstart, rstart), Π(lstep, rstep, lren, rren0, lext, rext), Π(lext, rext, lren, rren0)))(psl + psl1, pal0 + pal2) ∧ ¬ πrs(lstep, rstep, lren, rren0, psl, pal0) ⊑ πrs(lstep, rstep, lren, rren0, psl + psl1, pal0 + pal2) → false ⊦ |
Used simplifier rules: ⊦ #(a ' + x) = (# x)+1; (s) ⊦ m +1 = m + 1; (s) a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ m + n = m + n0 ↔ n = n0; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ a + x = a ' + x; (s) ⊦ m + n < m + n0 ↔ n < n0; (s) ⊦ m < n + 1 ↔ ¬ n < m; (s) ⊦ ¬ n < n; (s) Used terms: pal3, pal1, (ls0, rs0) ' + psl2, psl1, lstart, rstart, lstep, rstep, lren, rren, 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.