VectorFields provides functions to study polynomial vector fields on affine space, and modules of such vector fields. This package may be of interest to those studying representations of Lie groups, foliations, or logarithmic vector fields.
We represent a vector field on affine n-space as an element of the module R^{n}, where R is a polynomial ring in n variables. Concretely, the ordering of variables given by vars(R) is used to identify each vector field with a n×1 Matrix, and vice-versa, with each entry in the matrix storing the coefficient of a derivative with respect to a particular variable. For instance, on a 3-dimensional space the vector field M=2y ∂_{y} + z ∂_{z} is entered this way:
i1 : R=QQ[x,y,z]; |
i2 : vars(R) o2 = | x y z | 1 3 o2 : Matrix R <--- R |
i3 : M=matrix {{0},{2*y},{z}} o3 = | 0 | | 2y | | z | 3 1 o3 : Matrix R <--- R |
Many functions in this package are designed to accept either a finite collection of vector fields (in the form of a Matrix where each column represents a vector field), or a module of vector fields (in the form of a submodule of R^{n}). These different versions may compute quite different things! For instance, the vector field in M commutes with itself:
i4 : commutator(M) o4 = 0 3 o4 : Matrix R <--- 0 |
i5 : bracket(M,M) o5 = 0 3 1 o5 : Matrix R <--- R |
but the vector fields in the module generated by M do not:
i6 : commutator(image M) o6 = image | 0 0 0 | | 0 4y2 2yz | | 0 2yz z2 | 3 o6 : R-module, submodule of R |
i7 : bracket(M,y*M) o7 = | 0 | | 4y2 | | 2yz | 3 1 o7 : Matrix R <--- R |
In other cases, the Matrix and Module versions of a function compute identical things, perhaps returning different types. For instance, here we apply vector fields to a function:
i8 : applyVectorField(M,x*y-z^2) 2 o8 = 2x*y - 2z o8 : R |
i9 : applyVectorField(image M,x*y-z^2) 2 o9 = ideal(2x*y - 2z ) o9 : Ideal of R |
See differences between certain bracketing functions for more details.
To show some capabilities of this package, let us use derlog to find the vector fields on the ambient space that are tangent to xy-z^{2}=0:
i10 : D=derlog(ideal (x*y-z^2)) o10 = image | 2x 0 2z 0 | | 0 2y 0 2z | | z z y x | 3 o10 : R-module, submodule of R |
Actually, M is one of these vector fields:
i11 : isSubset(image M,D) o11 = true |
We may also check some properties of D:
i12 : isVectorField(gens D) o12 = true |
i13 : isVectorField(D) o13 = true |
i14 : isLieAlgebra(D) o14 = true |
Note that this package has been rewritten since version 1.0. Any users of the earlier version should upgrade with care, and read the comments inside the package’s source code.
This documentation describes version 1.80 of VectorFields.
The source code from which this documentation is derived is in the file VectorFields.m2.