oscar-system / Oscar.jl

A comprehensive open source computer algebra system for computations in algebra, geometry, and number theory.
https://www.oscar-system.org
Other
338 stars 120 forks source link

FTheoryTools: Serialize triangulation? #2548

Open HereAround opened 1 year ago

HereAround commented 1 year ago

The new overhaul in base independent model (cf. https://github.com/oscar-system/Oscar.jl/pull/2470) relies on finding a triangulation to construct an auxiliary base space. A single triangulation will be sufficient. This triangulation need not be regular, but merely star and fine/full.

As found in the above PR, for one particular example in the F-theory literature, this computation leads to a time-out. So we must wonder if there is a more efficient way to execute this operation (e.g. by saving one appropriate triangulation).

For an example that times out on the github tests (i.e. the full execution likely takes more than 120 minutes), execute the following:

julia> m = literature_model(arxiv_id = "1507.05954", equation = "A.1")
Weierstrass model over a not fully specified base -- U(1)xU(1) Weierstrass model based on arXiv paper 1507.05954 Eq. (A.1)

Eventually, this should boil down to finding a star (center is the origin) and fine triangulation of a polytope in 5d whose vertices are listed as the columns of the following "auxiliary_base_grading" matrix:

[[6, 4, 2, 3, 1, 0, 0, 0, 0, -1, -1, -1],
[-3, -2, -1, -1, 0, 1, 0, 0, 0, 1, 1, 1],
[-2, -1, 0, -1, 0, 0, 1, 0, 0, 1, 0, 0],
[-2, -1, 0, -1, 0, 0, 0, 1, 0, 0, 1, 0],
[-2, -1, 0, -1, 0, 0, 0, 0, 1, 0, 0, 1]]

(The upshot is to find a simplicial toric variety whose fan resides in Z^5, has 12 rays and the Cox ring is graded by the above matrix.)

For a simpler example, that completes within a few seconds, execute the following:

julia> t = literature_model(arxiv_id = "1109.3454", equation = "3.1")

I see two ways forward:

  1. We find a speed-up for the triangulations. Currently, we compute all (fill in the appropritate adjectives) triangulations? For the purpose of the F-theoryTools a single triangulation would suffice. Is this possible? Also, for the FTheoryTools we do not need regularity. This is, if I recall, the most time consuming check. I tried to disable it, but did not yet see a major speed-up. Maybe @lkastner knows more? My recollection is that this is tricky...
  2. We compute one appropriate triangulation for each literature model and then store it (or maybe directly the auxiliary base space?). This should be taken into account towards the serialization of the FTheoryTools. Since we intend to do this for many (probably a few hundred) F-theory models eventually, this raises an infrastructure question (cluster/super computer to perform such computations on). @lkastner should again be our "local" expert on fast and parallel triangulations.

Since this possibly affects the serialization, let me also ping @antonydellavecchia . Please let me know what you think!

cc @apturner.

lkastner commented 1 year ago
  1. Currently, we compute all (fill in the appropritate adjectives) triangulations? For the purpose of the F-theoryTools a single triangulation would suffice.

Sure, this should be easy by choosing an appropriate weight vector. It would even be regular then. Can you provide a better example of what you are triangulating? I.e. where in the code would I look or can you give me a few matrices with the points?

lkastner commented 1 year ago

(center is the origin)

The origin is not among the points of the matrix you provided and it is also not contained in the convex hull of these points.

julia> M = [[6, 4, 2, 3, 1, 0, 0, 0, 0, -1, -1, -1],
       [-3, -2, -1, -1, 0, 1, 0, 0, 0, 1, 1, 1],
       [-2, -1, 0, -1, 0, 0, 1, 0, 0, 1, 0, 0],
       [-2, -1, 0, -1, 0, 0, 0, 1, 0, 0, 1, 0],
       [-2, -1, 0, -1, 0, 0, 0, 0, 1, 0, 0, 1]]
5-element Vector{Vector{Int64}}:
 [6, 4, 2, 3, 1, 0, 0, 0, 0, -1, -1, -1]
 [-3, -2, -1, -1, 0, 1, 0, 0, 0, 1, 1, 1]
 [-2, -1, 0, -1, 0, 0, 1, 0, 0, 1, 0, 0]
 [-2, -1, 0, -1, 0, 0, 0, 1, 0, 0, 1, 0]
 [-2, -1, 0, -1, 0, 0, 0, 0, 1, 0, 0, 1]

julia> MZ = transpose(matrix(ZZ, M))
[ 6   -3   -2   -2   -2]
[ 4   -2   -1   -1   -1]
[ 2   -1    0    0    0]
[ 3   -1   -1   -1   -1]
[ 1    0    0    0    0]
[ 0    1    0    0    0]
[ 0    0    1    0    0]
[ 0    0    0    1    0]
[ 0    0    0    0    1]
[-1    1    1    0    0]
[-1    1    0    1    0]
[-1    1    0    0    1]

julia> ch = convex_hull(MZ)
Polyhedron in ambient dimension 5

julia> [0,0,0,0,0] in ch
false
HereAround commented 1 year ago

Sorry @lkastner. I did not state the case clear correctly. Sorry for the misleading message. I believe we are trying to execute the following:

M = [[6, 4, 2, 3, 1, 0, 0, 0, 0, -1, -1, -1],
[-3, -2, -1, -1, 0, 1, 0, 0, 0, 1, 1, 1],
[-2, -1, 0, -1, 0, 0, 1, 0, 0, 1, 0, 0],
[-2, -1, 0, -1, 0, 0, 0, 1, 0, 0, 1, 0],
[-2, -1, 0, -1, 0, 0, 0, 0, 1, 0, 0, 1]]
charges = matrix(ZZ, M);
auxiliary_base = normal_toric_varieties_from_glsm(charges)

But maybe best to discuss on slack, in case I am making yet another leap/stating the case still unclearly...