oscar-system / Oscar.jl

A comprehensive open source computer algebra system for computations in algebra, geometry, and number theory.
https://www.oscar-system.org
Other
338 stars 119 forks source link

`complete_reduction` option for `reduce` #2233

Closed YueRen closed 5 months ago

YueRen commented 1 year ago

groebner_basis has an option complete_reduction, which if set to true ensures that the returned Groebner basis is reduced.

Can we equip reduce with the same option? The default would be false, but if set to true then reduce would also perform tail reductions. I would need it to read off the inequalities and equations of the Groebner cone.

ederc commented 1 year ago

There are already plans to do this, @hannes14 is preparing to provide the corresponding functionality via Singular.jl which can then be used in Oscar.

wdecker commented 1 year ago

At current state, in the case of a global ordering, all returned remainders are fully reduced.

YueRen commented 1 year ago

@wdecker Thanks for the tip! That is more than enough for me for now (and what I thought was a non-tailreduced polynomial turned out to me a mistake on my end).

joschmitt commented 5 months ago

Appears to be resolved. An example from the documentation:

julia> R, (x, y, z) = polynomial_ring(QQ, ["x", "y", "z"]);

julia> f1 = x^2+x^2*y; f2 = y^3+x*y*z; f3 = x^3*y^2+z^4;

julia> g = x^3*y+x^5+x^2*y^2*z^2+z^6;

julia> reduce(g, [f1, f2, f3], ordering = lex(R))
x^5 + x^3*y + x^2*y^2*z^2 + z^6

julia> reduce(g, [f1,f2, f3], ordering = lex(R), complete_reduction = true)
x^5 - x^3 + y^6 + z^6