(VAR x y) (RULES half(x) -> if(ge(x,s(s(0))),x) if(false,x) -> 0 if(true,x) -> s(half(p(p(x)))) p(0) -> 0 p(s(x)) -> x ge(x, 0) -> true ge(0, s(x)) -> false ge(s(x), s(y)) -> ge(x, y) log(0) -> 0 log(s(x)) -> s(log(half(s(x)))) )