Changeset 3754ca in git for Singular/LIB/bfun.lib


Ignore:
Timestamp:
Apr 15, 2009, 1:28:08 PM (15 years ago)
Author:
Frank Seelisch <seelisch@…>
Branches:
(u'spielwiese', '17f1d200f27c5bd38f5dfc6e8a0879242279d1d8')
Children:
a6606e6cba9689ecbcc4e27ac00fb8c1deabd128
Parents:
40c648539a84cb2dc36e46b6b6c84deeb21e393b
Message:
minor textual changes prior to 3-1-0


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

Legend:

Unmodified
Added
Removed
  • Singular/LIB/bfun.lib

    r40c648 r3754ca  
    11//////////////////////////////////////////////////////////////////////////////
    2 version="$Id: bfun.lib,v 1.8 2009-04-14 12:00:13 Singular Exp $";
     2version="$Id: bfun.lib,v 1.9 2009-04-15 11:09:27 seelisch Exp $";
    33category="Noncommutative";
    44info="
     
    1010@*      one is interested in the global b-function (also known as Bernstein-Sato
    1111@*      polynomial) b(s) in K[s], defined to be the non-zero monic polynomial of minimal
    12 @*      degree, satisfying a functional identity L * F^{s+1} = b(s) F^s,
     12@*      degree, satisfying a functional identity L * F^{s+1} = b(s) F^s,   
    1313@*      for some operator L in D[s] (* stands for the action of differential operator)
    1414@*      By D one denotes the n-th Weyl algebra
     
    2121@*   There is a constructive definition of a b-function of a holonomic ideal I in D
    2222@*   (that is, an ideal I in a Weyl algebra D, such that D/I is holonomic module)
    23 @*   with respect to the given weight vector w: For a poly p in D, its initial
    24 @*   form w.r.t. (-w,w) is defined as the sum of all terms of p which have
     23@*   with respect to the given weight vector w: For a polynomial p in D, its initial
     24@*   form w.r.t. (-w,w) is defined as the sum of all terms of p which have 
    2525@*   maximal weighted total degree where the weight of x_i is -w_i and the weight
    26 @*   of d_i is w_i. Let J be the initial ideal of I w.r.t. (-w,w), i.e. the
     26@*   of d_i is w_i. Let J be the initial ideal of I w.r.t. (-w,w), i.e. the 
    2727@*   K-vector space generated by all initial forms w.r.t (-w,w) of elements of I.
    2828@*   Put s = w_1 x_1 d_1 + ... + w_n x_n d_n. Then the monic generator b_w(s) of
    29 @*   the intersection of J with the PID K[s] is called the b-function of I w.r.t.  w.
     29@*   the intersection of J with the PID K[s] is called the b-function of I w.r.t.  w. 
    3030@*   Unlike Bernstein-Sato polynomial, general b-function with respect to
    3131@*   arbitrary weights need not have rational roots at all. However, b-function
    3232@*  of a holonomic ideal is known to be non-zero as well.
    33 @*
    34 @*      References: [SST] Saito, Sturmfels, Takayama: Groebner Deformations of
     33@* 
     34@*      References: [SST] Saito, Sturmfels, Takayama: Groebner Deformations of 
    3535@*      Hypergeometric Differential Equations (2000),
    3636@*      Noro: An Efficient Modular Algorithm for Computing the Global b-function,
     
    4444bfctAnn(f[,s]);           compute the BS polynomial of f via Ann f^s + f
    4545bfctOneGB(f[,s,t]);     compute the BS polynomial of f by just one GB computation
    46 bfctIdeal(I,w[,s,t]);     compute the b-function of ideal wrt weight
    47 pIntersect(f,I[,s]);      intersection of ideal with subalgebra K[f] for a poly f
     46bfctIdeal(I,w[,s,t]);     compute the b-function of ideal w.r.t. weight
     47pIntersect(f,I[,s]);      intersection of ideal with subalgebra K[f] for a polynomial f
    4848pIntersectSyz(f,I[,p,s,t]); intersection of ideal with subalgebra K[f] with syz-solver
    49 linReduce(f,I[,s]);         reduce a poly by linear reductions wrt ideal
     49linReduce(f,I[,s]);         reduce a polynomial by linear reductions w.r.t. ideal
    5050linReduceIdeal(I,[s,t]);  interreduce generators of ideal by linear reductions
    5151linSyzSolve(I[,s]);         compute a linear dependency of elements of ideal I
     
    5353AUXILIARY PROCEDURES:
    5454
    55 allPositive(v);  checks whether all entries of an intvec are positive
     55allPositive(v);  checks whether all entries of an intvec are positive 
    5656scalarProd(v,w); computes the standard scalar product of two intvecs
    57 vec2poly(v[,i]); constructs an univariate poly with given coefficients
     57vec2poly(v[,i]); constructs an univariate polynomial with given coefficients
    5858
    5959SEE ALSO: dmod_lib, dmodapp_lib, gmssing_lib
     
    358358      for (i=1; i<=ncols(I); i++) { M[i] = gen(i);  }
    359359    }
    360   }
     360  } 
    361361  dbprint(ppl-1,"// initially sorted ideal:", I);
    362362  if (remembercoeffs <> 0) { dbprint(ppl-1,"// used permutations:", M); }
     
    468468"USAGE:  linReduce(f, I [,s,t,u]); f a poly, I an ideal, s,t,u optional ints
    469469RETURN:  poly or list, linear reductum (over field) of f by elements from I
    470 PURPOSE: reduce a poly only by linear reductions (no monomial multiplications)
    471 NOTE:    If s<>0, a list consisting of the reduced poly and the coefficient
     470PURPOSE: reduce a polynomial only by linear reductions (no monomial multiplications)
     471NOTE:    If s<>0, a list consisting of the reduced polynomial and the coefficient
    472472@*       vector of the used reductions is returned, otherwise (and by default)
    473 @*       only reduced poly is returned.
     473@*       only reduced polynomial is returned.
    474474@*       If t<>0 (and by default) all monomials are reduced (if possible),
    475475@*       otherwise, only leading monomials are reduced.
    476 @*       If u<>0 (and by default), the ideal is linearly pre-reduced, i.e.
     476@*       If u<>0 (and by default), the ideal is linearly pre-reduced, i.e. 
    477477@*       instead of the given ideal, the output of @code{linReduceIdeal} is used.
    478478@*       If u is set to 0 and the given ideal does not equal the output of
     
    918918NOTE:    If the intersection is zero, this procedure might not terminate.
    919919@*       If p>0 is given, this proc computes the generator of the intersection in
    920 @*       char p first and then only searches for a generator of the obtained
    921 @*       degree in the basering. Otherwise, it searches for all degrees by
     920@*       char p first and then only searches for a generator of the obtained 
     921@*       degree in the basering. Otherwise, it searches for all degrees by 
    922922@*       computing syzygies.
    923923@*       If s<>0, @code{std} is used for Groebner basis computations in char 0,
    924924@*       otherwise, and by default, @code{slimgb} is used.
    925 @*       If t<>0 and by default, @code{std} is used for Groebner basis
     925@*       If t<>0 and by default, @code{std} is used for Groebner basis 
    926926@*       computations in char >0, otherwise, @code{slimgb} is used.
    927927DISPLAY: If printlevel=1, progress debug messages will be printed,
     
    11311131  }
    11321132  dbprint(ppl,"// pIntersectSyz finished");
    1133   if (solveincharp) { short = shortSave; }
     1133  if (solveincharp) { short = shortSave; } 
    11341134  return(v);
    11351135}
     
    11501150proc vec2poly (list #)
    11511151"USAGE:  vec2poly(v [,i]);  v a vector or an intvec, i an optional int
    1152 RETURN:  poly, an univariate poly in i-th variable with coefficients given by v
    1153 PURPOSE: constructs an univariate poly in K[var(i)] with given coefficients,
     1152RETURN:  poly, an univariate polynomial in i-th variable with coefficients given by v
     1153PURPOSE: constructs an univariate polynomial in K[var(i)] with given coefficients,
    11541154@*       such that the coefficient at var(i)^{j-1} is v[j].
    11551155NOTE:    The optional argument i must be positive, by default i is 1.
     
    12351235  // the rest of this proc is nicked from bernsteinBM from dmod.lib
    12361236  list P = factorize(p);//with constants and multiplicities
    1237   ideal bs; intvec m;   //the BS poly is monic, so we are not interested in constants
     1237  ideal bs; intvec m;   //the BS polynomial is monic, so we are not interested in constants
    12381238  for (i=2; i<= size(P[1]); i++)  //we delete P[1][1] and P[2][1]
    12391239  {
     
    12721272  {
    12731273    return(list(ideal(0),intvec(0)));
    1274   }
     1274  } 
    12751275  if (inorann == 0) // bfct using initial ideal
    12761276  {
     
    13641364RETURN:  list of ideal and intvec
    13651365PURPOSE: computes the roots of the Bernstein-Sato polynomial b(s)
    1366 @*       for the hypersurface defined by f.
     1366@*       for the hypersurface defined by f. 
    13671367ASSUME:  The basering is commutative and of characteristic 0.
    13681368BACKGROUND: In this proc, the initial Malgrange ideal is computed according to
    13691369@*       the algorithm by Masayuki Noro and then a system of linear equations is
    13701370@*       solved by linear reductions.
    1371 NOTE:    In the output list, the ideal contains all the roots
     1371NOTE:    In the output list, the ideal contains all the roots 
    13721372@*       and the intvec their multiplicities.
    13731373@*       If s<>0, @code{std} is used for GB computations,
    1374 @*       otherwise, and by default, @code{slimgb} is used.
     1374@*       otherwise, and by default, @code{slimgb} is used. 
    13751375@*       If t<>0, a matrix ordering is used for Groebner basis computations,
    13761376@*       otherwise, and by default, a block ordering is used.
     
    14351435@*       the algorithm by Masayuki Noro and then a system of linear equations is
    14361436@*       solved by computing syzygies.
    1437 NOTE:    In the output list, the ideal contains all the roots and the intvec
     1437NOTE:    In the output list, the ideal contains all the roots and the intvec 
    14381438@*       their multiplicities.
    14391439@*       If r<>0, @code{std} is used for GB computations in characteristic 0,
     
    15171517"USAGE:  bfctIdeal(I,w[,s,t]);  I an ideal, w an intvec, s,t optional ints
    15181518RETURN:  list of ideal and intvec
    1519 PURPOSE: computes the roots of the global b-function of I wrt the weight (-w,w).
     1519PURPOSE: computes the roots of the global b-function of I w.r.t. the weight (-w,w).
    15201520ASSUME:  The basering is the n-th Weyl algebra in characteristic 0 and for all
    15211521@*       1<=i<=n the identity var(i+n)*var(i)=var(i)*var(i+1)+1 holds, i.e. the
    1522 @*       sequence of variables is given by x(1),...,x(n),D(1),...,D(n),
     1522@*       sequence of variables is given by x(1),...,x(n),D(1),...,D(n), 
    15231523@*       where D(i) is the differential operator belonging to x(i).
    15241524@*       Further we assume that I is holonomic.
     
    15331533@*  L[3] is 1 (for nonzero constant) or 0 (for zero b-function).
    15341534@*       If s<>0, @code{std} is used for GB computations in characteristic 0,
    1535 @*       otherwise, and by default, @code{slimgb} is used.
     1535@*       otherwise, and by default, @code{slimgb} is used. 
    15361536@*       If t<>0, a matrix ordering is used for GB computations, otherwise,
    15371537@*       and by default, a block ordering is used.
     
    16221622@*       their multiplicities.
    16231623@*       If s<>0, @code{std} is used for the GB computation, otherwise,
    1624 @*       and by default, @code{slimgb} is used.
     1624@*       and by default, @code{slimgb} is used. 
    16251625@*       If t<>0, a matrix ordering is used for GB computations,
    16261626@*       otherwise, and by default, a block ordering is used.
     
    16341634  def save = basering;
    16351635  int n = nvars(save);
    1636   if (char(save) <> 0)
     1636  if (char(save) <> 0) 
    16371637  {
    16381638    ERROR("characteristic of basering has to be 0");
     
    16711671  // create names for vars
    16721672  list Lvar;
    1673   Lvar[1]   = safeVarName("t");
     1673  Lvar[1]   = safeVarName("t"); 
    16741674  Lvar[2]   = safeVarName("s");
    16751675  Lvar[n+3] = safeVarName("D"+Lvar[1]);
     
    16841684  intvec @a = 1:N; @a[2] = 2;
    16851685  intvec @a2 = @a; @a2[2] = 0; @a2[2*n+4] = 0;
    1686   list Lord;
     1686  list Lord; 
    16871687  Lord[1] = list("a",@a); Lord[2] = list("a",@a2);
    16881688  if (methodord == 0) // default: block ordering
     
    17821782@*       their multiplicities.
    17831783@*       If r<>0, @code{std} is used for GB computations,
    1784 @*       otherwise, and by default, @code{slimgb} is used.
     1784@*       otherwise, and by default, @code{slimgb} is used. 
    17851785DISPLAY: If printlevel=1, progress debug messages will be printed,
    17861786@*       if printlevel>=2, all the debug messages will be printed.
Note: See TracChangeset for help on using the changeset viewer.