YES Problem: cond(true(),x,y) -> cond(gr(x,y),p(x),s(y)) gr(0(),x) -> false() gr(s(x),0()) -> true() gr(s(x),s(y)) -> gr(x,y) p(0()) -> 0() p(s(x)) -> x Proof: DP Processor: DPs: cond#(true(),x,y) -> p#(x) cond#(true(),x,y) -> gr#(x,y) cond#(true(),x,y) -> cond#(gr(x,y),p(x),s(y)) gr#(s(x),s(y)) -> gr#(x,y) TRS: cond(true(),x,y) -> cond(gr(x,y),p(x),s(y)) gr(0(),x) -> false() gr(s(x),0()) -> true() gr(s(x),s(y)) -> gr(x,y) p(0()) -> 0() p(s(x)) -> x Matrix Interpretation Processor: dim=1 interpretation: [gr#](x0, x1) = x0, [p#](x0) = 0, [cond#](x0, x1, x2) = 1/2x0 + 2x1, [false] = 0, [0] = 0, [s](x0) = 2x0 + 1, [p](x0) = 1/2x0, [gr](x0, x1) = x0, [cond](x0, x1, x2) = 1, [true] = 1 orientation: cond#(true(),x,y) = 2x + 1/2 >= 0 = p#(x) cond#(true(),x,y) = 2x + 1/2 >= x = gr#(x,y) cond#(true(),x,y) = 2x + 1/2 >= 3/2x = cond#(gr(x,y),p(x),s(y)) gr#(s(x),s(y)) = 2x + 1 >= x = gr#(x,y) cond(true(),x,y) = 1 >= 1 = cond(gr(x,y),p(x),s(y)) gr(0(),x) = 0 >= 0 = false() gr(s(x),0()) = 2x + 1 >= 1 = true() gr(s(x),s(y)) = 2x + 1 >= x = gr(x,y) p(0()) = 0 >= 0 = 0() p(s(x)) = x + 1/2 >= x = x problem: DPs: TRS: cond(true(),x,y) -> cond(gr(x,y),p(x),s(y)) gr(0(),x) -> false() gr(s(x),0()) -> true() gr(s(x),s(y)) -> gr(x,y) p(0()) -> 0() p(s(x)) -> x Qed