|
7.7.10.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;
==> // 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[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.
|