Ask Your Question
0

How to divide polynomials in a root of unity quotient ring?

asked 2026-03-18 00:57:54 +0100

updated 2026-03-20 22:23:48 +0100

Max Alekseyev gravatar image

I have a polynomial in two variables (t, w) which is in the "Fraction Field of Multivariate Polynomial Ring in t, w over Rational Field". The w variable is standing in for a root of unity so I want to be able to introduce a relation w^q−1, so that the answer given reduces the powers. (I already tried feeding in the actual root of unity and while it handles the powers correctly, it then prints out in the form Isqrt(1+sqrt(5))t^3 etc, which is also very hard to read).

However, when I try to create a quotient ring with this relation and cast my polynomial into it I keep getting a "fraction must have unit denominator" error. Code snippet below:

TwoPolyRing.<t,w> = QQ[]

TwAlexNum = M_rho_fox.determinant()

TwAlexDenom = M_tapDenom.determinant()

TAPdraft = TwAlexNum*(1-t)^s/TwAlexDenom; print(TAPdraft.parent()); print(TAPdraft)

UnityIdeal = TwoPolyRing.ideal(w^q -1)

UnityPolyRing.<t,w> = TwoPolyRing.quotient(UnityIdeal)

TAPfinal = UnityPolyRing(TAPdraft); print(TAPfinal.parent())

Produces the output:

Fraction Field of Multivariate Polynomial Ring in t, w over Rational Field
(t^3*w^10 - t^2*w^10 - t*w^8 - t^2*w^5 + t*w^5 - t*w^4 - t*w^2 - t*w - 1)/(-w^5)

But then gives the error on the line TAPfinal = UnityPolyRing(TAPdraft) that says TypeError: fraction must have unit denominator.

More Information if needed:

The polynomial in question is (a twisted alexander polynomial) calculated as the determinant of a matrix (which I believe also outputs a polynomial in "Fraction Field of Multivariate Polynomial Ring in t, w over Rational Field") which is then multiplied by (1−t) and divided by another polynomial in "Multivariate Polynomial Ring in t, w over Rational Field". I previously tried to write a function that would simplify the roots of unity before the division, but I got the same error when I called it on the numerator (presumably because the polynomial was still in the fraction field).

I've been trying to figure out if there is a way to 'coerce' the function into the correct ring, but keep getting the same errors.

Any help would be appreciated! Please let me know what additional information would be helpful.

edit retag flag offensive close merge delete

1 Answer

Sort by » oldest newest most voted
0

answered 2026-03-20 22:33:48 +0100

Max Alekseyev gravatar image

Roots of unity are best defined as generator of the cyclotomic field. That is, a good start for your code would be

F.<w> = CyclotomicField(q) 
TwoPolyRing.<t> = F[]

and then you don't need to worry about the relation w^q - 1 as it automatically holds for w.

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

Stats

Asked: 2026-03-18 00:57:54 +0100

Seen: 25 times

Last updated: Mar 20