MAYBE Problem: double(x) -> permute(x,x,a()) permute(x,y,a()) -> permute(isZero(x),x,b()) permute(false(),x,b()) -> permute(ack(x,x),p(x),c()) permute(true(),x,b()) -> 0() permute(y,x,c()) -> s(s(permute(x,y,a()))) p(0()) -> 0() p(s(x)) -> x ack(0(),x) -> plus(x,s(0())) ack(s(x),0()) -> ack(x,s(0())) ack(s(x),s(y)) -> ack(x,ack(s(x),y)) plus(0(),y) -> y plus(s(x),y) -> plus(x,s(y)) plus(x,s(s(y))) -> s(plus(s(x),y)) plus(x,s(0())) -> s(x) plus(x,0()) -> x isZero(0()) -> true() isZero(s(x)) -> false() Proof: DP Processor: DPs: double#(x) -> permute#(x,x,a()) permute#(x,y,a()) -> isZero#(x) permute#(x,y,a()) -> permute#(isZero(x),x,b()) permute#(false(),x,b()) -> p#(x) permute#(false(),x,b()) -> ack#(x,x) permute#(false(),x,b()) -> permute#(ack(x,x),p(x),c()) permute#(y,x,c()) -> permute#(x,y,a()) ack#(0(),x) -> plus#(x,s(0())) ack#(s(x),0()) -> ack#(x,s(0())) ack#(s(x),s(y)) -> ack#(s(x),y) ack#(s(x),s(y)) -> ack#(x,ack(s(x),y)) plus#(s(x),y) -> plus#(x,s(y)) plus#(x,s(s(y))) -> plus#(s(x),y) TRS: double(x) -> permute(x,x,a()) permute(x,y,a()) -> permute(isZero(x),x,b()) permute(false(),x,b()) -> permute(ack(x,x),p(x),c()) permute(true(),x,b()) -> 0() permute(y,x,c()) -> s(s(permute(x,y,a()))) p(0()) -> 0() p(s(x)) -> x ack(0(),x) -> plus(x,s(0())) ack(s(x),0()) -> ack(x,s(0())) ack(s(x),s(y)) -> ack(x,ack(s(x),y)) plus(0(),y) -> y plus(s(x),y) -> plus(x,s(y)) plus(x,s(s(y))) -> s(plus(s(x),y)) plus(x,s(0())) -> s(x) plus(x,0()) -> x isZero(0()) -> true() isZero(s(x)) -> false() Open