YES TRS: dx(X) -> one() dx(a()) -> zero() dx(plus(ALPHA,BETA)) -> plus(dx(ALPHA),dx(BETA)) dx(times(ALPHA,BETA)) -> plus(times(BETA,dx(ALPHA)),times(ALPHA,dx(BETA))) dx(minus(ALPHA,BETA)) -> minus(dx(ALPHA),dx(BETA)) dx(neg(ALPHA)) -> neg(dx(ALPHA)) dx(div(ALPHA,BETA)) -> minus(div(dx(ALPHA),BETA),times(ALPHA,div(dx(BETA),exp(BETA,two())))) dx(ln(ALPHA)) -> div(dx(ALPHA),ALPHA) dx(exp(ALPHA,BETA)) -> plus(times(BETA,times(exp(ALPHA,minus(BETA,one())),dx(ALPHA))),times(exp(ALPHA,BETA),times(ln(ALPHA),dx(BETA)))) max/plus interpretations on N: dx_A(x1) = max{0, x1} dx#_A(x1) = max{0, x1} one_A = 0 one#_A = 0 a_A = 0 a#_A = 0 zero_A = 0 zero#_A = 0 plus_A(x1,x2) = max{0, x1, x2} plus#_A(x1,x2) = max{0, x1, x2} times_A(x1,x2) = max{0, x1, x2} times#_A(x1,x2) = max{0, x1, x2} minus_A(x1,x2) = max{0, x1, x2} minus#_A(x1,x2) = max{0, x1, x2} neg_A(x1) = max{0, x1} neg#_A(x1) = max{0, x1} div_A(x1,x2) = max{0, x1, x2} div#_A(x1,x2) = max{0, x1, x2} exp_A(x1,x2) = max{0, x1, x2} exp#_A(x1,x2) = max{0, x1, x2} two_A = 0 two#_A = 0 ln_A(x1) = max{0, x1} ln#_A(x1) = max{0, x1} precedence: a > dx = zero > plus = neg = ln > div = two > one = exp > times = minus