version="$Id: qmatrix.lib,v 1.8 2005-02-23 18:10:46 levandov Exp $"; 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). MAIN PROCEDURES: quant(n, [p]); generates the quantum matrix ring of order n; qminor(u, v, nr); calculate a quantum minor of a quantum matrix AUXILIARY PROCEDURES: 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"; /////////////////////////////////////////////////////////////////////////////// proc SymGroup(int n) "USAGE: SymGroup(n); n an integer, n>0 PURPOSE: present the symmetric group S(n) via integer vectors RETURN: intmat 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 an intvec representing an element of S(n) RETURN: int, the length of v NOTE: if v doesn't represent an element of S(n), 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 PURPOSE: compute the quantum matrix ring of order n; RETURN: ring (of quantum matrices). If p is specified, the quantum parameter q @* will be specialized at p-th root of unity NOTE: You have to 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 reading @* the rows of the usual matrix representation. SEE ALSO: qminor EXAMPLE: example quant; 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