Changeset e5af4b5 in git for Singular/LIB/dmod.lib


Ignore:
Timestamp:
Jul 11, 2011, 12:43:21 PM (12 years ago)
Author:
Viktor Levandovskyy <levandov@…>
Branches:
(u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', '0604212ebb110535022efecad887940825b97c3f')
Children:
4fc521c676af0050e38be17df2c243513aec9983
Parents:
3b77086d506b6745e947edd3c323b6687e2d521c
Message:
*levandov: annfsBMI changed, now being able to compute B sigma ideal

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

Legend:

Unmodified
Added
Removed
  • Singular/LIB/dmod.lib

    r3b77086 re5af4b5  
    24412441
    24422442proc annfsBMI(ideal F, list #)
    2443 "USAGE:  annfsBMI(F [,eng]);  F an ideal, eng an optional int
     2443"USAGE:  annfsBMI(F [,eng,met]);  F an ideal, eng, met optional ints
    24442444RETURN:  ring
    2445 PURPOSE: compute the D-module structure of basering[1/f]*f^s where
    2446 @* f = F[1]*..*F[P], according to the algorithm by Briancon and Maisonobe.
     2445PURPOSE: compute two kinds of Bernstein-Sato ideals, associated to
     2446@* f = F[1]*..*F[P], with the multivariate algorithm by Briancon and Maisonobe.
    24472447NOTE:    activate the output ring with the @code{setring} command. In this ring,
    2448 @*       - the ideal LD is the needed D-mod structure,
    2449 @*       - the list BS is the Bernstein ideal of a polynomial f = F[1]*..*F[P].
     2448@*       - the ideal LD is the annihilator of F[1]^s_1*..*F[P]^s_p,
     2449@*       - the list or ideal BS is a Bernstein-Sato ideal of a polynomial f = F[1]*..*F[P].
    24502450@*       If eng <>0, @code{std} is used for Groebner basis computations,
    24512451@*       otherwise, and by default @code{slimgb} is used.
     2452@*       If met <>0, the B-Sigma ideal (cf. Castro and Ucha,
     2453@*       'On the computation of Bernstein-Sato ideals', 2005). Otherwise, and by
     2454@*       default, the ideal B (cf. the paper) is computed.
     2455@*       If the output ideal happens to be principal, the list of factors
     2456@*       with their multiplicities is returned instead of the ideal.
    24522457@*       If printlevel=1, progress debug messages will be printed,
    24532458@*       if printlevel>=2, all the debug messages will be printed.
     
    24562461{
    24572462  int eng = 0;
     2463  int met = 0;
    24582464  if ( size(#)>0 )
    24592465  {
     
    24612467    {
    24622468      eng = int(#[1]);
     2469    }
     2470    if ( size(#)>1 )
     2471    {
     2472      if ( typeof(#[2]) == "int" )
     2473      {
     2474        met = int(#[2]);
     2475      }
    24632476    }
    24642477  }
     
    26482661  ideal F = imap(save,F);  // maybe ideal F = R01(I); ?
    26492662  ideal K = imap(@R,K);    // maybe ideal K = R01(I); ?
    2650   poly f=1;
    2651   for (j=1; j<=P; j++)
    2652   {
    2653     f = f*F[j];
    2654   }
    2655   K = K,f;       // to compute B (Bernstein-Sato ideal)
     2663  if (met)
     2664  {
     2665    poly f=1;
     2666    for (j=1; j<=P; j++)
     2667    {
     2668      f = f*F[j];
     2669    }
     2670    K = K,f;       // to compute B (Bernstein-Sato ideal)
     2671    dbprint(ppl,"// -2-1-1 computing the ideal B from Castro-Ucha");
     2672  }
     2673  else
     2674  {
     2675  //K = K,F;     // to compute Bsigma (see "On the computation of Bernstein-Sato ideals"; Castro, Ucha)
     2676    K = K,F;
     2677    dbprint(ppl,"// -2-1-1 computing the ideal B-Sigma from Castro-Ucha");
     2678  }
    26562679  //j=2;         // for example
    26572680  //K = K,F[j];  // to compute Bj (see "On the computation of Bernstein-Sato ideals"; Castro, Ucha)
    2658   //K = K,F;     // to compute Bsigma (see "On the computation of Bernstein-Sato ideals"; Castro, Ucha)
    26592681  dbprint(ppl,"// -2-2- starting the elimination of _x,_Dx in @R2");
    26602682  dbprint(ppl-1, K);
     
    26682690  dbprint(ppl,"// -3-1- the ring @R3(_s) is ready");
    26692691  ideal K3 = imap(@R2,K2);
    2670   if (size(K3)==1)
     2692  if (ncols(K3)==1)
    26712693  {
    26722694    poly p = K3[1];
    2673     dbprint(ppl,"// -3-2- factorization");
     2695    dbprint(ppl,"// -3-2- the Bernstein ideal is principal");
     2696    dbprint(ppl,"// -3-2-1- factorization");
    26742697    // Warning: now P is an integer
    26752698    list Q = factorize(p);         //with constants and multiplicities
     
    26852708  else
    26862709  {
    2687     // conjecture: the Bernstein ideal is principal
     2710    // conjecture for some ideals: the Bernstein ideal is principal
    26882711    dbprint(ppl,"// -3-2- the Bernstein ideal is not principal");
    26892712    ideal BS = K3;
     
    27632786  ideal F = x,y,x+y;
    27642787  printlevel = 0;
    2765   def A = annfsBMI(F);
    2766   setring A;
    2767   LD;
    2768   BS;
     2788  def A = annfsBMI(F);    setring A;
     2789  LD; // annihilator
     2790  BS; // Bernstein-Sato ideal
     2791  // now, let us compute B-Sigma ideal
     2792  setring r;
     2793  def Sigma = annfsBMI(F,0,1); setring Sigma;
     2794  LD; // annihilator
     2795  BS; // Bernstein-Sato B-Sigma ideal
    27692796}
    27702797
     
    53505377PURPOSE: check whether M is holonomic over the base ring
    53515378NOTE:    M is holonomic if 2*dim(M) = dim(R), where R is the
    5352 base ring; dim stays for Gelfand-Kirillov dimension
     5379base ring; dim stands for Gelfand-Kirillov dimension
    53535380EXAMPLE: example isHolonomic; shows examples
    53545381"
Note: See TracChangeset for help on using the changeset viewer.