General schemes

Arbitrary schemes over a commutative base ring $\mathbb k$ with unit are instances of the abstract type

SchemeType
Scheme{BaseRingType<:Ring}

A scheme over a ring $𝕜$ of type BaseRingType.

source

Morphisms of schemes shall be derived from the abstract type

SchemeMorType
SchemeMor{DomainType, CodomainType, MorphismType, BaseMorType}

A morphism of schemes $f : X → Y$ of type MorphismType with $X$ of type DomainType and $Y$ of type CodomainType.

When $X$ and $Y$ are defined over schemes $BX$ and $BY$ other than $Spec(𝕜)$, BaseMorType is the type of the underlying morphism $BX → BY$; otherwise, it can be set to Nothing.

source

Change of base

base_changeMethod
base_change(phi::Any, X::Scheme)

For a Scheme $X$ over a base_ring $𝕜$ and a map $φ : 𝕜 → R$ we compute $X' = X ×ₖ Spec(R)$ and return a pair (X', f) where $f : X' → X$ is the canonical morphism.

Note

We do not restrict phi to be of type Map so that one can also use coercion, anonymous functions, etc.

source
base_changeMethod
base_change(phi::Any, f::SchemeMor;
domain_map::SchemeMor, codomain_map::SchemeMor
)

For a morphism $f : X → Y$ with both $X$ and $Y$ defined over a base_ring $𝕜$ and a map $φ : 𝕜 → R$ return a triple (a, F, b) where $a : X' → X$ is the morphism from base_change(phi, X), $b : Y' → Y$ the one for $Y$, and $F : X' → Y'$ the induced morphism on those fiber products.

Note

We do not restrict phi to be of type Map so that one can also use coercion, anonymous functions, etc.

Note

The morphisms $a$ and $b$ can be passed as the optional arguments domain_map and codomain_map, respectively.

source