# Singular          ##### 7.5.8.0. findAuto
Procedure from library `involut.lib` (see involut_lib).

Usage:
findAuto(n); n an integer

Return:
a ring together with a list of pairs L, where
L[i] = ideal; a Groebner Basis of an i-th associated prime,
L[i] = matrix, defining a linear map, with entries, reduced with respect to L[i]

Purpose:
compute the ideal of linear automorphisms of the basering,
given by a matrix, n-th power of which gives identity (i.e. unipotent matrix)

Assume:
the relations on the algebra are of the form YX = XY + D, that is the current ring is a G-algebra of Lie type.

Note:
if n=0, a matrix, defining an automorphism is not assumed to be unipotent
but just non-degenerate. A nonzero parameter `@p` is introduced as the value of
the determinant of the matrix above.
For convenience, the full ideal of relations `idJ` and the initial matrix with indeterminates
`matD` are mutually exported in the output ring

Example:
 ```LIB "involut.lib"; def a = makeWeyl(1); setring a; // this algebra is a first Weyl algebra a; ==> // coefficients: QQ ==> // number of vars : 2 ==> // block 1 : ordering dp ==> // : names x D ==> // block 2 : ordering C ==> // noncommutative relations: ==> // Dx=xD+1 def X = findAuto(2); // in contrast to findInvo look for automorphisms setring X; // ring with new variables - unknown coefficients X; ==> // coefficients: QQ ==> // number of vars : 4 ==> // block 1 : ordering dp ==> // : names a11 a12 a21 a22 ==> // block 2 : ordering C size(L); // we have (size(L)) families in the answer ==> 2 // look at matrices, defining linear automorphisms: print(L); // a first one: we see it is the identity ==> 1,0, ==> 0,1 print(L); // and a second possible matrix; it is diagonal ==> -1,0, ==> 0, -1 // L; // we can take a look on the whole list, too idJ; ==> idJ=-a12*a21+a11*a22-1 ==> idJ=a11^2+a12*a21-1 ==> idJ=a11*a12+a12*a22 ==> idJ=a11*a21+a21*a22 ==> idJ=a12*a21+a22^2-1 kill X; kill a; //----------- find all the linear automorphisms -------------------- //----------- use the call findAuto(0) -------------------- ring R = 0,(x,s),dp; def r = nc_algebra(1,s); setring r; // the shift algebra s*x; // the only relation in the algebra is: ==> xs+s def Y = findAuto(0); setring Y; size(L); // here, we have 1 parametrized family ==> 1 print(L); // here, @p is a nonzero parameter ==> 1,a12, ==> 0,(@p) det(L-@p); // check whether determinante is zero ==> 0 ``` 