YES Problem: app(nil(),k) -> k app(l,nil()) -> l app(cons(x,l),k) -> cons(x,app(l,k)) sum(cons(x,nil())) -> cons(x,nil()) sum(cons(x,cons(y,l))) -> sum(cons(plus(x,y),l)) sum(app(l,cons(x,cons(y,k)))) -> sum(app(l,sum(cons(x,cons(y,k))))) plus(0(),y) -> y plus(s(x),y) -> s(plus(x,y)) sum(plus(cons(0(),x),cons(y,l))) -> pred(sum(cons(s(x),cons(y,l)))) pred(cons(s(x),nil())) -> cons(x,nil()) Proof: Matrix Interpretation Processor: dim=3 interpretation: [1 0 0] [pred](x0) = [0 0 0]x0 [0 0 1] , [1 0 0] [s](x0) = [0 0 0]x0 [0 0 0] , [0] [0] = [0] [0], [1 0 0] [plus](x0, x1) = [0 0 0]x0 + x1 [0 0 0] , [1 0 0] [0] [sum](x0) = [0 1 0]x0 + [0] [0 0 0] [1], [1 0 0] [1 0 0] [0] [cons](x0, x1) = [0 0 0]x0 + [0 0 0]x1 + [0] [0 0 0] [0 1 0] [1], [1 0 0] [1 1 1] [app](x0, x1) = [1 1 0]x0 + [1 1 1]x1 [1 1 1] [1 1 1] , [1] [nil] = [0] [0] orientation: [1 1 1] [1] app(nil(),k) = [1 1 1]k + [1] >= k = k [1 1 1] [1] [1 0 0] [1] app(l,nil()) = [1 1 0]l + [1] >= l = l [1 1 1] [1] [1 1 1] [1 0 0] [1 0 0] [0] [1 1 1] [1 0 0] [1 0 0] [0] app(cons(x,l),k) = [1 1 1]k + [1 0 0]l + [1 0 0]x + [0] >= [0 0 0]k + [0 0 0]l + [0 0 0]x + [0] = cons(x,app(l,k)) [1 1 1] [1 1 0] [1 0 0] [1] [1 1 1] [1 1 0] [0 0 0] [1] [1 0 0] [1] [1 0 0] [1] sum(cons(x,nil())) = [0 0 0]x + [0] >= [0 0 0]x + [0] = cons(x,nil()) [0 0 0] [1] [0 0 0] [1] [1 0 0] [1 0 0] [1 0 0] [0] [1 0 0] [1 0 0] [1 0 0] [0] sum(cons(x,cons(y,l))) = [0 0 0]l + [0 0 0]x + [0 0 0]y + [0] >= [0 0 0]l + [0 0 0]x + [0 0 0]y + [0] = sum(cons(plus(x,y),l)) [0 0 0] [0 0 0] [0 0 0] [1] [0 0 0] [0 0 0] [0 0 0] [1] [1 0 0] [1 0 0] [1 0 0] [1 0 0] [1] [1 0 0] [1 0 0] [1 0 0] [1 0 0] [1] sum(app(l,cons(x,cons(y,k)))) = [1 0 0]k + [1 1 0]l + [1 0 0]x + [1 0 0]y + [1] >= [1 0 0]k + [1 1 0]l + [1 0 0]x + [1 0 0]y + [1] = sum(app(l,sum(cons(x,cons(y,k))))) [0 0 0] [0 0 0] [0 0 0] [0 0 0] [1] [0 0 0] [0 0 0] [0 0 0] [0 0 0] [1] plus(0(),y) = y >= y = y [1 0 0] [1 0 0] [1 0 0] plus(s(x),y) = [0 0 0]x + y >= [0 0 0]x + [0 0 0]y = s(plus(x,y)) [0 0 0] [0 0 0] [0 0 0] [1 0 0] [1 0 0] [1 0 0] [0] [1 0 0] [1 0 0] [1 0 0] [0] sum(plus(cons(0(),x),cons(y,l))) = [0 0 0]l + [0 0 0]x + [0 0 0]y + [0] >= [0 0 0]l + [0 0 0]x + [0 0 0]y + [0] = pred(sum(cons(s(x),cons(y,l)))) [0 0 0] [0 0 0] [0 0 0] [1] [0 0 0] [0 0 0] [0 0 0] [1] [1 0 0] [1] [1 0 0] [1] pred(cons(s(x),nil())) = [0 0 0]x + [0] >= [0 0 0]x + [0] = cons(x,nil()) [0 0 0] [1] [0 0 0] [1] problem: app(cons(x,l),k) -> cons(x,app(l,k)) sum(cons(x,nil())) -> cons(x,nil()) sum(cons(x,cons(y,l))) -> sum(cons(plus(x,y),l)) sum(app(l,cons(x,cons(y,k)))) -> sum(app(l,sum(cons(x,cons(y,k))))) plus(0(),y) -> y plus(s(x),y) -> s(plus(x,y)) sum(plus(cons(0(),x),cons(y,l))) -> pred(sum(cons(s(x),cons(y,l)))) pred(cons(s(x),nil())) -> cons(x,nil()) Matrix Interpretation Processor: dim=1 interpretation: [pred](x0) = x0 + 4, [s](x0) = x0 + 2, [0] = 6, [plus](x0, x1) = x0 + x1, [sum](x0) = x0, [cons](x0, x1) = x0 + x1, [app](x0, x1) = x0 + x1 + 2, [nil] = 0 orientation: app(cons(x,l),k) = k + l + x + 2 >= k + l + x + 2 = cons(x,app(l,k)) sum(cons(x,nil())) = x >= x = cons(x,nil()) sum(cons(x,cons(y,l))) = l + x + y >= l + x + y = sum(cons(plus(x,y),l)) sum(app(l,cons(x,cons(y,k)))) = k + l + x + y + 2 >= k + l + x + y + 2 = sum(app(l,sum(cons(x,cons(y,k))))) plus(0(),y) = y + 6 >= y = y plus(s(x),y) = x + y + 2 >= x + y + 2 = s(plus(x,y)) sum(plus(cons(0(),x),cons(y,l))) = l + x + y + 6 >= l + x + y + 6 = pred(sum(cons(s(x),cons(y,l)))) pred(cons(s(x),nil())) = x + 6 >= x = cons(x,nil()) problem: app(cons(x,l),k) -> cons(x,app(l,k)) sum(cons(x,nil())) -> cons(x,nil()) sum(cons(x,cons(y,l))) -> sum(cons(plus(x,y),l)) sum(app(l,cons(x,cons(y,k)))) -> sum(app(l,sum(cons(x,cons(y,k))))) plus(s(x),y) -> s(plus(x,y)) sum(plus(cons(0(),x),cons(y,l))) -> pred(sum(cons(s(x),cons(y,l)))) DP Processor: DPs: app#(cons(x,l),k) -> app#(l,k) sum#(cons(x,cons(y,l))) -> plus#(x,y) sum#(cons(x,cons(y,l))) -> sum#(cons(plus(x,y),l)) sum#(app(l,cons(x,cons(y,k)))) -> sum#(cons(x,cons(y,k))) sum#(app(l,cons(x,cons(y,k)))) -> app#(l,sum(cons(x,cons(y,k)))) sum#(app(l,cons(x,cons(y,k)))) -> sum#(app(l,sum(cons(x,cons(y,k))))) plus#(s(x),y) -> plus#(x,y) sum#(plus(cons(0(),x),cons(y,l))) -> sum#(cons(s(x),cons(y,l))) TRS: app(cons(x,l),k) -> cons(x,app(l,k)) sum(cons(x,nil())) -> cons(x,nil()) sum(cons(x,cons(y,l))) -> sum(cons(plus(x,y),l)) sum(app(l,cons(x,cons(y,k)))) -> sum(app(l,sum(cons(x,cons(y,k))))) plus(s(x),y) -> s(plus(x,y)) sum(plus(cons(0(),x),cons(y,l))) -> pred(sum(cons(s(x),cons(y,l)))) TDG Processor: DPs: app#(cons(x,l),k) -> app#(l,k) sum#(cons(x,cons(y,l))) -> plus#(x,y) sum#(cons(x,cons(y,l))) -> sum#(cons(plus(x,y),l)) sum#(app(l,cons(x,cons(y,k)))) -> sum#(cons(x,cons(y,k))) sum#(app(l,cons(x,cons(y,k)))) -> app#(l,sum(cons(x,cons(y,k)))) sum#(app(l,cons(x,cons(y,k)))) -> sum#(app(l,sum(cons(x,cons(y,k))))) plus#(s(x),y) -> plus#(x,y) sum#(plus(cons(0(),x),cons(y,l))) -> sum#(cons(s(x),cons(y,l))) TRS: app(cons(x,l),k) -> cons(x,app(l,k)) sum(cons(x,nil())) -> cons(x,nil()) sum(cons(x,cons(y,l))) -> sum(cons(plus(x,y),l)) sum(app(l,cons(x,cons(y,k)))) -> sum(app(l,sum(cons(x,cons(y,k))))) plus(s(x),y) -> s(plus(x,y)) sum(plus(cons(0(),x),cons(y,l))) -> pred(sum(cons(s(x),cons(y,l)))) graph: plus#(s(x),y) -> plus#(x,y) -> plus#(s(x),y) -> plus#(x,y) sum#(plus(cons(0(),x),cons(y,l))) -> sum#(cons(s(x),cons(y,l))) -> sum#(plus(cons(0(),x),cons(y,l))) -> sum#(cons(s(x),cons(y,l))) sum#(plus(cons(0(),x),cons(y,l))) -> sum#(cons(s(x),cons(y,l))) -> sum#(app(l,cons(x,cons(y,k)))) -> sum#(app(l,sum(cons(x,cons(y,k))))) sum#(plus(cons(0(),x),cons(y,l))) -> sum#(cons(s(x),cons(y,l))) -> sum#(app(l,cons(x,cons(y,k)))) -> app#(l,sum(cons(x,cons(y,k)))) sum#(plus(cons(0(),x),cons(y,l))) -> sum#(cons(s(x),cons(y,l))) -> sum#(app(l,cons(x,cons(y,k)))) -> sum#(cons(x,cons(y,k))) sum#(plus(cons(0(),x),cons(y,l))) -> sum#(cons(s(x),cons(y,l))) -> sum#(cons(x,cons(y,l))) -> sum#(cons(plus(x,y),l)) sum#(plus(cons(0(),x),cons(y,l))) -> sum#(cons(s(x),cons(y,l))) -> sum#(cons(x,cons(y,l))) -> plus#(x,y) sum#(cons(x,cons(y,l))) -> plus#(x,y) -> plus#(s(x),y) -> plus#(x,y) sum#(cons(x,cons(y,l))) -> sum#(cons(plus(x,y),l)) -> sum#(plus(cons(0(),x),cons(y,l))) -> sum#(cons(s(x),cons(y,l))) sum#(cons(x,cons(y,l))) -> sum#(cons(plus(x,y),l)) -> sum#(app(l,cons(x,cons(y,k)))) -> sum#(app(l,sum(cons(x,cons(y,k))))) sum#(cons(x,cons(y,l))) -> sum#(cons(plus(x,y),l)) -> sum#(app(l,cons(x,cons(y,k)))) -> app#(l,sum(cons(x,cons(y,k)))) sum#(cons(x,cons(y,l))) -> sum#(cons(plus(x,y),l)) -> sum#(app(l,cons(x,cons(y,k)))) -> sum#(cons(x,cons(y,k))) sum#(cons(x,cons(y,l))) -> sum#(cons(plus(x,y),l)) -> sum#(cons(x,cons(y,l))) -> sum#(cons(plus(x,y),l)) sum#(cons(x,cons(y,l))) -> sum#(cons(plus(x,y),l)) -> sum#(cons(x,cons(y,l))) -> plus#(x,y) sum#(app(l,cons(x,cons(y,k)))) -> sum#(cons(x,cons(y,k))) -> sum#(plus(cons(0(),x),cons(y,l))) -> sum#(cons(s(x),cons(y,l))) sum#(app(l,cons(x,cons(y,k)))) -> sum#(cons(x,cons(y,k))) -> sum#(app(l,cons(x,cons(y,k)))) -> sum#(app(l,sum(cons(x,cons(y,k))))) sum#(app(l,cons(x,cons(y,k)))) -> sum#(cons(x,cons(y,k))) -> sum#(app(l,cons(x,cons(y,k)))) -> app#(l,sum(cons(x,cons(y,k)))) sum#(app(l,cons(x,cons(y,k)))) -> sum#(cons(x,cons(y,k))) -> sum#(app(l,cons(x,cons(y,k)))) -> sum#(cons(x,cons(y,k))) sum#(app(l,cons(x,cons(y,k)))) -> sum#(cons(x,cons(y,k))) -> sum#(cons(x,cons(y,l))) -> sum#(cons(plus(x,y),l)) sum#(app(l,cons(x,cons(y,k)))) -> sum#(cons(x,cons(y,k))) -> sum#(cons(x,cons(y,l))) -> plus#(x,y) sum#(app(l,cons(x,cons(y,k)))) -> sum#(app(l,sum(cons(x,cons(y,k))))) -> sum#(plus(cons(0(),x),cons(y,l))) -> sum#(cons(s(x),cons(y,l))) sum#(app(l,cons(x,cons(y,k)))) -> sum#(app(l,sum(cons(x,cons(y,k))))) -> sum#(app(l,cons(x,cons(y,k)))) -> sum#(app(l,sum(cons(x,cons(y,k))))) sum#(app(l,cons(x,cons(y,k)))) -> sum#(app(l,sum(cons(x,cons(y,k))))) -> sum#(app(l,cons(x,cons(y,k)))) -> app#(l,sum(cons(x,cons(y,k)))) sum#(app(l,cons(x,cons(y,k)))) -> sum#(app(l,sum(cons(x,cons(y,k))))) -> sum#(app(l,cons(x,cons(y,k)))) -> sum#(cons(x,cons(y,k))) sum#(app(l,cons(x,cons(y,k)))) -> sum#(app(l,sum(cons(x,cons(y,k))))) -> sum#(cons(x,cons(y,l))) -> sum#(cons(plus(x,y),l)) sum#(app(l,cons(x,cons(y,k)))) -> sum#(app(l,sum(cons(x,cons(y,k))))) -> sum#(cons(x,cons(y,l))) -> plus#(x,y) sum#(app(l,cons(x,cons(y,k)))) -> app#(l,sum(cons(x,cons(y,k)))) -> app#(cons(x,l),k) -> app#(l,k) app#(cons(x,l),k) -> app#(l,k) -> app#(cons(x,l),k) -> app#(l,k) SCC Processor: #sccs: 3 #rules: 6 #arcs: 28/64 DPs: sum#(plus(cons(0(),x),cons(y,l))) -> sum#(cons(s(x),cons(y,l))) sum#(cons(x,cons(y,l))) -> sum#(cons(plus(x,y),l)) sum#(app(l,cons(x,cons(y,k)))) -> sum#(cons(x,cons(y,k))) sum#(app(l,cons(x,cons(y,k)))) -> sum#(app(l,sum(cons(x,cons(y,k))))) TRS: app(cons(x,l),k) -> cons(x,app(l,k)) sum(cons(x,nil())) -> cons(x,nil()) sum(cons(x,cons(y,l))) -> sum(cons(plus(x,y),l)) sum(app(l,cons(x,cons(y,k)))) -> sum(app(l,sum(cons(x,cons(y,k))))) plus(s(x),y) -> s(plus(x,y)) sum(plus(cons(0(),x),cons(y,l))) -> pred(sum(cons(s(x),cons(y,l)))) EDG Processor: DPs: sum#(plus(cons(0(),x),cons(y,l))) -> sum#(cons(s(x),cons(y,l))) sum#(cons(x,cons(y,l))) -> sum#(cons(plus(x,y),l)) sum#(app(l,cons(x,cons(y,k)))) -> sum#(cons(x,cons(y,k))) sum#(app(l,cons(x,cons(y,k)))) -> sum#(app(l,sum(cons(x,cons(y,k))))) TRS: app(cons(x,l),k) -> cons(x,app(l,k)) sum(cons(x,nil())) -> cons(x,nil()) sum(cons(x,cons(y,l))) -> sum(cons(plus(x,y),l)) sum(app(l,cons(x,cons(y,k)))) -> sum(app(l,sum(cons(x,cons(y,k))))) plus(s(x),y) -> s(plus(x,y)) sum(plus(cons(0(),x),cons(y,l))) -> pred(sum(cons(s(x),cons(y,l)))) graph: sum#(plus(cons(0(),x),cons(y,l))) -> sum#(cons(s(x),cons(y,l))) -> sum#(cons(x,cons(y,l))) -> sum#(cons(plus(x,y),l)) sum#(cons(x,cons(y,l))) -> sum#(cons(plus(x,y),l)) -> sum#(cons(x,cons(y,l))) -> sum#(cons(plus(x,y),l)) sum#(app(l,cons(x,cons(y,k)))) -> sum#(cons(x,cons(y,k))) -> sum#(cons(x,cons(y,l))) -> sum#(cons(plus(x,y),l)) sum#(app(l,cons(x,cons(y,k)))) -> sum#(app(l,sum(cons(x,cons(y,k))))) -> sum#(cons(x,cons(y,l))) -> sum#(cons(plus(x,y),l)) sum#(app(l,cons(x,cons(y,k)))) -> sum#(app(l,sum(cons(x,cons(y,k))))) -> sum#(app(l,cons(x,cons(y,k)))) -> sum#(cons(x,cons(y,k))) sum#(app(l,cons(x,cons(y,k)))) -> sum#(app(l,sum(cons(x,cons(y,k))))) -> sum#(app(l,cons(x,cons(y,k)))) -> sum#(app(l,sum(cons(x,cons(y,k))))) CDG Processor: DPs: sum#(plus(cons(0(),x),cons(y,l))) -> sum#(cons(s(x),cons(y,l))) sum#(cons(x,cons(y,l))) -> sum#(cons(plus(x,y),l)) sum#(app(l,cons(x,cons(y,k)))) -> sum#(cons(x,cons(y,k))) sum#(app(l,cons(x,cons(y,k)))) -> sum#(app(l,sum(cons(x,cons(y,k))))) TRS: app(cons(x,l),k) -> cons(x,app(l,k)) sum(cons(x,nil())) -> cons(x,nil()) sum(cons(x,cons(y,l))) -> sum(cons(plus(x,y),l)) sum(app(l,cons(x,cons(y,k)))) -> sum(app(l,sum(cons(x,cons(y,k))))) plus(s(x),y) -> s(plus(x,y)) sum(plus(cons(0(),x),cons(y,l))) -> pred(sum(cons(s(x),cons(y,l)))) graph: sum#(plus(cons(0(),x),cons(y,l))) -> sum#(cons(s(x),cons(y,l))) -> sum#(cons(x,cons(y,l))) -> sum#(cons(plus(x,y),l)) sum#(app(l,cons(x,cons(y,k)))) -> sum#(cons(x,cons(y,k))) -> sum#(cons(x,cons(y,l))) -> sum#(cons(plus(x,y),l)) sum#(app(l,cons(x,cons(y,k)))) -> sum#(app(l,sum(cons(x,cons(y,k))))) -> sum#(cons(x,cons(y,l))) -> sum#(cons(plus(x,y),l)) SCC Processor: #sccs: 0 #rules: 0 #arcs: 3/16 DPs: app#(cons(x,l),k) -> app#(l,k) TRS: app(cons(x,l),k) -> cons(x,app(l,k)) sum(cons(x,nil())) -> cons(x,nil()) sum(cons(x,cons(y,l))) -> sum(cons(plus(x,y),l)) sum(app(l,cons(x,cons(y,k)))) -> sum(app(l,sum(cons(x,cons(y,k))))) plus(s(x),y) -> s(plus(x,y)) sum(plus(cons(0(),x),cons(y,l))) -> pred(sum(cons(s(x),cons(y,l)))) Subterm Criterion Processor: simple projection: pi(app#) = 0 problem: DPs: TRS: app(cons(x,l),k) -> cons(x,app(l,k)) sum(cons(x,nil())) -> cons(x,nil()) sum(cons(x,cons(y,l))) -> sum(cons(plus(x,y),l)) sum(app(l,cons(x,cons(y,k)))) -> sum(app(l,sum(cons(x,cons(y,k))))) plus(s(x),y) -> s(plus(x,y)) sum(plus(cons(0(),x),cons(y,l))) -> pred(sum(cons(s(x),cons(y,l)))) Qed DPs: plus#(s(x),y) -> plus#(x,y) TRS: app(cons(x,l),k) -> cons(x,app(l,k)) sum(cons(x,nil())) -> cons(x,nil()) sum(cons(x,cons(y,l))) -> sum(cons(plus(x,y),l)) sum(app(l,cons(x,cons(y,k)))) -> sum(app(l,sum(cons(x,cons(y,k))))) plus(s(x),y) -> s(plus(x,y)) sum(plus(cons(0(),x),cons(y,l))) -> pred(sum(cons(s(x),cons(y,l)))) Subterm Criterion Processor: simple projection: pi(plus#) = 0 problem: DPs: TRS: app(cons(x,l),k) -> cons(x,app(l,k)) sum(cons(x,nil())) -> cons(x,nil()) sum(cons(x,cons(y,l))) -> sum(cons(plus(x,y),l)) sum(app(l,cons(x,cons(y,k)))) -> sum(app(l,sum(cons(x,cons(y,k))))) plus(s(x),y) -> s(plus(x,y)) sum(plus(cons(0(),x),cons(y,l))) -> pred(sum(cons(s(x),cons(y,l)))) Qed