M=bracket(M1,M2)
M=bracket(M1,M2,L)
V=bracket(V1,V2)
m=bracket(m1,m2)
This computes the Lie bracket of pairs of vector fields from the first and second parameters. If $D_1$ and $D_2$ are vector fields, then the Lie bracket of $D_1$ and $D_2$, denoted $[D_1,D_2]$, is the vector field $F$ such that $F(g)=D_1(D_2(g))-D_2(D_1(g))$ for all $g$, where $V(f)$ denotes the operation of applying a vector field to a function (see applyVectorField).
When the first two parameters are matrices M1 and M2, this function returns a Matrix of (numColumns(M1))*(numColumns(M2)) columns, consisting of all possible brackets of a column from M1 with a column from M2. If a specific ordering (or subset) of the brackets is desired, then a List of column index pairs should also be provided.
When the first two parameters are Vectors, this returns the Vector formed by the Lie bracket of the two vector fields.
When the parameters are Modules m1 and m2, then we compute the module generated by $[X,Y]$, for $X$ in m1 and $Y$ in m2. This is a superset of the module generated by the brackets of the generators! (A calculation shows that bracket(m1,m2) is generated by image bracket(gens m1,gens m2), I1*m2, and I2*m1, where I1 is the ideal generated by the coefficients of the generators of m1, and similarly I2.)
See differences between certain bracketing functions for more details on the differences.
|
|
|
|
|
|
|
|
|
|
|
Providing Modules computes something much different:
|
because, for example,
|
An action of SL_2 on GL_2 differentiates to the following vector fields:
|
|
|
|
|
Verify that this is a representation of sl_2, where [e,f]=h, [h,f]=-2f, [h,e]=2e.
|
|
|
Of course we should have [L,L]=L:
|
|
The Matrix and Module versions of this routine compute different things; see differences between certain bracketing functions.
The object bracket is a method function.