Skip to content

Avoid ambiguous generators in output saturation - #536

Closed
ChrisRackauckas-Claude wants to merge 1 commit into
SciML:masterfrom
ChrisRackauckas-Claude:agent/fix-output-saturation-generators
Closed

Avoid ambiguous generators in output saturation#536
ChrisRackauckas-Claude wants to merge 1 commit into
SciML:masterfrom
ChrisRackauckas-Claude:agent/fix-output-saturation-generators

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Member

Ignore this PR until it has been reviewed by @ChrisRackauckas.

Summary

  • track the rational-function-field generators locally during output saturation
  • add a regression with a rational output whose first Lie derivative is independent

Root cause

AbstractAlgebra 0.50 added an exported generators alias, while
RationalFunctionFields exports a different generators binding. Importing both
leaves the unqualified binding undefined in StructuralIdentifiability, so
saturate_outputs errors when it calls generators(current_y).

The dependency boundary was reproduced locally:

RationalFunctionFields AbstractAlgebra Nemo Result
0.3.1 0.48.6 0.54.2 2 saturated outputs
0.3.3 0.49.0 0.55.1 2 saturated outputs
0.3.3 0.50.0 0.56.1 UndefVarError: generators not defined

RationalFunctionFields 0.3.2 widened compatibility to the failing dependency
combination. Rather than relying on its undocumented generators helper, this
change retains the exact generator vector already supplied to each field
constructor.

This also fixes the downstream failure exposed by
SciML/ModelingToolkit.jl#4845.

Local verification

  • Julia 1.10, AbstractAlgebra 0.50.1 / Nemo 0.56.1 /
    RationalFunctionFields 0.3.3: focused rational-output regression returns two
    outputs, including z(t) // a
  • Julia 1.12.6, ModelingToolkit 11.37.1 / ModelingToolkitBase 1.57.1:
    downstream reproduction returns two saturated outputs
  • GROUP=Core julia +1.10 --startup-file=no --project=. -e 'using Pkg; Pkg.test()'
  • GROUP=QA julia +1.10 --startup-file=no --project=. -e 'using Pkg; Pkg.test()'
    (17 passed, 1 pre-existing broken)
  • Runic check on both changed files

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
@pogudingleb pogudingleb self-assigned this Jul 29, 2026
@pogudingleb

Copy link
Copy Markdown
Collaborator

Thanks!
I will make some modifications.

@sumiya11

Copy link
Copy Markdown
Collaborator

Note this is fixed in #522 .

The fix there is replacing generators with RationalFunctionFields.generators. (Arguably, the latter should be documented in RFF.jl)

@sumiya11

Copy link
Copy Markdown
Collaborator

With this, the qualifier RationalFunctionFields. can be dropped :

pogudingleb/RationalFunctionFields.jl#70

@pogudingleb

Copy link
Copy Markdown
Collaborator

Fixed by #537

@pogudingleb pogudingleb closed this Aug 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants