(VAR x y z) (RULES *(*(x, y), *(y, z)) -> y *(*(x, x), x) -> f(x) *(x, *(x, x)) -> g(x) *(g(x), y) -> *(x, y) )