FreeQ equivalent in MatchPy?
Mathematica has FreeQ to test whether an expression contains a symbol. This is very useful in pattern matching for equations as you can specify that, for example, in a * x + b == 0 the variables a and b should not contain the variable x.
In SymPy we are currently using things like CustomConstraint(lambda a, x: not a.has(x)), where a.has(x) is a SymPy expression that tells you if x is contained in the expression tree of a.
Would it make sense to add an optimized FreeQ-like tester that checks whether the variable is contained in the expression during the matching iteration of MatchPy?
I think that such a constraint is perhaps too application specific, so I wouldn't add it unless we get more request for it.
To improve this constraint in SymPy and avoid the lambda function, you could implement a subclass of the Constraint class. Is that an acceptable solution for you?