Changeset 5b5230 in git


Ignore:
Timestamp:
Jun 15, 2023, 1:50:54 PM (11 months ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'fieker-DuVal', '117eb8c30fc9e991c4decca4832b1d19036c4c65')(u'spielwiese', '38dfc5131670d387a89455159ed1e071997eec94')
Children:
5d764b3232c665055934cce11826c8e1df028996
Parents:
bcd0b0fbb1dce891d856e205334af7b30e1e3896
git-author:
Hans Schoenemann <hannes@mathematik.uni-kl.de>2023-06-15 13:50:54+02:00
git-committer:
Hans Schoenemann <hannes@mathematik.uni-kl.de>2023-06-15 13:51:33+02:00
Message:
add sheafCohBGGregul to sheafcoh.lib
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Singular/LIB/sheafcoh.lib

    rbcd0b0 r5b5230  
    11///////////////////////////////////////////////////////////////////////////
    2 version="version sheafcoh.lib 4.1.2.0 Feb_2019 "; // $Id$
     2version="version sheafcoh.lib 4.3.2.3 Jun_2023 "; // $Id$
    33category="Commutative Algebra";
    44info="
     
    1414 CM_regularity(M);       Castelnuovo-Mumford regularity of coker(M)
    1515 sheafCohBGG(M,l,h);     cohomology of sheaf associated to coker(M)
     16 sheafCohBGGregul(M,l,h,r); cohomology of sheaf associated to coker(M)
     17                          with given regularity
    1618 sheafCohBGG2(M,l,h);    cohomology of sheaf associated to coker(M), experimental version
    1719 sheafCoh(M,l,h);        cohomology of sheaf associated to coker(M)
     
    606608  attrib(M,"isHomog",v);
    607609  def B=sheafCohBGG(M,-8,4);
     610}
     611
     612proc sheafCohBGGregul(module M,int l,int h, int reg)
     613"USAGE:   sheafCohBGGregul(M,l,h);    M module, l,h int, reg int
     614ASSUME:  @code{M} is graded, and it comes assigned with an admissible degree
     615         vector as an attribute, @code{h>=l}, and the basering has @code{n+1}
     616         variables.
     617RETURN:  intmat, cohomology of twists of the coherent sheaf F on P^n
     618         associated to coker(M). The range of twists is determined by @code{l},
     619         @code{h}.
     620NOTE:    This procedure is based on the Bernstein-Gel'fand-Gel'fand
     621         correspondence and on Tate resolution ( see [Eisenbud, Floystad,
     622         Schreyer: Sheaf cohomology and free resolutions over exterior
     623         algebras, Trans AMS 355 (2003)] ).@*
     624         @code{sheafCohBGG(M,l,h)} does not compute all values in the above
     625         table. To determine all values of @code{h^i(F(d))}, @code{d=l..h},
     626         use @code{sheafCohBGG(M,l-n,h+n)}.
     627SEE ALSO: sheafCoh, dimH
     628EXAMPLE: example sheafCohBGGregul; shows an example
     629"
     630{
     631  int i,j,k,row,col;
     632  if( typeof(attrib(M,"isHomog"))!="intvec" )
     633  {
     634     if (size(M)==0) { attrib(M,"isHomog",0); }
     635     else { ERROR("No admissible degree vector assigned"); }
     636  }
     637  int n=nvars(basering)-1;
     638  int ell=l+n;
     639  def R=basering;
     640  int bound=max(reg+1,h-1);
     641  module MT=truncate(M,bound);
     642  int m=nrows(MT);
     643  MT=transpose(jacobM(MT));
     644  MT=syz(MT);
     645  matrix ML[n+1][1]=maxideal(1);
     646  matrix S=transpose(outer(ML,unitmat(m)));
     647  matrix SS=transpose(S*MT);
     648  //--- to the exterior algebra
     649  def AR = Exterior();
     650  setring AR;
     651  intvec saveopt=option(get);
     652  option(redSB);
     653  option(redTail);
     654  module EM=imap(R,SS);
     655  intvec w;
     656  //--- here we are with our matrix
     657  int bound1=max(1,bound-ell+1);
     658  for (i=1; i<=nrows(EM); i++)
     659  {
     660     w[i]=-bound-1;
     661  }
     662  attrib(EM,"isHomog",w);
     663  resolution RE=mres(EM,bound1);
     664  intmat Betti=betti(RE);
     665  k=ncols(Betti);
     666  row=nrows(Betti);
     667  int shift=attrib(Betti,"rowShift")+(k+ell-1);
     668  intmat newBetti[n+1][h-l+1];
     669  for (j=1; j<=row; j++)
     670  {
     671    for (i=l; i<=h; i++)
     672    {
     673      if ((k+1-j-i+ell-shift>0) and (j+i-ell+shift>=1))
     674      {
     675        newBetti[n+2-shift-j,i-l+1]=Betti[j,k+1-j-i+ell-shift];
     676      }
     677      else { newBetti[n+2-shift-j,i-l+1]=-1; }
     678    }
     679  }
     680  for (j=2; j<=n+1; j++)
     681  {
     682    for (i=1; i<j; i++)
     683    {
     684      newBetti[j,i]=-1;
     685    }
     686  }
     687  int d=k-h+ell-1;
     688  for (j=1; j<=n; j++)
     689  {
     690    for (i=h-l+1; i>=k+j; i--)
     691    {
     692      newBetti[j,i]=-1;
     693    }
     694  }
     695  //displayCohom(newBetti,l,h,n);
     696  option(set,saveopt);
     697  setring R;
     698  return(newBetti);
     699}
     700example
     701{"EXAMPLE:";
     702  echo = 2;
     703  // cohomology of structure sheaf on P^4:
     704  //-------------------------------------------
     705  ring r=0,x(1..5),dp;
     706  module M=0;
     707  def A=sheafCohBGGregul(M,-9,4,CM_regularity(M));
     708  A;
     709  // cohomology of cotangential bundle on P^3:
     710  //-------------------------------------------
     711  ring R=0,(x,y,z,u),dp;
     712  resolution T1=mres(maxideal(1),0);
     713  module M=T1[3];
     714  intvec v=2,2,2,2,2,2;
     715  attrib(M,"isHomog",v);
     716  def B=sheafCohBGGregul(M,-8,4,CM_regularity(M));
     717  B;
    608718}
    609719
Note: See TracChangeset for help on using the changeset viewer.