[BACK]Return to restriction.k CVS log [TXT][DIR] Up to [local] / OpenXM / src / k097 / lib / restriction

Diff for /OpenXM/src/k097/lib/restriction/restriction.k between version 1.1 and 1.4

version 1.1, 2000/12/10 10:04:04 version 1.4, 2013/01/26 10:59:48
Line 1 
Line 1 
 /*  $OpenXM$ */  /*  $OpenXM: OpenXM/src/k097/lib/restriction/restriction.k,v 1.3 2013/01/26 03:21:52 takayama Exp $ */
 load["lib/minimal/minimal-test.k"];;  load["lib/minimal/minimal-test.k"];;
 Load_sm1(["Srestall_s.sm1","lib/restriction/Srestall_s.sm1"],"Srestall_s.sm1.loaded");  Load_sm1(["Srestall_s.sm1","lib/restriction/Srestall_s.sm1"],"Srestall_s.sm1.loaded");
   
 def Srestall(gg,ttxx,tt,k1) {  def Srestall(gg,ttxx,tt,k1) {
   local cohom, gg, ttxx, tt, k1, cohom0, cohomd,ans;    local cohom, gg, ttxx, tt, k1, cohom0, cohomd,ans;
   sm1("gg dehomogenize /gg set");    sm1("gg univ2poly dehomogenize /gg set");
   gg = ToString_array(gg);    gg = ToString_array(gg);
   sm1(" [(x) ring_of_differential_operators [[(x) 1]] weight_vector 0] define_ring ]");    sm1(" [(x) ring_of_differential_operators [[(x) 1]] weight_vector 0] define_ring ]");
   sm1("[(Homogenize_vec) 1] system_variable");    sm1("[(Homogenize_vec) 1] system_variable");
Line 108  def nonquasi(p,q) {
Line 108  def nonquasi(p,q) {
   return(Ans);    return(Ans);
 }  }
   
   /* should be moved to slib.k */
   def UseSmallD() {
     sm1("[(Strict)] system_variable /aaa.strict set ");
     sm1("[(Strict) 0] system_variable ");
     /* kan96xx/Doc/callsm1.sm1 */
     sm1("/@@@.Dsymbol (d) def /aaaDsymbol (d) def ");
     sm1("/@@@.Esymbol (ee0) def ");
     sm1("/@@@.Hsymbol (hh) def ");
     sm1("[(Strict) aaa.strict] system_variable ");
   }
   HelpAdd(["UseSmallD",
   [ "UseSmallD() changes the Dsymbol to d and E,H symbols to ee0,hh",
     "@@@.Dsymbol can be refered by aaaDsymbol."
   ]]);
   
   def t_addD(v) {
     sm1(" /aaaDsymbol @@@.Dsymbol def ");
     return(AddString([aaaDsymbol,ToString(v)])); /* add x->Dx */
   }
   def Sintegration(gg,v,intv) {
     local i,vstr,n,dv,wv,vall;
     II=Map(gg,"ToString");
     v = Map(v,"ToString");
     intv = Map(intv,"ToString");
     vstr=" "; n=Length(v);
     for (i=0; i<n-1; i++) {
       vstr=AddString([vstr,v[i],","]);
     }
     vstr=AddString([vstr,v[n-1]]);
     dv=Map(v,"t_addD");
     wv=[ ];
     for (i=0; i<n; i++) { wv = Join(wv,[v[i],-1]); }
     for (i=0; i<n; i++) { wv = Join(wv,[dv[i],1]); }
     /* Sweyl("x,y",[["x",-1,"y",-1,"Dx",1,"Dy",1]]); */
     Sweyl(vstr,[wv]);
     II=Map(II,"Poly");
     /* sm1(" II 0 get { [(x) (y) (Dx) (Dy) ] laplace0 } map /II set "); */
     vall = Join(v,dv);
     sm1(" II { vall laplace0 } map /II set ");
     pp = Map(II,"Spoly");
     Println("Step1: Laplace transform "); Println(pp);
     Res = Sminimal(pp);
     Res0 = Res[0];
     Println("Step2: (-1,1)-minimal resolution (Res0) "); sm1_pmat(Res0);
     /* R = BfRoots1(Res0[0],"x,y"); */
     R = BfRoots1(Res0[0],vstr);
     Println("Step3: computing the cohomology of the truncated complex.");
     Print("Roots and b-function are "); Println(R);
     R0 = R[0];
     /* Ans=Srestall(Res0, ["x", "y"], ["x", "y"],R0[Length(R0)-1]); */
     Ans=Srestall(Res0, v, intv,R0[Length(R0)-1]);
     Print("Answer is "); Println(Ans[0]);
     return(Ans);
   }
   HelpAdd(["Sintegration",
   [ "Sintegration(gg,v,intv) evaluates the dimensions of all integrations of",
     "gg along the list of variables intv. Here, v is a list of variables.",
     "Interation variables intv must be in the first part of v.",
     "Sintegration uses the function Srestall.",
     "Example: RingD(\"x,t\"); Sintegration([Dt-(3*t^2-x),Dx+t],[t,x],[t]):"
   ]]);

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.4

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>