# Singular

##### 7.7.9.0. findInvoDiag
Procedure from library `involut.lib` (see involut_lib).

Usage:
findInvoDiag();

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 homothetic (diagonal) involutions of the basering

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:
for convenience, the full ideal of relations `idJ` and the initial matrix with indeterminates `matD` are 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 = findInvoDiag(); setring X; // ring with new variables, corresponding to unknown coefficients X; ==> // characteristic : 0 ==> // number of vars : 2 ==> // block 1 : ordering dp ==> // : names a11 a22 ==> // block 2 : ordering C // print matrices, defining linear involutions print(L[1][2]); // a first matrix: we see it is constant ==> -1,0, ==> 0, 1 print(L[2][2]); // and a second possible matrix; it is constant too ==> 1,0, ==> 0,-1 L; // let us take a look on the whole list ==> [1]: ==> [1]: ==> _[1]=a22-1 ==> _[2]=a11+1 ==> [2]: ==> _[1,1]=-1 ==> _[1,2]=0 ==> _[2,1]=0 ==> _[2,2]=1 ==> [2]: ==> [1]: ==> _[1]=a22+1 ==> _[2]=a11-1 ==> [2]: ==> _[1,1]=1 ==> _[1,2]=0 ==> _[2,1]=0 ==> _[2,2]=-1 idJ; ==> idJ[1]=a11*a22+1 ==> idJ[2]=a11^2-1 ==> idJ[3]=a22^2-1 ```