"Denominator not equal to 1" error in pfo.spad

2 views
Skip to first unread message

Qian Yun

unread,
5:26 AM (9 hours ago) 5:26 AM
to fricas-devel
To trigger this bug, use the following:

integrate((1+x-3^(1/2))/(1+x+3^(1/2))/(-4+x^4+4*3^(1/2)*x^2)^(1/2),x)

>> Error detected within library code:
Denominator not equal to 1

If it does not show the error, ctrl-c to interrupt it and retry
a few times.

(Or use this snapshot build, it trigger this error the first time:
https://github.com/fricas/fricas-nightly-builds/releases/download/nightly/FriCAS-2026-07-01T13.01-linux-x86-64-f2770b81.tar.bz2
)

(The integral can be solved by setSimplifyDenomsFlag(true),
but to trigger this bug, do not set it.)

So it seems to be related with random number generator.

The error comes from "d := map(retract, d1)" in "selectIntegers"
from package PointsOfFiniteOrder.

Is there some omission in the code that FunctionSpaceReduce
does not always reduce the argument to integer, but sometimes
fractions?

- Qian

Waldek Hebisch

unread,
10:41 AM (4 hours ago) 10:41 AM
to fricas...@googlegroups.com
Theory says that we can always reduce to integers and
reduction code is supposed to implement this theory. I see that
thing which should produce integer does not give one, so
there is a bug.

Theoretical picture is as follows: as raw input data we have base
field which is supposed to essentially be finite algebraic extention
of rational functions in several variables. Function that we want
to integrate is an algebraic function over base field. Which means
that we have variable (anonymous as we use SUP), rational functions
in that variable and then we we algebraic extention of that.

Before we get to PFO we transform things so that at algebraic function
level corresponding extenstion has single integral generator, that
is there is single algebraic kernel which generates the function
field and its defining polynomial has leading coefficient equal to 1.
and coefficients that are polynomials over base field.

In PFO we are supposed to have stronger thing: base field should
be transformed in similar way, that is have integers at the bottom,
then we have possibly multiple polynomial variables, then we have
a single kernel which is integral over polynomials.

But it looks that kernel passed to selectIntegers (which is supposed
to be integral generator of base field) has defining polynomial
with noninteger coefficients...

--
Waldek Hebisch
Reply all
Reply to author
Forward
0 new messages