This is a Sagemath module for studying flexibility of affine cones over del Pezzo surfaces, see arXiv:2305.06462.
The module delPezzo_cylinders.py
is intended to be used with a Sagemath-provided Python interpreter sage -python
.
- install Sagemath locally or in a container, e.g., using a VSCode Dev Container extension with the included
.devcontainer/devcontainer.json
file. - Install the module with
sage -pip install .
in the source directory. - Import the module with
from delPezzo import *
in your script or a Jupyter notebook. - Run your code in one of the following ways:
- Python script
script.py
withsage -python script.py
- Sagemath script
script.sage
withsage script.sage
- Jupyter notebook with a kernel provided by Sagemath, see instructions, or in case of the Dev Container, select Python interpreter
sage -python
(or try to select an available one).
- Python script
The following example code imports the module, creates a Surface instance, chooses the subdivision cone B3 and a cylinder collection.
from delPezzo import *
S = Surface(3)
B3 = S.cone_representative('B(3)')
collection = Cylinder.make_type_cuspcubic(S, S.E, S.E[-4:])
The list of available subdivision cones for S
is returned by NE_SubdivisionCone.cone_types(S)
.
The rays of polarity and forbidden cones of the collection are returned by collection.Pol.rays()
and collection.Forb.rays()
respectively.
The properties of the collection in the relative interior of a given cone (B3 here) as well as subdivision cones, where the collection is polar and complete, can be checked with the following methods.
collection.is_polar_on(B3) # False
collection.is_complete_on(B3) # True
collection.is_transversal() # True
collection.is_generically_flexible_on(B3) # False
list(collection.compatible_representatives()) # ['B(2)', 'C(2)']
list(collection.compatible_representatives(complete=True)) # ['B(2)', 'C(2)']
The method CylinderGenerator.all_cylinders(S, constructions)
returns a collection comprised of
all cylinders of certain constructions (e.g., constructions = ['lines','tangent']
)
corresponding to all choices of the contraction to the projective plane. Such a collection is useful in conjuction with the
following methods.
The method collection.make_polar_on(cone)
filters out the cylinders that are
not polar inside the cone, and collection.reduce()
removes abundant cylinders from
the collection while keeping the forbidden cone unchanged.
The tests are implemented in files tests/test_*.py
and can be mass-checked with pytest
. There is also a notebook tests/tests.ipynb
with all tests included for convenience.
The file Lubbes_list.txt' contains a list of geometric representations of weak del Pezzo surfaces from [Lub-algo, Appendix A]. The file
Lubbes_parse.py' is a helper parser script.
[Lub-algo] Niels Lubbes, `Algorithms for singularities and real structures of weak Del Pezzo surfaces', Journal of Algebra and Its Applications, 13(05):1350158, 2014.
Created by Alexander Perepechko.