Skip to content

Commit

Permalink
[FTheoryTools] Add verification method for Euler characteristic
Browse files Browse the repository at this point in the history
  • Loading branch information
HereAround committed Aug 9, 2024
1 parent e0e5a17 commit 55d9b5c
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 0 deletions.
1 change: 1 addition & 0 deletions experimental/FTheoryTools/docs/src/generalities.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ euler_characteristic(m::AbstractFTheoryModel; check::Bool = true)
```@docs
is_base_space_fully_specified(m::AbstractFTheoryModel)
is_partially_resolved(m::AbstractFTheoryModel)
verify_euler_characteristic_from_hodge_numbers(m::AbstractFTheoryModel; check::Bool = true)
```


Expand Down
51 changes: 51 additions & 0 deletions experimental/FTheoryTools/src/AbstractFTheoryModels/properties.jl
Original file line number Diff line number Diff line change
Expand Up @@ -98,3 +98,54 @@ has_weighted_resolution_zero_sections(m::AbstractFTheoryModel) = has_attribute(m
has_zero_section(m::AbstractFTheoryModel) = has_attribute(m, :zero_section)
has_gauge_algebra(m::AbstractFTheoryModel) = has_attribute(m, :gauge_algebra)
has_global_gauge_quotients(m::AbstractFTheoryModel) = has_attribute(m, :global_gauge_quotients)



##########################################
### (4) Consistency checks
##########################################

@doc raw"""
verify_euler_characteristic_from_hodge_numbers(m::AbstractFTheoryModel; check::Bool = true)
Verify if the Euler characteristic, as computed from integrating the 4-th Chern class,
agrees with the results obtained from using the alternating sum of the Hodge numbers.
If so, this method returns `true`. However, should information be missing, (e.g. some
Hodge numbers), or the dimension of the F-theory model differ form 4, then this method
raises an error.
```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> verify_euler_characteristic_from_hodge_numbers(qsm_model, check = false)
true
```
"""
function verify_euler_characteristic_from_hodge_numbers(m::AbstractFTheoryModel; check::Bool = true)
@req (m isa WeierstrassModel || m isa GlobalTateModel || m isa HypersurfaceModel) "Verification of Euler characteristic of F-theory model supported for Weierstrass, global Tate and hypersurface models only"
@req base_space(m) isa NormalToricVariety "Verification of Euler characteristic of F-theory model currently supported only for toric base"
@req ambient_space(m) isa NormalToricVariety "Verification of Euler characteristic of F-theory model currently supported only for toric ambient space"
@req dim(base_space(m)) == 3 "Verification of Euler characteristic of F-theory model currently supported only for toric base spaces of dimension 3"
@req dim(ambient_space(m)) == 5 "Verification of Euler characteristic of F-theory model currently supported only for toric ambient spaces of dimension 5"
@req has_attribute(m, :h11) "Verification of Euler characteristic of F-theory model requires h11"
@req has_attribute(m, :h12) "Verification of Euler characteristic of F-theory model requires h12"
@req has_attribute(m, :h13) "Verification of Euler characteristic of F-theory model requires h13"
@req has_attribute(m, :h22) "Verification of Euler characteristic of F-theory model requires h22"

# Check if the answer is known
if has_attribute(m, :verify_euler_characteristic_from_hodge_numbers)
return get_attribute(m, :verify_euler_characteristic_from_hodge_numbers)::Bool
end

# Computer Euler characteristic from integrating c4
ec = euler_characteristic(m, check = check)

# Compute Euler characteristic from adding Hodge numbers
ec2 = 4 + 2 * hodge_h11(m) - 4 * hodge_h12(m) + 2 * hodge_h13(m) + hodge_h22(m)

# Compute result of verification
h = (ec == ec2)
set_attribute!(m, :verify_euler_characteristic_from_hodge_numbers, h)
return h
end
1 change: 1 addition & 0 deletions experimental/FTheoryTools/src/exports.jl
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,7 @@ export tate_section_a6
export topological_intersection_numbers_among_ci_curves
export topological_intersection_numbers_among_nontrivial_ci_curves
export tune
export verify_euler_characteristic_from_hodge_numbers
export weierstrass_ideal_sheaf
export weierstrass_model
export weierstrass_model_over_del_pezzo_surface
Expand Down

0 comments on commit 55d9b5c

Please sign in to comment.