YES Problem: 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()) Proof: DP Processor: DPs: and#(xor(x,y),z) -> and#(y,z) and#(xor(x,y),z) -> and#(x,z) and#(xor(x,y),z) -> xor#(and(x,z),and(y,z)) impl#(x,y) -> xor#(x,T()) impl#(x,y) -> and#(x,y) impl#(x,y) -> xor#(and(x,y),xor(x,T())) or#(x,y) -> xor#(x,y) or#(x,y) -> and#(x,y) or#(x,y) -> xor#(and(x,y),xor(x,y)) equiv#(x,y) -> xor#(y,T()) equiv#(x,y) -> xor#(x,xor(y,T())) neg#(x) -> xor#(x,T()) 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()) Matrix Interpretation Processor: dim=1 interpretation: [neg#](x0) = 5/2x0 + 2, [equiv#](x0, x1) = 2x0 + 2x1 + 2, [or#](x0, x1) = 2x0 + 1/2x1 + 2, [impl#](x0, x1) = 2x0 + 2x1 + 7/2, [and#](x0, x1) = 2x0 + 1/2x1, [xor#](x0, x1) = 2x0 + 1, [equiv](x0, x1) = 3/2x0 + 3/2x1 + 5/2, [or](x0, x1) = 5/2x0 + 2x1 + 2, [impl](x0, x1) = 5/2x0 + 1/2x1 + 3, [and](x0, x1) = x0, [T] = 0, [neg](x0) = x0 + 1, [xor](x0, x1) = x0 + x1 + 1, [F] = 0 orientation: and#(xor(x,y),z) = 2x + 2y + 1/2z + 2 >= 2y + 1/2z = and#(y,z) and#(xor(x,y),z) = 2x + 2y + 1/2z + 2 >= 2x + 1/2z = and#(x,z) and#(xor(x,y),z) = 2x + 2y + 1/2z + 2 >= 2x + 1 = xor#(and(x,z),and(y,z)) impl#(x,y) = 2x + 2y + 7/2 >= 2x + 1 = xor#(x,T()) impl#(x,y) = 2x + 2y + 7/2 >= 2x + 1/2y = and#(x,y) impl#(x,y) = 2x + 2y + 7/2 >= 2x + 1 = xor#(and(x,y),xor(x,T())) or#(x,y) = 2x + 1/2y + 2 >= 2x + 1 = xor#(x,y) or#(x,y) = 2x + 1/2y + 2 >= 2x + 1/2y = and#(x,y) or#(x,y) = 2x + 1/2y + 2 >= 2x + 1 = xor#(and(x,y),xor(x,y)) equiv#(x,y) = 2x + 2y + 2 >= 2y + 1 = xor#(y,T()) equiv#(x,y) = 2x + 2y + 2 >= 2x + 1 = xor#(x,xor(y,T())) neg#(x) = 5/2x + 2 >= 2x + 1 = xor#(x,T()) xor(x,F()) = x + 1 >= x = x xor(x,neg(x)) = 2x + 2 >= 0 = F() and(x,T()) = x >= x = x and(x,F()) = x >= 0 = F() and(x,x) = x >= x = x and(xor(x,y),z) = x + y + 1 >= x + y + 1 = xor(and(x,z),and(y,z)) xor(x,x) = 2x + 1 >= 0 = F() impl(x,y) = 5/2x + 1/2y + 3 >= 2x + 2 = xor(and(x,y),xor(x,T())) or(x,y) = 5/2x + 2y + 2 >= 2x + y + 2 = xor(and(x,y),xor(x,y)) equiv(x,y) = 3/2x + 3/2y + 5/2 >= x + y + 2 = xor(x,xor(y,T())) neg(x) = x + 1 >= x + 1 = xor(x,T()) problem: DPs: 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()) Qed