next | previous | forward | backward | up | top | index | toc | Macaulay2 website
VectorFields :: der

der -- compute the module of vector fields which send one set to another



This computes the module of vector fields that, as derivations, send each element of I (or L) to an element of J. This can be used to calculate, for example, the module of vector fields tangent to an algebraic variety (see derlog).

Note that der(I,J) is always a subset of der(list of generators of I,J), and frequently a proper subset.

For der(L,J), the computation is done by finding the syzygies between the partial derivatives of the entries of L and the generators of J. This method of computation was adapted from Singular's KVequiv.lib, written by Anne Frühbis-Krüger.

For der(I,J), we intersect der(list of generators of I,J) with the free module consisting of vector fields with coefficients in J:I; the latter is unnecessary when I is a subset of J.

For example, consider the following ideals.

i1 : R=QQ[x,y];
i2 : I=ideal (x*y);

o2 : Ideal of R
i3 : J=ideal (0_R);

o3 : Ideal of R
i4 : K=ideal (x,y);

o4 : Ideal of R

Every vector field sends the zero ideal to zero:

i5 : der(J,I)

o5 = R

o5 : R-module, free
i6 : der(J,K)

o6 = R

o6 : R-module, free

This finds the vector fields tangent to x*y=0 (see derlog):

i7 : D=der(I,I)

o7 = image | x 0 |
           | 0 y |

o7 : R-module, submodule of R
i8 : applyVectorField(D,I)

o8 = ideal(x*y)

o8 : Ideal of R

This finds the vector fields annihilating x*y (see derlogH):

i9 : D=der({x*y},J)

o9 = image | x  |
           | -y |

o9 : R-module, submodule of R

This is different than

i10 : der(I,J)

o10 = image 0

o10 : R-module, submodule of R

because, for example, the generator of D does not annihilate x^2*y:

i11 : applyVectorField(gens D,x^2*y)

o11 = x y

o11 : R

Another illustration of the difference is:

i12 : der({x},ideal (y))

o12 = image | 0 y |
            | 1 0 |

o12 : R-module, submodule of R
i13 : der(ideal (x),ideal (y))

o13 = image | y 0 |
            | 0 y |

o13 : R-module, submodule of R

This illustrates a basic identity:

i14 : intersect(der(ideal (x),K),der(ideal (y),K))==der(K,K)

o14 = true

See also

Ways to use der :

For the programmer

The object der is a method function.