next | previous | forward | backward | up | top | index | toc | home

saturate -- saturation of ideal or submodule

Synopsis

Description

If I is either an ideal or a submodule of a module M, the saturation (I : J^*) is defined to be the set of elements f in the ring (first case) or in M (second case) such that J^N * f is contained in I, for some N large enough.

For example, one way to homogenize an ideal is to homogenize the generators and then saturate with respect to the homogenizing variable.

i1 : R = ZZ/32003[a..d];
i2 : I = ideal(a^3-b, a^4-c)

             3       4
o2 = ideal (a  - b, a  - c)

o2 : Ideal of R
i3 : Ih = homogenize(I,d)

             3      2   4      3
o3 = ideal (a  - b*d , a  - c*d )

o3 : Ideal of R
i4 : saturate(Ih,d)

                        2     2    3      2   3      2
o4 = ideal (a*b - c*d, a c - b d, b  - a*c , a  - b*d )

o4 : Ideal of R
We can use this command to remove graded submodules of finite length.
i5 : m = ideal vars R

o5 = ideal (a, b, c, d)

o5 : Ideal of R
i6 : M = R^1 / (a * m^2)

o6 = cokernel | a3 a2b a2c a2d ab2 abc abd ac2 acd ad2 |

                            1
o6 : R-module, quotient of R
i7 : M / saturate 0_M

o7 = cokernel | a a3 a2b a2c a2d ab2 abc abd ac2 acd ad2 |

                            1
o7 : R-module, quotient of R

If I and J are both monomial ideals, then a faster algorithm is used. If I or J is not a monomial ideal, generally Groebner bases will be used to the compute the saturation. These will be computed as needed.

The computation is currently not stored anywhere: this means that the computation cannot be continued after an interrupt. This will be changed in a later version.

See also

Ways to use saturate :