- Usage:
`saturate(I,J)``saturate I`

- Inputs:
`I`, an ideal, a module, or a monomial ideal`J`, an ideal or a ring element. If not present, then`J`is the ideal generated by the variables of the ring

- Optional inputs:
- BasisElementLimit => ...,
- DegreeLimit => ...,
- MinimalGenerators => ..., -- whether to compute minimal generators
- PairLimit => ...,
- Strategy => ...,

- Outputs:
- an ideal, a module, or a monomial ideal, the saturation of
`I`with respect to`J`

- an ideal, a module, or a monomial ideal, the saturation of

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) 2 2 3 2 3 2 o3 = ideal (a*b - c*d, a c - b d, b - a*c , a - b*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 |

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 GrÃ¶bner 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.

- quotient -- quotient or division
- PrimaryDecomposition -- functions for primary decomposition

- saturate(Ideal)
- saturate(Ideal,Ideal)
- saturate(Ideal,RingElement)
- saturate(Module)
- saturate(Module,Ideal)
- saturate(Module,RingElement)
- saturate(MonomialIdeal,MonomialIdeal)
- saturate(MonomialIdeal,RingElement)
`saturate(Vector,Ideal)`(missing documentation)`saturate(Vector,RingElement)`(missing documentation)