# Singular

#### D.5.3.1 tangentGens

Procedure from library `orbitparam.lib` (see orbitparam_lib).

Usage:
tangentGens(L,v); L list, v matrix.

Assume:
L is a list of strictly upper triangular n x n matrices of same size. The vector space <L> genererated by the elements of L should be closed under the Lie bracket.

v is matrix of constants of size n x 1.

Return:
list, with four entries
- first entry is the dimension of the orbit of under the action of exp(<L>)
- second entry is a list generators of the tangent space of the orbit of v at v under the action of exp(<L>). If the characteristic p of the ground field is positive, then n has to be smaller than p. The generators are elements of <L>.
- third entry is the list of matrices with the coefficient to obtain the generators as a linear combination of the elements of L
- fourth entry is list of integers with entries in v which can be made zero by the action of exp(<L>)

Theory:
We apply the theorem of Chevalley-Rosenlicht.

Example:
 ```LIB "orbitparam.lib"; ring R = 0,(x),dp; matrix L1[3][3] = 0,1,0, 0,0,0, 0,0,0; matrix L2[3][3] = 0,0,1, 0,0,0, 0,0,0; matrix L3[3][3] = 0,1,1, 0,0,1, 0,0,0; list L = L1,L2,L3; matrix v[3][1] = 1,2,3; tangentGens(L,v); ==> [1]: ==> 2 ==> [2]: ==> [1]: ==> _[1,1]=0 ==> _[1,2]=1/3 ==> _[1,3]=1/3 ==> _[2,1]=0 ==> _[2,2]=0 ==> _[2,3]=1/3 ==> _[3,1]=0 ==> _[3,2]=0 ==> _[3,3]=0 ==> [2]: ==> _[1,1]=0 ==> _[1,2]=1/2 ==> _[1,3]=0 ==> _[2,1]=0 ==> _[2,2]=0 ==> _[2,3]=0 ==> _[3,1]=0 ==> _[3,2]=0 ==> _[3,3]=0 ==> [3]: ==> [1]: ==> _[1,1]=0 ==> _[2,1]=0 ==> _[3,1]=1/3 ==> [2]: ==> _[1,1]=1/2 ==> _[2,1]=0 ==> _[3,1]=0 ==> [4]: ==> [1]: ==> 2 ==> [2]: ==> 1 ```