next | previous | forward | backward | up | top | index | toc | Macaulay2 web site
LocalRings :: LocalRings

LocalRings -- Localizing polynomial rings at a prime ideal


The basic definition of localization of polynomial rings at prime ideals along with various elementary operations are defined in m2/localring.m2, which in turn depends on a raw local ring type defined in e/localrings.hpp. This package extends the following methods to such local rings: syz, resolution, length, trim, mingens, minimalPresentation, symbol//, inducedMap, symbol:, saturate, annihilate.

Note: Methods isSubset and symbol== are fixed in m2/modules2.m2 and reduce is fixed in m2/matrix.m2. Many other methods that only rely on the methods above, such as map, modulo, subquotient, kernel, cokernel, image, homology, Hom, Ext, Tor, etc. work for local rings automatically.

If you need specific methods that do not work, please inform Mahrud Sayrafi.

i1 : R = ZZ/32003[a..d];

Rational quartic curve in P3:

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 : C = res I

      1      4      4      1
o3 = R  <-- R  <-- R  <-- R  <-- 0
     0      1      2      3      4

o3 : ChainComplex
i4 : M = ideal"a,b,c,d"; "maximal ideal at the origin";

o4 : Ideal of R
i6 : P = ideal"a,b,c"; "prime ideal";

o6 : Ideal of R
i8 : RM = localRing(R, M);
i9 : D = C ** RM;
i10 : E = pruneComplex D

                                         1                                        4                                        4                                        1
o10 = (localRing (R, ideal (a, b, c, d)))  <-- (localRing (R, ideal (a, b, c, d)))  <-- (localRing (R, ideal (a, b, c, d)))  <-- (localRing (R, ideal (a, b, c, d)))
      0                                        1                                        2                                        3

o10 : ChainComplex

That is to say, the rational quartic curve is not locally Cohen-Macaulay at the origin Therefore the curve is not Cohen-Macaulay

i11 : RP = localRing(R, P);
i12 : D' = C ** RP;
i13 : E' = pruneComplex D'

                                      1                                     2                                     1
o13 = (localRing (R, ideal (a, b, c)))  <-- (localRing (R, ideal (a, b, c)))  <-- (localRing (R, ideal (a, b, c)))
      0                                     1                                     2

o13 : ChainComplex

However, the curve is Cohen-Macaulay at the prime ideal P (and in fact any other prime ideal)


Currently limited to localization at prime ideals rather than any multiplicatively closed set. Quotients of local rings are not implemented yet. Moreover, certain functions (such as symbol%, radical, minimalPrimes, leadingCoefficient) are ambiguous or not yet defined.

See also



This documentation describes version 2.0 of LocalRings.

Source code

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/.


  • Functions and commands
    • hilbertSamuelFunction -- Computes the Hilbert-Samuel Function of Modules over Local Rings
    • liftUp -- Lifts various objects over R_P to R.
    • localComplement (missing documentation)
    • localMingens (missing documentation)
    • localModulo (missing documentation)
    • localPrune (missing documentation)
    • localResolution (missing documentation)
    • localsyz (missing documentation)
    • setMaxIdeal (missing documentation)
  • Symbols
    • maxIdeal (missing documentation)
    • presentationComplex (missing documentation)
    • residueMap (missing documentation)