Affine Algebraic Sets

Introduction

Let An(k)=kn\mathbb{A}^n(k)=k^n be the affine space of dimension nn over a field kk. For finitely many multivariate polynomials f1,frk[x1,xn]f_1, \dots f_r \in k[x_1,\dots x_n] and I=(f1,fr)k[x1,xn]I = (f_1, \dots f_r) \subseteq k[x_1,\dots x_n] the ideal they generate, we denote by X=V(I)X = V(I) the (affine) algebraic set defined by the ideal II and call kk its base field.

If kKk \subseteq K is any field extension, we denote the set of KK-points of XX by

X(K)={PAn(K)f1(P)==fn(P)=0}={PAn(K)fI:f(P)=0}.\begin{aligned}X(K) &= \{ P \in \mathbb{A}^n(K) \mid f_1(P)=\dots = f_n(P)=0\}\\&=\{P \in \mathbb{A}^n(K) \mid \forall f\in I : f(P)=0\}.\end{aligned}

Most properties of the algebraic set XX refer to X(K)X(K) where KK is an algebraically closed field. For instance is_empty returns whether X(K)=X(K) = \emptyset.

Exceptions to the rule, that we refer to X(K)X(K), are documented in the respective methods. For example the property of being irreducible depends on kk: The algebraic set X=V(x2+y2)A2X = V(x^2+y^2) \subseteq \mathbb{A}^2 is irreducible over k=Rk = \mathbb{R}. But it is the union of two lines over K=CK = \mathbb{C}, i.e. XX is irreducible but geometrically reducible. See is_irreducible(X::AbsAffineScheme{<:Field, <:MPolyAnyRing}) for details.

Rational points

To study the kk-points, also called kk-rational points, of the algebraic set XX one first considers the solutions X(K)X(K) over an algebraically closed field extension KK of kk. Then in a second step one studies X(k)X(k) as a subset of X(K)X(K).

The first step involves calculations with ideals. For instance Hilbert's Nullstellensatz implies that X(K)X(K) is empty if and only if the ideal I=(1)I=(1). This is decided by an ideal membership test relying on a Gröbner basis computation of II and can be carried out in k[x1,xn]k[x_1,\dots x_n] without taking any field extensions.

The second step involves methods from number theory (if kk is a number field) or from real algebraic geometry (if k=Rk = \mathbb{R}).

Algebraic sets in Oscar are designed for the first step. Most of their properfties should be interpreted as properties of the set X(K)X(K) of their KK-points over an algebraic closure KK.

Relation to Schemes

One may view an (affine) algebraic set as a geometrically reduced (affine) scheme over a field kk.

Many constructions involving varieties lead naturally to schemes. For instance the intersection of X=V(x2y)X = V(x^2 - y) and Y=V(y)Y = V(y) as sets is the point (0,0)=V(x,y){(0,0)}=V(x,y). As a scheme the intersection is defined by the ideal (x2,y)(x^2, y) which can be interpreted as a point of multiplicity 22 and contains the information that the intersection of XX and YY is tangential in (0,0)(0,0).

Therefore we have two methods

Note

If a construction returns a scheme ZZ, but you want to ignore the scheme structure, call the function algebraic_set(Z) to convert the scheme ZZ 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_idealMethod
fat_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
source
fat_schemeMethod
fat_scheme(X::AffineAlgebraicSet) -> AbsAffineScheme

Return a scheme whose reduced subscheme is XX.

This does not trigger any computation and is therefore cheap. Use this instead of underlying_scheme when possible.

source
underlying_schemeMethod
underlying_scheme(X::AffineAlgebraicSet) -> AbsAffineScheme

Return the underlying reduced scheme defining XX.

This is used to forward the AbsAffineScheme functionality to XX, but may trigger the computation of a radical ideal. Hence this can be expensive.

source

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.

AbsAffineAlgebraicSetType
AbsAffineAlgebraicSet <: AbsAffineScheme

An affine, geometrically reduced subscheme of an affine space over a field.

source

Constructors

One can create an algebraic set from an ideal or a multivariate polynomial.

algebraic_setMethod
algebraic_set(I::MPolyIdeal; is_radical::Bool=false, check::Bool=true)

Return the affine algebraic set defined II.

If is_radical is set, assume that II 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)
source
algebraic_setMethod
algebraic_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)
source

Convert an affine scheme to an affine algebraic set in order to ignore its (non-reduced) scheme structure.

algebraic_setMethod
algebraic_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.

source
set_theoretic_intersectionMethod
set_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
source
closureMethod
closure(X::AbsAffineAlgebraicSet)

Return the closure of XX in its ambient affine space.

source

Attributes

In addition to the attributes inherited from Affine schemes the following are available.

geometric_irreducible_componentsMethod
geometric_irreducible_components(X::AbsAffineAlgebraicSet)

Return the geometrically irreducible components of XX.

They are the irreducible components VijV_{ij} of XX seen over an algebraically closed field and given as a vector of tuples (Ai,Vij,dij)(A_i, V_{ij}, d_{ij}), say, where AiA_i is an algebraic set which is irreducible over the base field of XX and VijV_{ij} represents a corresponding class of galois conjugated geometrically irreducible components of AiA_i defined over a number field of degree dijd_{ij} whose generator prints as _a.

This is expensive and involves taking field extensions.

source
vanishing_idealMethod
vanishing_ideal(X::AbsAffineAlgebraicSet) -> Ideal

Return the ideal of all polynomials vanishing in XX.

By Hilbert's Nullstellensatz this is a radical ideal.

Note

This triggers the computation of a radical, which is expensive.

source

Methods

Inherited from Affine schemes

Properties

Inherited from Affine schemes

This documentation is not for the latest stable release, but for either the development version or an older release.
Click here to go to the documentation for the latest stable release.