Skip to content

Commit

Permalink
[FTheoryTools] Support for literature model parameters
Browse files Browse the repository at this point in the history
  • Loading branch information
apturner authored and HereAround committed Jul 20, 2023
1 parent 2e74e70 commit 5ff0130
Show file tree
Hide file tree
Showing 21 changed files with 164 additions and 68 deletions.
3 changes: 3 additions & 0 deletions experimental/FTheoryTools/docs/src/literature.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,12 @@ journal_volume(m::AbstractFTheoryModel)
journal_year(m::AbstractFTheoryModel)
literature_identifier(m::AbstractFTheoryModel)
model_description(m::AbstractFTheoryModel)
model_parameters(m::AbstractFTheoryModel)
paper_authors(m::AbstractFTheoryModel)
paper_buzzwords(m::AbstractFTheoryModel)
paper_description(m::AbstractFTheoryModel)
paper_title(m::AbstractFTheoryModel)
related_literature_models(m::AbstractFTheoryModel)
resolutions(m::AbstractFTheoryModel)
resolution_generating_sections(m::AbstractFTheoryModel)
resolution_zero_sections(m::AbstractFTheoryModel)
Expand Down Expand Up @@ -79,6 +81,7 @@ set of information. This is achieved with the following methods:
* `has_journal_year(m::AbstractFTheoryModel)`,
* `has_literature_identifier(m::AbstractFTheoryModel)`,
* `has_model_description(m::AbstractFTheoryModel)`,
* `has_model_parameters(m::AbstractFTheoryModel)`,
* `has_paper_authors(m::AbstractFTheoryModel)`,
* `has_paper_buzzwords(m::AbstractFTheoryModel)`,
* `has_paper_description(m::AbstractFTheoryModel)`,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,12 @@
"description": "SU(5)xU(1) restricted Tate model",
"buzzwords": ["GUT model", "Tate", "U(1)", "SU(5)"]
},
"model_data": {
"model_descriptors": {
"type": "tate",
"description": "SU(5)xU(1) restricted Tate model",
"gauge_algebra": ["su(5)", "u(1)"],
"gauge_algebra": ["su(5)", "u(1)"]
},
"model_data": {
"base_dim": 3,
"base_coordinates": ["a1", "a21", "a32", "a43", "w"],
"a1": "a1",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,12 @@
"description": "General construction of U(1) model",
"buzzwords": ["U(1)", "Mordell–Weil", "rational sections"]
},
"model_data": {
"model_descriptors": {
"type": "hypersurface",
"description": "U(1) hypersurface model",
"gauge_algebra": ["u1"],
"gauge_algebra": ["u1"]
},
"model_data": {
"base_dim": 2,
"base_coordinates": ["Kbar", "b", "c0", "c1", "c2", "c3"],
"auxiliary_base_grading": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,12 @@
"description": "General construction of U(1) model",
"buzzwords": ["U(1)", "Mordell–Weil", "rational sections"]
},
"model_data": {
"model_descriptors": {
"type": "weierstrass",
"description": "U(1) Weierstrass model",
"gauge_algebra": ["u1"],
"gauge_algebra": ["u1"]
},
"model_data": {
"base_dim": 2,
"base_coordinates": ["Kbar", "b", "c0", "c1", "c2", "c3"],
"f": "c1 * c3 - b^2 c0 - 1//3 * c2^2",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,13 @@
"description": "Systematic classification of ADE Tate models and their resolutions",
"buzzwords": ["Tate", "classification", "resolution"]
},
"model_parameters": ["k"],
"model_data": {
"model_descriptors": {
"type": "tate",
"description": "SU(2k+1) Tate model",
"gauge_algebra": ["su(2k+1)"],
"gauge_algebra": ["su(2k+1)"]
},
"model_parameters": ["k"],
"model_data": {
"base_dim": 3,
"base_coordinates": ["b1", "b2", "b3", "b4", "b6", "ζ0"],
"a1": "b1",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,13 @@
"description": "Systematic classification of ADE Tate models and their resolutions",
"buzzwords": ["Tate", "classification", "resolution"]
},
"model_parameters": ["k"],
"model_data": {
"model_descriptors": {
"type": "tate",
"description": "SU(2k) Tate model",
"gauge_algebra": ["su(2k)"],
"gauge_algebra": ["su(2k)"]
},
"model_parameters": ["k"],
"model_data": {
"base_dim": 3,
"base_coordinates": ["b1", "b2", "b3", "b4", "b6", "z0"],
"a1": "b1",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,13 @@
"description": "Systematic classification of ADE Tate models and their resolutions",
"buzzwords": ["Tate", "classification", "resolution"]
},
"model_parameters": ["k"],
"model_data": {
"model_descriptors": {
"type": "tate",
"description": "SO(4k+2) Tate model",
"gauge_algebra": ["so(4k+2)"],
"gauge_algebra": ["so(4k+2)"]
},
"model_parameters": ["k"],
"model_data": {
"base_dim": 3,
"base_coordinates": ["Kbar", "b1", "b2", "b3", "b4", "b6", "ζ0"],
"a1": "b1*ζ0",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,14 @@
"description": "Systematic classification of ADE Tate models and their resolutions",
"buzzwords": ["Tate", "classification", "resolution"]
},
"model_parameters": ["k"],
"model_data": {
"model_descriptors": {
"type": "tate",
"description": "SO(4k+4)xU(1) Tate model",
"comment": "The paper only states that this is an SO(4k+4) model, but setting a6 = 0 also introduces an additional generating section, so there is additionally a U(1) factor, which may not have been relevant for the authors' purposes.",
"gauge_algebra": ["so(4k+4)", "u(1)"],
"gauge_algebra": ["so(4k+4)", "u(1)"]
},
"model_parameters": ["k"],
"model_data": {
"base_dim": 3,
"base_coordinates": ["Kbar", "b1", "b2", "b3", "b4", "ζ0"],
"a1": "b1*ζ0",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,12 @@
"description": "Systematic classification of ADE Tate models and their resolutions",
"buzzwords": ["Tate", "classification", "resolution"]
},
"model_data": {
"model_descriptors": {
"type": "tate",
"description": "E6 Tate model",
"gauge_algebra": ["e6"],
"gauge_algebra": ["e6"]
},
"model_data": {
"base_dim": 3,
"base_coordinates": ["Kbar", "b1", "b2", "b3", "b4", "b6", "ζ0"],
"a1": "b1*ζ0",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,12 @@
"description": "Systematic classification of ADE Tate models and their resolutions",
"buzzwords": ["Tate", "classification", "resolution"]
},
"model_data": {
"model_descriptors": {
"type": "tate",
"description": "E7 Tate model",
"gauge_algebra": ["e7"],
"gauge_algebra": ["e7"]
},
"model_data": {
"base_dim": 3,
"base_coordinates": ["Kbar", "b1", "b2", "b3", "b4", "b6", "ζ0"],
"a1": "b1*ζ0",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,12 @@
"description": "Systematic classification of ADE Tate models and their resolutions",
"buzzwords": ["Tate", "classification", "resolution"]
},
"model_data": {
"model_descriptors": {
"type": "tate",
"description": "E8 Tate model",
"gauge_algebra": ["e8"],
"gauge_algebra": ["e8"]
},
"model_data": {
"base_dim": 3,
"base_coordinates": ["Kbar", "b1", "b2", "b3", "b4", "b6", "ζ0"],
"a1": "b1*ζ0",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,12 @@
"description": "General construction of U(1)xU(1) model",
"buzzwords": ["U(1)", "Mordell–Weil", "rational sections"]
},
"model_data": {
"model_descriptors": {
"type": "hypersurface",
"description": "U(1)xU(1) hypersurface model",
"gauge_algebra": ["u1", "u1"],
"gauge_algebra": ["u1", "u1"]
},
"model_data": {
"base_dim": 2,
"base_coordinates": [
"Kbar",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,12 @@
"description": "General construction of U(1)xU(1) model",
"buzzwords": ["U(1)", "Mordell–Weil", "rational sections"]
},
"model_data": {
"model_descriptors": {
"type": "weierstrass",
"description": "U(1)xU(1) Weierstrass model",
"gauge_algebra": ["u1", "u1"],
"gauge_algebra": ["u1", "u1"]
},
"model_data": {
"base_dim": 2,
"base_coordinates": [
"Kbar",
Expand Down
73 changes: 47 additions & 26 deletions experimental/FTheoryTools/src/LiteratureModels/attributes.jl
Original file line number Diff line number Diff line change
Expand Up @@ -420,6 +420,28 @@ function model_description(m::AbstractFTheoryModel)
return get_attribute(m, :model_description)
end

@doc raw"""
model_parameters(m::AbstractFTheoryModel)
Return the `model_parameters` of the given model.
If no `model_parameters` are known, an error is raised.
```jldoctest
julia> m = literature_model(arxiv_id = "1212.2949", equation = "3.2", model_parameters = Dict("k" => 5))
Assuming that the first row of the given grading is the grading under Kbar
Global Tate model over a not fully specified base -- SU(2k+1) Tate model with parameter values (k = 5) based on arXiv paper 1212.2949 Eq. (3.2)
julia> model_parameters(m)
Dict{String, Int64} with 1 entry:
"k" => 5
```
"""
function model_parameters(m::AbstractFTheoryModel)
@req has_model_parameters(m) "No model parameters known for this model"
return get_attribute(m, :model_parameters)
end

@doc raw"""
paper_authors(m::AbstractFTheoryModel)
Expand Down Expand Up @@ -511,35 +533,34 @@ function paper_title(m::AbstractFTheoryModel)
return get_attribute(m, :paper_title)
end

# This example cannot be used until we support literature model parameters
# At that point, we should simply be able to uncomment this block
@doc raw"""
related_literature_models(m::AbstractFTheoryModel)
# @doc raw"""
# related_literature_models(m::AbstractFTheoryModel)
Return a list of the unique identifiers of any `related_literature_models` of
the given model. These are models that are introduced in the same paper as
the given model, but that are distinct from the given model. If no
`related_literature_models` are known, an error is raised.
# Return a list of the unique identifiers any `related_literature_models` of
# the given model. These are models that are introduced in the same paper as
# the given model, but that are distinct from the given model. If no
# `related_literature_models` are known, an error is raised.
```jldoctest
julia> m = literature_model(arxiv_id = "1212.2949", equation = "3.2", model_parameters = Dict("k" => 5))
Assuming that the first row of the given grading is the grading under Kbar
# ```jldoctest
# julia> m = literature_model(arxiv_id = "1212.2949", equation = "3.2")
# Weierstrass model over a not fully specified base -- U(1)xU(1) Weierstrass model based on arXiv paper 1507.05954 Eq. (A.1)

# julia> related_literature_models(m)
# 6-element Vector{String}:
# "1212_2949-2"
# "1212_2949-3"
# "1212_2949-4"
# "1212_2949-5"
# "1212_2949-6"
# "1212_2949-7"
# ```
# """
# function related_literature_models(m::AbstractFTheoryModel)
# @req has_related_literature_models(m) "No associated models known for this model"
# return get_attribute(m, :related_literature_models)
# end
Global Tate model over a not fully specified base -- SU(2k+1) Tate model with parameter values (k = 5) based on arXiv paper 1212.2949 Eq. (3.2)
julia> related_literature_models(m)
6-element Vector{String}:
"1212_2949-2"
"1212_2949-3"
"1212_2949-4"
"1212_2949-5"
"1212_2949-6"
"1212_2949-7"
```
"""
function related_literature_models(m::AbstractFTheoryModel)
@req has_related_literature_models(m) "No associated models known for this model"
return get_attribute(m, :related_literature_models)
end

@doc raw"""
resolutions(m::AbstractFTheoryModel)
Expand Down
12 changes: 10 additions & 2 deletions experimental/FTheoryTools/src/LiteratureModels/auxiliary.jl
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,19 @@ function _eval_poly(E::Number, vars)
end

function eval_poly(s::String, R)
symR = symbols(R) # Symbol[]
genR = gens(R)
if typeof(R) <: Union{PolyRing, MPolyRing}
symR = symbols(R) # Symbol[]
genR = gens(R)
else
symR = []
genR = []
end

return R(_eval_poly(Meta.parse(s), Dict(symR[i] => genR[i] for i in 1:length(symR))))
end

eval_poly(n::Number, R) = R(n)

# Example
# julia> Qx, (x1, x2) = QQ["x1", "x2"];
#
Expand Down
Loading

0 comments on commit 5ff0130

Please sign in to comment.