(COMMENT harder variant of AG01 3.4) (VAR x y z) (RULES minus(minus(x,y),z) -> minus(x,plus(y,z)) minus(0,y) -> 0 minus(x,0) -> x minus(s(x),s(y)) -> minus(x,y) plus(0,y) -> y plus(s(x),y) -> plus(x,s(y)) plus(s(x),y) -> s(plus(y,x)) zero(s(x)) -> false zero(0) -> true p(s(x)) -> x p(0) -> 0 div(x,y) -> quot(x,y,0) quot(s(x),s(y),z) -> quot(minus(p(ack(0,x)),y),s(y),s(z)) quot(0,s(y),z) -> z ack(0,x) -> s(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)) )