YES exiting with thread! (VAR x y z ) (RULES multiply(x,identity) -> x multiply(x,inverse(x)) -> identity multiply(identity,x) -> x multiply(inverse(x),x) -> identity multiply(multiply(x,y),z) -> multiply(x,multiply(y,z)) inverse(identity) -> identity multiply(x,multiply(inverse(x),z)) -> z multiply(inverse(x),multiply(x,z)) -> z inverse(inverse(x)) -> x inverse(multiply(y,x)) -> multiply(inverse(x),inverse(y)) )