matchpy icon indicating copy to clipboard operation
matchpy copied to clipboard

FreeQ equivalent in MatchPy?

Open Upabjojr opened this issue 4 years ago • 1 comments

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?

Upabjojr avatar Jan 14 '21 12:01 Upabjojr

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?

hbarthels avatar Jan 15 '21 19:01 hbarthels