Skip to content

Porting Rubi Integration rules to Symja

Ax Kr edited this page Aug 26, 2018 · 12 revisions

From the Rubi website:

Rubi is an extensive system of symbolic integration rules that can be systematically applied to determine the antiderivative of a wide variety of mathematical expressions. Organized as a decision tree based on the form of the integrand, the 6600+ rules Rubi uses can be viewed in human-readable form or downloaded in machine-readable form.

The Symja project has ported these Rubi rules into an internal Java based structure. This wiki page describes how to create these Java rules.

The Java converter programs are maintained in this project: github.com/axkr/Rubi-1.

The converter include 2 programs which generate Java files for the Symja package org.matheclipse.core.integrate.rubi

  • the converter ConvertRubi.java for converting the Rubi integration rules /Rubi/RubiRules4.16.0_FullLHS.m into Java source codes IntRuleXXX (XXX counter for generated source files).
  • the converter ConvertRubiUtilityFunctions.java for converting the Rubi utility function rules /Rubi/IntegrationUtilityFunctions.m into Java source codes UtilityFunctionsXXX (XXX counter for generated source files).

The generated rules for the package org.matheclipse.core.integrate.rubi are loaded in the static initializer part of the F.class.

Notes:

  • in the file RubiRules4.16.0_FullLHS.m the line number in which a rule appears corresponds to the Rubi rule number.
  • the priority in which the ruleis used corresponds to the Rubi rule number.

The JUnit Rubi tests suite include the following files (not working completly at the moment):

Clone this wiki locally