Skip to content

Keep an antiderivative as found where its inner simplification would multiply it - #2056

Merged
Rafael-SOWNet merged 1 commit into
masterfrom
keep-an-antiderivative-its-inner-simplification-would-multiply
Oct 22, 2026
Merged

Rafael-SOWNet merged 1 commit into
masterfrom
keep-an-antiderivative-its-inner-simplification-would-multiply

Conversation

@Rafael-SOWNet

Copy link
Copy Markdown
Member

Part of #233.

  • An antiderivative is kept as found where its inner simplification would multiply it. Integrate inner-simplifies the antiderivative before returning it, which drops a branch whose guard is decidably false (Integrate emits unreduced piecewise branches that divide by a literal 0 #772). It also combines a sum of piecewises case by case, and where their conditions differ as written, the arms multiply.
  • What that did. Rubi's 1.1.2.2 x^19/(a + b x^2)^10 was answered in 11,811 characters and returned in 5,051,391, ten piecewises of four arms each. The corpus then spent most of its time differentiating that back. At 24.9 s the row sat at the edge of the corpus's hard cutoff.
  • The change. Where the inner simplification makes an answer more than four times larger, by node count, the answer is returned as it was found.
Input master ef4150e this branch
1.1.2.2:208 x^19/(a + b x^2)^10 5,051,391 characters 11,815 characters
x^7/(a + b x^2)^4 20,387 characters 3,269 characters

Chain over the whole corpus, against master ef4150e (the branch on de11aaf):

Row before after
1.1.2.2:208 24.9 s 0.9 s
1.1.2.2:209 16.3 s 0.3 s
4.3.1.2:102 11.8 s 3.2 s
4.3.1.2:189 10.6 s 3.1 s
4.1.3.1:315 6.5 s 0.9 s
4.3.1.2:108 8.1 s 2.7 s

The library builds for netstandard2.0, net8.0 and net10.0. The suite is left to CI. The BREAKING-CHANGES lengths were measured on the branch, and the 2.5.0 column on a v2.5.0 build. Rebased onto 1566841.

🤖 Generated with Claude Code

https://claude.ai/code/session_012sonx8iAspMiwRwokT1Ura

…multiply it

Integrate inner-simplifies the antiderivative before returning it, which
drops a branch whose guard is decidably false (#772). It also combines a sum
of piecewises case by case, and where their conditions differ as written
the arms multiply: Rubi's 1.1.2.2 x^19/(a + b x^2)^10 was answered in 11,811
characters and returned in 5,051,391, ten piecewises of four arms each,
which the corpus spent seventeen seconds of its budget differentiating back.
Where the simplification makes an answer more than four times larger, by
node count, the answer is returned as it was found.

Part of #233.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012sonx8iAspMiwRwokT1Ura
@Rafael-SOWNet Rafael-SOWNet added this to the 2.6.0 milestone Oct 22, 2026
@Rafael-SOWNet
Rafael-SOWNet merged commit b7977b2 into master Oct 22, 2026
34 checks passed
@github-project-automation github-project-automation Bot moved this from Todo to Done in AngouriMath Oct 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant