In my third year as a computer science undergraduate at a university in Hong Kong, I began studying the mathematics department’s ordinary differential equations courses on my own. I was already comfortable programming in C and Java, and I had long enjoyed mathematics and physics. ODEs gave me a question that brought those interests together. Working through examples in Kamke’s handbook, I kept encountering substitutions and rearrangements that were easy to verify once someone showed them to me, but hard to discover in the first place. Could a systematic theory explain when those tricks work and how to find them?

Discovering Maple changed how I thought about that question. Through its documentation and the work of E. S. Cheb-Terrab and others, I learned how Lie symmetries, differential invariants, and first integrals can make parts of ODE solving systematic. I also began studying Liouvillian integrability, invariant algebraic curves, and differential Galois theory. I found myself asking what structure an equation reveals, even when its solutions resist a familiar closed form.

Abel equations became a natural place to look. Their solution structure is rich, and differential invariants under changes of the independent variable and affine changes of the dependent variable give a way to compare equations that look quite different. The classification of integrable Abel equations by Cheb-Terrab and A. D. Roche made that idea concrete: equations scattered across different sources could be recognized as members of the same class. I began to wonder how far we could take this if the substitution itself were allowed to be nonlinear.

Searching for the substitution

I started working systematically on this inverse problem around the first year of graduate school. Given a rational first-order equation y' = M(x,y)/N(x,y), can we recover a nonconstant rational substitution u = A(x,y)/B(x,y) that leaves x unchanged and makes u' a polynomial in u? If the reduced equation belongs to a known integrable class, the substitution gives us a route to solving the original equation. Even when it does not, a successful reduction exposes structure that is hard to see in the original coefficients.

My first paper in Maple Transactions treated the nondegenerate case, where the relevant factors survive when the rational equation is put in lowest terms. The software from that work was subsequently licensed to Maplesoft. My second paper studied what happens when factors cancel. It develops a practical bounded search as well as a full algorithm that does not require the user to supply a degree bound for the transformation.

The insight I found most rewarding was that cancellation can point to an invariant algebraic curve of the original system. In the cancellation setting treated in the paper, a factor that disappears from the reduced fraction can encode an algebraic solution curve. Recovering it can therefore give us two things at once: a substitution that simplifies the ODE and geometric information about the original vector field. Invariant algebraic curves can be difficult to find directly. Obtaining one as part of a reduction is a good example of what I value in Maple’s approach to ODEs: a symbolic computation can tell us something about the equation even before we ask for its general solution.

Using local information to screen candidates

The cancellation case is also the more expensive one. When the initial constraints leave several possibilities, the algorithm may have to fall back on nonlinear algebra. In discussions with GPT, one suggestion gave me a particularly useful way to approach that bottleneck: expand the reduction identity locally at a pole, then use the first few terms—the jet—to derive linear constraints on the unknown numerator.

Those constraints can be tested at a regular rational value of x, using exact arithmetic. A branch whose necessary conditions are inconsistent can be discarded before costly symbolic elimination. For a surviving branch, the symbolic calculation still takes place over the rational function field. If the linear constraints determine a unique normalized numerator, the implementation can recover the target coefficients and verify the substitution directly. Otherwise, it retains the nonlinear fallback. The main gain is that expensive computations are reserved for branches that survive cheaper tests; the speedup depends on how much those tests narrow the search.

A small Maple example

Maple source (.mpl):GeneralizedAbel_Maple.txt

For inputs over the rational numbers, ReduceHigher is sound and complete for target equations of actual degree n > 2, with the independent variable unchanged and no user-supplied bound on the transformation degrees. Every reported reduction satisfies the exact differential identity, and a completed search can rule out reductions in this class. That guarantee does not extend to the general Riccati case n = 2.

Load the source with read and pass the numerator and denominator of the original slope:

restart:
read "GeneralizedAbel.mpl":

M := (y+x)^5 + (x*(y+x)-2)*(y-1)^2:
N := (y-1)*(y-x-2):

t0 := time():
R := GeneralizedAbel:-ReduceHigher(M, N, x, y, u):
elapsed := time()-t0:

R["status"];
R["transformation"];
R["equation"];
R["residual"];
elapsed;

In one Maple 2026 run, the search returned FOUND in 0.171 seconds of CPU time, excluding source loading. The transformation and reduced equation were:

u = (x^2 + y^2 + 2*x)/(y - 1)
u' = (u + 2*x)^3 + x*(u + 2*x) - 2

The exact residual was 0. The returned substitution is a normalized form of v = (y+x)^2/(y-1), with v = u + 2*x. In this form, the cancelled factor y+x also has a geometric interpretation: the line y = -x is an invariant algebraic solution curve of the original equation.

See you at ISSAC

I plan to attend ISSAC 2027 in Tsukuba, Japan, July 12–15. If you work on ODEs, symbolic computation, or invariant curves, I would love to meet you there and hear what examples or questions you would bring to this problem. I would also like to share some of the projects related to Maple that I am currently working on.

I hope the Maple community will see rational reduction as a symbolic computation problem in its own right. Finding a change of variables, deciding whether one exists in a specified class, and understanding what it reveals about a vector field are worthwhile goals—even when the next step is not a call to dsolve.

— Shaoxuan Huang


Please Wait...