(VAR x y b) (RULES half(0) -> 0 half(s(0)) -> 0 half(s(s(x))) -> s(half(x)) le(0,y) -> true le(s(x),0) -> false le(s(x),s(y)) -> le(x,y) inc(s(x)) -> s(inc(x)) inc(0) -> s(0) logarithm(x) -> logIter(x,0) logIter(x,y) -> if(le(s(0),x), le(s(s(0)),x), half(x), inc(y)) if(false, b, x, y) -> logZeroError if(true, false,x,s(y)) -> y if(true, true, x, y) -> logIter(x, y) f -> g f -> h )