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()) linear polynomial interpretations on N: xor_A(x1,x2) = x1 + 1 xor#_A(x1,x2) = 1 F_A = 1 F#_A = 0 neg_A(x1) = x1 + 1 neg#_A(x1) = 2 and_A(x1,x2) = x1 + 1 and#_A(x1,x2) = x2 + 2 T_A = 1 T#_A = 0 impl_A(x1,x2) = x1 + 2 impl#_A(x1,x2) = x1 + x2 + 3 or_A(x1,x2) = x1 + x2 + 2 or#_A(x1,x2) = x1 + x2 + 3 equiv_A(x1,x2) = x1 + x2 + 1 equiv#_A(x1,x2) = x1 + x2 + 2 precedence: neg = equiv > T > impl = or > and > xor > F