One guess: if you have a rule like e*f(x)*g(y), then it could try to match 3*f(4)*g(5) by matching e= 3*f(4) and then failing. You don't want e to match "anything at all". You want e to match something not involving any f( ..). RJF