YES Problem: app(app(plus(),0()),y) -> y app(app(plus(),app(s(),x)),y) -> app(s(),app(app(plus(),x),y)) app(app(app(curry(),f),x),y) -> app(app(f,x),y) add() -> app(curry(),plus()) Proof: DP Processor: DPs: app#(app(plus(),app(s(),x)),y) -> app#(plus(),x) app#(app(plus(),app(s(),x)),y) -> app#(app(plus(),x),y) app#(app(plus(),app(s(),x)),y) -> app#(s(),app(app(plus(),x),y)) app#(app(app(curry(),f),x),y) -> app#(f,x) app#(app(app(curry(),f),x),y) -> app#(app(f,x),y) add#() -> app#(curry(),plus()) TRS: app(app(plus(),0()),y) -> y app(app(plus(),app(s(),x)),y) -> app(s(),app(app(plus(),x),y)) app(app(app(curry(),f),x),y) -> app(app(f,x),y) add() -> app(curry(),plus()) Usable Rule Processor: DPs: app#(app(plus(),app(s(),x)),y) -> app#(plus(),x) app#(app(plus(),app(s(),x)),y) -> app#(app(plus(),x),y) app#(app(plus(),app(s(),x)),y) -> app#(s(),app(app(plus(),x),y)) app#(app(app(curry(),f),x),y) -> app#(f,x) app#(app(app(curry(),f),x),y) -> app#(app(f,x),y) add#() -> app#(curry(),plus()) TRS: app(app(plus(),0()),y) -> y app(app(plus(),app(s(),x)),y) -> app(s(),app(app(plus(),x),y)) app(app(app(curry(),f),x),y) -> app(app(f,x),y) CDG Processor: DPs: app#(app(plus(),app(s(),x)),y) -> app#(plus(),x) app#(app(plus(),app(s(),x)),y) -> app#(app(plus(),x),y) app#(app(plus(),app(s(),x)),y) -> app#(s(),app(app(plus(),x),y)) app#(app(app(curry(),f),x),y) -> app#(f,x) app#(app(app(curry(),f),x),y) -> app#(app(f,x),y) add#() -> app#(curry(),plus()) TRS: app(app(plus(),0()),y) -> y app(app(plus(),app(s(),x)),y) -> app(s(),app(app(plus(),x),y)) app(app(app(curry(),f),x),y) -> app(app(f,x),y) graph: app#(app(app(curry(),f),x),y) -> app#(app(f,x),y) -> app#(app(plus(),app(s(),x)),y) -> app#(plus(),x) app#(app(app(curry(),f),x),y) -> app#(app(f,x),y) -> app#(app(plus(),app(s(),x)),y) -> app#(app(plus(),x),y) app#(app(app(curry(),f),x),y) -> app#(app(f,x),y) -> app#(app(plus(),app(s(),x)),y) -> app#(s(),app(app(plus(),x),y)) app#(app(app(curry(),f),x),y) -> app#(app(f,x),y) -> app#(app(app(curry(),f),x),y) -> app#(f,x) app#(app(app(curry(),f),x),y) -> app#(app(f,x),y) -> app#(app(app(curry(),f),x),y) -> app#(app(f,x),y) app#(app(app(curry(),f),x),y) -> app#(f,x) -> app#(app(plus(),app(s(),x)),y) -> app#(plus(),x) app#(app(app(curry(),f),x),y) -> app#(f,x) -> app#(app(plus(),app(s(),x)),y) -> app#(app(plus(),x),y) app#(app(app(curry(),f),x),y) -> app#(f,x) -> app#(app(plus(),app(s(),x)),y) -> app#(s(),app(app(plus(),x),y)) app#(app(app(curry(),f),x),y) -> app#(f,x) -> app#(app(app(curry(),f),x),y) -> app#(f,x) app#(app(app(curry(),f),x),y) -> app#(f,x) -> app#(app(app(curry(),f),x),y) -> app#(app(f,x),y) app#(app(plus(),app(s(),x)),y) -> app#(app(plus(),x),y) -> app#(app(plus(),app(s(),x)),y) -> app#(plus(),x) app#(app(plus(),app(s(),x)),y) -> app#(app(plus(),x),y) -> app#(app(plus(),app(s(),x)),y) -> app#(app(plus(),x),y) app#(app(plus(),app(s(),x)),y) -> app#(app(plus(),x),y) -> app#(app(plus(),app(s(),x)),y) -> app#(s(),app(app(plus(),x),y)) Restore Modifier: DPs: app#(app(plus(),app(s(),x)),y) -> app#(plus(),x) app#(app(plus(),app(s(),x)),y) -> app#(app(plus(),x),y) app#(app(plus(),app(s(),x)),y) -> app#(s(),app(app(plus(),x),y)) app#(app(app(curry(),f),x),y) -> app#(f,x) app#(app(app(curry(),f),x),y) -> app#(app(f,x),y) add#() -> app#(curry(),plus()) TRS: app(app(plus(),0()),y) -> y app(app(plus(),app(s(),x)),y) -> app(s(),app(app(plus(),x),y)) app(app(app(curry(),f),x),y) -> app(app(f,x),y) add() -> app(curry(),plus()) SCC Processor: #sccs: 2 #rules: 3 #arcs: 13/36 DPs: app#(app(app(curry(),f),x),y) -> app#(app(f,x),y) app#(app(app(curry(),f),x),y) -> app#(f,x) TRS: app(app(plus(),0()),y) -> y app(app(plus(),app(s(),x)),y) -> app(s(),app(app(plus(),x),y)) app(app(app(curry(),f),x),y) -> app(app(f,x),y) add() -> app(curry(),plus()) Matrix Interpretation Processor: dimension: 1 interpretation: [app#](x0, x1) = x0 + x1 + 1, [add] = 1, [curry] = 1, [s] = 0, [app](x0, x1) = x0 + x1, [0] = 0, [plus] = 0 orientation: app#(app(app(curry(),f),x),y) = f + x + y + 2 >= f + x + y + 1 = app#(app(f,x),y) app#(app(app(curry(),f),x),y) = f + x + y + 2 >= f + x + 1 = app#(f,x) app(app(plus(),0()),y) = y >= y = y app(app(plus(),app(s(),x)),y) = x + y >= x + y = app(s(),app(app(plus(),x),y)) app(app(app(curry(),f),x),y) = f + x + y + 1 >= f + x + y = app(app(f,x),y) add() = 1 >= 1 = app(curry(),plus()) problem: DPs: TRS: app(app(plus(),0()),y) -> y app(app(plus(),app(s(),x)),y) -> app(s(),app(app(plus(),x),y)) app(app(app(curry(),f),x),y) -> app(app(f,x),y) add() -> app(curry(),plus()) Qed DPs: app#(app(plus(),app(s(),x)),y) -> app#(app(plus(),x),y) TRS: app(app(plus(),0()),y) -> y app(app(plus(),app(s(),x)),y) -> app(s(),app(app(plus(),x),y)) app(app(app(curry(),f),x),y) -> app(app(f,x),y) add() -> app(curry(),plus()) Matrix Interpretation Processor: dimension: 1 interpretation: [app#](x0, x1) = x0, [add] = 1, [curry] = 1, [s] = 1, [app](x0, x1) = x0 + x1, [0] = 0, [plus] = 0 orientation: app#(app(plus(),app(s(),x)),y) = x + 1 >= x = app#(app(plus(),x),y) app(app(plus(),0()),y) = y >= y = y app(app(plus(),app(s(),x)),y) = x + y + 1 >= x + y + 1 = app(s(),app(app(plus(),x),y)) app(app(app(curry(),f),x),y) = f + x + y + 1 >= f + x + y = app(app(f,x),y) add() = 1 >= 1 = app(curry(),plus()) problem: DPs: TRS: app(app(plus(),0()),y) -> y app(app(plus(),app(s(),x)),y) -> app(s(),app(app(plus(),x),y)) app(app(app(curry(),f),x),y) -> app(app(f,x),y) add() -> app(curry(),plus()) Qed