Rubi integrator
Labels: GSoC, integrals.rubi
A great GSoC project would be to make more progress in implementing the Rubi integrator into SymPy.
http://www.apmaths.uwo.ca/~arich/
Our current status is: https://github.com/sympy/sympy/issues/7749, that PR implements the if/then/else decision tree. However, we should probably go back and:
- Implement some of the Rubi 4.9 pattern matching rules in SymPy for some subset of integrals, say, trig functions (this involves improving our pattern matching probably)
After that, another project is:
- Implement a compiler for these pattern matching rules -> if/then/else decision tree
I got a permission from Albert Rich to share his TODO list for Rubi. The above two projects 1) and 2) seem like a good thing to do, given the TODO list, but we can modify it of course.
NOTE: see below for more applications of a rule based system. This framework would be useful beyond just integration, though integration algorithms are the most developed, so we should start there.
Rubi website projects:
- Update the Rubi, Mathematica and Maple test results and statistics displayed on the Rubi website.
- Update the repository of pattern matching rules on the Rubi website.
- Extend the cascading menu system to more finely select rules based on an integrand's form.
- Produce a histogram of rule applications categorized by integrand type, derivation type, etc.
- Register an appropriate domain name for Rubi and link it to the UWO site.
Rubi 4 enhancement projects:
- Generate a comprehensive set of test suite problems for integrand types not sufficiently tested.
- Find and fix the deficiencies in Rubi that will inevitably turn up when the enlarged test suite is run.
- Define rules for integrating elliptic and pseudo-elliptic integrals.
- Define rules for integrating expressions of the form (g cos(e+f x))^p (a+b sin(e+f x))^m (c+d sin(e+f x))^n (A+B sin(e+f x)+C sin(e+f x)^2).
Rubi 5 development projects:
- A program that compiles Rubi 4.9's pattern matching rules into an if-then-else decision tree.
- A decision tree interpreter that allows Rubi 5 to single-step through an integration using information implicitly stored in the decision tree.
- A program that displays the branching structure of the Rubi 5 decision tree as a simple directed graph.
- A program that animates the resulting decision tree graph by zooming and panning, ala Google Maps.
- An animation showing the descent through the decision tree graph to select a rule (much like a pinball game).
Rubi 6 development projects:
- An integrator that derives integration rules on the fly rather than having them hard-coded.
Rule-based system development projects:
- A rule-based definite integrator.
- A rule-based equation and inequality solver.
- A rule-based mathematical expression simplifier.
- A rule-based symbolic limit finder.
- A rule-based differential (ordinary and/or partial) equation solver.
- A rule-based matrix algebra system.
Academic papers:
- The rule-based integration techniques Rubi uses to produce optimal antiderivatives, and when to apply them.
- Flushing out a decision tree leads to the discovery of new formulas, symmetries and simplifications.
- Rule-based decision trees are mathematical objects subject to theoretical study (e.g. completeness, consistency, symmetry, uniqueness, etc.).
- The applicability of the rule-based paradigm to other areas of mathematics and science.
RUBI rules in an easily parseable format (maybe using this tool).