(VAR x y ) (RULES cond1(true, x, y) -> cond2(gr(x, 0), x, y) cond2(true, x, y) -> cond1(gr(add(x, y), 0), p(x), y) cond2(false, x, y) -> cond3(gr(y, 0), x, y) cond3(true, x, y) -> cond1(gr(add(x, y), 0), x, p(y)) cond3(false, x, y) -> cond1(gr(add(x, y), 0), x, y) gr(0, x) -> false gr(s(x), 0) -> true gr(s(x), s(y)) -> gr(x, y) add(0, x) -> x add(s(x), y) -> s(add(x, y)) p(0) -> 0 p(s(x)) -> x )