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) Usable Rule Processor: DPs: double#(s(x)) -> double#(x) +#(x,s(y)) -> +#(x,y) +#(s(x),y) -> +#(x,y) double#(x) -> +#(x,x) TRS: Matrix Interpretation Processor: dim=4 usable rules: interpretation: [+#](x0, x1) = [0 0 0 1]x0 + [0 0 1 0]x1, [double#](x0) = [1 1 1 1]x0 + [1], [0 0 1 1] [0] [0 0 1 0] [0] [s](x0) = [1 0 1 0]x0 + [1] [1 1 0 1] [1] orientation: double#(s(x)) = [2 1 3 2]x + [3] >= [1 1 1 1]x + [1] = double#(x) +#(x,s(y)) = [0 0 0 1]x + [1 0 1 0]y + [1] >= [0 0 0 1]x + [0 0 1 0]y = +#(x,y) +#(s(x),y) = [1 1 0 1]x + [0 0 1 0]y + [1] >= [0 0 0 1]x + [0 0 1 0]y = +#(x,y) double#(x) = [1 1 1 1]x + [1] >= [0 0 1 1]x = +#(x,x) problem: DPs: TRS: Qed