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) TDG 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: add#() -> app#(curry(),plus()) -> app#(app(app(curry(),f),x),y) -> app#(app(f,x),y) add#() -> app#(curry(),plus()) -> app#(app(app(curry(),f),x),y) -> app#(f,x) add#() -> app#(curry(),plus()) -> app#(app(plus(),app(s(),x)),y) -> app#(s(),app(app(plus(),x),y)) add#() -> app#(curry(),plus()) -> app#(app(plus(),app(s(),x)),y) -> app#(app(plus(),x),y) add#() -> app#(curry(),plus()) -> app#(app(plus(),app(s(),x)),y) -> app#(plus(),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#(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(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(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#(plus(),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(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(plus(),app(s(),x)),y) -> app#(s(),app(app(plus(),x),y)) 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#(plus(),x) 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(plus(),app(s(),x)),y) -> app#(s(),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(plus(),app(s(),x)),y) -> app#(s(),app(app(plus(),x),y)) app#(app(plus(),app(s(),x)),y) -> app#(s(),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)) -> app#(app(plus(),app(s(),x)),y) -> app#(plus(),x) 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#(app(plus(),x),y) -> app#(app(app(curry(),f),x),y) -> app#(f,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(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#(plus(),x) 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#(plus(),x) -> app#(app(app(curry(),f),x),y) -> app#(f,x) app#(app(plus(),app(s(),x)),y) -> app#(plus(),x) -> app#(app(plus(),app(s(),x)),y) -> app#(s(),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#(plus(),x) -> app#(app(plus(),app(s(),x)),y) -> app#(plus(),x) 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: 1 #rules: 5 #arcs: 30/36 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) 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, [add] = 1, [curry] = 1, [s] = 0, [app](x0, x1) = x0 + x1, [0] = 0, [plus] = 0 orientation: app#(app(plus(),app(s(),x)),y) = x + y >= x = app#(plus(),x) app#(app(plus(),app(s(),x)),y) = x + y >= x + y = app#(app(plus(),x),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 = app#(f,x) app#(app(app(curry(),f),x),y) = f + x + y + 1 >= f + x + y = app#(app(f,x),y) 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: 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)) 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] = 0, [s] = 0, [app](x0, x1) = x0 + x1, [0] = 0, [plus] = 1 orientation: app#(app(plus(),app(s(),x)),y) = x + 1 >= 1 = app#(plus(),x) app#(app(plus(),app(s(),x)),y) = x + 1 >= x + 1 = app#(app(plus(),x),y) app#(app(plus(),app(s(),x)),y) = x + 1 >= 0 = app#(s(),app(app(plus(),x),y)) app(app(plus(),0()),y) = y + 1 >= 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 >= f + x + y = app(app(f,x),y) add() = 1 >= 1 = app(curry(),plus()) problem: DPs: app#(app(plus(),app(s(),x)),y) -> app#(plus(),x) 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 + x1, [add] = 1, [curry] = 0, [s] = 1, [app](x0, x1) = x0 + x1, [0] = 0, [plus] = 0 orientation: app#(app(plus(),app(s(),x)),y) = x + y + 1 >= x = app#(plus(),x) app#(app(plus(),app(s(),x)),y) = x + y + 1 >= x + y = 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 >= f + x + y = app(app(f,x),y) add() = 1 >= 0 = 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