Let $R$ be a ring, $I$ an ideal, and $\langle g_1, \ldots, g_m \rangle$ a finitely generated ideal. Considering the intersection $I \cap \langle g_1, \ldots, g_m \rangle$, I became interested in the set of coefficients $c \in R^m$ such that $\sum_i c_i g_i \in I$.

Question: is there an algorithm to calculate $\{ c \in R^m : \sum_i c_i g_i \in I \}$?

It seems to be an $R$-module. It is easy to see that $\prod_i (I : (g_i))$ is contained in it (which contains $IR^m$).

Does it have a name? Can it be expressed in terms of some other objects which can be computed?

I am interested in the case $R = k[x_1,\ldots,x_n]$ where $k$ is a field, and (so) the ideal $I$ is also finitely generated. Maybe a Groebner basis of the intersection could help.

Solution attempt: Suppose $I \cap \langle g_1, \ldots, g_m \rangle$ is finitely generated (e.g. $R$ is Noetherian). Say it is equal to $\langle h_1, \ldots, h_t \rangle$, and express $h_s = \sum_i b_{s,i} g_i$ with $b_{s,i} \in R$. Then $b_s = (b_{s,i}) \in R^m$ is contained in the set I'm interested in, for each $s=1,\ldots,t$. So the span $Rb_1+ \ldots+ Rb_t \subset R^m$ is contained in the set I'm interested in.

Now the question is whether a different choice of basis for the intersection (or a different choice of coefficients) can give more elements in the span, and whether $Rb_1 + \ldots + Rb_t$ exhausts the set I'm interested in.

  • 1
    $\begingroup$ Let $T$ be the submodule of $R^m$ that you describe. Clearly $IR^m\subset T$, so one should really understand $T/IR^m$. This module at least has a name- $\mathrm{Tor}^1_R(R/I,R/(g_1,\ldots,g_m))$. $\endgroup$
    – Mohan
    Aug 15, 2018 at 17:26
  • $\begingroup$ @Mohan I don't see how it could be true, because $g_i$ is in the annihilator of the $\operatorname{Tor}$ module but not necessarily in the annihilator of $T/IR^m$. $\endgroup$ Aug 15, 2018 at 21:55
  • 1
    $\begingroup$ Here is what you really have. Let $K\subset R^m$ be the set of elements $(a_1,\ldots,a_m)$ such that $\sum a_ig_i=0$. This does not depend on $I$. Then, you have an exact sequence $K/IK\to T/IR^m\to \mathrm{Tor}^1_R(R/I,R/(g_1,\ldots, g_m))\to 0$. $\endgroup$
    – Mohan
    Aug 16, 2018 at 1:40

1 Answer 1


Suppose $I = \langle f_1, \ldots, f_r\rangle$ and consider the map $R^r \oplus R^m \twoheadrightarrow I + J$ that sends $(b,c) \mapsto \sum_j b_j f_j + \sum_i c_i g_i$.

Its kernel $K$ is the first module of syzygies for $I+J$. The projection of $K$ to $R^m$ is exactly the $R$-module $T$ that you want.

Proof. The projection of $K$ to $R^m$ consists of those $c \in R^m$ for which there exists $b$ such that $\sum c_i g_i = -\sum b_j f_j \in I$, and for every $c \in R^m$ with $\sum c_i g_i \in I$ there exists such a $b$.

So the algorithm is: calculate the first module of syzygies for $I+J$ and project to $R^m$.

Example: $I = \langle f \rangle = \langle x^2 + y^2 - 1\rangle$ and $J = \langle \frac{\partial f}{\partial x},\frac{\partial f}{\partial y}\rangle = \langle 2x, 2y \rangle$. In SageMath:

sage: R.<x,y> = PolynomialRing(QQ,2)
sage: I = R.ideal(x^2+y^2-1)
sage: J = R.ideal(2*x, 2*y)
sage: T = (I+J).syzygy_module()[:,len(I.gens()):]; T
[           -y             x]
[          x*y       y^2 - 1]
[x^2 + y^2 - 1             0]

Here the projection to $R^m$ is achieved by slicing the matrix of generators of $K$.

The rows of the resulting matrix are generators of $T$.

In the example we see that $x\frac{\partial}{\partial y}-y\frac{\partial}{\partial x}$ is a polynomial vector field on the circle and furthermore $IR^m \subset T$.

One might be more interested in a (smaller) set of generators for the quotient $T/IR^m$.

To this end we can find the module of syzygies for $T + IR^m$ and project to the space of coefficients for generators of $T$; these are syzygies for $T$ modulo $IR^m$. For every such syzygy modulo $IR^m$ where one of the coefficients is an invertible constant, remove the respective generator (because it can be expressed in terms of the others, modulo $IR^m$).

Continuing the example in Singular:

> ring r=0,(x,y),dp;
> module n = [-y, x], [xy, y2-1], [x2+y2-1,0], [x2+y2-1,0], [0,x2+y2-1]; // T + IR^m
> LIB "matrix.lib";
> print(submat(transpose(syz(n)),1..3,1..3));
0,   0, -1,
x,   1, 0, 

Here we see that columns two and three contain invertible constants, so the second and third generators can be removed.

So in this example $T/IR^m$ is generated by $(-y, x)$.

For completeness, the calculation above can be achieved (in general) through the SageMath interface to Singular:

sage: import itertools
sage: m = len(J.gens())
sage: IRm = matrix([[i if j == b else 0 for j in range(0,m)]
                    for (i,b) in itertools.product(I.gens(),range(0, m))])
sage: r = R._singular_()
sage: n = singular(map(list, list(T) + list(IRm)), type='module') # T + IR^m
sage: singular('transpose(syz(%s))' % n.name(), type='matrix').sage()[:,0:T.nrows()]
[      0       0      -1]
[      x       1       0]
[y^2 - 1      -x       y]

A final useful remark is that the set of $\sum c_i g_i$, where $c$ ranges over the generators of $T$, is a set of generators for $I \cap J$. In SageMath:

sage: R.ideal([sum(map(prod,zip(t,J.gens()))) for t in T]) == I.intersection(J)

The proof attempt in the question was an attempt to reverse this process.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .