Dev Scrape Sheet - RuleBasedIntegration/Rubi GitHub Wiki

Here is Alberts idea for re-typing integration rules:

  • There will probably be only a few hundred integrand types, not thousands.
  • Typing will obviously only be useful when rules make recursive calls that include type information.
  • Typed rules will be defined first so they will be at the beginning of the downvalue rule list.
  • Thus the pattern matcher can zip through the typed rules before trying to match an integrand with the untyped rules.
  • I am in the process of modifying the algebraic function integration rules to require a type match, and including type information in calls on Int that they make.
  • Also, I will add one generic, untyped rule for each algebraic function integrand type.
  • When complete, we can make real-world, rather than contrived, tests to determine the effect of typing on performance.

A typical generic integration rule:

Int[(a_.+b_.x_)^m_.(c_.+d_.x_)^n_.,x_Symbol] := 
(GenericRule; Int["(a+bx)^m*(c+dx)^n",(a+bx)^m*(c+d*x)^n,x]) /; FreeQ[{a,b,c,d,m,n},x]