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 a Hecke.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 a Hecke.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