Cycles and divisors

Algebraic Cycles

AbsAlgebraicCycleType
AbsAlgebraicCycle{CoveredSchemeType<:AbsCoveredScheme, CoefficientRingType<:Ring}

An algebraic cycle $D$ on a (locally) Noetherian integral scheme $X$ with coefficients in a ring $R$ is a formal linear combination $\sum_i a_i D_i$ with $D_i \subseteq X$ integral, closed subschemes and the $a_i \in R$.

Such a cycle is represented non-uniquely as a formal sum $E = \sum_l b_l \mathcal{I}_l$ of equidimensional ideal sheaves $\mathcal{I}_l \subseteq \mathcal{O}_X$. For an equidimensional ideal sheaf $\mathcal{I}$ its interpretation as a cycle is as follows: Let $V(\mathcal{I})=E_{1} \cup \dots \cup E_{n}$ be the decomposition of the vanishing locus of $\mathcal{I}$ into irreducible components $E_i=V(\mathcal{P}_i)$ with $\mathcal{P}_i$ prime. Then $E$ corresponds to the cycle $D = \sum_{i=1}^{n} \mathrm{colength}_{\mathcal{P}_i}(\mathcal{I})E_i$.

Examples

julia> P2 = projective_space(QQ,2); (s0,s1,s2) = homogeneous_coordinates(P2);

