This package defines the LocalRing class for localizations of polynomial rings and extends most basic commutative algebra computations to such local rings. Moreover, the functions hilbertSamuelFunction and length(Module) for Artinian modules over a local ring are implemented in this package.
For information about the classical way of working with local rings at maximal ideals see replacements for functions from version 1.0.
The following is an example of defining the rational quartic curve in $\PP^3$ localized at a maximal ideal and a prime ideal using two different methods.
i1 : R = ZZ/32003[a..d]; |
i2 : I = monomialCurveIdeal(R,{1,3,4}) 3 2 2 2 3 2 o2 = ideal (b*c - a*d, c - b*d , a*c - b d, b - a c) o2 : Ideal of R |
i3 : M = ideal"a,b,c,d"; -- maximal ideal at the origin o3 : Ideal of R |
i4 : P = ideal"a,b,c"; -- prime ideal o4 : Ideal of R |
i5 : RM = R_M o5 = RM o5 : LocalRing, maximal ideal (a, b, c, d) |
i6 : RP = localRing(R, P) o6 = RP o6 : LocalRing, maximal ideal (a, b, c) |
An ideal, module, or chain complex may either be localized using promote or using the tensor product.
i7 : C = res I 1 4 4 1 o7 = R <-- R <-- R <-- R <-- 0 0 1 2 3 4 o7 : ChainComplex |
i8 : D = C ** RM; |
i9 : E = pruneComplex D 1 4 4 1 o9 = RM <-- RM <-- RM <-- RM 0 1 2 3 o9 : ChainComplex |
The computation above shows that the rational quartic curve is not locally Cohen-Macaulay at the origin. Therefore the curve is not Cohen-Macaulay
However, the curve is Cohen-Macaulay at the prime ideal $(a, b, c)$ (and in fact any other prime ideal).
i10 : D' = C ** RP; |
i11 : E' = pruneComplex D' 1 2 1 o11 = RP <-- RP <-- RP 0 1 2 o11 : ChainComplex |
The elementary definitions and operations are declared in localring.m2. Engine routines for core computations are implemented in e/localring.hpp.
The following commutative algebra computations are implemented in this package: syz, resolution, mingens, minimalPresentation, trim, length(Module), isSubset, inducedMap, quotient(Matrix,Matrix), remainder(Matrix,Matrix), quotient(Module,Module), saturate, annihilator. Most of these routines rely on the functions liftUp and pruneComplex and take advantage of Nakayama's lemma and flatness of local rings.
In addition, methods such as map, modulo, subquotient, kernel, cokernel, image, homology, Hom, Ext, Tor, etc. work over local rings automatically.
Currently limited to localization at prime ideals rather than arbitrary multiplicatively closed sets. Quotients of local rings are not implemented yet. Moreover, certain functions (such as symbol%, radical, minimalPrimes, leadingCoefficient) are ambiguous or not yet defined.
This documentation describes version 2.1 of LocalRings.
The source code from which this documentation is derived is in the file LocalRings.m2. The auxiliary files accompanying it are in the directory LocalRings/.
The object LocalRings is a package.