OscarZerodimensionalTropicalization.jl is a package for computing tropicalization of zero-dimensional ideals over rational function fields
Hofmann, Ren: “Computing Tropical Points and Tropical Links”. Discrete Comput Geom 60, 627–645 (2018). doi:10.1007/s00454-018-0023-z.
Implementation details for this package can be found in:
Marti-Shahandeh, Ren, Schleis: “Computing Zerodimensional Tropicalization in OSCAR”. to appear.
In contrast to previous implementations, our implementation uses adaptive root-wise precision. This means that there are no errors due to insufficient precision and that each root is computed to the minimal necessary precision.
This package will eventually become part of OSCAR. Until then, you can install it manually together with its two dependencies as follows:
using Pkg
Pkg.add(url="https://github.com/oscar-system/Oscar.jl", rev="master")
Pkg.add(url="https://github.com/ollieclarke8787/OscarPuiseuxPolynomials", rev="main")
Pkg.add(url="https://github.com/YueRen/OscarZerodimensionalTropicalization", rev="main")or using the Pkg REPL (press ] to enter):
add https://github.com/oscar-system/Oscar.jl#master
add https://github.com/ollieclarke8787/OscarPuiseuxPolynomials#main
add https://github.com/YueRen/OscarZerodimensionalTropicalization#mainThe two main commands provided by this package are:
tropical_points_triangular: takes an ideal whose generators are in triangular shape (first generator univariate in the first variable, second generator bivariate in the first two variables, etc.) and returns all its tropical pointstropical_variety_zerodimensional: takes an ideal that is zero-dimensional, computes a triangular decomposition, repeatedly callstropical_points_triangular, and collects all points in a singleTropicalVariety.
julia> using OscarZerodimensionalTropicalization
julia> using Oscar
julia> K,t = rational_function_field(GF(3),:t);
julia> nu = tropical_semiring_map(K,t)
Map into Min tropical semiring encoding the t-adic valuation on Rational function field over GF(3)
julia> Kx,(x1,x2) = polynomial_ring(K,[:x1,:x2]);
julia> f1 = (x1+(1+2*t+t^2))*(x1+(1+2*t+t^3));
julia> f2 = x2 - (x1+1+2*t);
julia> I = ideal([f1,f2]) # checking that branching works
Ideal generated by
x1^2 + (t^3 + t^2 + t + 2)*x1 + t^5 + 2*t^4 + 2*t^2 + t + 1
2*x1 + x2 + t + 2
julia> TropI = tropical_variety_zerodimensional(I,nu)
Min tropical variety
julia> dim(TropI)
0
julia> vertices(TropI)
2-element SubObjectIterator{PointVector{QQFieldElem}}:
[0, 2]
[0, 3]
julia> tropical_points_triangular(I, nu)
2-element Vector{Vector{QQFieldElem}}:
[0, 2]
[0, 3]