julia> I = ideal_sheaf(P2,ideal([s0,s1^2]))
Sheaf of ideals
  on scheme over QQ covered with 3 patches
    1: [(s1//s0), (s2//s0)]   affine 2-space
    2: [(s0//s1), (s2//s1)]   affine 2-space
    3: [(s0//s2), (s1//s2)]   affine 2-space
with restrictions
  1: Ideal (1, (s1//s0)^2)
  2: Ideal ((s0//s1), 1)
  3: Ideal ((s0//s2), (s1//s2)^2)

julia> D = algebraic_cycle(I)
Effective algebraic cycle
  on scheme over QQ covered with 3 patches
with coefficients in integer ring
given as the formal sum of
  1 * sheaf of ideals

julia> irreducible_decomposition(D)
Effective algebraic cycle
  on scheme over QQ covered with 3 patches
with coefficients in integer ring
given as the formal sum of
  2 * sheaf of prime ideals
source

Constructors

algebraic_cycleMethod
algebraic_cycle(X::AbsCoveredScheme, R::Ring) -> AlgebraicCycle

Return the zero AlgebraicCycle over X with coefficients in R.

Examples

julia> P, (x, y, z) = graded_polynomial_ring(QQ, [:x, :y, :z]);

julia> I = ideal([x^3-y^2*z]);

julia> Y = proj(P, I);

julia> Ycov = covered_scheme(Y);

julia> R = ZZ;

julia> algebraic_cycle(Ycov, R)
Zero algebraic cycle
  on scheme over QQ covered with 3 patches
with coefficients in integer ring
source
algebraic_cycleMethod
algebraic_cycle(I::AbsIdealSheaf, R::Ring) -> AlgebraicCycle

Return the AlgebraicCycle $D = 1 ⋅ I$ with coefficients in $R$ for a sheaf of equidimensional ideals $I$.

Note that $I$ must be equidimensional.

Examples

julia> P, (x, y, z) = graded_polynomial_ring(QQ, [:x, :y, :z]);

julia> I = ideal([x^3-y^2*z]);

julia> Y = proj(P);

julia> II = IdealSheaf(Y, I);

julia> R = ZZ;

julia> algebraic_cycle(II, R)
Effective algebraic cycle
  on scheme over QQ covered with 3 patches
with coefficients in integer ring
given as the formal sum of
  1 * sheaf of ideals
source
algebraic_cycleMethod
algebraic_cycle(I::AbsIdealSheaf) -> AlgebraicCycle

Return the AlgebraicCycle $D = 1 ⋅ I$ with coefficients in $ℤ$ for a sheaf of equidimensional ideals $I$.

Examples

julia> P, (x, y, z) = graded_polynomial_ring(QQ, [:x, :y, :z]);

julia> I = ideal([x^3-y^2*z]);

julia> Y = proj(P);

julia> II = IdealSheaf(Y, I);

julia> R = ZZ;

julia> algebraic_cycle(II, R)
Effective algebraic cycle
  on scheme over QQ covered with 3 patches
with coefficients in integer ring
given as the formal sum of
  1 * sheaf of ideals
source

Properties

ambient_schemeMethod
ambient_scheme(D::AbsAlgebraicCycle)

Return the CoveredScheme $X$ on which D is defined.

source
componentsMethod
components(D::AbsAlgebraicCycle)

Return a list of ideal sheaves such that D is a linear combination of the corresponding cycles.

Note

The order of the components may change in different julia sessions. It is however consistent with the printing.

Note

The ideal sheaves are only guaranteed equidimensional and may carry multiplicities. See irreducible_decomposition(::AbsAlgebraicCycle) for the more conventional decomposition.

source
dimMethod
dim(D::AbsAlgebraicCycle)

Return the dimension of the support of the cycle D.

source
irreducible_decompositionMethod
irreducible_decomposition(D::AbsAlgebraicCycle)

Return a cycle $E$ equal to $D$ but as a formal sum $E = ∑ₖ aₖ ⋅ Iₖ$ where the components $Iₖ$ of $E$ are all sheaves of prime ideals.

source
integralMethod
integral(W::AbsAlgebraicCycle)

Assume $W$ is an algebraic cycle on $X$. This returns the sum of the lengths of all the components of dimension 0 of $W$.

source

Attributes

is_effectiveMethod
is_effective(A::AbsAlgebraicCycle)

Return whether all the coefficients are non-negative.

source
is_primeMethod
is_prime(D::AbsAlgebraicCycle)

An algebraic cycle is called prime if it consists of a single irreducible subvariety.

Note that this property is not stable under base extension.

source

Methods

<=Method
Base.:<=(A::AbsAlgebraicCycle, B::AbsAlgebraicCycle)

\[A \leq B\]

if and only if $B - A$ is effective.

source

Weil Divisors

AbsWeilDivisorType
AbsWeilDivisor{CoveredSchemeType, CoefficientRingType} <: AbsAlgebraicCycle{CoveredSchemeType, CoefficientRingType}

A Weil divisor with coefficients of type CoefficientRingType on a (locally) Noetherian integral scheme $X$ of type CoveredSchemeType.

Examples

julia> P2 = projective_space(QQ,2); (s0,s1,s2) = homogeneous_coordinates(P2);

julia> I = ideal((s0*s1)^2);

julia> II = ideal_sheaf(P2, I);

julia> D = weil_divisor(II)
Effective weil divisor
  on scheme over QQ covered with 3 patches
with coefficients in integer ring
given as the formal sum of
  1 * sheaf of ideals

julia> E = irreducible_decomposition(D)
Effective weil divisor
  on scheme over QQ covered with 3 patches
with coefficients in integer ring
given as the formal sum of
  2 * prime ideal sheaf on scheme over QQ covered with 3 patches extended from ideal ((s1//s0)) on affine 2-space
  2 * prime ideal sheaf on scheme over QQ covered with 3 patches extended from ideal ((s0//s1)) on affine 2-space

julia> P = components(E)[1]
Prime ideal sheaf on Scheme over QQ covered with 3 patches extended from Ideal ((s1//s0)) on Affine 2-space

julia> components(D)[1] == II
true

julia> D[II] # to get the coefficient
1

julia> E[P]
2
source

Constructors

weil_divisorMethod
weil_divisor(X::AbsCoveredScheme, R::Ring) -> WeilDivisor

Return the zero weil divisor on X with coefficients in the ring R.

Examples

julia> P, (x, y, z) = graded_polynomial_ring(QQ, [:x, :y, :z]);

julia> I = ideal([x^3-y^2*z]);

julia> Y = proj(P, I);

julia> Ycov = covered_scheme(Y);

julia> weil_divisor(Ycov, QQ)
Zero weil divisor
  on scheme over QQ covered with 3 patches
with coefficients in rational field
source
weil_divisorMethod
weil_divisor(I::AbsIdealSheaf) -> WeilDivisor

Given an ideal sheaf I of pure codimension $1$, return the weil divisor $D = 1 ⋅ I$ with coefficients in the integer ring.

Example

julia> P, (x, y, z) = graded_polynomial_ring(QQ, [:x, :y, :z]);

julia> Y = proj(P);

julia> I = ideal([(x^3-y^2*z)]);

julia> II = IdealSheaf(Y, I);

julia> weil_divisor(II)
Effective weil divisor
  on scheme over QQ covered with 3 patches
with coefficients in integer ring
given as the formal sum of
  1 * sheaf of ideals
  
julia> JJ = II^2;

julia> D = weil_divisor(JJ)
Effective weil divisor
  on scheme over QQ covered with 3 patches
with coefficients in integer ring
given as the formal sum of
  1 * product of 2 ideal sheaves

julia> irreducible_decomposition(D)
Effective weil divisor
  on scheme over QQ covered with 3 patches
with coefficients in integer ring
given as the formal sum of
  2 * sheaf of prime ideals
source
weil_divisorMethod
weil_divisor(I::AbsIdealSheaf, R::Ring; check::Bool=true)

Given an ideal sheaf I of pure codimension $1$ and a ring R, return the weil divisor $D = 1 ⋅ I$ with coefficients in R.

source

Methods

Besides the methods for AbsAlgebraicCycle the following are available.

is_in_linear_systemMethod
is_in_linear_system(f::VarietyFunctionFieldElem, D::WeilDivisor; regular_on_complement::Bool=true, check::Bool=true) -> Bool

Return whether the rational function f is in the linear system $|D|$, i.e. if $(f) + D \geq 0$.

Input

  • regular_on_complement – set to true if f is regular on the complement of the support of D.
source
order_of_vanishingMethod
order_of_vanishing(f::VarietyFunctionFieldElem, D::AbsWeilDivisor; check::Bool=true)

Return the order of vanishing of the rational function f on the prime divisor D.

source
intersectMethod
intersect(D::AbsWeilDivisor, E::AbsWeilDivisor; covering::Covering=default_covering(ambient_scheme(D)))

Return the intersection number of the the Weil divisors D and E on a complete smooth surface as defined in [Har77].

Input

The optional keyword argument covering specifies the covering to be used for the computation.

source

Linear Systems

LinearSystemType
LinearSystem

A linear system of a Weil divisor $D$ on a variety $X$, generated by rational functions $f₁,…,fᵣ ∈ K(X)$.

source
weil_divisorMethod
weil_divisor(L::LinearSystem)

Return the divisor $D$ of the linear system $L = |D|$.

source
varietyMethod
variety(L::LinearSystem)

Return the variety on which L is defined.

source
subsystemMethod
subsystem(L::LinearSystem, D::AbsWeilDivisor) -> LinearSystem, MatElem

Given a linear system $L = |E|$ and a divisor $D \leq E$ compute $|D|$ and the matrix representing the inclusion $|D| \hookrightarrow |E|$ with respect to the given bases of both systems.

source

Cartier Divisors

CartierDivisorType
CartierDivisor{CoveredSchemeType<:AbsCoveredScheme, CoeffType<:RingElem}

A Cartier divisor $C$ on a scheme $X$ with coefficients $a_i$ in a ring $R$ is a formal linear combination $\sum_i a_i D_i$ of effective Cartier divisors $D_i$.

The scheme $X$ is of type CoveredSchemeType. The coefficients $a_i$ are of type CoeffType.

source
EffectiveCartierDivisorType
EffectiveCartierDivisor{CoveredSchemeType<:AbsCoveredScheme}

An effective Cartier divisor on a scheme $X$ is a closed subscheme $D \subseteq X$ whose ideal sheaf $\mathcal{I}_D \subseteq \mathcal{O}_X$ is an invertible $\mathcal{O}_X$-module. In particular, $\mathcal{I}_D$ is locally principal.

Internally, $C$ stores a trivializing_covering(C::EffectiveCartierDivisor). The scheme $X$ is of type CoveredSchemeType.

source

Cartier divisors support elementary arithmetic.

Constructors

effective_cartier_divisorMethod
effective_cartier_divisor(I::IdealSheaf;
                          trivializing_covering::Covering = default_covering(scheme(I)))
                                                            -> EffectiveCartierDivisor

Return the effective Cartier divisor defined by the ideal sheaf I, given that I is principal in the given covering of the scheme on which it is defined.

Examples

julia> P, (x, y, z) = graded_polynomial_ring(QQ, [:x, :y, :z]);

julia> I = ideal([x^3-y^2*z]);

julia> Y = proj(P);

julia> II = IdealSheaf(Y, I);

julia> effective_cartier_divisor(II)
Effective cartier divisor
  on scheme over QQ 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
defined by
  sheaf of ideals with restrictions
    1: Ideal (-(y//x)^2*(z//x) + 1)
    2: Ideal ((x//y)^3 - (z//y))
    3: Ideal ((x//z)^3 - (y//z)^2)
source
effective_cartier_divisorMethod
effective_cartier_divisor(IP::AbsProjectiveScheme, f::Union{MPolyDecRingElem, MPolyQuoRingElem})

Return the effective Cartier divisor on the projective scheme $X$ defined by the homogeneous polynomial $f$.

source
cartier_divisorMethod
cartier_divisor(E::EffectiveCartierDivisor) -> CartierDivisor

Convert an EffectiveCartierDivisor into a CartierDivisor with coefficient $1$ in the ring of integers.

Examples

julia> P, (x, y, z) = graded_polynomial_ring(QQ, [:x, :y, :z]);

julia> I = ideal([x^3-y^2*z]);

julia> Y = proj(P);

julia> II = IdealSheaf(Y, I);

julia> E = effective_cartier_divisor(II)
Effective cartier divisor
  on scheme over QQ 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
defined by
  sheaf of ideals with restrictions
    1: Ideal (-(y//x)^2*(z//x) + 1)
    2: Ideal ((x//y)^3 - (z//y))
    3: Ideal ((x//z)^3 - (y//z)^2)

julia> cartier_divisor(E)
Cartier divisor
  on scheme over QQ covered with 3 patches
with coefficients in integer ring
defined by the formal sum of
  1 * effective cartier divisor on scheme over QQ covered with 3 patches
source
cartier_divisorMethod
cartier_divisor(IP::AbsProjectiveScheme, f::Union{MPolyDecRingElem, MPolyQuoRingElem})

Return the (effective) Cartier divisor on the projective scheme $X$ defined by the homogeneous polynomial $f$.

source

Attributes

ideal_sheafMethod
ideal_sheaf(C::EffectiveCartierDivisor)

Return the sheaf of ideals $\mathcal{I}_C \subseteq \mathcal{O}_X$ representing C.

source
ambient_schemeMethod
ambient_scheme(C::EffectiveCartierDivisor)

Return the ambient scheme containing C.

source
ambient_schemeMethod
ambient_scheme(C::CartierDivisor)

Return the ambient scheme containing C.

source
componentsMethod
components(C::CartierDivisor)

Return a list of effective Cartier divisors $C_i$ such that $C$ is a linear combination of the $C_i$.

source
trivializing_coveringMethod
trivializing_covering(C::EffectiveCartierDivisor)

Return the trivializing covering of the effective Cartier divisor C.

A covering $(U_i)_{i \in I}$ is called trivializing for $C$ if $C(U_i)$ is principal for all $i \in I$.

source