This commit is contained in:
@@ -0,0 +1,104 @@
|
|||||||
|
# Entries are (id, factory, expected_cy_dimension, expected_no_divs, expected_disc,
|
||||||
|
# expected_intersection_numbers_CY), where expected_disc is a list of
|
||||||
|
# (str(discriminant_factor), codimension) pairs as returned by ToricPolytope.disc().
|
||||||
|
|
||||||
|
PLAYGROUND_MODEL_FACTORIES = [
|
||||||
|
(
|
||||||
|
"K3_two_parameter_family",
|
||||||
|
lambda: ToricPolytopeProjectiveSpace([1, 1, 2, 4], model_name="K3_two_parameter_family"),
|
||||||
|
2, # cy_dimension
|
||||||
|
2, # no_divs
|
||||||
|
[("z2 - 1/4", 2), ("4096*z1^2*(4*z2 - 1) + 128*z1 - 1", 0)],
|
||||||
|
{(0, 0): 4, (0, 1): 2, (1, 1): 0},
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"CY3_two_parameter_family",
|
||||||
|
lambda: ToricPolytopeProjectiveSpace([1, 1, 2, 2, 2], model_name="CY3_two_parameter_family"),
|
||||||
|
3,
|
||||||
|
2,
|
||||||
|
[("z2 - 1/4", 3), ("65536*z1^2*(4*z2 - 1) + 512*z1 - 1", 0)],
|
||||||
|
{(0, 0, 0): 8, (0, 0, 1): 4, (0, 1, 1): 0, (1, 1, 1): 0},
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"CY4_two_parameter_family",
|
||||||
|
lambda: ToricPolytopeProjectiveSpace([1, 1, 1, 1, 8, 12], model_name="CY4_two_parameter_family"),
|
||||||
|
4,
|
||||||
|
2,
|
||||||
|
[
|
||||||
|
("z2 - 1/256", 2),
|
||||||
|
("34828517376*z1^4*(256*z2 - 1) + 322486272*z1^3 - 1119744*z1^2 + 1728*z1 - 1", 0),
|
||||||
|
],
|
||||||
|
{(0, 0, 0, 0): 64, (0, 0, 0, 1): 16, (0, 0, 1, 1): 4, (0, 1, 1, 1): 1, (1, 1, 1, 1): 0},
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"CICY3_one_parameter",
|
||||||
|
lambda: ToricPolytopeCICY([[3, 3]], model_name="CICY3_one_parameter"),
|
||||||
|
3,
|
||||||
|
1,
|
||||||
|
[("z1 - 1/46656", 0)],
|
||||||
|
{(0, 0, 0): 9},
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"CICY3_two_parameter",
|
||||||
|
lambda: ToricPolytopeCICY([[3], [3]], model_name="CICY3_two_parameter"),
|
||||||
|
3,
|
||||||
|
2,
|
||||||
|
[
|
||||||
|
(
|
||||||
|
"-19683*z1^3 - 2187*(27*z1 + 1)*z2^2 - 19683*z2^3 - 2187*z1^2 "
|
||||||
|
"- 81*(729*z1^2 - 189*z1 + 1)*z2 - 81*z1 - 1",
|
||||||
|
0,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
{(0, 0, 0): 0, (0, 0, 1): 3, (0, 1, 1): 3, (1, 1, 1): 0},
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"CICY5_two_parameter",
|
||||||
|
lambda: ToricPolytopeCICY([[6, 1], [0, 2]], model_name="CICY5_two_parameter"),
|
||||||
|
5,
|
||||||
|
2,
|
||||||
|
[
|
||||||
|
(
|
||||||
|
"16384*z2^7 - 28672*z2^6 + 21504*z2^5 - 448*(1647086*z1 - 5)*z2^3 - 8960*z2^4 "
|
||||||
|
"- 112*(8235430*z1 + 3)*z2^2 - 678223072849*z1^2 - 28*(4941258*z1 - 1)*z2 - 1647086*z1 - 1",
|
||||||
|
0,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
{
|
||||||
|
(0, 0, 0, 0, 0): 6,
|
||||||
|
(0, 0, 0, 0, 1): 12,
|
||||||
|
(0, 0, 0, 1, 1): 0,
|
||||||
|
(0, 0, 1, 1, 1): 0,
|
||||||
|
(0, 1, 1, 1, 1): 0,
|
||||||
|
(1, 1, 1, 1, 1): 0,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
(
|
||||||
|
"CICY3_two_parameter_manual",
|
||||||
|
lambda: ToricPolytope(
|
||||||
|
[
|
||||||
|
[1, 0, 0, 0, 0, 0],
|
||||||
|
[0, 1, 0, 0, 0, 0],
|
||||||
|
[0, 0, 1, 0, 0, 0],
|
||||||
|
[0, 0, 0, 1, 0, 0],
|
||||||
|
[0, 0, 0, 0, 1, 0],
|
||||||
|
[0, 0, 0, 0, 0, 1],
|
||||||
|
[-1, -1, 0, 0, 0, 0],
|
||||||
|
[0, 0, -1, -1, -1, -1],
|
||||||
|
],
|
||||||
|
nef_partition=[[0, 1, 2, 3], [4, 5, 6, 7]],
|
||||||
|
model_name="CICY3_two_parameter_manual",
|
||||||
|
),
|
||||||
|
4,
|
||||||
|
2,
|
||||||
|
[
|
||||||
|
(
|
||||||
|
"-14348907*z1^5 - 2657205*z1^4 - 196830*z1^3 - 29296875*(270*z1 + 1)*z2^2 "
|
||||||
|
"- 30517578125*z2^3 - 7290*z1^2 + 9375*(98415*z1^3 - 32805*z1^2 + 810*z1 - 1)*z2 "
|
||||||
|
"- 135*z1 - 1",
|
||||||
|
0,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
{(0, 0, 0, 0): 0, (0, 0, 0, 1): 0, (0, 0, 1, 1): 6, (0, 1, 1, 1): 8, (1, 1, 1, 1): 2},
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
import os
|
|
||||||
|
|
||||||
import pytest
|
|
||||||
from sage.all import * # noqa: F401,F403
|
|
||||||
|
|
||||||
load(os.path.join(os.path.dirname(__file__), "..", "sage", "toric_topdata.sage"))
|
|
||||||
|
|
||||||
|
|
||||||
def test_polytope_rejects_too_few_points():
|
|
||||||
with pytest.raises(ValueError):
|
|
||||||
Polytope([[0, 0], [1, 0]]) # 2 points in dimension 2: not enough
|
|
||||||
|
|
||||||
|
|
||||||
def test_mirror_quintic_topdata():
|
|
||||||
# Vertices e_1, ..., e_4, -e_1-...-e_4 -- the worked example from
|
|
||||||
# ToricPolytope's own docstring.
|
|
||||||
points = [
|
|
||||||
[1, 0, 0, 0],
|
|
||||||
[0, 1, 0, 0],
|
|
||||||
[0, 0, 1, 0],
|
|
||||||
[0, 0, 0, 1],
|
|
||||||
[-1, -1, -1, -1],
|
|
||||||
]
|
|
||||||
|
|
||||||
polytope = ToricPolytope(points, model_name="ci_smoke_test_quintic")
|
|
||||||
assert polytope.dimension == 4
|
|
||||||
assert len(polytope.triangulations) >= 1
|
|
||||||
|
|
||||||
polytope.topdata()
|
|
||||||
assert polytope.cy_dimension == 3
|
|
||||||
assert polytope.no_divs == 1 # P^4 has Picard rank 1
|
|
||||||
assert polytope.intersection_numbers_CY == {(0, 0, 0): 5} # classical quintic self-intersection
|
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
import os
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
from sage.all import * # noqa: F401,F403
|
||||||
|
from sage.geometry.lattice_polytope import set_palp_dimension
|
||||||
|
|
||||||
|
load(os.path.join(os.path.dirname(__file__), "..", "sage", "toric_topdata.sage"))
|
||||||
|
load(os.path.join(os.path.dirname(__file__), "playground_models.sage"))
|
||||||
|
|
||||||
|
set_palp_dimension(11)
|
||||||
|
|
||||||
|
PLAYGROUND_MODELS = [pytest.param(*row[1:], id=row[0]) for row in PLAYGROUND_MODEL_FACTORIES] # noqa: F821
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
"make_model, expected_cy_dimension, expected_no_divs, expected_disc, expected_intersection_numbers_CY",
|
||||||
|
PLAYGROUND_MODELS,
|
||||||
|
)
|
||||||
|
def test_playground_models_disc_and_topdata(
|
||||||
|
make_model,
|
||||||
|
expected_cy_dimension,
|
||||||
|
expected_no_divs,
|
||||||
|
expected_disc,
|
||||||
|
expected_intersection_numbers_CY,
|
||||||
|
):
|
||||||
|
polytope = make_model()
|
||||||
|
|
||||||
|
discriminants = polytope.disc()
|
||||||
|
assert [(str(factor), codim) for factor, codim in discriminants] == expected_disc
|
||||||
|
|
||||||
|
polytope.topdata()
|
||||||
|
assert polytope.cy_dimension == expected_cy_dimension
|
||||||
|
assert polytope.no_divs == expected_no_divs
|
||||||
|
assert polytope.intersection_numbers_CY == expected_intersection_numbers_CY
|
||||||
Reference in New Issue
Block a user