Faithful Tropicalization of Hyperelliptic Curves

Authors: Hannah Markwig, Lukas Ristau and Victoria Schleis

The interested reader may find this article entertaining.

julia> Kt,t = rational_function_field(QQ,"t")
(Rational function field over QQ, t)

julia> Kxy, (x,y) = Kt["x", "y"]
(Multivariate polynomial ring in 2 variables over Kt, AbstractAlgebra.Generic.MPoly{AbstractAlgebra.Generic.RationalFunctionFieldElem{QQFieldElem, QQPolyRingElem}}[x, y])

julia> f=-x^3-4*x^2+y^2+(-8*t^4)*x
-x^3 - 4*x^2 - 8*t^4*x + y^2

julia> val_t = tropical_semiring_map(Kt,t)
Map into Min tropical semiring encoding the t-adic valuation on Rational function field over QQ

julia> ftrop=tropical_polynomial(f,val_t)
x^3 + x^2 + y^2 + (4)*x

julia> Tf = tropical_hypersurface(ftrop)
Min tropical hypersurface

julia> PC = polyhedral_complex(Tf)
Polyhedral complex in ambient dimension 2

julia> visualize(PC)
julia> Kt,t = rational_function_field(QQ,"t");

julia> Kxy, (x,y) = Kt["x", "y"];

julia> g = (-t^2)*x^3+(t^20)*x^2*y+(t^2)*x*y^2+(t^14)*y^3+(1-2*t^21)*x*y+(t^5-t^6)*y^2+(t^2+t^22)*y+(2*t^2+2*t^5);

julia> val_t = tropical_semiring_map(Kt,t);

julia> gtrop=tropical_polynomial(g,val_t);

julia> Tg=tropical_hypersurface(gtrop);

julia> PC2 = polyhedral_complex(Tg);

julia> vertices(PC2)
6-element SubObjectIterator{PointVector{QQFieldElem}}:
 [3, -9]
 [-2, -2]
 [2, -2]
 [3, -3]
 [2, 0]
 [0, 2]
julia> Kt,t = rational_function_field(QQ,"t");

julia> Kxy, (x,y) = Kt["x", "y"];

julia> f = (-t^2)*x^3+(t^20)*x^2*y+(t^2)*x*y^2+(t^14)*y^3+(-3*t^3)*x^2+x*y+(t^3+t^5-t^6)*y^2+(-3*t^4)*x+(t+t^2)*y+(2*t^2+t^5);

julia> val_t = tropical_semiring_map(Kt,t);

julia> ftrop=tropical_polynomial(f,val_t);

julia> Tf=tropical_hypersurface(ftrop);

julia> PC1 = polyhedral_complex(Tf);

julia> vertices(PC1)
5-element SubObjectIterator{PointVector{QQFieldElem}}:
 [1, -11]
 [1, -2]
 [-2, -2]
 [0, 2]
 [1, 1]
julia> S,(b2,b34,b4,b56,b6,b7)=polynomial_ring(QQ,["b2", "b34", "b4", "b56", "b6", "b7"])
(Multivariate polynomial ring in 6 variables over QQ, QQMPolyRingElem[b2, b34, b4, b56, b6, b7])

julia> R,(x, y, z)=polynomial_ring(S,["x", "y", "z"])
(Multivariate polynomial ring in 3 variables over S, AbstractAlgebra.Generic.MPoly{QQMPolyRingElem}[x, y, z])

julia> g = y^2-x*(x-b2^2)*(x-(b34+b4)^2)*(x-(b4)^2)*(x-(b6+b56)^2)*(x-(b6)^2)*(x+(b7)^2);

julia> f= y - b4*(b34 + b4)*b6*(b6 + b56)*b7*x + b6*(b6 + b56)*b7*x^2 - b7*x^3;

julia> Igf = ideal(R,[g,f]);

