##### 7.7.9.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][1] = ideal; a Groebner Basis of an i-th associated prime,
  L[i][2] = matrix, defining a linear map, with entries, reduced with respect to L[i][1]

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;
    ==> //   characteristic : 0
    ==> //   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;
    ==> //   characteristic : 0
    ==> //   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[1][2]);  // a first one: we see it is the identity
    ==> 1,0,
    ==> 0,1
    print(L[2][2]);  // 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[1]=-a12*a21+a11*a22-1
    ==> idJ[2]=a11^2+a12*a21-1
    ==> idJ[3]=a11*a12+a12*a22
    ==> idJ[4]=a11*a21+a21*a22
    ==> idJ[5]=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[1][2]); // here, @p is a nonzero parameter
    ==> 1,a12,
    ==> 0,(@p)
    det(L[1][2]-@p);  // check whether determinante is zero
    ==> 0

See also: findInvo.

User manual for Singular version 4-0-3, 2016, generated by texi2html.