Affine Algebraic Sets
Introduction
Let be the affine space of dimension over a field . For finitely many multivariate polynomials and the ideal they generate, we denote by the (affine) algebraic set defined by the ideal and call its base field.
If is any field extension, we denote the set of -points of by
Most properties of the algebraic set refer to where is an algebraically closed field. For instance is_empty
returns whether .
Exceptions to the rule, that we refer to , are documented in the respective methods. For example the property of being irreducible depends on : The algebraic set is irreducible over . But it is the union of two lines over , i.e. is irreducible but geometrically reducible. See is_irreducible(X::AbsAffineScheme{<:Field, <:MPolyAnyRing})
for details.
Rational points
To study the -points, also called -rational points, of the algebraic set one first considers the solutions over an algebraically closed field extension of . Then in a second step one studies as a subset of .
The first step involves calculations with ideals. For instance Hilbert's Nullstellensatz implies that is empty if and only if the ideal . This is decided by an ideal membership test relying on a Gröbner basis computation of and can be carried out in without taking any field extensions.
The second step involves methods from number theory (if is a number field) or from real algebraic geometry (if ).
Algebraic sets in Oscar are designed for the first step. Most of their properfties should be interpreted as properties of the set of their -points over an algebraic closure .
Relation to Schemes
One may view an (affine) algebraic set as a geometrically reduced (affine) scheme over a field .
Many constructions involving varieties lead naturally to schemes. For instance the intersection of and as sets is the point . As a scheme the intersection is defined by the ideal which can be interpreted as a point of multiplicity and contains the information that the intersection of and is tangential in .
Therefore we have two methods
set_theoretic_intersection(::AbsAffineAlgebraicSet)
which can be thought of asintersect(::AbsAffineAlgebraicSet)
which is the scheme theoretic intersection
If a construction returns a scheme , but you want to ignore the scheme structure, call the function algebraic_set(Z)
to convert the scheme to an affine algebraic set.
For example algebraic_set(intersect(X, Y))
is equivalent to set_theoretic_intersection(X, Y)
.
Internally an AffineAlgebraicSet
is constructed from a possibly non-reduced affine scheme, which we call the fat_scheme
of X
as opposed to the reduced_scheme
of X
which we refer to as the underlying_scheme
.
fat_ideal
— Methodfat_ideal(X::AbsAffineAlgebraicSet) -> Ideal
Return an ideal whose radical is the vanishing ideal of X
.
If X
is constructed from an ideal I
this returns I
.
julia> A2 = affine_space(QQ, [:x,:y])
Affine space of dimension 2
over rational field
with coordinates [x, y]
julia> (x, y) = coordinates(A2);
julia> I = ideal([x^2, y]);
julia> X = algebraic_set(I)
Affine algebraic set
in affine 2-space over QQ with coordinates [x, y]
defined by ideal (x^2, y)
julia> fat_ideal(X) === I
true
fat_scheme
— Methodfat_scheme(X::AffineAlgebraicSet) -> AbsAffineScheme
Return a scheme whose reduced subscheme is .
This does not trigger any computation and is therefore cheap. Use this instead of underlying_scheme
when possible.
underlying_scheme
— Methodunderlying_scheme(X::AffineAlgebraicSet) -> AbsAffineScheme
Return the underlying reduced scheme defining .
This is used to forward the AbsAffineScheme
functionality to , but may trigger the computation of a radical ideal. Hence this can be expensive.
More general affine algebraic sets
By abuse of terminology we say that a scheme is an affine algebraic set if it is isomorphic to one. For example a hypersurface complement is an affine algebraic set. In particular, we allow affine algebraic sets which are not necessarily Zariski closed in their ambient affine space.
AbsAffineAlgebraicSet
— TypeAbsAffineAlgebraicSet <: AbsAffineScheme
An affine, geometrically reduced subscheme of an affine space over a field.
Constructors
One can create an algebraic set from an ideal or a multivariate polynomial.
algebraic_set
— Methodalgebraic_set(I::MPolyIdeal; is_radical::Bool=false, check::Bool=true)
Return the affine algebraic set defined .
If is_radical
is set, assume that is a radical ideal.
julia> R, (x,y) = GF(2)[:x,:y];
julia> X = algebraic_set(ideal([y^2+y+x^3+1,x]))
Affine algebraic set
in affine 2-space over GF(2) with coordinates [x, y]
defined by ideal (x^3 + y^2 + y + 1, x)
algebraic_set
— Methodalgebraic_set(p::MPolyRingElem)
Return the affine algebraic set defined by the multivariate polynomial p
.
julia> R, (x,y) = QQ[:x,:y];
julia> X = algebraic_set((y^2+y+x^3+1)*x^2)
Affine algebraic set
in affine 2-space over QQ with coordinates [x, y]
defined by ideal (x^5 + x^2*y^2 + x^2*y + x^2)
julia> R, (x,y) = GF(2)[:x,:y];
julia> X = algebraic_set((y^2+y+x^3+1)*x^2)
Affine algebraic set
in affine 2-space over GF(2) with coordinates [x, y]
defined by ideal (x^5 + x^2*y^2 + x^2*y + x^2)
Convert an affine scheme to an affine algebraic set in order to ignore its (non-reduced) scheme structure.
algebraic_set
— Methodalgebraic_set(X::AffineScheme; is_reduced=false, check=true) -> AffineAlgebraicSet
Convert X
to an AffineAlgebraicSet
by considering its reduced structure.
If is_reduced
is set, assume that X
is already reduced. If is_reduced
and check
are set, check that X
is actually geometrically reduced as claimed.
set_theoretic_intersection
— Methodset_theoretic_intersection(X::AbsAffineAlgebraicSet, Y::AbsAffineAlgebraicSet)
Return the set theoretic intersection of X
and Y
as an algebraic set.
julia> A = affine_space(QQ, [:x,:y])
Affine space of dimension 2
over rational field
with coordinates [x, y]
julia> (x, y) = coordinates(A)
2-element Vector{QQMPolyRingElem}:
x
y
julia> X = algebraic_set(ideal([y - x^2]))
Affine algebraic set
in affine 2-space over QQ with coordinates [x, y]
defined by ideal (-x^2 + y)
julia> Y = algebraic_set(ideal([y]))
Affine algebraic set
in affine 2-space over QQ with coordinates [x, y]
defined by ideal (y)
julia> Zred = set_theoretic_intersection(X, Y)
Affine algebraic set
in affine 2-space over QQ with coordinates [x, y]
defined by ideal (-x^2 + y, y)
Note that the set theoretic intersection forgets the intersection multiplicities which the scheme theoretic intersection remembers. Therefore they are different.
julia> Z = intersect(X, Y) # a non reduced scheme
Spectrum
of quotient
of multivariate polynomial ring in 2 variables x, y
over rational field
by ideal (x^2 - y, y)
julia> Zred == Z
false
julia> Zred == reduced_scheme(Z)[1]
true
closure
— Methodclosure(X::AbsAffineAlgebraicSet)
Return the closure of in its ambient affine space.
Attributes
In addition to the attributes inherited from Affine schemes the following are available.
irreducible_components
— Methodirreducible_components(X::AbsAffineAlgebraicSet) -> Vector{AffineVariety}
Return the irreducible components of defined over the base field of .
Note that they may be reducible over the algebraic closure. See also geometric_irreducible_components
.
geometric_irreducible_components
— Methodgeometric_irreducible_components(X::AbsAffineAlgebraicSet)
Return the geometrically irreducible components of .
They are the irreducible components of seen over an algebraically closed field and given as a vector of tuples , say, where is an algebraic set which is irreducible over the base field of and represents a corresponding class of galois conjugated geometrically irreducible components of defined over a number field of degree whose generator prints as _a
.
This is expensive and involves taking field extensions.
vanishing_ideal
— Methodvanishing_ideal(X::AbsAffineAlgebraicSet) -> Ideal
Return the ideal of all polynomials vanishing in .
By Hilbert's Nullstellensatz this is a radical ideal.
This triggers the computation of a radical, which is expensive.
Methods
Inherited from Affine schemes
Properties
Inherited from Affine schemes