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] Support for literature model parameters #2569

Merged
merged 1 commit into from
Jul 20, 2023
Merged
Show file tree
Hide file tree
Changes from all 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
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 @@
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
```
Comment on lines +429 to +438
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very good. This here is exactly what I was looking for earlier, but somehow must have overlooked this test. Nice!

"""
function model_parameters(m::AbstractFTheoryModel)
@req has_model_parameters(m) "No model parameters known for this model"
return get_attribute(m, :model_parameters)

Check warning on line 442 in experimental/FTheoryTools/src/LiteratureModels/attributes.jl

View check run for this annotation

Codecov / codecov/patch

experimental/FTheoryTools/src/LiteratureModels/attributes.jl#L440-L442

Added lines #L440 - L442 were not covered by tests
end

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

Expand Down Expand Up @@ -511,35 +533,34 @@
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)

Check warning on line 562 in experimental/FTheoryTools/src/LiteratureModels/attributes.jl

View check run for this annotation

Codecov / codecov/patch

experimental/FTheoryTools/src/LiteratureModels/attributes.jl#L560-L562

Added lines #L560 - L562 were not covered by tests
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 @@
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)

Check warning on line 33 in experimental/FTheoryTools/src/LiteratureModels/auxiliary.jl

View check run for this annotation

Codecov / codecov/patch

experimental/FTheoryTools/src/LiteratureModels/auxiliary.jl#L31-L33

Added lines #L31 - L33 were not covered by tests
else
symR = []
genR = []

Check warning on line 36 in experimental/FTheoryTools/src/LiteratureModels/auxiliary.jl

View check run for this annotation

Codecov / codecov/patch

experimental/FTheoryTools/src/LiteratureModels/auxiliary.jl#L35-L36

Added lines #L35 - L36 were not covered by tests
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)

Check warning on line 42 in experimental/FTheoryTools/src/LiteratureModels/auxiliary.jl

View check run for this annotation

Codecov / codecov/patch

experimental/FTheoryTools/src/LiteratureModels/auxiliary.jl#L42

Added line #L42 was not covered by tests

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