# Affine Algebraic Sets

## Introduction

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

If $k \subseteq K$ is any field extension, we denote the set of $K$-points of $X$ by

\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 $X$ refer to $X(K)$ where $K$ is an algebraically closed field. For instance is_empty returns whether $X(K) = \emptyset$.

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

## Rational points

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

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

The second step involves methods from number theory (if $k$ is a number field) or from real algebraic geometry (if $k = \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)$ of their $K$-points over an algebraic closure $K$.

## Relation to Schemes

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

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

Therefore we have two methods

Note

If a construction returns a scheme $Z$, but you want to ignore the scheme structure, call the function algebraic_set(Z) to convert the scheme $Z$ 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 $X$.

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 $X$.

This is used to forward the AbsAffineScheme functionality to $X$, 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.

## 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 $I$.

If is_radical is set, assume that $I$ 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 $X$ 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 $X$.

They are the irreducible components $V_{ij}$ of $X$ seen over an algebraically closed field and given as a vector of tuples $(A_i, V_{ij}, d_{ij})$, say, where $A_i$ is an algebraic set which is irreducible over the base field of $X$ and $V_{ij}$ represents a corresponding class of galois conjugated geometrically irreducible components of $A_i$ defined over a number field of degree $d_{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 $X$.

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