Hi everyone. Here is the brief summary of my works completed and works which are in progress in the first week.
For proper implementation of RUBI in sympy, we have a high dependence on matchpy. This might limit the performance of RUBI in sympy. I am currently targeting to have a correct set of rules and utility functions.
This week I opened this PR #14724, from which progress in my work can be tracked. While testing the code, sometimes there were recursion errors because the same set of rule continuously were applied to the expression and there was no simplification. This worked in Mathematica because a order of matching(specificity order) is maintained in Mathematica. We use downvalues to parse the code in matchpy format. So we know the order. I found a way to fix the order in matchpy. I used ManyToOneMatcher to find all rules being matched to an expression. Then pickup the most prior rule and then perform replacement. It is little slow but we can debug our rules (parsetools) and utility functions.
In this week I have done the following improvements:
- Replaced lambdas with proper functions in replacement rule.
- Implemented a new structure of rule matching
- Partially loaded integrand_simplification
- Fixed few minor issues in parsetools and utility_functions
Next, I am targeting to completely load integrand_simplification and perform complete testing of algebraic rules.