YES TRS: xor(x,F()) -> x xor(x,neg(x)) -> F() and(x,T()) -> x and(x,F()) -> F() and(x,x) -> x and(xor(x,y),z) -> xor(and(x,z),and(y,z)) xor(x,x) -> F() impl(x,y) -> xor(and(x,y),xor(x,T())) or(x,y) -> xor(and(x,y),xor(x,y)) equiv(x,y) -> xor(x,xor(y,T())) neg(x) -> xor(x,T()) max/plus interpretations on N: xor_A(x1,x2) = max{0, x1, x2} xor#_A(x1,x2) = max{0, x1, x2} F_A = 0 F#_A = 0 neg_A(x1) = max{0, x1} neg#_A(x1) = max{0, x1} and_A(x1,x2) = max{0, x1, x2} and#_A(x1,x2) = max{0, x1, x2} T_A = 0 T#_A = 0 impl_A(x1,x2) = max{0, x1, x2} impl#_A(x1,x2) = max{0, x1, x2} or_A(x1,x2) = max{0, x1, x2} or#_A(x1,x2) = max{0, x1, x2} equiv_A(x1,x2) = max{0, x1, x2} equiv#_A(x1,x2) = max{0, x1, x2} precedence: impl = or > neg = and = equiv > xor = T > F