I would like to declare the multivariate Ring $R[x_{1},x_{2},x_{3}]/(x_{2}^2-1, x_{1}^{3}x_{3}-2)$. It would be very helpful if there is some method to do this for an arbitrary number of variables.
Thank you so much,
I would like to declare the multivariate Ring $R[x_{1},x_{2},x_{3}]/(x_{2}^2-1, x_{1}^{3}x_{3}-2)$. It would be very helpful if there is some method to do this for an arbitrary number of variables.
Thank you so much,
I think AbstractAlgebra.jl is a very good fit for this. You can call it like:
julia> using AbstractAlgebra
julia> ring = ZZ
Integers
julia> S, (x, y, z) = PolynomialRing(ring, ["x", "y", "z"])
(Multivariate Polynomial Ring in x, y, z over Integers, AbstractAlgebra.Generic.MPoly{BigInt}[x, y, z])
julia> p1 = y^2 - 1
xy^2 - 1
julia> p2 = x^3 * z - 2
x^3*z - 2
julia> div(3 * (x^2 + y^3) * p1 + p2, p1)
3*x^2 + 3*y^3
julia> div(3 * (x^2 + y^3) * p1 + p2, p2)
1
And sorry if this doesn't answer your question, my mathematics is not that good. For more information, please visit the documentation.
According to my colleagues this is available in Oscar.jl [1] (which is built on Singular and AbstractAlgebra.jl, mentioned by @aahlback and myself in another answer).
The documentation is in the process of being written right now, so keep an eye on the package to see how this can be done in the very near future.
The implementation is in [2] if you want to take a look.
Edit: there looks to be a relevant example here [3]. Note the ring R in that example is a polynomial ring and does not correspond to your R.
For the coefficient ring (your R) you can currently use any field, Z or Z/nZ, according to the maintainer of the Singular project (which Oscar.jl uses for these computations). It's very, very hard to extend this to other rings.
[1] https://github.com/oscar-system/Oscar.jl/
[2] https://github.com/oscar-system/Oscar.jl/blob/master/src/Rings/MPolyQuo.jl
[3] https://oscar-system.github.io/Oscar.jl/dev/CommutativeAlgebra/ca/#Example-24