Changeset b9e6b3a in git


Ignore:
Timestamp:
Feb 21, 2005, 8:14:47 PM (18 years ago)
Author:
Viktor Levandovskyy <levandov@…>
Branches:
(u'spielwiese', '0d6b7fcd9813a1ca1ed4220cfa2b104b97a0a003')
Children:
34b03143f27c33c57d6458b8d0f9070e54067eed
Parents:
0e200a199387b736aed9e1893a5204ea814f2a66
Message:
*levandov: IntersectWithSub added, bug fixes, docu revisited and corrected


git-svn-id: file:///usr/local/Singular/svn/trunk@7739 2c84dea3-7e68-4137-9b89-c4e89433aadc
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Singular/LIB/ncdecomp.lib

    r0e200a rb9e6b3a  
    11///////////////////////////////////////////////////////////////////////////////
    2 version="$Id: ncdecomp.lib,v 1.4 2004-10-01 16:10:12 levandov Exp $";
     2version="$Id: ncdecomp.lib,v 1.5 2005-02-21 19:14:47 levandov Exp $";
    33category="Noncommutative";
    44info="
     
    66AUTHORS:  Viktor Levandovskyy,     levandov@mathematik.uni-kl.de.
    77
     8OVERVIEW:
     9This library presents algorithms for the  central character
     10decomposition of a module (in other words, a
     11decomposition into generalized weight modules with respect to the center).
     12Based on ideas of O. Khomenko and V. Levandovskyy.
     13
    814PROCEDURES:
    9 CentralQuot(I,G);       for a module I and an ideal G, returns I:G,
    10 CentralSaturation(M,T); for a module M and an ideal T, returns M:T^{\infty},
    11 CenCharDec(I,C);        for a module I and a list C of generators of a center, returns a list L, where each entry consists of three records, namely
    12 L[*][1] is the character, L[*][2] is the Groebner basis of corresponding weight module, L[*][3] is the K-dimension of the weight module;
     15CentralQuot(I,G);       central quotient I:G,
     16CentralSaturation(M,T); central saturation M:T:...:T ( = M:T^{\infty}),
     17CenCharDec(I,C);        central character decomposition of I w.r.t. C
     18IntersectWithSub(M,Z);  intersection of M with the subalgebra, generated
     19by pairwise commutative elements.
    1320";
    1421
     
    132139proc CentralSaturation(module M, ideal T)
    133140"USAGE:  CentralSaturation(M, T), for a module M and an ideal T,
    134 RETURN:  module of the central saturation M:T^{\infty},
     141RETURN:  module of the central saturation of M by T (also denoted by M:T^{\infty}),
    135142NOTE:    the output module is not necessarily a Groebner basis,
    136143SEE ALSO: CentralQuot, CenCharDec
     
    144151  while ( !MyIsEqual(Q,S) )
    145152  {
    146     Q = CentralQuot(M, T);
     153    Q = CentralQuot(S, T);
    147154    S = CentralQuot(Q, T);
    148155  }
     
    169176}
    170177///////////////////////////////////////////////////////////////////////////////
    171 proc CenCharDec(ideal I, list Center)
    172 "USAGE:  CenCharDec(I, L), I an ideal and Center a list of generators of the center;
    173 RETURN:  a list L, where each entry consists of three records, namely
    174 L[*][1] is the character, L[*][2] is the Groebner basis of corresponding weight module, L[*][3] is the K-dimension of the weight module;
    175 NOTE:   
     178proc CenCharDec(module I, list L)
     179"USAGE:  CenCharDec(I, L);  I a module, L a list of generators of the center;
     180RETURN:  a list L, where each entry consists of three records:
     181           L[*][1] is the character in terms of central elements,
     182           L[*][2] is the Groebner basis of the corresponding weight module,
     183           L[*][3] is the K-dimension of the weight module;
     184NOTE:     some modules have no finite decomposition (in such a case one
     185          gets warning message)
    176186SEE ALSO: CentralQuot, CentralSaturation
    177187EXAMPLE: example CenCharDec; shows examples
     
    288298{ "EXAMPLE:"; echo = 2;
    289299   option(returnSB);
    290    def a = sl2();
     300   def a = sl2(); // U(sl_2) in characteristic 0
    291301   setring a;
    292302   ideal I = e3,f3,h3-4*h;
    293    I = twostd(I);
    294    poly C=4*e*f+h^2-2*h;
    295    list T = CenCharDec(I,C);
     303   I = twostd(I);           // two-sided ideal generated by I
     304   vdim(I);                 // it is finite-dimensional
     305   list Cn = 4*e*f+h^2-2*h; // the only central element
     306   list T = CenCharDec(I,Cn);
    296307   T;
    297308}
     309///////////////////////////////////////////////////////////////////////////////
     310proc IntersectWithSub (ideal M, ideal Z)
     311"USAGE:  IntersectWithSub(M,Z),  M an ideal, Z an ideal of pairwise commutative elements
     312RETURN:  an intersection of M with the subalgebra, generated by Z
     313NOTE:    usually one puts generators of the center into Z
     314EXAMPLE: example IntersectWithSub; shows an example
     315"
     316{
     317  // returns a submodule of M, equal to M \cap Z
     318  // correctness: Z should consists of pairwise
     319  // commutative elements
     320  int nz = size(Z);
     321  int i,j;
     322  poly p;
     323  for (i=1; i<nz; i++)
     324  {
     325    for (j=i+1; j<=nz; j++)
     326    {
     327      p = bracket(Z[i],Z[j]);
     328      if (p!=0)
     329      {
     330        "Error: generators of the subalgebra do not commute.";
     331        return(ideal(0));
     332      }
     333    }
     334  }
     335  // main action
     336  def B = basering;
     337  setring B;
     338  string s1,s2;
     339  s1 = "ring @Z = (";
     340  s2 = s1 + charstr(basering) + "),(z(1.." + string(nz)+")),Dp";
     341  //  s2;
     342  execute(s2);
     343  setring B;
     344  map F = @Z,Z;
     345  setring @Z;
     346  ideal PreM = preimage(B,F,M);
     347  PreM = std(PreM);
     348  setring B;
     349  ideal T = F(PreM);
     350  return(T);
     351}
     352example
     353{
     354  "EXAMPLE:"; echo = 2;
     355  ring r=(0,a),(e,f,h),Dp;
     356  matrix @d[3][3];
     357  @d[1,2]=-h;
     358  @d[1,3]=2e;
     359  @d[2,3]=-2f;
     360  ncalgebra(1,@d); // parametric U(sl_2)
     361  ideal I = e,h-a;
     362  ideal C;
     363  C[1] = h^2-2*h+4*e*f; // the center of U(sl_2)
     364  ideal X = IntersectWithSub(I,C);
     365  X;
     366  ideal G = e*f, h; // the biggest comm. subalgebra of U(sl_2)
     367  ideal Y = IntersectWithSub(I,G);
     368  Y;
     369}
Note: See TracChangeset for help on using the changeset viewer.