Skip to main content
Implementation Details & Advice for Rubi developer
Source Link
asd1dsa
  • 573
  • 4
  • 8

Unlike the official implements of Rubi`Steps, usually we care about the result only instead of rules, as we don't write rules for hand-writing formulae.

So I wrote a new RubiSteps`ShowIntSteps, which supports more for hand-writing formula generation. The code is a bit long so I provide it at github.

BUG issues are welcomed.

Implementation Details

RubiSteps`ShowIntSteps does not use the output from Rubi`Steps, but is implemented as a new function.

Rubi`Steps sets Rubi`Private`$ShowSteps = True and then use FixedPoint to evaluate step by step and Sow held results.

RubiSteps`ShowIntSteps uses two nested FixedPoints. The inner one evaluate and Sow everything except Rubi`Subst which stands for substituting operation. When the inner one find no replacing can be performed, the outer FixedPoint function is applied for doing substitutions.

Then ShowIntSteps uses a Reap to collect results. Note that substitutions in these results are not performed, so this information can be used for typesetting.

Finally it does trivial(but need 80% code) conversions for the result.

Advice for Rubi developer

I've noticed the usage of Defer and HoldComplete in Steps is just Inactive and HoldForm. The latter may be more canonical.

Unlike the official implements of Rubi`Steps, usually we care about the result only instead of rules, as we don't write rules for hand-writing formulae.

So I wrote a new RubiSteps`ShowIntSteps, which supports more for hand-writing formula generation. The code is a bit long so I provide it at github.

BUG issues are welcomed.

Unlike the official implements of Rubi`Steps, usually we care about the result only instead of rules, as we don't write rules for hand-writing formulae.

So I wrote a new RubiSteps`ShowIntSteps, which supports more for hand-writing formula generation. The code is a bit long so I provide it at github.

BUG issues are welcomed.

Implementation Details

RubiSteps`ShowIntSteps does not use the output from Rubi`Steps, but is implemented as a new function.

Rubi`Steps sets Rubi`Private`$ShowSteps = True and then use FixedPoint to evaluate step by step and Sow held results.

RubiSteps`ShowIntSteps uses two nested FixedPoints. The inner one evaluate and Sow everything except Rubi`Subst which stands for substituting operation. When the inner one find no replacing can be performed, the outer FixedPoint function is applied for doing substitutions.

Then ShowIntSteps uses a Reap to collect results. Note that substitutions in these results are not performed, so this information can be used for typesetting.

Finally it does trivial(but need 80% code) conversions for the result.

Advice for Rubi developer

I've noticed the usage of Defer and HoldComplete in Steps is just Inactive and HoldForm. The latter may be more canonical.

Source Link
asd1dsa
  • 573
  • 4
  • 8

Unlike the official implements of Rubi`Steps, usually we care about the result only instead of rules, as we don't write rules for hand-writing formulae.

So I wrote a new RubiSteps`ShowIntSteps, which supports more for hand-writing formula generation. The code is a bit long so I provide it at github.

BUG issues are welcomed.