Skip to content

Commit

Permalink
Merge branch 'master' into mh/gap-4.13
Browse files Browse the repository at this point in the history
  • Loading branch information
lgoettgens committed May 4, 2024
2 parents 4895e77 + c6300cf commit b63de64
Show file tree
Hide file tree
Showing 111 changed files with 735 additions and 744 deletions.
8 changes: 4 additions & 4 deletions Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -25,22 +25,22 @@ UUIDs = "cf7118a7-6976-5b1a-9a39-7adc72f591a4"
cohomCalg_jll = "5558cf25-a90e-53b0-b813-cadaa3ae7ade"

[compat]
AbstractAlgebra = "0.40.8"
AbstractAlgebra = "0.41.3"
AlgebraicSolving = "0.4.11"
Distributed = "1.6"
DocStringExtensions = "0.8, 0.9"
GAP = "0.11.0"
Hecke = "0.30.11"
Hecke = "0.31.3"
JSON = "^0.20, ^0.21"
JSON3 = "1.13.2"
LazyArtifacts = "1.6"
Nemo = "0.43.3"
Nemo = "0.44.0"
Pkg = "1.6"
Polymake = "0.11.14"
Random = "1.6"
RandomExtensions = "0.4.3"
Serialization = "1.6"
Singular = "0.22.4"
Singular = "0.23.0"
TOPCOM_jll = "0.17.8"
UUIDs = "1.6"
cohomCalg_jll = "0.32.0"
Expand Down
2 changes: 1 addition & 1 deletion docs/src/CommutativeAlgebra/rings.md
Original file line number Diff line number Diff line change
Expand Up @@ -405,7 +405,7 @@ julia> R, (x, y) = polynomial_ring(QQ, ["x", "y"])
(Multivariate polynomial ring in 2 variables over QQ, QQMPolyRingElem[x, y])
julia> B = MPolyBuildCtx(R)
Builder for an element of Multivariate polynomial ring in 2 variables over QQ
Builder for an element of multivariate polynomial ring
julia> for i = 1:5 push_term!(B, QQ(i), [i, i-1]) end
Expand Down
8 changes: 4 additions & 4 deletions docs/src/NumberTheory/galois.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,10 +96,10 @@ julia> F, a = function_field(x^6 + 108*t^2 + 108*t + 27);
julia> subfields(F)
4-element Vector{Any}:
(Function Field over Rational field with defining polynomial a^3 + 54*t + 27, (1//12*_a^4 + (3//2*t + 3//4)*_a)//(t + 1//2))
(Function Field over Rational field with defining polynomial a^2 + 108*t^2 + 108*t + 27, _a^3)
(Function Field over Rational field with defining polynomial a^3 - 108*t^2 - 108*t - 27, -_a^2)
(Function Field over Rational field with defining polynomial a^3 - 54*t - 27, (-1//12*_a^4 + (3//2*t + 3//4)*_a)//(t + 1//2))
(Function Field over QQ with defining polynomial a^3 + 54*t + 27, (1//12*_a^4 + (3//2*t + 3//4)*_a)//(t + 1//2))
(Function Field over QQ with defining polynomial a^2 + 108*t^2 + 108*t + 27, _a^3)
(Function Field over QQ with defining polynomial a^3 - 108*t^2 - 108*t - 27, -_a^2)
(Function Field over QQ with defining polynomial a^3 - 54*t - 27, (-1//12*_a^4 + (3//2*t + 3//4)*_a)//(t + 1//2))
julia> galois_group(F)
(Permutation group of degree 6 and order 6, Galois context for s^6 + 108*t^2 + 540*t + 675)
Expand Down
5 changes: 3 additions & 2 deletions experimental/FTheoryTools/docs/src/hypersurface.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ Completeness is an expensive check. Therefore, we provide an optional argument w
demonstrate this:
```@docs
hypersurface_model(base::NormalToricVariety; completeness_check::Bool = true)
hypersurface_model(base::NormalToricVariety, fiber_ambient_space::NormalToricVariety, D1::ToricDivisorClass, D2::ToricDivisorClass; completeness_check::Bool = true)
hypersurface_model(base::NormalToricVariety, fiber_ambient_space::NormalToricVariety, fiber_twist_divisor_classes::Vector{ToricDivisorClass}; completeness_check::Bool = true)
```

### A (covered) scheme as base space
Expand All @@ -88,8 +88,9 @@ This functionality does not yet exist.
This method constructs a hypersurface model over a base space, where
this base space is not (fully) specified. We currently provide the following constructors:
```@docs
hypersurface_model(auxiliary_base_vars::Vector{String}, auxiliary_base_grading::Matrix{Int64}, d::Int, fiber_ambient_space::NormalToricVariety, D1::Vector{Int64}, D2::Vector{Int64}, p::MPolyRingElem)
hypersurface_model(auxiliary_base_vars::Vector{String}, auxiliary_base_grading::Matrix{Int64}, d::Int, fiber_ambient_space::NormalToricVariety, fiber_twist_divisor_classes::Vector{Vector{Int64}}, p::MPolyRingElem)
```
For convenience, the fiber_twist_divisor_classes can also be provided as `ZZMatrix`.

### Standard constructions

Expand Down
44 changes: 28 additions & 16 deletions experimental/FTheoryTools/src/HypersurfaceModels/constructors.jl
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,13 @@ function hypersurface_model(base::NormalToricVariety; completeness_check::Bool =
set_coordinate_names(fiber_ambient_space, ["x", "y", "z"])
D1 = 2 * anticanonical_divisor_class(base)
D2 = 3 * anticanonical_divisor_class(base)
return hypersurface_model(base, fiber_ambient_space, D1, D2; completeness_check = completeness_check)
D3 = trivial_divisor_class(base)
return hypersurface_model(base, fiber_ambient_space, [D1, D2, D3]; completeness_check = completeness_check)
end


@doc raw"""
hypersurface_model(base::NormalToricVariety, fiber_ambient_space::NormalToricVariety, D1::ToricDivisorClass, D2::ToricDivisorClass; completeness_check::Bool = true)
hypersurface_model(base::NormalToricVariety, fiber_ambient_space::NormalToricVariety, fiber_twist_divisor_classes::Vector{ToricDivisorClass}; completeness_check::Bool = true)
Construct a hypersurface model, for which the user can specify a fiber ambient space
as well as divisor classes of the toric base space, in which the first two homogeneous
Expand All @@ -50,11 +51,14 @@ Divisor class on a normal toric variety
julia> D2 = 3 * anticanonical_divisor_class(base)
Divisor class on a normal toric variety
julia> hypersurface_model(base, fiber_ambient_space, D1, D2; completeness_check = false)
julia> D3 = trivial_divisor_class(base)
Divisor class on a normal toric variety
julia> hypersurface_model(base, fiber_ambient_space, [D1, D2, D3]; completeness_check = false)
Hypersurface model over a concrete base
```
"""
function hypersurface_model(base::NormalToricVariety, fiber_ambient_space::NormalToricVariety, D1::ToricDivisorClass, D2::ToricDivisorClass; completeness_check::Bool = true)
function hypersurface_model(base::NormalToricVariety, fiber_ambient_space::NormalToricVariety, fiber_twist_divisor_classes::Vector{ToricDivisorClass}; completeness_check::Bool = true)
# Consistency checks
gens_base_names = [string(g) for g in gens(cox_ring(base))]
gens_fiber_names = [string(g) for g in gens(cox_ring(fiber_ambient_space))]
Expand All @@ -66,8 +70,8 @@ function hypersurface_model(base::NormalToricVariety, fiber_ambient_space::Norma
end

# Compute an ambient space
ambient_space = _ambient_space(base, fiber_ambient_space, D1, D2)
ambient_space = _ambient_space(base, fiber_ambient_space, fiber_twist_divisor_classes)

# Construct the model
hypersurface_equation = generic_section(anticanonical_bundle(ambient_space))
explicit_model_sections = Dict{String, MPolyRingElem}()
Expand Down Expand Up @@ -95,19 +99,18 @@ end


@doc raw"""
hypersurface_model(auxiliary_base_vars::Vector{String}, auxiliary_base_grading::Matrix{Int64}, d::Int, fiber_ambient_space::NormalToricVariety, D1::Vector{Int64}, D2::Vector{Int64}, p::MPolyRingElem)
hypersurface_model(auxiliary_base_vars::Vector{String}, auxiliary_base_grading::Matrix{Int64}, d::Int, fiber_ambient_space::NormalToricVariety, fiber_twist_divisor_classes::Vector{Vector{Int64}}, p::MPolyRingElem)
This method constructs a hypersurface model over a base space that is not
fully specified. In the background, we construct a family of spaces to represent
the base space. This method requires the following information:
1. The names of the homogeneous coordinates of the coordinate ring of the generic member
of the family of bsae spaces.
2. The grading of the coordinate ring of the generic member of the family of base spaces.
3. The weights corresponding to the divisor class `D_1` of the coordinate ring under which the first fiber coordinate transforms.
4. The weights corresponding to the divisor class `D_2` of the coordinate ring under which the first fiber coordinate transforms.
5. The dimension of the generic member of the family of base spaces.
6. The fiber ambient space.
7. The hypersurface equation.
3. The weights telling us how the fiber ambient space coordinates transform under the base.
4. The dimension of the generic member of the family of base spaces.
5. The fiber ambient space.
6. The hypersurface equation.
Note that many studies in the literature use the class of the anticanonical bundle
in their analysis. We anticipate this by adding this class as a variable of the
Expand Down Expand Up @@ -144,6 +147,11 @@ julia> D2 = [6,0]
6
0
julia> D3 = [0,0]
2-element Vector{Int64}:
0
0
julia> d = 3
3
Expand All @@ -158,13 +166,17 @@ julia> auxiliary_ambient_ring, (a1, a21, a32, a43, a65, w, x, y, z) = QQ["a1",
julia> p = x^3 - y^2 - x * y * z * a1 + x^2 * z^2 * a21 * w - y * z^3 * a32 * w^2 + x * z^4 * a43 * w^3 + z^6 * a65 * w^5
-a1*x*y*z + a21*w*x^2*z^2 - a32*w^2*y*z^3 + a43*w^3*x*z^4 + a65*w^5*z^6 + x^3 - y^2
julia> h = hypersurface_model(auxiliary_base_vars, auxiliary_base_grading, d, fiber_ambient_space, D1, D2, p)
julia> h = hypersurface_model(auxiliary_base_vars, auxiliary_base_grading, d, fiber_ambient_space, [D1, D2, D3], p)
Assuming that the first row of the given grading is the grading under Kbar
Hypersurface model over a not fully specified base
```
"""
function hypersurface_model(auxiliary_base_vars::Vector{String}, auxiliary_base_grading::Matrix{Int64}, d::Int, fiber_ambient_space::NormalToricVariety, D1::Vector{Int64}, D2::Vector{Int64}, p::MPolyRingElem)
function hypersurface_model(auxiliary_base_vars::Vector{String}, auxiliary_base_grading::Matrix{Int64}, d::Int, fiber_ambient_space::NormalToricVariety, fiber_twist_divisor_classes::Vector{Vector{Int64}}, p::MPolyRingElem)
return hypersurface_model(auxiliary_base_vars, auxiliary_base_grading, d, fiber_ambient_space, transpose(matrix(ZZ, fiber_twist_divisor_classes)), p)
end

function hypersurface_model(auxiliary_base_vars::Vector{String}, auxiliary_base_grading::Matrix{Int64}, d::Int, fiber_ambient_space::NormalToricVariety, fiber_twist_divisor_classes::ZZMatrix, p::MPolyRingElem)

# Compute simple information
gens_fiber_names = [string(g) for g in gens(cox_ring(fiber_ambient_space))]
Expand All @@ -182,8 +194,8 @@ function hypersurface_model(auxiliary_base_vars::Vector{String}, auxiliary_base_
@vprint :FTheoryModelPrinter 0 "Assuming that the first row of the given grading is the grading under Kbar\n\n"

# Construct the spaces
(S, auxiliary_base_space, auxiliary_ambient_space) = _construct_generic_sample(auxiliary_base_grading, auxiliary_base_vars, d, fiber_ambient_space, D1, D2)
(S, auxiliary_base_space, auxiliary_ambient_space) = _construct_generic_sample(auxiliary_base_grading, auxiliary_base_vars, d, fiber_ambient_space, fiber_twist_divisor_classes)

# Map p to coordinate ring of ambient space
gens_S = gens(S)
image_list = Vector{MPolyRingElem}()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,16 +38,16 @@
},
"model_data": {
"base_dim": 3,
"model_sections": ["w"],
"base_coordinates": ["w", "a1", "a21", "a32", "a43"],
"divisors_user_must_specify": ["w"],
"divisors_parametrized_by_user_specified_divisors": ["a1", "a21", "a32", "a43"],
"a1": "a1",
"a2": "a21*w",
"a3": "a32*w^2",
"a4": "a43*w^3",
"a6": "0",
"auxiliary_base_grading": [
[0, 1, 2, 3, 4],
[1, 0, -1, -2, -3]
"parametrization_of_parametrized_divisors_by_Kbar_and_user_specified_divisors": [
[1, 2, 3, 4],
[0, -1, -2, -3]
],
"generating_sections": [["0", "0", "1"]],
"resolutions": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,18 +39,20 @@
},
"model_data": {
"base_dim": 2,
"model_sections": ["b"],
"base_coordinates": ["b", "c0", "c1", "c2", "c3"],
"auxiliary_base_grading": [
[0, 4, 3, 2, 1],
[1, -2, -1, 0, 1]
"divisors_user_must_specify": ["b"],
"divisors_parametrized_by_user_specified_divisors": ["c0", "c1", "c2", "c3"],
"parametrization_of_parametrized_divisors_by_Kbar_and_user_specified_divisors": [
[4, 3, 2, 1],
[-2, -1, 0, 1]
],
"fiber_ambient_space_rays": [[-2, -1], [1, 0], [0, 1]],
"fiber_ambient_space_max_cones": [[1, 2], [1, 3], [2, 3]],
"fiber_ambient_space_coordinates": ["u", "w", "v"],
"fiber_ambient_space_name": "P^{(1, 2, 1)}",
"D1": [-1, 1],
"D2": [0, 1],
"fiber_twist_matrix": [
[-1, 0, 0],
[1, 1, 0]
],
"hypersurface_equation": "w^2 + b * v^2 * w - u * (c0 * u^3 + c1 * u^2 * v + c2 * u * v^2 + c3 * v^3)",
"zero_section": ["0", "1", "0"],
"generating_sections": [["0", "1", "-b"]]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,13 @@
},
"model_data": {
"base_dim": 2,
"model_sections": ["b"],
"base_coordinates": ["b", "c0", "c1", "c2", "c3"],
"divisors_user_must_specify": ["b"],
"divisors_parametrized_by_user_specified_divisors": ["c0", "c1", "c2", "c3"],
"f": "c1 * c3 - b^2 * c0 - 1//3 * c2^2",
"g": "c0 * c3^2 - 1//3 * c1 * c2 * c3 + 2//27 * c2^3 - 2//3 * b^2 * c0 * c2 + 1//4 * b^2 * c1^2",
"auxiliary_base_grading": [
[0, 4, 3, 2, 1],
[1, -2, -1, 0, 1]
"parametrization_of_parametrized_divisors_by_Kbar_and_user_specified_divisors": [
[4, 3, 2, 1],
[-2, -1, 0, 1]
],
"generating_sections": [
[
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,16 +40,16 @@
"model_parameters": ["k"],
"model_data": {
"base_dim": 3,
"model_sections": ["ζ0"],
"base_coordinates": ["ζ0", "b1", "b2", "b3", "b4", "b6"],
"divisors_user_must_specify": ["ζ0"],
"divisors_parametrized_by_user_specified_divisors": ["b1", "b2", "b3", "b4", "b6"],
"a1": "b1",
"a2": "b2*ζ0",
"a3": "b3*ζ0^k",
"a4": "b4*ζ0^(k + 1)",
"a6": "b6*ζ0^(2*k + 1)",
"auxiliary_base_grading": [
[0, 1, 2, 3, 4, 6],
[1, 0, -1, "-k", "-(k + 1)", "-(2*k + 1)"]
"parametrization_of_parametrized_divisors_by_Kbar_and_user_specified_divisors": [
[1, 2, 3, 4, 6],
[0, -1, "-k", "-(k + 1)", "-(2*k + 1)"]
],
"resolutions": [
[
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,16 +40,16 @@
"model_parameters": ["k"],
"model_data": {
"base_dim": 3,
"model_sections": ["ζ0"],
"base_coordinates": ["ζ0", "b1", "b2", "b3", "b4", "b6"],
"divisors_user_must_specify": ["ζ0"],
"divisors_parametrized_by_user_specified_divisors": ["b1", "b2", "b3", "b4", "b6"],
"a1": "b1",
"a2": "b2*ζ0",
"a3": "b3*ζ0^k",
"a4": "b4*ζ0^k",
"a6": "b6*ζ0^(2*k)",
"auxiliary_base_grading": [
[0, 1, 2, 3, 4, 6],
[1, 0, -1, "-k", "-k", "-2*k"]
"parametrization_of_parametrized_divisors_by_Kbar_and_user_specified_divisors": [
[1, 2, 3, 4, 6],
[0, -1, "-k", "-k", "-2*k"]
],
"resolutions": [
[
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,16 +40,16 @@
"model_parameters": ["k"],
"model_data": {
"base_dim": 3,
"model_sections": ["ζ0"],
"base_coordinates": ["ζ0", "b1", "b2", "b3", "b4", "b6"],
"divisors_user_must_specify": ["ζ0"],
"divisors_parametrized_by_user_specified_divisors": ["b1", "b2", "b3", "b4", "b6"],
"a1": "b1*ζ0",
"a2": "b2*ζ0",
"a3": "b3*ζ0^k",
"a4": "b4*ζ0^(k + 1)",
"a6": "b6*ζ0^(2*k + 1)",
"auxiliary_base_grading": [
[0, 1, 2, 3, 4, 6],
[1, -1, -1, "-k", "-(k + 1)", "-(2*k + 1)"]
"parametrization_of_parametrized_divisors_by_Kbar_and_user_specified_divisors": [
[1, 2, 3, 4, 6],
[-1, -1, "-k", "-(k + 1)", "-(2*k + 1)"]
],
"resolutions": [
[
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,16 +41,16 @@
"model_parameters": ["k"],
"model_data": {
"base_dim": 3,
"model_sections": ["ζ0"],
"base_coordinates": ["ζ0", "b1", "b2", "b3", "b4"],
"divisors_user_must_specify": ["ζ0"],
"divisors_parametrized_by_user_specified_divisors": ["b1", "b2", "b3", "b4"],
"a1": "b1*ζ0",
"a2": "b2*ζ0",
"a3": "b3*ζ0^(k + 1)",
"a4": "b4*ζ0^(k + 1)",
"a6": "0",
"auxiliary_base_grading": [
[0, 1, 2, 3, 4],
[1, -1, -1, "-(k + 1)", "-(k + 1)"]
"parametrization_of_parametrized_divisors_by_Kbar_and_user_specified_divisors": [
[1, 2, 3, 4],
[-1, -1, "-(k + 1)", "-(k + 1)"]
],
"generating_sections": [["0", "0", "1"]],
"resolutions": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,16 +39,16 @@
},
"model_data": {
"base_dim": 3,
"model_sections": ["ζ0"],
"base_coordinates": ["ζ0", "b1", "b2", "b3", "b4", "b6"],
"divisors_user_must_specify": ["ζ0"],
"divisors_parametrized_by_user_specified_divisors": ["b1", "b2", "b3", "b4", "b6"],
"a1": "b1*ζ0",
"a2": "b2*ζ0^2",
"a3": "b3*ζ0^2",
"a4": "b4*ζ0^3",
"a6": "b6*ζ0^5",
"auxiliary_base_grading": [
[0, 1, 2, 3, 4, 6],
[1, -1, -2, -2, -3, -5]
"parametrization_of_parametrized_divisors_by_Kbar_and_user_specified_divisors": [
[1, 2, 3, 4, 6],
[-1, -2, -2, -3, -5]
],
"resolutions": [
[
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,16 +39,16 @@
},
"model_data": {
"base_dim": 3,
"model_sections": ["ζ0"],
"base_coordinates": ["ζ0", "b1", "b2", "b3", "b4", "b6"],
"divisors_user_must_specify": ["ζ0"],
"divisors_parametrized_by_user_specified_divisors": ["b1", "b2", "b3", "b4", "b6"],
"a1": "b1*ζ0",
"a2": "b2*ζ0^2",
"a3": "b3*ζ0^3",
"a4": "b4*ζ0^3",
"a6": "b6*ζ0^5",
"auxiliary_base_grading": [
[0, 1, 2, 3, 4, 6],
[1, -1, -2, -3, -3, -5]
"parametrization_of_parametrized_divisors_by_Kbar_and_user_specified_divisors": [
[1, 2, 3, 4, 6],
[-1, -2, -3, -3, -5]
],
"resolutions": [
[
Expand Down

0 comments on commit b63de64

Please sign in to comment.