Skip to content

Commit

Permalink
Added D3-tadpole cancellation check for G4-fluxes
Browse files Browse the repository at this point in the history
  • Loading branch information
emikelsons committed Sep 1, 2024
1 parent 22f0fcb commit 35f9b27
Show file tree
Hide file tree
Showing 4 changed files with 66 additions and 6 deletions.
13 changes: 13 additions & 0 deletions docs/oscar_references.bib
Original file line number Diff line number Diff line change
Expand Up @@ -1490,6 +1490,19 @@ @Article{KMSS11
reportnumber = {UCSB-MATH-2011-09, IPMU11-0107, NSF-KITP-11-110, KCL-MTH-11-13}
}

@Article{KMW12,
author = {Krause, Sven and Mayrhofer, Christoph and Weigand, Timo},
title = {Gauge fluxes in F-theory and type IIB orientifolds},
journal = {Journal of High Energy Physics},
volume = {2012},
number = {8},
publisher = {Springer Science and Business Media LLC},
year = {2012},
month = {8},
doi = {10.1007/jhep08(2012)119},
eprint = {1202.3138}
}

@Article{KO14,
author = {Kelleher, Jerome and O'Sullivan, Barry},
title = {Generating All Partitions: A Comparison Of Two Encodings},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1234,6 +1234,9 @@ error.
julia> qsm_model = literature_model(arxiv_id = "1903.00009", model_parameters = Dict("k" => 4))
Hypersurface model over a concrete base
julia> h = euler_characteristic(qsm_model; check = false)
378
julia> h = euler_characteristic(qsm_model; check = false)
378
```
Expand All @@ -1245,7 +1248,7 @@ function euler_characteristic(m::AbstractFTheoryModel; check::Bool = true)

# Check if the answer is known
if has_attribute(m, :euler_characteristic)
return get_attribute(m, :euler_characteristic)::CohomologyClass
return get_attribute(m, :euler_characteristic)::Int
end

# Trigger potential short-cut computation of cohomology ring
Expand All @@ -1255,7 +1258,7 @@ function euler_characteristic(m::AbstractFTheoryModel; check::Bool = true)
cy = cohomology_class(toric_divisor_class(ambient_space(m), degree(hypersurface_equation(m))))

# Compute the Euler characteristic
h = integrate(chern_class(m, 4; check) * cy; check)
h = Int(integrate(chern_class(m, 4; check) * cy; check))
set_attribute!(m, :euler_characteristic, h)
return h
end
Expand Down
51 changes: 47 additions & 4 deletions experimental/FTheoryTools/src/G4Fluxes/properties.jl
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ end
@doc raw"""
passes_verticality_checks(gf::G4Flux)
G4-fluxes are subject to verticality conditions described in [Lin16](@cite).
G4-fluxes are subject to verticality conditions described in [Lin16](@cite) and [KMW12](@cite).
It is hard to verify that these condition are met. However,
we can execute a number of simple consistency checks, by
verifying that $\int_{Y}{G_4 \wedge [D_1] \wedge [zero section]} = 0$ and $\int_{Y}{G_4 \wedge [D_1] \wedge [D_2]} = 0$
Expand Down Expand Up @@ -92,9 +92,9 @@ true
"""
@attr Bool function passes_verticality_checks(g4::G4Flux)
m = model(g4)
@req (m isa WeierstrassModel || m isa GlobalTateModel || m isa HypersurfaceModel) "Verticality checks for G4-fluxes only supported for Weierstrass, global Tate and hypersurface models"
@req base_space(m) isa NormalToricVariety "Verticality checks for G4-flux currently supported only for toric base"
@req ambient_space(m) isa NormalToricVariety "Verticality checks for G4-flux currently supported only for toric ambient space"
@req (m isa WeierstrassModel || m isa GlobalTateModel || m isa HypersurfaceModel) "Tadpole cancellation checks for G4-fluxes only supported for Weierstrass, global Tate and hypersurface models"
@req base_space(m) isa NormalToricVariety "Tadpole cancellation checks for G4-flux currently supported only for toric base"
@req ambient_space(m) isa NormalToricVariety "Tadpole cancellation checks for G4-flux currently supported only for toric ambient space"
@req has_zero_section(m) "For verticality checks, a model zero section needs to be specified"

# Compute the cohomology class corresponding to the hypersurface equation
Expand All @@ -117,3 +117,46 @@ true
end
return true
end


@doc raw"""
passes_tadpole_cancellation_check(gf::G4Flux)
G4-fluxes are subject to the D3-tadpole cancellation condition described in [Wei18](@cite) and [KMW12](@cite).
This check verifies that $euler_characteristic(Y)/24 - 1/2 * \int_{Y}{G_4 \wedge G_4}$ is a non-negative integer.
```jldoctest; setup = :(Oscar.LazyArtifacts.ensure_artifact_installed("QSMDB", Oscar.LazyArtifacts.find_artifacts_toml(Oscar.oscardir)))
julia> qsm_model = literature_model(arxiv_id = "1903.00009", model_parameters = Dict("k" => 4))
Hypersurface model over a concrete base
julia> divs = torusinvariant_prime_divisors(ambient_space(qsm_model));
julia> e1 = cohomology_class(divs[35]);e2 = cohomology_class(divs[32]);e4 = cohomology_class(divs[34]);
julia> u = cohomology_class(divs[33]);v = cohomology_class(divs[30]);pb_Kbar = cohomology_class(sum([divs[k] for k in 1:29]));
julia> g4_class = (-3) // kbar3(qsm_model) * (5 * e1 * e4 + pb_Kbar * (-3 * e1 - 2 * e2 - 6 * e4 + pb_Kbar - 4 * u + v));
julia> g4 = g4_flux(qsm_model, g4_class, check = false)
G4-flux candidate lacking elementary quantization checks
julia> passes_tadpole_cancellation_check(g4)
true
```
"""
@attr Bool function passes_tadpole_cancellation_check(g4::G4Flux)
m = model(g4)
@req (m isa WeierstrassModel || m isa GlobalTateModel || m isa HypersurfaceModel) "Tadpole cancellation checks for G4-fluxes only supported for Weierstrass, global Tate and hypersurface models"
@req base_space(m) isa NormalToricVariety "Tadpole cancellation checks for G4-flux currently supported only for toric base"
@req ambient_space(m) isa NormalToricVariety "Tadpole cancellation checks for G4-flux currently supported only for toric ambient space"

# Compute the cohomology class corresponding to the hypersurface equation
cy = polynomial(cohomology_class(toric_divisor_class(ambient_space(m), degree(hypersurface_equation(m)))))

# Now check if the D3-tadpole cancellation condition holds
numb = euler_characteristic(m; check = false)/24 - 1/2*integrate(cohomology_class(ambient_space(m), polynomial(cohomology_class(g4)) * polynomial(cohomology_class(g4)) * cy); check = false)
if numb > 0 && is_integer(numb)
return true
end
return false

Check warning on line 161 in experimental/FTheoryTools/src/G4Fluxes/properties.jl

View check run for this annotation

Codecov / codecov/patch

experimental/FTheoryTools/src/G4Fluxes/properties.jl#L161

Added line #L161 was not covered by tests
end
1 change: 1 addition & 0 deletions experimental/FTheoryTools/src/exports.jl
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@ export paper_buzzwords
export paper_description
export paper_title
export passes_elementary_quantization_checks
export passes_tadpole_cancellation_check
export passes_verticality_checks
export polytope_index
export put_over_concrete_base
Expand Down

0 comments on commit 35f9b27

Please sign in to comment.