MAYBE Problem: minus(x,y) -> if(gt(x,y),x,y) if(true(),x,y) -> s(minus(p(x),y)) if(false(),x,y) -> 0() p(0()) -> 0() p(s(x)) -> x ge(x,0()) -> true() ge(0(),s(x)) -> false() ge(s(x),s(y)) -> ge(x,y) gt(0(),y) -> false() gt(s(x),0()) -> true() gt(s(x),s(y)) -> gt(x,y) div(x,y) -> if1(ge(x,y),x,y) if1(true(),x,y) -> if2(gt(y,0()),x,y) if1(false(),x,y) -> 0() if2(true(),x,y) -> s(div(minus(x,y),y)) if2(false(),x,y) -> 0() Proof: DP Processor: DPs: minus#(x,y) -> gt#(x,y) minus#(x,y) -> if#(gt(x,y),x,y) if#(true(),x,y) -> p#(x) if#(true(),x,y) -> minus#(p(x),y) ge#(s(x),s(y)) -> ge#(x,y) gt#(s(x),s(y)) -> gt#(x,y) div#(x,y) -> ge#(x,y) div#(x,y) -> if1#(ge(x,y),x,y) if1#(true(),x,y) -> gt#(y,0()) if1#(true(),x,y) -> if2#(gt(y,0()),x,y) if2#(true(),x,y) -> minus#(x,y) if2#(true(),x,y) -> div#(minus(x,y),y) TRS: minus(x,y) -> if(gt(x,y),x,y) if(true(),x,y) -> s(minus(p(x),y)) if(false(),x,y) -> 0() p(0()) -> 0() p(s(x)) -> x ge(x,0()) -> true() ge(0(),s(x)) -> false() ge(s(x),s(y)) -> ge(x,y) gt(0(),y) -> false() gt(s(x),0()) -> true() gt(s(x),s(y)) -> gt(x,y) div(x,y) -> if1(ge(x,y),x,y) if1(true(),x,y) -> if2(gt(y,0()),x,y) if1(false(),x,y) -> 0() if2(true(),x,y) -> s(div(minus(x,y),y)) if2(false(),x,y) -> 0() Open