General schemes
Arbitrary schemes over a commutative base ring $\mathbb k$ with unit are instances of the abstract type
Scheme — TypeScheme{BaseRingType<:Ring}A scheme over a ring $𝕜$ of type BaseRingType.
Morphisms of schemes shall be derived from the abstract type
SchemeMor — TypeSchemeMor{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.
Change of base
base_change — Methodbase_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.
base_change — Methodbase_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.