Home Online Manual
Top
Back: findInvoDiag
Forward: ncdetection
FastBack: freegb_lib
FastForward: gkdim_lib
Up: involut_lib
Top: Singular Manual
Contents: Table of Contents
Index: Index
About: About this document
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.