# Projective Varieties

A projective variety over an algebraically closed field is an irreducible projective algebraic set. See Projective Algebraic Sets.

In practice we work over non-closed fields. To be called a variety an algebraic set $V$ must stay irreducible when viewed over the algebraic closure.

In Oscar projective varieties are Projective schemes and more formally defined as follows.

## Constructors

varietyMethod
variety(I::MPolyIdeal{<:MPolyDecRingElem}; check::Bool=true, is_radical::Bool=false) -> ProjectiveVariety

Return the projective variety defined by the homogeneous prime ideal $I$.

Since in our terminology varieties are irreducible over the algebraic closure, we check that $I$ stays prime when viewed over the algebraic closure. This is an expensive check that can be disabled. Note that the ideal $I$ must live in a standard graded ring.

julia> P3 = projective_space(QQ,3)
Projective space of dimension 3
over rational field
with homogeneous coordinates [s0, s1, s2, s3]

julia> (s0,s1,s2,s3) = homogeneous_coordinates(P3);

julia> X = variety(s0^3 + s1^3 + s2^3 + s3^3)
Projective variety
in projective 3-space over QQ with coordinates [s0, s1, s2, s3]
defined by ideal (s0^3 + s1^3 + s2^3 + s3^3)

julia> dim(X)
2

julia> Y = variety(ideal([s0^3 + s1^3 + s2^3 + s3^3, s0]))
Projective variety
in projective 3-space over QQ with coordinates [s0, s1, s2, s3]
defined by ideal (s0^3 + s1^3 + s2^3 + s3^3, s0)

julia> dim(Y)
1
source
varietyMethod
variety(X::AbsProjectiveScheme; is_reduced::Bool=false, check::Bool=true) -> ProjectiveVariety

Convert $X$ to a projective variety by considering its reduced structure

source
varietyMethod
variety(R::GradedRing; check::Bool=true)

Return the projective variety defined by the $\mathbb{Z}$ standard graded ring $R$.

We require that $R$ is a finitely generated algebra over a field $k$ and moreover that the base change of $R$ to the algebraic closure $\bar k$ is an integral domain.

source
varietyMethod
variety(f::MPolyDecRingElem; check=true)

Return the projective variety defined by the homogeneous polynomial f.

This checks that f is absolutely irreducible.

source

## Attributes

In addition to what is inherited from Projective Algebraic Sets and Projective schemes, we currently have:

sectional_genusMethod
sectional_genus(X::AbsProjectiveVariety)

Given a subvariety X of some $\mathbb P^n$, return the arithmetic genus of the intersection of X with a general linear subspace of $\mathbb P^n$ of dimension $c+1$.

Examples

julia> X = bordiga()
Projective variety
in projective 4-space over GF(31991) with coordinates [x, y, z, u, v]
defined by ideal with 4 generators

julia> dim(X)
2

julia> codim(X)
2

julia> degree(X)
6

julia> sectional_genus(X)
3
source

## Properties

In addition to what is inherited from Projective Algebraic Sets and Projective schemes, we currently have:

is_linearly_normalMethod
is_linearly_normal(X::AbsProjectiveVariety)

Return true if X is linearly normal, and false otherwise.

Examples

julia> X = bordiga()
Projective variety
in projective 4-space over GF(31991) with coordinates [x, y, z, u, v]
defined by ideal with 4 generators

julia> dim(X)
2

julia> codim(X)
2

julia> is_linearly_normal(X)
true
source

## Methods

In addition to what is inherited from Projective Algebraic Sets and Projective schemes, we currently have:

canonical_bundleMethod
canonical_bundle(X::AbsProjectiveVariety)

Given a smooth projective variety X, return a module whose sheafification is the canonical bundle of X.

Note

The function does not check smoothness. If you are uncertain, enter is_smooth(X) first.

Examples

julia> R, x = graded_polynomial_ring(QQ, "x" => (1:6));

julia> I = ideal(R, [x[1]*x[6] - x[2]*x[5] + x[3]*x[4]]);

julia> GRASSMANNIAN = variety(I);

julia> Omega = canonical_bundle(GRASSMANNIAN)
Graded subquotient of submodule of R^1 generated by
1 -> e[1]
by submodule of R^1 generated by
1 -> (x[1]*x[6] - x[2]*x[5] + x[3]*x[4])*e[1]

julia> degrees_of_generators(Omega)
1-element Vector{FinGenAbGroupElem}:
[4]
julia> R, (x, y, z) = graded_polynomial_ring(QQ,["x", "y", "z"]);

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

julia> ELLCurve = variety(I);

julia> Omega = canonical_bundle(ELLCurve)
Graded subquotient of submodule of R^1 generated by
1 -> e[1]
by submodule of R^1 generated by
1 -> (x^3 - x*y*z + x*z^2 - y^2*z + z^3)*e[1]

julia> degrees_of_generators(Omega)
1-element Vector{FinGenAbGroupElem}:
[0]
julia> X = bordiga()
Projective variety
in projective 4-space over GF(31991) with coordinates [x, y, z, u, v]
defined by ideal with 4 generators

julia> dim(X)
2

julia> codim(X)
2

julia> Omega = canonical_bundle(X);

julia> typeof(Omega)
SubquoModule{MPolyDecRingElem{fpFieldElem, fpMPolyRingElem}}
source