Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FTheoryTools] Implement G4-fluxes #3965

Merged
merged 6 commits into from
Jul 26, 2024
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions docs/oscar_references.bib
Original file line number Diff line number Diff line change
Expand Up @@ -2238,6 +2238,19 @@ @Article{Wit88
reportnumber = {IASSNS-HEP-88/7}
}

@Article{Wit97,
author = {Witten, Edward},
title = {{On flux quantization in M theory and the effective action}},
journal = {J. Geom. Phys.},
volume = {22},
pages = {1--13},
year = {1997},
doi = {10.1016/S0393-0440(96)00042-3},
eprint = {hep-th/9609122},
archiveprefix = {arXiv},
reportnumber = {IASSNS-HEP-96-96}
}

@Article{Yam18,
author = {Yamagishi, Ryo},
title = {On smoothness of minimal models of quotient singularities by finite subgroups of ${\rm SL}_n(\mathbb
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,14 +54,14 @@ polynomial(ring::MPolyQuoRing, c::CohomologyClass)
## Methods

```@docs
integrate(c::CohomologyClass)
integrate(c::CohomologyClass; check::Bool = true)
```


## Special attributes of toric varieties

```@docs
cohomology_ring(v::NormalToricVarietyType)
cohomology_ring(v::NormalToricVarietyType; check::Bool = true)
volume_form(v::NormalToricVariety)
intersection_form(v::NormalToricVariety)
```
3 changes: 2 additions & 1 deletion experimental/FTheoryTools/docs/doc.main
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
"weierstrass.md",
"tate.md",
"hypersurface.md",
"literature.md"
"literature.md",
"g4.md"
],
]
35 changes: 35 additions & 0 deletions experimental/FTheoryTools/docs/src/g4.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
```@meta
CurrentModule = Oscar
```

# G4-Fluxes

$G_4$-fluxes are at the heart of F-theory model building.


## Constructors

We currently support the following constructor:
```@docs
g4_flux(model::AbstractFTheoryModel, class::CohomologyClass)
```


## Attributes

We currently support the following attributes:
```@docs
model(gf::G4Flux)
cohomology_class(gf::G4Flux)
```


## Properties

We currently support the following properties:
```@docs
passes_elementary_quantization_checks(gf::G4Flux)
```


## Methods
2 changes: 2 additions & 0 deletions experimental/FTheoryTools/docs/src/generalities.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,8 @@ classes_of_model_sections(m::AbstractFTheoryModel)
defining_classes(m::AbstractFTheoryModel)
gauge_algebra(m::AbstractFTheoryModel)
global_gauge_quotients(m::AbstractFTheoryModel)
chern_class_c1(m::AbstractFTheoryModel; check::Bool = true)
chern_class_c2(m::AbstractFTheoryModel; check::Bool = true)
```


Expand Down
128 changes: 128 additions & 0 deletions experimental/FTheoryTools/src/AbstractFTheoryModels/attributes.jl
Original file line number Diff line number Diff line change
Expand Up @@ -1096,6 +1096,134 @@
end


@doc raw"""
chern_class_c1(m::AbstractFTheoryModel)

If the elliptically fibered n-fold $Y_n$ underlying the F-theory model in question is given
as a hypersurface in a toric ambient space, we can compute a cohomology class $h$ on the
toric ambient space $X_\Sigma$, such that its restriction to $Y_n$ is the first Chern class
$c_1$ of the tangent bundle of $Y_n$. If those assumptions are satisfied, this method returns
this very cohomology class $h$, otherwise it raises and error.

Note that $Y_n$ is a Calabi-Yau variety precisely if $c_1$ is trivial. Thus, the restriction
of $h$ to the hypersurface $Y_n$ must be trivial. Upon closer inspection, in the given toric
setting, this is equivalent to $h$ being trivial.

The computation of the cohomology ring verifies if the toric variety is simplicial and
complete. The check for it to be complete can be very time consuming. This can be switched
off by setting the optional argument `check` to the value `falue`, as in the example below.
HereAround marked this conversation as resolved.
Show resolved Hide resolved

```jldoctest
julia> qsm_model = literature_model(arxiv_id = "1903.00009", model_parameters = Dict("k" => 4))
Hypersurface model over a concrete base

julia> h = chern_class_c1(qsm_model; check = false)
Cohomology class on a normal toric variety given by 0

julia> is_trivial(h)
true
```
"""
function chern_class_c1(m::AbstractFTheoryModel; check::Bool = true)
@req (m isa WeierstrassModel || m isa GlobalTateModel || m isa HypersurfaceModel) "First Chern class of F-theory model supported for Weierstrass, global Tate and hypersurface models only"
@req base_space(m) isa NormalToricVariety "First Chern class of F-theory model currently supported only for toric base"
@req ambient_space(m) isa NormalToricVariety "Firfalsest Chern class of F-theory model currently supported only for toric ambient space"
HereAround marked this conversation as resolved.
Show resolved Hide resolved

# Check if the answer is known
if has_attribute(m, :chern_class_c1)
return get_attribute(m, :chern_class_c1)

Check warning on line 1134 in experimental/FTheoryTools/src/AbstractFTheoryModels/attributes.jl

View check run for this annotation

Codecov / codecov/patch

experimental/FTheoryTools/src/AbstractFTheoryModels/attributes.jl#L1134

Added line #L1134 was not covered by tests
end
HereAround marked this conversation as resolved.
Show resolved Hide resolved

# Trigger potential short-cut computation of cohomology ring
cohomology_ring(ambient_space(m); check)

# Compute the cohomology class corresponding to the hypersurface equation
if m isa WeierstrassModel
cl = toric_divisor_class(ambient_space(m), degree(weierstrass_polynomial(m)))

Check warning on line 1142 in experimental/FTheoryTools/src/AbstractFTheoryModels/attributes.jl

View check run for this annotation

Codecov / codecov/patch

experimental/FTheoryTools/src/AbstractFTheoryModels/attributes.jl#L1142

Added line #L1142 was not covered by tests
end
if m isa GlobalTateModel
cl = toric_divisor_class(ambient_space(m), degree(tate_polynomial(m)))

Check warning on line 1145 in experimental/FTheoryTools/src/AbstractFTheoryModels/attributes.jl

View check run for this annotation

Codecov / codecov/patch

experimental/FTheoryTools/src/AbstractFTheoryModels/attributes.jl#L1145

Added line #L1145 was not covered by tests
end
if m isa HypersurfaceModel
cl = toric_divisor_class(ambient_space(m), degree(hypersurface_equation(m)))
end
cy = cohomology_class(cl)

# Compute and set h
c1_t_ambient = cohomology_class(anticanonical_divisor(ambient_space(m)))
set_attribute!(m, :chern_class_c1, c1_t_ambient - cy)
return c1_t_ambient - cy
HereAround marked this conversation as resolved.
Show resolved Hide resolved
end


@doc raw"""
chern_class_c2(m::AbstractFTheoryModel)

If the elliptically fibered n-fold $Y_n$ underlying the F-theory model in question is given
as a hypersurface in a toric ambient space, we can compute a cohomology class $h$ on the
toric ambient space $X_\Sigma$, such that its restriction to $Y_n$ is the 2nd Chern class
$c_2$ of the tangent bundle of $Y_n$. If those assumptions are satisfied, this method returns
this very cohomology class $h$, otherwise it raises and error.

As of right now, this method is computationally quite expensive for involved toric varieties,
such as in the example below. Therefore, think carefully if you truly want to compute this quantity.

The computation of the cohomology ring verifies if the toric variety is simplicial and
complete. The check for it to be complete can be very time consuming. This can be switched
off by setting the optional argument `check` to the value `falue`, as in the example below.
HereAround marked this conversation as resolved.
Show resolved Hide resolved

```jldoctest
julia> qsm_model = literature_model(arxiv_id = "1903.00009", model_parameters = Dict("k" => 4))
Hypersurface model over a concrete base

julia> h = chern_class_c2(qsm_model; check = false)
Cohomology class on a normal toric variety given by x5*x32 + 2*x5*x33 + 3*x5*x34 + 2*x5*x35 + x5*x36 + x6*x32 + 2*x6*x33 + 3*x6*x34 + 2*x6*x35 + x6*x36 + x7*x32 + 2*x7*x33 + 3*x7*x34 + 2*x7*x35 + x7*x36 + 13*x8*x23 + 11//2*x10*x23 - 6*x15*x26 + x15*x32 + 2*x15*x33 + 3*x15*x34 + 2*x15*x35 + x15*x36 - 4*x16^2 + x16*x32 + 2*x16*x33 + 3*x16*x34 + 2*x16*x35 + x16*x36 - 52*x17*x24 + 2*x17*x32 + 4*x17*x33 + 6*x17*x34 + 4*x17*x35 + 2*x17*x36 - 24*x18^2 + 7*x18*x25 + 2*x18*x32 + 4*x18*x33 + 6*x18*x34 + 4*x18*x35 + 2*x18*x36 + 3*x19*x32 + 6*x19*x33 + 9*x19*x34 + 6*x19*x35 + 3*x19*x36 + 20*x20^2 + 200//3*x20*x21 - 14*x20*x25 + 2*x20*x32 + 4*x20*x33 + 6*x20*x34 + 4*x20*x35 + 2*x20*x36 + 28//3*x21^2 - 163//3*x21*x24 + 2*x21*x32 + 4*x21*x33 + 6*x21*x34 + 4*x21*x35 + 2*x21*x36 + 21*x22^2 + 11//2*x22*x23 + 32*x22*x25 + 15//2*x23^2 - 17*x24^2 - 10*x24*x27 + x24*x32 + 2*x24*x33 + 3*x24*x34 + 2*x24*x35 + x24*x36 + 7*x25^2 + x25*x32 + 2*x25*x33 + 3*x25*x34 + 2*x25*x35 + x25*x36 + 2*x26^2 + 4*x26*x27 - 4*x26*x28 + 5*x27^2 + x27*x32 + 2*x27*x33 + 3*x27*x34 + 2*x27*x35 + x27*x36 - 3*x28^2 - 6*x29^2 + 7*x35*x36
HereAround marked this conversation as resolved.
Show resolved Hide resolved

julia> is_trivial(h)
false
```
"""
function chern_class_c2(m::AbstractFTheoryModel; check::Bool = true)
@req (m isa WeierstrassModel || m isa GlobalTateModel || m isa HypersurfaceModel) "First Chern class of F-theory model supported for Weierstrass, global Tate and hypersurface models only"
@req base_space(m) isa NormalToricVariety "First Chern class of F-theory model currently supported only for toric base"
@req ambient_space(m) isa NormalToricVariety "First Chern class of F-theory model currently supported only for toric ambient space"
HereAround marked this conversation as resolved.
Show resolved Hide resolved

# Check if the answer is known
if has_attribute(m, :chern_class_c2)
return get_attribute(m, :chern_class_c2)

Check warning on line 1193 in experimental/FTheoryTools/src/AbstractFTheoryModels/attributes.jl

View check run for this annotation

Codecov / codecov/patch

experimental/FTheoryTools/src/AbstractFTheoryModels/attributes.jl#L1193

Added line #L1193 was not covered by tests
end

# Trigger potential short-cut computation of cohomology ring
cohomology_ring(ambient_space(m); check)

# Compute the cohomology class corresponding to the hypersurface equation
if m isa WeierstrassModel
cl = toric_divisor_class(ambient_space(m), degree(weierstrass_polynomial(m)))

Check warning on line 1201 in experimental/FTheoryTools/src/AbstractFTheoryModels/attributes.jl

View check run for this annotation

Codecov / codecov/patch

experimental/FTheoryTools/src/AbstractFTheoryModels/attributes.jl#L1201

Added line #L1201 was not covered by tests
end
if m isa GlobalTateModel
cl = toric_divisor_class(ambient_space(m), degree(tate_polynomial(m)))

Check warning on line 1204 in experimental/FTheoryTools/src/AbstractFTheoryModels/attributes.jl

View check run for this annotation

Codecov / codecov/patch

experimental/FTheoryTools/src/AbstractFTheoryModels/attributes.jl#L1204

Added line #L1204 was not covered by tests
end
if m isa HypersurfaceModel
cl = toric_divisor_class(ambient_space(m), degree(hypersurface_equation(m)))
end
cy = cohomology_class(cl)

# Compute sum of products of cohomolgy classes of torus invariant prime divisors
c_ds = [polynomial(cohomology_class(d)) for d in torusinvariant_prime_divisors(ambient_space(m))]
c2_t_ambient = zero(cohomology_ring(ambient_space(m)))
for i in 1:length(c_ds)
for j in i+1:length(c_ds)
c2_t_ambient = c2_t_ambient + c_ds[i]*c_ds[j]
end
end
HereAround marked this conversation as resolved.
Show resolved Hide resolved
c2_t_ambient = cohomology_class(ambient_space(m), c2_t_ambient)

# Compute and set h
h = c2_t_ambient - cy * chern_class_c1(m; check = check)
set_attribute!(m, :chern_class_c2, h)
return h
end


##########################################
### (4) Attributes specially for the QSMs
Expand Down
4 changes: 4 additions & 0 deletions experimental/FTheoryTools/src/FTheoryTools.jl
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@ include("standard_constructions.jl")
include("LiteratureModels/constructors.jl")
include("LiteratureModels/create_index.jl")

include("G4Fluxes/constructors.jl")
include("G4Fluxes/attributes.jl")
include("G4Fluxes/properties.jl")

include("Serialization/tate_models.jl")
include("Serialization/weierstrass_models.jl")
include("Serialization/hypersurface_models.jl")
Expand Down
48 changes: 48 additions & 0 deletions experimental/FTheoryTools/src/G4Fluxes/attributes.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
#####################################################
# 1 Basic attributes
#####################################################

@doc raw"""
model(gf::G4Flux)

Return the F-theory model for which this $G_4$-flux candidate is defined.

```jldoctest
julia> qsm_model = literature_model(arxiv_id = "1903.00009", model_parameters = Dict("k" => 4))
Hypersurface model over a concrete base

julia> cohomology_ring(ambient_space(qsm_model), check = false);

julia> g4_class = cohomology_class(anticanonical_divisor_class(ambient_space(qsm_model)))^2;

julia> g4f = g4_flux(qsm_model, g4_class, check = false)
G4-flux candidate lacking elementary quantization checks

julia> model(g4f)
Hypersurface model over a concrete base
```
"""
model(gf::G4Flux) = gf.model


@doc raw"""
cohomology_class(gf::G4Flux)

Return the cohomology class which defines the $G_4$-flux candidate.

```jldoctest
julia> qsm_model = literature_model(arxiv_id = "1903.00009", model_parameters = Dict("k" => 4))
Hypersurface model over a concrete base

julia> cohomology_ring(ambient_space(qsm_model), check = false);

julia> g4_class = cohomology_class(anticanonical_divisor_class(ambient_space(qsm_model)))^2;

julia> g4f = g4_flux(qsm_model, g4_class, check = false)
G4-flux candidate lacking elementary quantization checks

julia> cohomology_class(g4f) == g4_class
true
```
"""
cohomology_class(gf::G4Flux) = gf.class
Loading
Loading