// version="$Id$"; category="Noncommutative"; info=" LIBRARY: qmatrix.lib Quantum matrices, quantum minors and symmetric groups AUTHORS: Lobillo, F.J., jlobillo@ugr.es @* Rabelo, C., crabelo@ugr.es SUPPORT: 'Metodos algebraicos y efectivos en grupos cuanticos', BFM2001-3141, MCYT, Jose Gomez-Torrecillas (Main researcher). PROCEDURES: quantMat(n, [p]); generates the quantum matrix ring of order n; qminor(u, v, nr); calculate a quantum minor of a quantum matrix SymGroup(n); generates an intmat containing S(n), each row is an element of S(n) LengthSymElement(v); calculates the length of the element v of S(n) LengthSym(M); calculates the length of each element of M, being M a subset of S(n) "; LIB "ncalg.lib"; LIB "nctools.lib"; // for rootofUnity /////////////////////////////////////////////////////////////////////////////// proc SymGroup(int n) "USAGE: SymGroup(n); n an integer (positive) RETURN: intmat PURPOSE: represent the symmetric group S(n) via integer vectors (permutations) NOTE: each row of the output integer matrix is an element of S(n) SEE ALSO: LengthSym, LengthSymElement EXAMPLE: example SymGroup; shows examples "{ if (n<=0) { "n must be positive"; intmat M[1][1]=0; } else { if (n==1) { intmat M[1][1]=1; } else { def N=SymGroup(n-1); // N is the symmetric group S(n-1) int m=nrows(N); // The order of S(n-1)=(n-1)! intmat M[m*n][n]; // Matrix to save S(n), m*n=n*(n-1)!=n!=#S(n) int i,j,k; for (i=1; i<=m; i++) { // fixed an element i of S(n-1) for (j=n; j>0; j--) { // and fixed a position j to introduce an "n" for (k=1; kv[i]. proc LengthSymElement(intvec v) "USAGE: LengthSymElement(v); v intvec RETURN: int PURPOSE: determine the length of the permutation given by v in some S(n) ASSUME: v represents an element of S(n); otherwise the output may have no sense SEE ALSO: SymGroup, LengthSym EXAMPLE: example LengthSymElement; shows examples "{ int n=size(v); int l=0; int i,j; for (i=1; i1), p an optional integer RETURN: ring (of quantum matrices). If p is specified, the quantum parameter q @* will be specialized at the p-th root of unity PURPOSE: compute the quantum matrix ring of order n NOTE: activate this ring with the \"setring\" command. @* The usual representation of the variables in this quantum @* algebra is not used because double indexes are not allowed @* in the variables. Instead the variables are listed by reading @* the rows of the usual matrix representation, that is, there @* will be n*n variables (one for each entry an n*N generic matrix), @* listed row-wise SEE ALSO: qminor EXAMPLE: example quantMat; shows examples "{ if (n>1) { int nv=n^2; intmat m[nv][nv]; int i,j; for (i=1; i<=nv; i++) { m[i,nv+1-i]=1; } int chr = 0; if ( size(#) > 0 ) { if ( typeof( #[1] ) == "int" ) { chr = #[1]; } } ring @rrr=(0,q),(y(1..nv)),Dp; minpoly = rootofUnity(chr); matrix C[nv][nv]=0; matrix D[nv][nv]=0; intvec idyi, idyj; for (i=1; i