Skip to content

Commit

Permalink
[FTheoryTools] Rewrite _kodaira_type to work with any locus (#3424)
Browse files Browse the repository at this point in the history
* [FTheoryTools] Rewrite _kodaira_type to work with any locus

* [FTheoryTools] Rewrite _kodaira_type to work with any locus

* [FTheoryTools] Rewrite _kodaira_type to work with any locus

* [FTheoryTools] Rewrite _kodaira_type to work with any locus

* [FTheoryTools] Rewrite _kodaira_type to work with any locus
  • Loading branch information
apturner committed Mar 11, 2024
1 parent 68e863a commit 653fded
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 44 deletions.
36 changes: 27 additions & 9 deletions experimental/FTheoryTools/src/auxiliary.jl
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,7 @@ function _kodaira_type(id::MPolyIdeal{T}, f::T, g::T, d::T, ords::Tuple{Int64, I
g_ord = ords[2]
d_ord = ords[3]

# Check for cases where there cannot be Tate monodromy
if d_ord == 0
kod_type = "I_0"
elseif d_ord == 1 && f_ord == 0 && g_ord == 0
Expand All @@ -169,6 +170,7 @@ function _kodaira_type(id::MPolyIdeal{T}, f::T, g::T, d::T, ords::Tuple{Int64, I
elseif d_ord >= 12 && f_ord >= 4 && g_ord >= 6
kod_type = "Non-minimal"
else
# Create new ring with auxiliary variable to construct the monodromy polynomial
R = parent(f)
S, (_psi, ) = polynomial_ring(QQ, ["_psi"; [string(v) for v in gens(R)]], cached = false)
ring_map = hom(R, S, gens(S)[2:end])
Expand All @@ -177,23 +179,39 @@ function _kodaira_type(id::MPolyIdeal{T}, f::T, g::T, d::T, ords::Tuple{Int64, I
poly_d = ring_map(d)
locus = ring_map(gens(id)[1])

# Compute monodromy polynomial and check factorization for remaining cases
if f_ord == 0 && g_ord == 0
monodromy_poly = _psi^2 + divexact(evaluate(9 * poly_g, [locus], [0]), evaluate(2 * poly_f, [locus], [0]))
g_quotient = divrem(9 * poly_g, locus)[2]
f_quotient = divrem(2 * poly_f, locus)[2]
quotient_val = div(g_quotient, f_quotient)

monodromy_poly = _psi^2 + quotient_val
kod_type = _string_from_factor_count(monodromy_poly, ["Non-split I_$d_ord", "Split I_$d_ord"])
elseif d_ord == 4 && g_ord == 2 && f_ord >= 2
monodromy_poly = _psi^2 - evaluate(divexact(poly_g, locus^2), [locus], [0])
g_quotient = divrem(div(poly_g, locus^2), locus)[2]

monodromy_poly = _psi^2 - g_quotient
kod_type = _string_from_factor_count(monodromy_poly, ["Non-split IV", "Split IV"])
elseif d_ord == 6 && f_ord >= 2 && g_ord >= 3
monodromy_poly = _psi^3 + _psi * evaluate(divexact(poly_f, locus^2), [locus], [0]) + evaluate(divexact(poly_g, locus^3), [locus], [0])
f_quotient = divrem(div(poly_f, locus^2), locus)[2]
g_quotient = divrem(div(poly_g, locus^3), locus)[2]

monodromy_poly = _psi^3 + _psi * f_quotient + g_quotient
kod_type = _string_from_factor_count(monodromy_poly, ["Non-split I^*_0", "Semi-split I^*_0", "Split I^*_0"])
elseif f_ord == 2 && g_ord == 3 && d_ord >= 7 && d_ord % 2 == 1
monodromy_poly = _psi^2 + divexact(evaluate(divexact(poly_d, locus^d_ord) * divexact(2 * poly_f, locus^2)^3, [locus], [0]), 4 * evaluate(divexact(9 * poly_g, locus^3), [locus], [0])^3)
kod_type = _string_from_factor_count(monodromy_poly, ["Non-split I^*_$(d_ord - 6)", "Split I^*_$(d_ord - 6)"])
elseif f_ord == 2 && g_ord == 3 && d_ord >= 8 && d_ord % 2 == 0
monodromy_poly = _psi^2 + divexact(evaluate(divexact(poly_d, locus^d_ord) * divexact(2 * poly_f, locus^2)^2, [locus], [0]), evaluate(divexact(9 * poly_g, locus^3), [locus], [0])^2)
elseif f_ord == 2 && g_ord == 3 && d_ord >= 7
d_quotient = div(poly_d, locus^d_ord)
f_quotient = div(2 * poly_f, locus^2)
g_quotient = div(9 * poly_g, locus^3)
num_quotient = divrem(d_quotient * f_quotient^(2 + d_ord % 2), locus)[2]
den_quotient = divrem(4 * g_quotient^(2 + d_ord % 2), locus)[2]
quotient_val = div(num_quotient, den_quotient)

monodromy_poly = _psi^2 + quotient_val
kod_type = _string_from_factor_count(monodromy_poly, ["Non-split I^*_$(d_ord - 6)", "Split I^*_$(d_ord - 6)"])
elseif d_ord == 8 && g_ord == 4 && f_ord >= 3
monodromy_poly = _psi^2 - evaluate(divexact(poly_g, locus^4), [locus], [0])
g_quotient = divrem(div(poly_g, locus^4), locus)[2]

monodromy_poly = _psi^2 - g_quotient
kod_type = _string_from_factor_count(monodromy_poly, ["Non-split IV^*", "Split IV^*"])
else
kod_type = "Unrecognized"
Expand Down
70 changes: 35 additions & 35 deletions experimental/FTheoryTools/test/tate_models.jl
Original file line number Diff line number Diff line change
Expand Up @@ -98,43 +98,43 @@ end
#############################################################

# rings needed for constructions
istar0_s_auxiliary_base_ring, (a1pp, a2pp, a3pp, a4pp, a6pp, vp, mp) = QQ["a1pp", "a2pp", "a3pp", "a4pp", "a6pp", "vp", "mp"];
tate_auxiliary_base_ring, (a1p, a2p, a3p, a4p, a6p, v) = QQ["a1p", "a2p", "a3p", "a4p", "a6p", "v"];
istar0_s_auxiliary_base_ring, (a1pp, a2pp, a3pp, a4pp, a6pp, vp, wp, mp) = QQ["a1pp", "a2pp", "a3pp", "a4pp", "a6pp", "vp", "wp", "mp"];
tate_auxiliary_base_ring, (a1p, a2p, a3p, a4p, a6p, v, w) = QQ["a1p", "a2p", "a3p", "a4p", "a6p", "v", "w"];

# construct Tate models over arbitrary base
t_istar0_s = global_tate_model(istar0_s_auxiliary_base_ring, [1 2 3 4 6 0 2; -1 -2 -2 -3 -4 1 -1], 3, [a1pp * vp^1, mp * vp^1 + a2pp * vp^2, a3pp * vp^2, mp^2 * vp^2 + a4pp * vp^3, a6pp * vp^4]);
t_i1 = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; 0 0 -1 -1 -1 1], 3, [a1p * v^0, a2p * v^0, a3p * v^1, a4p * v^1, a6p * v^1]);
t_i2_ns = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; 0 0 -1 -1 -2 1], 3, [a1p * v^0, a2p * v^0, a3p * v^1, a4p * v^1, a6p * v^2]);
t_i2_s = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; 0 -1 -1 -1 -2 1], 3, [a1p * v^0, a2p * v^1, a3p * v^1, a4p * v^1, a6p * v^2]);
t_i3_ns = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; 0 0 -2 -2 -3 1], 3, [a1p * v^0, a2p * v^0, a3p * v^2, a4p * v^2, a6p * v^3]);
t_i3_s = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; 0 -1 -1 -2 -3 1], 3, [a1p * v^0, a2p * v^1, a3p * v^1, a4p * v^2, a6p * v^3]);
t_i4_ns = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; 0 0 -2 -2 -4 1], 3, [a1p * v^0, a2p * v^0, a3p * v^2, a4p * v^2, a6p * v^4]);
t_i4_s = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; 0 -1 -2 -2 -4 1], 3, [a1p * v^0, a2p * v^1, a3p * v^2, a4p * v^2, a6p * v^4]);
t_i5_ns = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; 0 0 -3 -3 -5 1], 3, [a1p * v^0, a2p * v^0, a3p * v^3, a4p * v^3, a6p * v^5]);
t_istar0_s = global_tate_model(istar0_s_auxiliary_base_ring, [1 2 3 4 6 0 2; -1 -2 -2 -3 -4 1 -1], 3, [a1pp * (vp^2 + wp)^1, mp * (vp^2 + wp)^1 + a2pp * (vp^2 + wp)^2, a3pp * (vp^2 + wp)^2, mp^2 * (vp^2 + wp)^2 + a4pp * (vp^2 + wp)^3, a6pp * (vp^2 + wp)^4]);
t_i1 = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; 0 0 -1 -1 -1 1], 3, [a1p * (v^2 + w)^0, a2p * (v^2 + w)^0, a3p * (v^2 + w)^1, a4p * (v^2 + w)^1, a6p * (v^2 + w)^1]);
t_i2_ns = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; 0 0 -1 -1 -2 1], 3, [a1p * (v^2 + w)^0, a2p * (v^2 + w)^0, a3p * (v^2 + w)^1, a4p * (v^2 + w)^1, a6p * (v^2 + w)^2]);
t_i2_s = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; 0 -1 -1 -1 -2 1], 3, [a1p * (v^2 + w)^0, a2p * (v^2 + w)^1, a3p * (v^2 + w)^1, a4p * (v^2 + w)^1, a6p * (v^2 + w)^2]);
t_i3_ns = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; 0 0 -2 -2 -3 1], 3, [a1p * (v^2 + w)^0, a2p * (v^2 + w)^0, a3p * (v^2 + w)^2, a4p * (v^2 + w)^2, a6p * (v^2 + w)^3]);
t_i3_s = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; 0 -1 -1 -2 -3 1], 3, [a1p * (v^2 + w)^0, a2p * (v^2 + w)^1, a3p * (v^2 + w)^1, a4p * (v^2 + w)^2, a6p * (v^2 + w)^3]);
t_i4_ns = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; 0 0 -2 -2 -4 1], 3, [a1p * (v^2 + w)^0, a2p * (v^2 + w)^0, a3p * (v^2 + w)^2, a4p * (v^2 + w)^2, a6p * (v^2 + w)^4]);
t_i4_s = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; 0 -1 -2 -2 -4 1], 3, [a1p * (v^2 + w)^0, a2p * (v^2 + w)^1, a3p * (v^2 + w)^2, a4p * (v^2 + w)^2, a6p * (v^2 + w)^4]);
t_i5_ns = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; 0 0 -3 -3 -5 1], 3, [a1p * (v^2 + w)^0, a2p * (v^2 + w)^0, a3p * (v^2 + w)^3, a4p * (v^2 + w)^3, a6p * (v^2 + w)^5]);
t_i5_s = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; 0 -1 -2 -3 -5 1], 3, [a1p * v^0, a2p * v^1, a3p * v^2, a4p * v^3, a6p * v^5]);
t_i6_ns = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; 0 0 -3 -3 -6 1], 3, [a1p * v^0, a2p * v^0, a3p * v^3, a4p * v^3, a6p * v^6]);
t_i6_s = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; 0 -1 -3 -3 -6 1], 3, [a1p * v^0, a2p * v^1, a3p * v^3, a4p * v^3, a6p * v^6]);
t_i7_ns = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; 0 0 -4 -4 -7 1], 3, [a1p * v^0, a2p * v^0, a3p * v^4, a4p * v^4, a6p * v^7]);
t_i7_s = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; 0 -1 -3 -4 -7 1], 3, [a1p * v^0, a2p * v^1, a3p * v^3, a4p * v^4, a6p * v^7]);
t_ii = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; -1 -1 -1 -1 -1 1], 3, [a1p * v^1, a2p * v^1, a3p * v^1, a4p * v^1, a6p * v^1]);
t_iii = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; -1 -1 -1 -1 -2 1], 3, [a1p * v^1, a2p * v^1, a3p * v^1, a4p * v^1, a6p * v^2]);
t_iv_ns = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; -1 -1 -1 -2 -2 1], 3, [a1p * v^1, a2p * v^1, a3p * v^1, a4p * v^2, a6p * v^2]);
t_iv_s = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; -1 -1 -1 -2 -3 1], 3, [a1p * v^1, a2p * v^1, a3p * v^1, a4p * v^2, a6p * v^3]);
t_istar0_ns = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; -1 -1 -2 -2 -3 1], 3, [a1p * v^1, a2p * v^1, a3p * v^2, a4p * v^2, a6p * v^3]);
t_istar0_ss = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; -1 -1 -2 -2 -4 1], 3, [a1p * v^1, a2p * v^1, a3p * v^2, a4p * v^2, a6p * v^4]);
t_istar1_ns = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; -1 -1 -2 -3 -4 1], 3, [a1p * v^1, a2p * v^1, a3p * v^2, a4p * v^3, a6p * v^4]);
t_istar1_s = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; -1 -1 -2 -3 -5 1], 3, [a1p * v^1, a2p * v^1, a3p * v^2, a4p * v^3, a6p * v^5]);
t_istar2_ns = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; -1 -1 -3 -3 -5 1], 3, [a1p * v^1, a2p * v^1, a3p * v^3, a4p * v^3, a6p * v^5]);
t_istar2_s = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; -1 -1 -3 -3 -6 1], 3, [a1p * v^1, a2p * v^1, a3p * v^3, a4p * v^3, a6p * v^6]);
t_istar3_ns = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; -1 -1 -3 -4 -6 1], 3, [a1p * v^1, a2p * v^1, a3p * v^3, a4p * v^4, a6p * v^6]);
t_istar3_s = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; -1 -1 -3 -4 -7 1], 3, [a1p * v^1, a2p * v^1, a3p * v^3, a4p * v^4, a6p * v^7]);
t_istar4_ns = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; -1 -1 -4 -4 -7 1], 3, [a1p * v^1, a2p * v^1, a3p * v^4, a4p * v^4, a6p * v^7]);
t_istar4_s = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; -1 -1 -4 -4 -8 1], 3, [a1p * v^1, a2p * v^1, a3p * v^4, a4p * v^4, a6p * v^8]);
t_ivstar_ns = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; -1 -2 -2 -3 -4 1], 3, [a1p * v^1, a2p * v^2, a3p * v^2, a4p * v^3, a6p * v^4]);
t_ivstar_s = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; -1 -2 -2 -3 -5 1], 3, [a1p * v^1, a2p * v^2, a3p * v^2, a4p * v^3, a6p * v^5]);
t_iiistar = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; -1 -2 -3 -3 -5 1], 3, [a1p * v^1, a2p * v^2, a3p * v^3, a4p * v^3, a6p * v^5]);
t_iistar = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; -1 -2 -3 -4 -5 1], 3, [a1p * v^1, a2p * v^2, a3p * v^3, a4p * v^4, a6p * v^5]);
t_nm = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; -1 -2 -3 -4 -6 1], 3, [a1p * v^1, a2p * v^2, a3p * v^3, a4p * v^4, a6p * v^6]);
t_i6_ns = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; 0 0 -3 -3 -6 1], 3, [a1p * (v^2 + w)^0, a2p * (v^2 + w)^0, a3p * (v^2 + w)^3, a4p * (v^2 + w)^3, a6p * (v^2 + w)^6]);
t_i6_s = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; 0 -1 -3 -3 -6 1], 3, [a1p * (v^2 + w)^0, a2p * (v^2 + w)^1, a3p * (v^2 + w)^3, a4p * (v^2 + w)^3, a6p * (v^2 + w)^6]);
t_i7_ns = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; 0 0 -4 -4 -7 1], 3, [a1p * (v^2 + w)^0, a2p * (v^2 + w)^0, a3p * (v^2 + w)^4, a4p * (v^2 + w)^4, a6p * (v^2 + w)^7]);
t_i7_s = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; 0 -1 -3 -4 -7 1], 3, [a1p * (v^2 + w)^0, a2p * (v^2 + w)^1, a3p * (v^2 + w)^3, a4p * (v^2 + w)^4, a6p * (v^2 + w)^7]);
t_ii = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; -1 -1 -1 -1 -1 1], 3, [a1p * (v^2 + w)^1, a2p * (v^2 + w)^1, a3p * (v^2 + w)^1, a4p * (v^2 + w)^1, a6p * (v^2 + w)^1]);
t_iii = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; -1 -1 -1 -1 -2 1], 3, [a1p * (v^2 + w)^1, a2p * (v^2 + w)^1, a3p * (v^2 + w)^1, a4p * (v^2 + w)^1, a6p * (v^2 + w)^2]);
t_iv_ns = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; -1 -1 -1 -2 -2 1], 3, [a1p * (v^2 + w)^1, a2p * (v^2 + w)^1, a3p * (v^2 + w)^1, a4p * (v^2 + w)^2, a6p * (v^2 + w)^2]);
t_iv_s = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; -1 -1 -1 -2 -3 1], 3, [a1p * (v^2 + w)^1, a2p * (v^2 + w)^1, a3p * (v^2 + w)^1, a4p * (v^2 + w)^2, a6p * (v^2 + w)^3]);
t_istar0_ns = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; -1 -1 -2 -2 -3 1], 3, [a1p * (v^2 + w)^1, a2p * (v^2 + w)^1, a3p * (v^2 + w)^2, a4p * (v^2 + w)^2, a6p * (v^2 + w)^3]);
t_istar0_ss = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; -1 -1 -2 -2 -4 1], 3, [a1p * (v^2 + w)^1, a2p * (v^2 + w)^1, a3p * (v^2 + w)^2, a4p * (v^2 + w)^2, a6p * (v^2 + w)^4]);
t_istar1_ns = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; -1 -1 -2 -3 -4 1], 3, [a1p * (v^2 + w)^1, a2p * (v^2 + w)^1, a3p * (v^2 + w)^2, a4p * (v^2 + w)^3, a6p * (v^2 + w)^4]);
t_istar1_s = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; -1 -1 -2 -3 -5 1], 3, [a1p * (v^2 + w)^1, a2p * (v^2 + w)^1, a3p * (v^2 + w)^2, a4p * (v^2 + w)^3, a6p * (v^2 + w)^5]);
t_istar2_ns = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; -1 -1 -3 -3 -5 1], 3, [a1p * (v^2 + w)^1, a2p * (v^2 + w)^1, a3p * (v^2 + w)^3, a4p * (v^2 + w)^3, a6p * (v^2 + w)^5]);
t_istar2_s = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; -1 -1 -3 -3 -6 1], 3, [a1p * (v^2 + w)^1, a2p * (v^2 + w)^1, a3p * (v^2 + w)^3, a4p * (v^2 + w)^3, a6p * (v^2 + w)^6]);
t_istar3_ns = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; -1 -1 -3 -4 -6 1], 3, [a1p * (v^2 + w)^1, a2p * (v^2 + w)^1, a3p * (v^2 + w)^3, a4p * (v^2 + w)^4, a6p * (v^2 + w)^6]);
t_istar3_s = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; -1 -1 -3 -4 -7 1], 3, [a1p * (v^2 + w)^1, a2p * (v^2 + w)^1, a3p * (v^2 + w)^3, a4p * (v^2 + w)^4, a6p * (v^2 + w)^7]);
t_istar4_ns = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; -1 -1 -4 -4 -7 1], 3, [a1p * (v^2 + w)^1, a2p * (v^2 + w)^1, a3p * (v^2 + w)^4, a4p * (v^2 + w)^4, a6p * (v^2 + w)^7]);
t_istar4_s = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; -1 -1 -4 -4 -8 1], 3, [a1p * (v^2 + w)^1, a2p * (v^2 + w)^1, a3p * (v^2 + w)^4, a4p * (v^2 + w)^4, a6p * (v^2 + w)^8]);
t_ivstar_ns = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; -1 -2 -2 -3 -4 1], 3, [a1p * (v^2 + w)^1, a2p * (v^2 + w)^2, a3p * (v^2 + w)^2, a4p * (v^2 + w)^3, a6p * (v^2 + w)^4]);
t_ivstar_s = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; -1 -2 -2 -3 -5 1], 3, [a1p * (v^2 + w)^1, a2p * (v^2 + w)^2, a3p * (v^2 + w)^2, a4p * (v^2 + w)^3, a6p * (v^2 + w)^5]);
t_iiistar = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; -1 -2 -3 -3 -5 1], 3, [a1p * (v^2 + w)^1, a2p * (v^2 + w)^2, a3p * (v^2 + w)^3, a4p * (v^2 + w)^3, a6p * (v^2 + w)^5]);
t_iistar = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; -1 -2 -3 -4 -5 1], 3, [a1p * (v^2 + w)^1, a2p * (v^2 + w)^2, a3p * (v^2 + w)^3, a4p * (v^2 + w)^4, a6p * (v^2 + w)^5]);
t_nm = global_tate_model(tate_auxiliary_base_ring, [1 2 3 4 6 0; -1 -2 -3 -4 -6 1], 3, [a1p * (v^2 + w)^1, a2p * (v^2 + w)^2, a3p * (v^2 + w)^3, a4p * (v^2 + w)^4, a6p * (v^2 + w)^6]);

