-
Notifications
You must be signed in to change notification settings - Fork 176
Expand file tree
/
Copy pathprecomputed_attributes.jl
More file actions
336 lines (257 loc) · 15 KB
/
precomputed_attributes.jl
File metadata and controls
336 lines (257 loc) · 15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
##########################################
### (1) Meta data getters
##########################################
@define_model_attribute_getter((associated_literature_models, Vector{String}))
@define_model_attribute_getter((arxiv_doi, String))
@define_model_attribute_getter((arxiv_id, String))
@define_model_attribute_getter((arxiv_link, String))
@define_model_attribute_getter((arxiv_model_equation_number, String))
@define_model_attribute_getter((arxiv_model_page, String))
@define_model_attribute_getter((arxiv_model_section, String))
@define_model_attribute_getter((arxiv_version, String))
@define_model_attribute_getter((birational_literature_models, Vector{String}))
@define_model_attribute_getter((journal_doi, String))
@define_model_attribute_getter((journal_link, String))
@define_model_attribute_getter((journal_model_equation_number, String))
@define_model_attribute_getter((journal_model_page, String))
@define_model_attribute_getter((journal_model_section, String))
@define_model_attribute_getter((journal_pages, String))
@define_model_attribute_getter((journal_report_numbers, Vector{String}))
@define_model_attribute_getter((journal_volume, String))
@define_model_attribute_getter((journal_name, String))
@define_model_attribute_getter((journal_year, String))
@define_model_attribute_getter((literature_identifier, String))
@define_model_attribute_getter((model_description, String))
@define_model_attribute_getter((model_parameters, Dict{String, Int64}))
@define_model_attribute_getter((paper_authors, Vector{String}))
@define_model_attribute_getter((paper_buzzwords, Vector{String}))
@define_model_attribute_getter((paper_description, String))
@define_model_attribute_getter((paper_title, String))
##########################################
### (2) Geometric data getters
##########################################
@doc raw"""
exceptional_classes(m::AbstractFTheoryModel)
Return the cohomology classes of the exceptional toric divisors of a model as a vector of cohomology classes in the toric ambient space.
This information is only supported for models over a concrete base that is a normal toric variety, but is always available in this case.
After a toric blow up this information is updated.
# Examples
```jldoctest
julia> B3 = projective_space(NormalToricVariety, 3)
Normal toric variety
julia> Kbar = anticanonical_divisor_class(B3)
Divisor class on a normal toric variety
julia> foah11_B3 = literature_model(arxiv_id = "1408.4808", equation = "3.142", type = "hypersurface", base_space = B3, defining_classes = Dict("s7" => Kbar, "s9" => Kbar))
Construction over concrete base may lead to singularity enhancement. Consider computing singular_loci. However, this may take time!
Hypersurface model over a concrete base
julia> exceptional_classes(foah11_B3)
4-element Vector{CohomologyClass}:
Cohomology class on a normal toric variety given by e1
Cohomology class on a normal toric variety given by e2
Cohomology class on a normal toric variety given by e3
Cohomology class on a normal toric variety given by e4
```
"""
function exceptional_classes(m::AbstractFTheoryModel)
@req base_space(m) isa NormalToricVariety "Exceptional divisor classes are only supported for models over a concrete base"
return get_attribute(m, :exceptional_classes, Vector{CohomologyClass}())
end
@doc raw"""
exceptional_divisor_indices(m::AbstractFTheoryModel)
Return the indices of the generators of the Cox ring of the ambient space which correspond to exceptional divisors.
This information is only supported for models over a concrete base that is a normal toric variety, but is always available in this case.
After a toric blow up this information is updated.
# Examples
```jldoctest
julia> B3 = projective_space(NormalToricVariety, 3)
Normal toric variety
julia> Kbar = anticanonical_divisor_class(B3)
Divisor class on a normal toric variety
julia> foah11_B3 = literature_model(arxiv_id = "1408.4808", equation = "3.142", type = "hypersurface", base_space = B3, defining_classes = Dict("s7" => Kbar, "s9" => Kbar))
Construction over concrete base may lead to singularity enhancement. Consider computing singular_loci. However, this may take time!
Hypersurface model over a concrete base
julia> exceptional_divisor_indices(foah11_B3)
4-element Vector{Int64}:
8
9
10
11
```
"""
@attr Vector{Int} function exceptional_divisor_indices(m::AbstractFTheoryModel)
@req base_space(m) isa NormalToricVariety "Exceptional divisor indices are only supported for models over a concrete base"
return get_attribute(m, :exceptional_divisor_indices, Vector{Int64}())
end
# Return the gauge algebra of the given model. If no gauge algebra is known, an error is raised. This information is typically available for all models, however.
@define_model_attribute_getter((gauge_algebra, DirectSumLieAlgebra{QQBarFieldElem}),
"""
```jldoctest
julia> t = literature_model(arxiv_id = "1408.4808", equation = "3.190", type = "hypersurface")
Assuming that the first row of the given grading is the grading under Kbar
Hypersurface model over a not fully specified base
julia> gauge_algebra(t)
Direct sum Lie algebra
of dimension 13
with summands
sl_2
sl_2
sl_2
sl_2
linear Lie algebra
over algebraic closure of rational field
```
""")
# Return a list of the known Mordell–Weil generating sections of the given model. If no generating sections are known, an error is raised.
@define_model_attribute_getter((generating_sections, GeneratingSectionsType),
"""
```jldoctest
julia> m = literature_model(arxiv_id = "1109.3454", equation = "3.1")
Assuming that the first row of the given grading is the grading under Kbar
Global Tate model over a not fully specified base -- SU(5)xU(1) restricted Tate model based on arXiv paper 1109.3454 Eq. (3.1)
julia> generating_sections(m)
1-element Vector{Vector{MPolyDecRingElem{QQFieldElem, QQMPolyRingElem}}}:
[0, 0, 1]
```
""")
# Return list of lists of matrices, where each list of matrices corresponds to a gauge factor of the same index given by `gauge_algebra(m)`. These matrices are elements of the center of the corresponding gauge factor and quotienting by them replicates the action of some discrete group on the center of the lie algebra. This list combined with `gauge_algebra(m)` completely determines the gauge group of the model. If no gauge quotients are known, an error is raised.
@define_model_attribute_getter((global_gauge_group_quotient, Vector{Vector{String}}),
"""
```jldoctest
julia> t = literature_model(arxiv_id = "1408.4808", equation = "3.190", type = "hypersurface")
Assuming that the first row of the given grading is the grading under Kbar
Hypersurface model over a not fully specified base
julia> global_gauge_group_quotient(t)
5-element Vector{Vector{String}}:
["-identity_matrix(C,2)", "-identity_matrix(C,2)"]
["-identity_matrix(C,2)"]
["-identity_matrix(C,2)"]
["-identity_matrix(C,2)", "-identity_matrix(C,2)"]
["-identity_matrix(C,1)"]
```
""")
# Return the list of all known resolutions for the given model. If no resolutions are known, an error is raised.
@define_model_attribute_getter((resolutions, Vector{Tuple{Vector{Vector{String}}, Vector{String}}}),
"""
```jldoctest
julia> m = literature_model(arxiv_id = "1109.3454", equation = "3.1")
Assuming that the first row of the given grading is the grading under Kbar
Global Tate model over a not fully specified base -- SU(5)xU(1) restricted Tate model based on arXiv paper 1109.3454 Eq. (3.1)
julia> resolutions(m)
1-element Vector{Tuple{Vector{Vector{String}}, Vector{String}}}:
([["x", "y", "w"], ["y", "e1"], ["x", "e4"], ["y", "e2"], ["x", "y"]], ["e1", "e4", "e2", "e3", "s"])
```
""")
# Return a list of lists of known Mordell–Weil generating sections for the given model after each known resolution. Each element of the outer list corresponds to a known resolution (in the same order), and each element of the list associated to a given resolution corresponds to a known generating section (in the same order). If no resolution generating sections are known, an error is raised.
@define_model_attribute_getter((resolution_generating_sections, ResolutionGeneratingSectionsType),
"""
```jldoctest
julia> m = literature_model(arxiv_id = "1109.3454", equation = "3.1")
Assuming that the first row of the given grading is the grading under Kbar
Global Tate model over a not fully specified base -- SU(5)xU(1) restricted Tate model based on arXiv paper 1109.3454 Eq. (3.1)
julia> resolution_generating_sections(m)
1-element Vector{Vector{Vector{Vector{MPolyDecRingElem{QQFieldElem, QQMPolyRingElem}}}}}:
[[[0, 0, 1], [0, 0, 1], [0, 1], [0, 1], [0, 1], [a32, -a43]]]
```
""")
# Return a list of known Mordell–Weil zero sections for the given model after each blowup of each known resolution. Each element of the list corresponds to a known resolution (in the same order). If no resolution zero sections are known, an error is raised.
@define_model_attribute_getter((resolution_zero_sections, ResolutionZeroSectionsType),
"""
```jldoctest
julia> m = literature_model(arxiv_id = "1109.3454", equation = "3.1")
Assuming that the first row of the given grading is the grading under Kbar
Global Tate model over a not fully specified base -- SU(5)xU(1) restricted Tate model based on arXiv paper 1109.3454 Eq. (3.1)
julia> resolution_zero_sections(m)
1-element Vector{Vector{Vector{MPolyDecRingElem{QQFieldElem, QQMPolyRingElem}}}}:
[[1, 1, 0], [1, 1, w], [1, 1], [1, 1], [1, 1], [1, 1]]
```
""")
# Return the torsion sections of the given model. If no torsion sections are known, an error is raised.
@define_model_attribute_getter((torsion_sections, TorsionSectionsType),
"""
```jldoctest
julia> B3 = projective_space(NormalToricVariety, 3)
Normal toric variety
julia> Kbar = anticanonical_divisor_class(B3)
Divisor class on a normal toric variety
julia> foah15_B3 = literature_model(arxiv_id = "1408.4808", equation = "3.190", type = "hypersurface", base_space = B3, defining_classes = Dict("s7" => Kbar, "s9" => Kbar))
Construction over concrete base may lead to singularity enhancement. Consider computing singular_loci. However, this may take time!
Hypersurface model over a concrete base
julia> length(torsion_sections(foah15_B3))
1
```
""")
# Return the list of all known weighted resolutions for the given model. If no weighted resolutions are known, an error is raised.
@define_model_attribute_getter((weighted_resolutions, Vector{Tuple{Vector{Tuple{Vector{String}, Vector{Int64}}}, Vector{String}}}),
"""
```jldoctest
julia> m = literature_model(arxiv_id = "1109.3454", equation = "3.1")
Assuming that the first row of the given grading is the grading under Kbar
Global Tate model over a not fully specified base -- SU(5)xU(1) restricted Tate model based on arXiv paper 1109.3454 Eq. (3.1)
julia> weighted_resolutions(m)
1-element Vector{Tuple{Vector{Tuple{Vector{String}, Vector{Int64}}}, Vector{String}}}:
([(["x", "y", "w"], [1, 1, 1]), (["x", "y", "w"], [1, 2, 1]), (["x", "y", "w"], [2, 2, 1]), (["x", "y", "w"], [2, 3, 1]), (["x", "y"], [1, 1])], ["e1", "e4", "e2", "e3", "s"])
```
""")
# Return a list of lists of known Mordell–Weil generating sections for the given model after each known weighted resolution. Each element of the outer list corresponds to a known weighted resolution (in the same order), and each element of the list associated to a given weighted resolution corresponds to a known generating section (in the same order). If no weighted resolution generating sections are known, an error is raised.
@define_model_attribute_getter((weighted_resolution_generating_sections, WeightedResolutionGeneratingSectionsType),
"""
```jldoctest
julia> m = literature_model(arxiv_id = "1109.3454", equation = "3.1")
Assuming that the first row of the given grading is the grading under Kbar
Global Tate model over a not fully specified base -- SU(5)xU(1) restricted Tate model based on arXiv paper 1109.3454 Eq. (3.1)
julia> weighted_resolution_generating_sections(m)
1-element Vector{Vector{Vector{Vector{MPolyDecRingElem{QQFieldElem, QQMPolyRingElem}}}}}:
[[[0, 0, 1], [0, 0, 1], [0, 0, 1], [0, 0, 1], [0, 0, 1], [a32, -a43]]]
```
""")
# Return a list of known Mordell–Weil zero sections for the given model after each known weighted resolution. Each element of the list corresponds to a known weighted resolution (in the same order). If no weighted resolution zero sections are known, an error is raised.
@define_model_attribute_getter((weighted_resolution_zero_sections, WeightedResolutionZeroSectionsType),
"""
```jldoctest
julia> m = literature_model(arxiv_id = "1109.3454", equation = "3.1")
Assuming that the first row of the given grading is the grading under Kbar
Global Tate model over a not fully specified base -- SU(5)xU(1) restricted Tate model based on arXiv paper 1109.3454 Eq. (3.1)
julia> weighted_resolution_zero_sections(m)
1-element Vector{Vector{Vector{MPolyDecRingElem{QQFieldElem, QQMPolyRingElem}}}}:
[[1, 1, 0], [1, 1, w], [1, 1, w], [1, 1, w], [1, 1, w], [1, 1]]
```
""")
# Return the zero section of the given model. If no zero section is known, an error is raised. This information is not typically stored as an attribute for Weierstrass and global Tate models, whose zero sections are known.
@define_model_attribute_getter((zero_section, ZeroSectionType),
"""
```jldoctest
julia> h = literature_model(arxiv_id = "1208.2695", equation = "B.5")
Assuming that the first row of the given grading is the grading under Kbar
Hypersurface model over a not fully specified base
julia> zero_section(h)
3-element Vector{MPolyDecRingElem{QQFieldElem, QQMPolyRingElem}}:
0
1
0
```
""")
# Return the zero section class of a model as a cohomology class in the toric ambient space. If no zero section class is known, an error is raised. This information is always available for Weierstrass and global Tate models, whose zero section classes are known.
@define_model_attribute_getter((zero_section_class, CohomologyClass),
"""
```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> zero_section_class(qsm_model)
Cohomology class on a normal toric variety given by e2 + 2*u + 3*e4 + e1 - w
```
""")
# Return the index of the generator of the Cox ring of the ambient space, whose corresponding vanishing locus defines the zero section of a model. If no zero section class is known, an error is raised. This attribute is always set simultaneously with zero_section_class. This information is always available for Weierstrass and global Tate models, whose zero section classes are known.
@define_model_attribute_getter((zero_section_index, Int),
"""
```jldoctest
julia> B3 = projective_space(NormalToricVariety, 3)
Normal toric variety
julia> Kbar = anticanonical_divisor_class(B3)
Divisor class on a normal toric variety
julia> foah15_B3 = literature_model(arxiv_id = "1408.4808", equation = "3.190", type = "hypersurface", base_space = B3, defining_classes = Dict("s7" => Kbar, "s9" => Kbar))
Construction over concrete base may lead to singularity enhancement. Consider computing singular_loci. However, this may take time!
Hypersurface model over a concrete base
julia> zero_section_index(foah15_B3)
5
```
""")