Sheaves on covered schemes
Oscar supports modeling sheaves by means of a covering by affine charts.
Presheaves
AbsPreSheaf
— TypeAbsPreSheaf{SpaceType, OpenType, OutputType, RestrictionType}
Abstract type for a sheaf ℱ on a space X.
SpaceType
is a parameter for the type of the space $X$ on which $ℱ$ is defined.OpenType
is a type (most probably abstract!) for the open sets $U ⊂ X$ which are admissible as input for $ℱ(U)$.OutputType
is a type (most probably abstract!) for the values that $ℱ$ takes on admissible open sets $U$.RestrictionType
is a parameter for the type of the restriction maps $ℱ(V) → ℱ(U)$ for $U ⊂ V ⊂ X$ open.
For any instance F
of AbsPreSheaf
on a topological space X
the following methods are implemented:
F(U)
for admissible open subsets $U ⊂ X$: This returns the value $ℱ(U)$ of the sheafF
onU
. Note that due to technical limitations, not every type of open subset might be admissible.restriction_map(F, U, V)
for admissible open subsets $V ⊂ U ⊂ X$: This returns the restriction map $ρ : ℱ(U) → ℱ(V)$. Alternatively, one may also callF(U, V)
to get this map.
PreSheafOnScheme
— TypePreSheafOnScheme
A basic minimal implementation of the interface for AbsPreSheaf
; to be used internally.
Structure sheaves
StructureSheafOfRings
— TypeStructureSheafOfRings <: AbsPreSheaf
On an AbsCoveredScheme
$X$ this returns the sheaf $𝒪$ of rings of regular functions on $X$.
Note that due to technical reasons, the admissible open subsets are restricted to the following:
U::AbsAffineScheme
among thebasic_patches
of thedefault_covering
ofX
;U::PrincipalOpenSubset
withambient_scheme(U)
in thebasic_patches
of thedefault_covering
ofX
;W::AffineSchemeOpenSubscheme
withambient_scheme(W)
in thebasic_patches
of thedefault_covering
ofX
.
One can call the restriction maps of $𝒪$ across charts, implicitly using the identifications given by the gluings in the default_covering
.
Examples
julia> IP2 = projective_space(GF(7), [:x, :y, :z])
Projective space of dimension 2
over prime field of characteristic 7
with homogeneous coordinates [x, y, z]
julia> X = covered_scheme(IP2)
Scheme
over prime field of characteristic 7
with default covering
described by patches
1: affine 2-space
2: affine 2-space
3: affine 2-space
in the coordinate(s)
1: [(y//x), (z//x)]
2: [(x//y), (z//y)]
3: [(x//z), (y//z)]
julia> OOX = OO(X)
Structure sheaf of rings of regular functions
on scheme over GF(7) covered with 3 patches
1: [(y//x), (z//x)] affine 2-space
2: [(x//y), (z//y)] affine 2-space
3: [(x//z), (y//z)] affine 2-space
julia> typeof(OOX)
StructureSheafOfRings{CoveredScheme{FqField}, Union{AbsAffineScheme, AffineSchemeOpenSubscheme}, Ring, Map}
julia> U, V, W = affine_charts(X)
3-element Vector{AffineScheme{FqField, FqMPolyRing}}:
Affine 2-space
Affine 2-space
Affine 2-space
julia> glue = default_covering(X)[U, V]
Gluing
of affine 2-space
and affine 2-space
along the open subsets
[(y//x), (z//x)] AA^2 \ scheme((y//x))
[(x//y), (z//y)] AA^2 \ scheme((x//y))
given by the pullback function
(x//y) -> 1/(y//x)
(z//y) -> (z//x)/(y//x)
julia> UV, VU = gluing_domains(glue)
(AA^2 \ scheme((y//x)), AA^2 \ scheme((x//y)))
julia> y, z = gens(OOX(U))
2-element Vector{FqMPolyRingElem}:
(y//x)
(z//x)
julia> pb = OOX(U, VU)
Ring homomorphism
from multivariate polynomial ring in 2 variables over GF(7)
to localization of multivariate polynomial ring in 2 variables over GF(7) at products of ((x//y))
defined by
(y//x) -> 1/(x//y)
(z//x) -> (z//y)/(x//y)
julia> pb(y^2)
1/(x//y)^2
Ideal sheaves
AbsIdealSheaf
— TypeAbsIdealSheaf <: AbsPreSheaf
A sheaf of ideals $I$ on an AbsCoveredScheme
$X$.
For an affine open subset $U ⊂ X$ call $I(U)$ to obtain an ideal in OO(U)
representing I
.
Examples
julia> IP2 = projective_space(GF(7), [:x, :y, :z])
Projective space of dimension 2
over prime field of characteristic 7
with homogeneous coordinates [x, y, z]
julia> X = covered_scheme(IP2)
Scheme
over prime field of characteristic 7
with default covering
described by patches
1: affine 2-space
2: affine 2-space
3: affine 2-space
in the coordinate(s)
1: [(y//x), (z//x)]
2: [(x//y), (z//y)]
3: [(x//z), (y//z)]
julia> S = homogeneous_coordinate_ring(IP2)
Multivariate polynomial ring in 3 variables over GF(7) graded by
x -> [1]
y -> [1]
z -> [1]
julia> II = ideal_sheaf(IP2, ideal(S, [S[1] + S[2]]))
Sheaf of ideals
on scheme over GF(7) covered with 3 patches
1: [(y//x), (z//x)] affine 2-space
2: [(x//y), (z//y)] affine 2-space
3: [(x//z), (y//z)] affine 2-space
with restrictions
1: Ideal ((y//x) + 1)
2: Ideal ((x//y) + 1)
3: Ideal ((x//z) + (y//z))
julia> U, V, W = affine_charts(X)
3-element Vector{AffineScheme{FqField, FqMPolyRing}}:
Affine 2-space
Affine 2-space
Affine 2-space
julia> II(U)
Ideal generated by
(y//x) + 1
julia> II(V)
Ideal generated by
(x//y) + 1
julia> glue = default_covering(X)[U, V];
julia> UV, VU = gluing_domains(glue);
julia> II(U, VU) # transition functions are ring homomorphisms for ideal sheaves!
Ring homomorphism
from multivariate polynomial ring in 2 variables over GF(7)
to localization of multivariate polynomial ring in 2 variables over GF(7) at products of ((x//y))
defined by
(y//x) -> 1/(x//y)
(z//x) -> (z//y)/(x//y)
IdealSheaf
— TypeIdealSheaf <: AbsIdealSheaf
A sheaf of ideals $ℐ$ on an AbsCoveredScheme
$X$ which is specified by a collection of concrete ideals on some open covering of $X$.
PrimeIdealSheafFromChart
— TypePrimeIdealSheafFromChart
Type for sheaves of prime ideals $P$ on a covered scheme $X$ constructed from a prime ideal of the coordinate ring of a chart. Essentially this is a scheme theoretic point.
For $U$ an affine chart of $X$, the ideal $P(U)$ is computed using the gluings. The implementation is lazy.
Examples
julia> IP2 = projective_space(GF(7), [:x, :y, :z])
Projective space of dimension 2
over prime field of characteristic 7
with homogeneous coordinates [x, y, z]
julia> X = covered_scheme(IP2)
Scheme
over prime field of characteristic 7
with default covering
described by patches
1: affine 2-space
2: affine 2-space
3: affine 2-space
in the coordinate(s)
1: [(y//x), (z//x)]
2: [(x//y), (z//y)]
3: [(x//z), (y//z)]
julia> U, V, W = affine_charts(X);
julia> glue = default_covering(X)[U, V];
julia> y, z = gens(OO(U))
2-element Vector{FqMPolyRingElem}:
(y//x)
(z//x)
julia> P = ideal(OO(U), [y - z])
Ideal generated by
(y//x) + 6*(z//x)
julia> PP = Oscar.PrimeIdealSheafFromChart(X, U, P)
Prime ideal sheaf on Scheme over GF(7) covered with 3 patches extended from Ideal ((y//x) + 6*(z//x)) on Affine 2-space
julia> PP(W)
Ideal generated by
(y//z) + 6
SumIdealSheaf
— TypeSumIdealSheaf
Sum of two or more ideal sheaves.
Examples
julia> IP2 = projective_space(GF(7), [:x, :y, :z])
Projective space of dimension 2
over prime field of characteristic 7
with homogeneous coordinates [x, y, z]
julia> X = covered_scheme(IP2)
Scheme
over prime field of characteristic 7
with default covering
described by patches
1: affine 2-space
2: affine 2-space
3: affine 2-space
in the coordinate(s)
1: [(y//x), (z//x)]
2: [(x//y), (z//y)]
3: [(x//z), (y//z)]
julia> U, V, W = affine_charts(X);
julia> y, z = gens(OO(U));
julia> P1 = ideal(OO(U), [y - z]);
julia> PP1 = Oscar.PrimeIdealSheafFromChart(X, U, P1);
julia> P2 = ideal(OO(V), [OO(V)[1]]);
julia> PP2 = Oscar.PrimeIdealSheafFromChart(X, V, P2)
Prime ideal sheaf on Scheme over GF(7) covered with 3 patches extended from Ideal ((x//y)) on Affine 2-space
julia> II = PP1 + PP2
Sum of
Prime ideal sheaf on scheme over GF(7) covered with 3 patches extended from ideal ((y//x) + 6*(z//x)) on affine 2-space
Prime ideal sheaf on scheme over GF(7) covered with 3 patches extended from ideal ((x//y)) on affine 2-space
julia> typeof(II)
Oscar.SumIdealSheaf{CoveredScheme{FqField}, AbsAffineScheme, Ideal, Map}
julia> II(W)
Ideal generated by
(y//z) + 6
(x//z)
ProductIdealSheaf
— TypeProductIdealSheaf
Product of two or more ideal sheaves.
Examples
julia> IP2 = projective_space(GF(7), [:x, :y, :z])
Projective space of dimension 2
over prime field of characteristic 7
with homogeneous coordinates [x, y, z]
julia> X = covered_scheme(IP2)
Scheme
over prime field of characteristic 7
with default covering
described by patches
1: affine 2-space
2: affine 2-space
3: affine 2-space
in the coordinate(s)
1: [(y//x), (z//x)]
2: [(x//y), (z//y)]
3: [(x//z), (y//z)]
julia> U, V, W = affine_charts(X);
julia> y, z = gens(OO(U));
julia> P1 = ideal(OO(U), [y - z]);
julia> PP1 = Oscar.PrimeIdealSheafFromChart(X, U, P1);
julia> P2 = ideal(OO(V), [OO(V)[1]]);
julia> PP2 = Oscar.PrimeIdealSheafFromChart(X, V, P2)
Prime ideal sheaf on Scheme over GF(7) covered with 3 patches extended from Ideal ((x//y)) on Affine 2-space
julia> II = PP1 * PP2
Product of
Prime ideal sheaf on scheme over GF(7) covered with 3 patches extended from ideal ((y//x) + 6*(z//x)) on affine 2-space
Prime ideal sheaf on scheme over GF(7) covered with 3 patches extended from ideal ((x//y)) on affine 2-space
julia> typeof(II)
Oscar.ProductIdealSheaf{CoveredScheme{FqField}, AbsAffineScheme, Ideal, Map}
julia> II(W)
Ideal generated by
(x//z)*(y//z) + 6*(x//z)
SimplifiedIdealSheaf
— TypeSimplifiedIdealSheaf
For a given AbsIdealSheaf
II
on an AbsCoveredScheme
X
this uses a heuristic to replace the generating set of II(U)
by a hopefully smaller one on every affine chart of X
.
Examples
julia> IP2 = projective_space(GF(7), [:x, :y, :z])
Projective space of dimension 2
over prime field of characteristic 7
with homogeneous coordinates [x, y, z]
julia> X = covered_scheme(IP2)
Scheme
over prime field of characteristic 7
with default covering
described by patches
1: affine 2-space
2: affine 2-space
3: affine 2-space
in the coordinate(s)
1: [(y//x), (z//x)]
2: [(x//y), (z//y)]
3: [(x//z), (y//z)]
julia> U, V, W = affine_charts(X);
julia> y, z = gens(OO(U));
julia> P1 = ideal(OO(U), [y - z]);
julia> PP1 = Oscar.PrimeIdealSheafFromChart(X, U, P1);
julia> P2 = ideal(OO(V), [OO(V)[1], OO(V)[2]]);
julia> PP2 = Oscar.PrimeIdealSheafFromChart(X, V, P2)
Prime ideal sheaf on Scheme over GF(7) covered with 3 patches extended from Ideal ((x//y), (z//y)) on Affine 2-space
julia> II = PP1 + PP2
Sum of
Prime ideal sheaf on scheme over GF(7) covered with 3 patches extended from ideal ((y//x) +
6*(z//x)) on affine 2-space
Prime ideal sheaf on scheme over GF(7) covered with 3 patches extended from ideal ((x//y), (
z//y)) on affine 2-space
julia> JJ = simplify(II)
Sheaf of ideals
on scheme over GF(7) covered with 3 patches
1: [(y//x), (z//x)] affine 2-space
2: [(x//y), (z//y)] affine 2-space
3: [(x//z), (y//z)] affine 2-space
with restrictions
1: Ideal (1)
2: Ideal (1)
3: Ideal (1)
julia> typeof(JJ)
Oscar.SimplifiedIdealSheaf{CoveredScheme{FqField}, AbsAffineScheme, Ideal, Map}
julia> II(W)
Ideal generated by
(y//z) + 6
1
julia> JJ(W)
Ideal generated by
1
PullbackIdealSheaf
— TypePullbackIdealSheaf
Given an morphism f : X -> Y
of AbsCoveredScheme
s and an ideal sheaf II
on Y
, this computes the pullback f^* II
on X
.
Examples
julia> IP2 = projective_space(GF(7), [:x, :y, :z])
Projective space of dimension 2
over prime field of characteristic 7
with homogeneous coordinates [x, y, z]
julia> Y = covered_scheme(IP2)
Scheme
over prime field of characteristic 7
with default covering
described by patches
1: affine 2-space
2: affine 2-space
3: affine 2-space
in the coordinate(s)
1: [(y//x), (z//x)]
2: [(x//y), (z//y)]
3: [(x//z), (y//z)]
julia> U, _ = affine_charts(Y);
julia> y, z = gens(OO(U));
julia> P1 = ideal(OO(U), [y, z]);
julia> PP1 = Oscar.PrimeIdealSheafFromChart(Y, U, P1);
julia> bl = blow_up(PP1);
julia> X = domain(bl);
julia> JJ = pullback(bl, PP1)
Sheaf of ideals
on scheme over GF(7) covered with 4 patches
1: [(s1//s0), (y//x)] scheme(0)
2: [(s0//s1), (z//x)] scheme(0)
3: [(x//y), (z//y)] affine 2-space
4: [(x//z), (y//z)] affine 2-space
with restrictions
1: Ideal ((y//x), (s1//s0)*(y//x))
2: Ideal ((s0//s1)*(z//x), (z//x))
3: Ideal (1)
4: Ideal (1)
julia> typeof(JJ)
Oscar.PullbackIdealSheaf{CoveredScheme{FqField}, AbsAffineScheme, Ideal, Map}
RadicalOfIdealSheaf
— TypeRadicalOfIdealSheaf
Given an AbsIdealSheaf
II
on an AbsCoveredScheme
X
, this computes the sheaf associated to the radicals of the ideals on the charts.
Examples
julia> IP2 = projective_space(GF(7), [:x, :y, :z])
Projective space of dimension 2
over prime field of characteristic 7
with homogeneous coordinates [x, y, z]
julia> Y = covered_scheme(IP2)
Scheme
over prime field of characteristic 7
with default covering
described by patches
1: affine 2-space
2: affine 2-space
3: affine 2-space
in the coordinate(s)
1: [(y//x), (z//x)]
2: [(x//y), (z//y)]
3: [(x//z), (y//z)]
julia> U, _ = affine_charts(Y);
julia> y, z = gens(OO(U));
julia> P1 = ideal(OO(U), [y, z]);
julia> PP1 = Oscar.PrimeIdealSheafFromChart(Y, U, P1);
julia> PP1_squared = PP1^2;
julia> JJ = radical(PP1_squared);
julia> typeof(JJ)
Oscar.RadicalOfIdealSheaf{CoveredScheme{FqField}, AbsAffineScheme, Ideal, Map}
julia> PP1_squared(U)
Ideal generated by
(y//x)^2
(y//x)*(z//x)
(z//x)^2
julia> JJ(U)
Ideal generated by
(z//x)
(y//x)
ToricIdealSheafFromCoxRingIdeal
— TypeToricIdealSheafFromCoxRingIdeal
This is the ideal sheaf associated to a NormalToricVariety
X
with cox_ring
S
and an ideal I
of S
.
Examples
julia> IP2 = projective_space(NormalToricVariety, 2)
Normal toric variety
julia> S = cox_ring(IP2)
Multivariate polynomial ring in 3 variables over QQ graded by
x1 -> [1]
x2 -> [1]
x3 -> [1]
julia> x, y, z = gens(S);
julia> I = ideal(S, x^2 - y*z);
julia> II = ideal_sheaf(IP2, I)
Sheaf of ideals
on normal toric variety
with restrictions
1: Ideal (x_1_1^2 - x_2_1)
2: Ideal (x_1_2*x_2_2 - 1)
3: Ideal (x_1_3^2 - x_2_3)
julia> typeof(II)
Oscar.ToricIdealSheafFromCoxRingIdeal{NormalToricVariety, AbsAffineScheme, Ideal, Map}
SingularLocusIdealSheaf
— TypeSingularLocusIdealSheaf
This is the (radical) ideal sheaf for the singular locus of an AbsCoveredScheme
X
.
Examples
julia> IP2 = projective_space(NormalToricVariety, 2)
Normal toric variety
julia> S = cox_ring(IP2)
Multivariate polynomial ring in 3 variables over QQ graded by
x1 -> [1]
x2 -> [1]
x3 -> [1]
julia> x, y, z = gens(S);
julia> I = ideal(S, x^3 - y*z^2);
julia> II = ideal_sheaf(IP2, I);
julia> X, inc_X = sub(II);
julia> JJ = Oscar.ideal_sheaf_of_singular_locus(X)
Sheaf of ideals
on scheme over QQ covered with 3 patches
1: [x_1_1, x_2_1] scheme(x_1_1^3 - x_2_1)
2: [x_1_2, x_2_2] scheme(x_1_2^2*x_2_2 - 1)
3: [x_1_3, x_2_3] scheme(x_1_3^3 - x_2_3^2)
with restrictions
1: Ideal (1)
2: Ideal (1)
3: Ideal (x_2_3, x_1_3)
julia> typeof(JJ)
Oscar.SingularLocusIdealSheaf{CoveredScheme{QQField}, AbsAffineScheme, Ideal, Map}
Coherent sheaves of modules
These are some types for coherent sheaves.
SheafOfModules
— TypeSheafOfModules <: AbsPreSheaf
A sheaf of modules $ℳ$ on an AbsCoveredScheme
$X$.
Note that due to technical reasons, the admissible open subsets are restricted to the following:
U::AbsAffineScheme
among thebasic_patches
of thedefault_covering
ofX
;U::PrincipalOpenSubset
withambient_scheme(U)
in thebasic_patches
of thedefault_covering
ofX
.
One can call the restriction maps of $ℳ$ across charts implicitly using the identifications given by the gluings in the default_covering
.
HomSheaf
— TypeHomSheaf
For two AbsCoherentSheaf
s F
and G
on an AbsCoveredScheme
X
this computes the sheaf associated to U -> Hom(F(U), G(U))
.
Examples
julia> IP1 = projective_space(GF(7), [:x, :y])
Projective space of dimension 1
over prime field of characteristic 7
with homogeneous coordinates [x, y]
julia> Y = covered_scheme(IP1);
julia> Omega = cotangent_sheaf(Y)
Coherent sheaf of modules
on scheme over GF(7) covered with 2 patches
1: [(y//x)] affine 1-space
2: [(x//y)] affine 1-space
with restrictions
1: free module of rank 1 over multivariate polynomial ring in 1 variable over GF(7)
2: free module of rank 1 over multivariate polynomial ring in 1 variable over GF(7)
julia> F = free_module(OO(Y), 1)
Coherent sheaf of modules
on scheme over GF(7) covered with 2 patches
1: [(y//x)] affine 1-space
2: [(x//y)] affine 1-space
with restrictions
1: free module of rank 1 over multivariate polynomial ring in 1 variable over GF(7)
2: free module of rank 1 over multivariate polynomial ring in 1 variable over GF(7)
julia> T = Oscar.HomSheaf(Omega, F)
Coherent sheaf of modules
on scheme over GF(7) covered with 2 patches
1: [(y//x)] affine 1-space
2: [(x//y)] affine 1-space
with restrictions
1: hom of (Multivariate polynomial ring in 1 variable over GF(7)^1, Multivariate polynomial ring in 1 variable over GF(7)^1)
2: hom of (Multivariate polynomial ring in 1 variable over GF(7)^1, Multivariate polynomial ring in 1 variable over GF(7)^1)
julia> typeof(T)
Oscar.HomSheaf{CoveredScheme{FqField}, AbsAffineScheme, ModuleFP, Map}
PushforwardSheaf
— TypePushforwardSheaf
For a CoveredClosedEmbedding
i : X -> Y
and an AbsCoherentSheaf
F
on X
this computes the coherent sheaf i_* F
on Y
.
Examples
julia> IP2 = projective_space(NormalToricVariety, 2)
Normal toric variety
julia> S = cox_ring(IP2)
Multivariate polynomial ring in 3 variables over QQ graded by
x1 -> [1]
x2 -> [1]
x3 -> [1]
julia> x, y, z = gens(S);
julia> I = ideal(S, x^3 - y*z^2);
julia> II = ideal_sheaf(IP2, I);
julia> X, inc_X = sub(II);
julia> F = cotangent_sheaf(X)
Coherent sheaf of modules
on scheme over QQ covered with 3 patches
1: [x_1_1, x_2_1] scheme(x_1_1^3 - x_2_1)
2: [x_1_2, x_2_2] scheme(x_1_2^2*x_2_2 - 1)
3: [x_1_3, x_2_3] scheme(x_1_3^3 - x_2_3^2)
with restrictions
1: subquotient of submodule with 2 generators
1: dx_1_1
2: dx_2_1
by submodule with 1 generator
1: 3*x_1_1^2*dx_1_1 - dx_2_1
2: subquotient of submodule with 2 generators
1: dx_1_2
2: dx_2_2
by submodule with 1 generator
1: 2*x_1_2*x_2_2*dx_1_2 + x_1_2^2*dx_2_2
3: subquotient of submodule with 2 generators
1: dx_1_3
2: dx_2_3
by submodule with 1 generator
1: 3*x_1_3^2*dx_1_3 - 2*x_2_3*dx_2_3
julia> inc_F = Oscar.PushforwardSheaf(inc_X, F)
Coherent sheaf of modules
on normal toric variety
with restrictions
1: subquotient of submodule with 2 generators
1: dx_1_1
2: dx_2_1
by submodule with 5 generators
1: (x_1_1^3 - x_2_1)*dx_1_1
2: (x_1_1^3 - x_2_1)*dx_2_1
3: 3*x_1_1^2*dx_1_1 - dx_2_1
4: (x_1_1^3 - x_2_1)*dx_1_1
5: (x_1_1^3 - x_2_1)*dx_2_1
2: subquotient of submodule with 2 generators
1: dx_1_2
2: dx_2_2
by submodule with 5 generators
1: (x_1_2^2*x_2_2 - 1)*dx_1_2
2: (x_1_2^2*x_2_2 - 1)*dx_2_2
3: 2*x_1_2*x_2_2*dx_1_2 + x_1_2^2*dx_2_2
4: (x_1_2^2*x_2_2 - 1)*dx_1_2
5: (x_1_2^2*x_2_2 - 1)*dx_2_2
3: subquotient of submodule with 2 generators
1: dx_1_3
2: dx_2_3
by submodule with 5 generators
1: (x_1_3^3 - x_2_3^2)*dx_1_3
2: (x_1_3^3 - x_2_3^2)*dx_2_3
3: 3*x_1_3^2*dx_1_3 - 2*x_2_3*dx_2_3
4: (x_1_3^3 - x_2_3^2)*dx_1_3
5: (x_1_3^3 - x_2_3^2)*dx_2_3
julia> typeof(inc_F)
PushforwardSheaf{NormalToricVariety, AbsAffineScheme, ModuleFP, Map}
PullbackSheaf
— TypePullbackSheaf
For a morphism f : X -> Y
of AbsCoveredScheme
s and a coherent sheaf F
on Y
this computes the pullback f^* F
on X
.
Examples
julia> IP2 = projective_space(NormalToricVariety, 2)
Normal toric variety
julia> S = cox_ring(IP2)
Multivariate polynomial ring in 3 variables over QQ graded by
x1 -> [1]
x2 -> [1]
x3 -> [1]
julia> x, y, z = gens(S);
julia> I = ideal(S, x^3 - y*z^2);
julia> II = ideal_sheaf(IP2, I);
julia> X, inc_X = sub(II);
julia> F = cotangent_sheaf(codomain(inc_X))
Coherent sheaf of modules
on normal toric variety
with restrictions
1: submodule with 2 generators
1: dx_1_1
2: dx_2_1
represented as subquotient with no relations
2: submodule with 2 generators
1: dx_1_2
2: dx_2_2
represented as subquotient with no relations
3: submodule with 2 generators
1: dx_1_3
2: dx_2_3
represented as subquotient with no relations
julia> inc_F = Oscar.PullbackSheaf(inc_X, F)
Coherent sheaf of modules
on scheme over QQ covered with 3 patches
1: [x_1_1, x_2_1] scheme(x_1_1^3 - x_2_1)
2: [x_1_2, x_2_2] scheme(x_1_2^2*x_2_2 - 1)
3: [x_1_3, x_2_3] scheme(x_1_3^3 - x_2_3^2)
with restrictions
1: submodule with 2 generators
1: dx_1_1
2: dx_2_1
represented as subquotient with no relations
2: submodule with 2 generators
1: dx_1_2
2: dx_2_2
represented as subquotient with no relations
3: submodule with 2 generators
1: dx_1_3
2: dx_2_3
represented as subquotient with no relations
julia> typeof(inc_F)
PullbackSheaf{CoveredScheme{QQField}, AbsAffineScheme, ModuleFP, Map}
DirectSumSheaf
— TypeDirectSumSheaf
Given two or more AbsCoherentSheaf
s F
and G
on an AbsCoveredScheme
X
, this holds the sheaf associated to the direct sum of F
and G
Examples
julia> IP1 = projective_space(GF(7), [:x, :y])
Projective space of dimension 1
over prime field of characteristic 7
with homogeneous coordinates [x, y]
julia> Y = covered_scheme(IP1);
julia> Omega = cotangent_sheaf(Y)
Coherent sheaf of modules
on scheme over GF(7) covered with 2 patches
1: [(y//x)] affine 1-space
2: [(x//y)] affine 1-space
with restrictions
1: free module of rank 1 over multivariate polynomial ring in 1 variable over GF(7)
2: free module of rank 1 over multivariate polynomial ring in 1 variable over GF(7)
julia> F = free_module(OO(Y), 1)
Coherent sheaf of modules
on scheme over GF(7) covered with 2 patches
1: [(y//x)] affine 1-space
2: [(x//y)] affine 1-space
with restrictions
1: free module of rank 1 over multivariate polynomial ring in 1 variable over GF(7)
2: free module of rank 1 over multivariate polynomial ring in 1 variable over GF(7)
julia> W = Oscar.DirectSumSheaf(Y, [Omega, F])
Coherent sheaf of modules
on scheme over GF(7) covered with 2 patches
1: [(y//x)] affine 1-space
2: [(x//y)] affine 1-space
with restrictions
1: direct sum of (Multivariate polynomial ring in 1 variable over GF(7)^1, Multivariate polynomial ring in 1 variable over GF(7)^1)
2: direct sum of (Multivariate polynomial ring in 1 variable over GF(7)^1, Multivariate polynomial ring in 1 variable over GF(7)^1)
julia> typeof(W)
DirectSumSheaf{CoveredScheme{FqField}, AbsAffineScheme, ModuleFP, Map}
We provide some common constructors.
twisting_sheaf
— Methodtwisting_sheaf(IP::AbsProjectiveScheme{<:Field}, d::Int)
For a ProjectiveScheme
$ℙ$ return the $d$-th twisting sheaf $𝒪(d)$ as a CoherentSheaf
on $ℙ$.
Examples
julia> P = projective_space(QQ,3)
Projective space of dimension 3
over rational field
with homogeneous coordinates [s0, s1, s2, s3]
julia> twisting_sheaf(P, 4)
Coherent sheaf of modules
on scheme over QQ covered with 4 patches
1: [(s1//s0), (s2//s0), (s3//s0)] affine 3-space
2: [(s0//s1), (s2//s1), (s3//s1)] affine 3-space
3: [(s0//s2), (s1//s2), (s3//s2)] affine 3-space
4: [(s0//s3), (s1//s3), (s2//s3)] affine 3-space
with restrictions
1: free module of rank 1 over multivariate polynomial ring in 3 variables over QQ
2: free module of rank 1 over multivariate polynomial ring in 3 variables over QQ
3: free module of rank 1 over multivariate polynomial ring in 3 variables over QQ
4: free module of rank 1 over multivariate polynomial ring in 3 variables over QQ
tautological_bundle
— Methodtautological_bundle(IP::AbsProjectiveScheme{<:Field})
For a ProjectiveScheme
$ℙ$ return the sheaf $𝒪(-1)$ as a CoherentSheaf
on $ℙ$.
Examples
julia> P = projective_space(QQ,3)
Projective space of dimension 3
over rational field
with homogeneous coordinates [s0, s1, s2, s3]
julia> tautological_bundle(P)
Coherent sheaf of modules
on scheme over QQ covered with 4 patches
1: [(s1//s0), (s2//s0), (s3//s0)] affine 3-space
2: [(s0//s1), (s2//s1), (s3//s1)] affine 3-space
3: [(s0//s2), (s1//s2), (s3//s2)] affine 3-space
4: [(s0//s3), (s1//s3), (s2//s3)] affine 3-space
with restrictions
1: free module of rank 1 over multivariate polynomial ring in 3 variables over QQ
2: free module of rank 1 over multivariate polynomial ring in 3 variables over QQ
3: free module of rank 1 over multivariate polynomial ring in 3 variables over QQ
4: free module of rank 1 over multivariate polynomial ring in 3 variables over QQ
cotangent_sheaf
— Methodcotangent_sheaf(X::AbsCoveredScheme)
For an AbsCoveredScheme
$X$, return the sheaf $Ω¹(X)$ of Kaehler-differentials on $X$ as a CoherentSheaf
.
Examples
julia> IP1 = projective_space(QQ, 1);
julia> X = covered_scheme(IP1)
Scheme
over rational field
with default covering
described by patches
1: affine 1-space
2: affine 1-space
in the coordinate(s)
1: [(s1//s0)]
2: [(s0//s1)]
julia> Omega = cotangent_sheaf(X);
julia> U, V = affine_charts(X);
julia> UV, VU = gluing_domains(default_covering(X)[U, V]);
julia> dx = Omega(U)[1]
d(s1//s0)
julia> Omega(V)
Free module of rank 1 over multivariate polynomial ring in 1 variable over QQ
julia> Omega(U, VU)(dx)
-1/(s0//s1)^2*d(s0//s1)
free_module
— Methodfree_module(R::StructureSheafOfRings, n::Int)
Return the sheaf of free $𝒪$-modules $𝒪ⁿ$ for a structure sheaf of rings $𝒪 = R$.
dual
— Methoddual(M::SheafOfModules)
For a SheafOfModules
$ℳ$ on an AbsCoveredScheme
$X$, return the $𝒪_X$-dual $ℋ om_{𝒪_X}(ℳ , 𝒪_X)$ of $ℳ$.
tangent_sheaf
— Methodtangent_sheaf(X::AbsCoveredScheme)
Return the tangent sheaf $T_X$ of X
, constructed as $ℋ om_{𝒪_X}(Ω¹_X, 𝒪_X)$.
projectivization
— Methodprojectivization(E::AbsCoherentSheaf;
var_names::Vector{String}=Vector{String}(),
check::Bool=true
)
For a locally free sheaf $E$ on an AbsCoveredScheme
$X$ this produces the associated projectivization $ℙ (E) → X$ as a CoveredProjectiveScheme
.
A list of names for the variables of the relative homogeneous coordinate rings can be provided with var_names
.
!!! note: The sheaf $E$ needs to be locally free so that a trivializing_covering
can be computed. The check for this can be turned off by setting check=false
.