On building symbolic integrators, can we do better than RUBI?

Rule based integration could be considered state of the art, with a long collections of rules. In fact, there is a plan to integrate it in Symbolics.jl

However, let’s have a second thought on it. Can we do better?

Is checking thousands of rules really the best way to do things?

In The bitter lesson, the author mentioned two ways of AI, encoding human knowledge, and leveraging compute such as using search. Thousands of rules look like the first approach.

However, integration can also be, in many ways, a search problem. You search for the right expression whose derivative matches your expression, you search for the right substitution, etc,
Search-based approach can also take a lot less effort too. For example, there are so many rules on a rule-based sudoku solver that doesn’t even solve all problems, whereas I made a brute-force sudoku solver in a few hours that easily solved “hard” sudoku problems.

So, the question becomes “Can we make a search-based symbolic integrator, utilizing only simple rules like substitution, integration by part, etc… and leverage fast search to get a good symbolic integrator? Perhaps even better than RUBI?”

Can we answer that question now? Or do we have to actually try implementing a search-based integrator to know the answer? (That would be a ton of Julia code.)
What are your opinions on it?

Yes we could. The key is to have polyalgorithms. Many choices. RUBI does well for some things, but not all. We need all algorithms, all optimized, and then you could thread them and choose whichever runs the fastest.

1 Like