-
Notifications
You must be signed in to change notification settings - Fork 5
Affine schemes
In theory, an affine scheme of finite type is modeled by a quotient A = k[x]/I of a polynomial ring k[x] = k[x_1,...,x_n] over a Noetherian base ring k modulo an ideal I. In practice, we will often use localizations of these at complements of hypersurfaces f in A; for instance for glueing of two schemes along principal open subsets. Therefore, an affine scheme is modeled by a polynomial algebra as above and an additional field denom which contains any denominators at which we assume the scheme to be localized.
There are various ways to implement models for such localizations, for instance via Rabinowitsch's method by adding a variable u for the inverse of f via 1-fu, or by saturation of the ideal I' = I:f^\infty. Depending on the purpose, different approaches and algorithms can be used. Within the AffineScheme structure we therefore only store the data necessary for deriving any of these implementations and in addition further fields for caching any such intermediate results such as the explicit ring A[u]/(1-fu), or the saturated ideal I'. Whenever you implement new algorithms with expensive intermediate results, make sure you add the respective field for caching.