Concerning pattern matching and term rewriting, there is some work by Matthew Rocklin as separate modules (i.e. unrelated to the standard pattern matcher in sympy.core)
Unification: http://matthewrocklin.com/blog/work/2012/11/01/Unification/ https://github.com/sympy/sympy/tree/master/sympy/unify Strategies: https://github.com/sympy/sympy/tree/master/sympy/strategies He also wrote an independent library to all the definition of multiple dispatched functions in Python: http://multiple-dispatch.readthedocs.org/en/latest/ https://github.com/mrocklin/multipledispatch There was some discussion about including *multipledispatch* as a dependency in SymPy. I don't know what the conclusion was. Despite not being a pattern matcher, it could be very useful to define generic methods acting on different kinds of algebras based on Python's classes. Currently the standard pattern matcher (the one defined in *sympy.core*) does not support assumptions on its wildcards, or at least whenever I tried them, they did not work. So if you declare *w = Wild('w', integer=True)*matches won't be restricted to integers only, unfortunately. Furthermore, the pattern matcher is sensible to additive and multiplicative inverses, so you're expected to get a lot more matches on the same expression than Mathematica. In [21]: expr = 1/(x+y) In [22]: expr.match(x+w) Out[22]: ⎧ 1 ⎫ ⎨w: -x + ─────⎬ ⎩ x + y⎭ In Mathematica *w_* matches *y* so that *x+w -> x+y*. -- You received this message because you are subscribed to the Google Groups "sympy" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/sympy. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/3fb2c7b3-2ffc-4b68-8db0-fa3b26c3f457%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
