YES Problem: double(0()) -> 0() double(s(x)) -> s(s(double(x))) +(x,0()) -> x +(x,s(y)) -> s(+(x,y)) +(s(x),y) -> s(+(x,y)) double(x) -> +(x,x) Proof: DP Processor: DPs: double#(s(x)) -> double#(x) +#(x,s(y)) -> +#(x,y) +#(s(x),y) -> +#(x,y) double#(x) -> +#(x,x) TRS: double(0()) -> 0() double(s(x)) -> s(s(double(x))) +(x,0()) -> x +(x,s(y)) -> s(+(x,y)) +(s(x),y) -> s(+(x,y)) double(x) -> +(x,x) TDG Processor: DPs: double#(s(x)) -> double#(x) +#(x,s(y)) -> +#(x,y) +#(s(x),y) -> +#(x,y) double#(x) -> +#(x,x) TRS: double(0()) -> 0() double(s(x)) -> s(s(double(x))) +(x,0()) -> x +(x,s(y)) -> s(+(x,y)) +(s(x),y) -> s(+(x,y)) double(x) -> +(x,x) graph: +#(s(x),y) -> +#(x,y) -> +#(s(x),y) -> +#(x,y) +#(s(x),y) -> +#(x,y) -> +#(x,s(y)) -> +#(x,y) +#(x,s(y)) -> +#(x,y) -> +#(s(x),y) -> +#(x,y) +#(x,s(y)) -> +#(x,y) -> +#(x,s(y)) -> +#(x,y) double#(s(x)) -> double#(x) -> double#(x) -> +#(x,x) double#(s(x)) -> double#(x) -> double#(s(x)) -> double#(x) double#(x) -> +#(x,x) -> +#(s(x),y) -> +#(x,y) double#(x) -> +#(x,x) -> +#(x,s(y)) -> +#(x,y) SCC Processor: #sccs: 2 #rules: 3 #arcs: 8/16 DPs: double#(s(x)) -> double#(x) TRS: double(0()) -> 0() double(s(x)) -> s(s(double(x))) +(x,0()) -> x +(x,s(y)) -> s(+(x,y)) +(s(x),y) -> s(+(x,y)) double(x) -> +(x,x) LPO Processor: argument filtering: pi(0) = [] pi(double) = [0] pi(s) = [0] pi(+) = [0,1] pi(double#) = 0 precedence: double > + > double# ~ s ~ 0 problem: DPs: TRS: double(0()) -> 0() double(s(x)) -> s(s(double(x))) +(x,0()) -> x +(x,s(y)) -> s(+(x,y)) +(s(x),y) -> s(+(x,y)) double(x) -> +(x,x) Qed DPs: +#(s(x),y) -> +#(x,y) +#(x,s(y)) -> +#(x,y) TRS: double(0()) -> 0() double(s(x)) -> s(s(double(x))) +(x,0()) -> x +(x,s(y)) -> s(+(x,y)) +(s(x),y) -> s(+(x,y)) double(x) -> +(x,x) Matrix Interpretation Processor: dim=1 interpretation: [+#](x0, x1) = x0 + x1, [+](x0, x1) = x0 + x1, [s](x0) = x0 + 1, [double](x0) = 2x0, [0] = 0 orientation: +#(s(x),y) = x + y + 1 >= x + y = +#(x,y) +#(x,s(y)) = x + y + 1 >= x + y = +#(x,y) double(0()) = 0 >= 0 = 0() double(s(x)) = 2x + 2 >= 2x + 2 = s(s(double(x))) +(x,0()) = x >= x = x +(x,s(y)) = x + y + 1 >= x + y + 1 = s(+(x,y)) +(s(x),y) = x + y + 1 >= x + y + 1 = s(+(x,y)) double(x) = 2x >= 2x = +(x,x) problem: DPs: TRS: double(0()) -> 0() double(s(x)) -> s(s(double(x))) +(x,0()) -> x +(x,s(y)) -> s(+(x,y)) +(s(x),y) -> s(+(x,y)) double(x) -> +(x,x) Qed