@testset "Attributes of global Tate models over generic base space" begin
@test parent(tate_section_a1(t_i5_s)) == coordinate_ring(base_space(t_i5_s))
Expand Down Expand Up @@ -233,7 +233,7 @@ end
irr_i5_s = irrelevant_ideal(tas);
sri_i5_s = stanley_reisner_ideal(tas);
lin_i5_s = ideal_of_linear_relations(tas);
id_fin, = _blowup_global_sequence(id_i5_s, [[7, 8, 6], [2, 3, 1], [3, 4], [2, 4]], irr_i5_s, sri_i5_s, lin_i5_s)
id_fin, = _blowup_global_sequence(id_i5_s, [[8, 9, 6], [2, 3, 1], [3, 4], [2, 4]], irr_i5_s, sri_i5_s, lin_i5_s)
@test string(gens(id_fin)[end]) == "-b_4_1*b_2_1*a1p*z - b_4_1*b_2_2 - b_4_1*b_2_3*b_1_3^2*a3p*z^3 + b_4_2*b_3_2*b_2_1^2*b_1_1 + b_4_2*b_3_2*b_2_1^2*b_1_3*a2p*z^2 + b_4_2*b_3_2*b_2_1*b_2_3*b_1_3^3*a4p*z^4 + b_4_2*b_3_2*b_2_3^2*b_1_3^5*a6p*z^6"
end

Expand Down

0 comments on commit 653fded

Please sign in to comment.