julia> eliminate(Igf,[y])
Ideal generated by
  -x^7 + (b2^2 + b34^2 + 2*b34*b4 + 2*b4^2 + b56^2 + 2*b56*b6 + 2*b6^2)*x^6 + (-b2^2*b34^2 - 2*b2^2*b34*b4 - 2*b2^2*b4^2 - b2^2*b5
  6^2 - 2*b2^2*b56*b6 - 2*b2^2*b6^2 + b2^2*b7^2 - b34^2*b4^2 - b34^2*b56^2 - 2*b34^2*b56*b6 - 2*b34^2*b6^2 + b34^2*b7^2 - 2*b34*b4
  ^3 - 2*b34*b4*b56^2 - 4*b34*b4*b56*b6 - 4*b34*b4*b6^2 + 2*b34*b4*b7^2 - b4^4 - 2*b4^2*b56^2 - 4*b4^2*b56*b6 - 4*b4^2*b6^2 + 2*b4
  ^2*b7^2 - b56^2*b6^2 + b56^2*b7^2 - 2*b56*b6^3 - b6^4)*x^5 + (b2^2*b34^2*b4^2 + b2^2*b34^2*b56^2 + 2*b2^2*b34^2*b56*b6 + 2*b2^2*
  b34^2*b6^2 - b2^2*b34^2*b7^2 + 2*b2^2*b34*b4^3 + 2*b2^2*b34*b4*b56^2 + 4*b2^2*b34*b4*b56*b6 + 4*b2^2*b34*b4*b6^2 - 2*b2^2*b34*b4
  *b7^2 + b2^2*b4^4 + 2*b2^2*b4^2*b56^2 + 4*b2^2*b4^2*b56*b6 + 4*b2^2*b4^2*b6^2 - 2*b2^2*b4^2*b7^2 + b2^2*b56^2*b6^2 - b2^2*b56^2*
  b7^2 + 2*b2^2*b56*b6^3 - 2*b2^2*b56*b6*b7^2 + b2^2*b6^4 - 2*b2^2*b6^2*b7^2 + b34^2*b4^2*b56^2 + 2*b34^2*b4^2*b56*b6 + 2*b34^2*b4
  ^2*b6^2 - b34^2*b4^2*b7^2 + b34^2*b56^2*b6^2 - b34^2*b56^2*b7^2 + 2*b34^2*b56*b6^3 - 2*b34^2*b56*b6*b7^2 + b34^2*b6^4 - 2*b34^2*
  b6^2*b7^2 + 2*b34*b4^3*b56^2 + 4*b34*b4^3*b56*b6 + 4*b34*b4^3*b6^2 - 2*b34*b4^3*b7^2 + 2*b34*b4*b56^2*b6^2 - 2*b34*b4*b56^2*b7^2
   + 4*b34*b4*b56*b6^3 - 2*b34*b4*b56*b6*b7^2 + 2*b34*b4*b6^4 - 2*b34*b4*b6^2*b7^2 + b4^4*b56^2 + 2*b4^4*b56*b6 + 2*b4^4*b6^2 - b4
  ^4*b7^2 + 2*b4^2*b56^2*b6^2 - 2*b4^2*b56^2*b7^2 + 4*b4^2*b56*b6^3 - 2*b4^2*b56*b6*b7^2 + 2*b4^2*b6^4 - 2*b4^2*b6^2*b7^2)*x^4 + (
  -b2^2*b34^2*b4^2*b56^2 - 2*b2^2*b34^2*b4^2*b56*b6 - 2*b2^2*b34^2*b4^2*b6^2 + b2^2*b34^2*b4^2*b7^2 - b2^2*b34^2*b56^2*b6^2 + b2^2
  *b34^2*b56^2*b7^2 - 2*b2^2*b34^2*b56*b6^3 + 2*b2^2*b34^2*b56*b6*b7^2 - b2^2*b34^2*b6^4 + 2*b2^2*b34^2*b6^2*b7^2 - 2*b2^2*b34*b4^
  3*b56^2 - 4*b2^2*b34*b4^3*b56*b6 - 4*b2^2*b34*b4^3*b6^2 + 2*b2^2*b34*b4^3*b7^2 - 2*b2^2*b34*b4*b56^2*b6^2 + 2*b2^2*b34*b4*b56^2*
  b7^2 - 4*b2^2*b34*b4*b56*b6^3 + 4*b2^2*b34*b4*b56*b6*b7^2 - 2*b2^2*b34*b4*b6^4 + 4*b2^2*b34*b4*b6^2*b7^2 - b2^2*b4^4*b56^2 - 2*b
  2^2*b4^4*b56*b6 - 2*b2^2*b4^4*b6^2 + b2^2*b4^4*b7^2 - 2*b2^2*b4^2*b56^2*b6^2 + 2*b2^2*b4^2*b56^2*b7^2 - 4*b2^2*b4^2*b56*b6^3 + 4
  *b2^2*b4^2*b56*b6*b7^2 - 2*b2^2*b4^2*b6^4 + 4*b2^2*b4^2*b6^2*b7^2 + b2^2*b56^2*b6^2*b7^2 + 2*b2^2*b56*b6^3*b7^2 + b2^2*b6^4*b7^2
   - b34^2*b4^2*b56^2*b6^2 + b34^2*b4^2*b56^2*b7^2 - 2*b34^2*b4^2*b56*b6^3 + 2*b34^2*b4^2*b56*b6*b7^2 - b34^2*b4^2*b6^4 + 2*b34^2*
  b4^2*b6^2*b7^2 + b34^2*b56^2*b6^2*b7^2 + 2*b34^2*b56*b6^3*b7^2 + b34^2*b6^4*b7^2 - 2*b34*b4^3*b56^2*b6^2 + 2*b34*b4^3*b56^2*b7^2
   - 4*b34*b4^3*b56*b6^3 + 4*b34*b4^3*b56*b6*b7^2 - 2*b34*b4^3*b6^4 + 4*b34*b4^3*b6^2*b7^2 - b4^4*b56^2*b6^2 + b4^4*b56^2*b7^2 - 2
  *b4^4*b56*b6^3 + 2*b4^4*b56*b6*b7^2 - b4^4*b6^4 + 2*b4^4*b6^2*b7^2)*x^3 + (b2^2*b34^2*b4^2*b56^2*b6^2 - b2^2*b34^2*b4^2*b56^2*b7
  ^2 + 2*b2^2*b34^2*b4^2*b56*b6^3 - 2*b2^2*b34^2*b4^2*b56*b6*b7^2 + b2^2*b34^2*b4^2*b6^4 - 2*b2^2*b34^2*b4^2*b6^2*b7^2 - b2^2*b34^
  2*b56^2*b6^2*b7^2 - 2*b2^2*b34^2*b56*b6^3*b7^2 - b2^2*b34^2*b6^4*b7^2 + 2*b2^2*b34*b4^3*b56^2*b6^2 - 2*b2^2*b34*b4^3*b56^2*b7^2 
  + 4*b2^2*b34*b4^3*b56*b6^3 - 4*b2^2*b34*b4^3*b56*b6*b7^2 + 2*b2^2*b34*b4^3*b6^4 - 4*b2^2*b34*b4^3*b6^2*b7^2 - 2*b2^2*b34*b4*b56^
  2*b6^2*b7^2 - 4*b2^2*b34*b4*b56*b6^3*b7^2 - 2*b2^2*b34*b4*b6^4*b7^2 + b2^2*b4^4*b56^2*b6^2 - b2^2*b4^4*b56^2*b7^2 + 2*b2^2*b4^4*
  b56*b6^3 - 2*b2^2*b4^4*b56*b6*b7^2 + b2^2*b4^4*b6^4 - 2*b2^2*b4^4*b6^2*b7^2 - 2*b2^2*b4^2*b56^2*b6^2*b7^2 - 4*b2^2*b4^2*b56*b6^3
  *b7^2 - 2*b2^2*b4^2*b6^4*b7^2)*x^2 + (b2^2*b34^2*b4^2*b56^2*b6^2*b7^2 + 2*b2^2*b34^2*b4^2*b56*b6^3*b7^2 + b2^2*b34^2*b4^2*b6^4*b
  7^2 + 2*b2^2*b34*b4^3*b56^2*b6^2*b7^2 + 4*b2^2*b34*b4^3*b56*b6^3*b7^2 + 2*b2^2*b34*b4^3*b6^4*b7^2 + b2^2*b4^4*b56^2*b6^2*b7^2 + 
  2*b2^2*b4^4*b56*b6^3*b7^2 + b2^2*b4^4*b6^4*b7^2)*x
julia> S,(b4,b56,b6,b7)=polynomial_ring(QQ,["b4", "b56", "b6", "b7"])
(Multivariate polynomial ring in 4 variables over QQ, QQMPolyRingElem[b4, b56, b6, b7])

julia> R,(x, y, z)=polynomial_ring(S,["x", "y", "z"])
(Multivariate polynomial ring in 3 variables over multivariate polynomial ring, AbstractAlgebra.Generic.MPoly{QQMPolyRingElem}[x, y, z])

julia> g = y^2-x*(x-1000^2)*(x-(1000000+b4)^2)*(x-(b4)^2)*(x-(b6+b56)^2)*(x-(b6)^2)*(x+(b7)^2);

julia> f = y - b4*(1000000 + b4)*b6*(b6 + b56)*b7*x + b6*(b6 + b56)*b7*x^2 - b7*x^3;

julia> Igf = ideal(R,[g,f]);

julia> eliminate(Igf,[x])
Edit this page Contact Imprint Privacy policy © 2018-2024 The OSCAR Team