Rubin.jl will be a 100% Julia implementation of an integration term-rewriting system. The rule catalogue is taken from RUBI, a Mathematica-based integration engine that uses binary searches in a tree of mutually exclusive rewriting rules, which nets RUBI an order of magnitude speed improvement over Mathematica over an immense test suite. Rubin.jl hosts 99.5+% of RUBI's rules, and 99.9% of the test suite in a JSON format, spanning more than 72,000 single variable integration unit tests.
Rubin.jl will be based on Symbolics.jl, a novel foundation for a Julian CAS. The goal of Rubin.jl is to
[X] Convert all the RUBI rules into a huge JSON
[X] Convert all the RUBI unit tests into a huge JSON
[ ] Parse the JSON files into Rubin Rules and Rubin tests
[ ] Benchmark the test suite and assess discrepancies
Symbolics.jl is a Julia based term-rewriting system that allows the user to specify that a "left hand side" symbolic expression should be transformed into the expression on the right hand side. Symbolic integration is useful for pure and applied mathematics - this will help bring in even more users to Julia.