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

Diff for /OpenXM/src/k097/lib/minimal/minimal.k between version 1.14 and 1.17

version 1.14, 2000/06/09 08:04:54 version 1.17, 2000/07/26 12:56:36
Line 1 
Line 1 
 /* $OpenXM: OpenXM/src/k097/lib/minimal/minimal.k,v 1.13 2000/06/08 08:37:53 takayama Exp $ */  /* $OpenXM: OpenXM/src/k097/lib/minimal/minimal.k,v 1.16 2000/06/15 07:38:36 takayama Exp $ */
 #define DEBUG 1  #define DEBUG 1
 /* #define ORDINARY 1 */  /* #define ORDINARY 1 */
 /* If you run this program on openxm version 1.1.2 (FreeBSD),  /* If you run this program on openxm version 1.1.2 (FreeBSD),
Line 137  sm1(" [(AvoidTheSameRing)] pushEnv 
Line 137  sm1(" [(AvoidTheSameRing)] pushEnv 
   
 def SresolutionFrameWithTower(g,opt) {  def SresolutionFrameWithTower(g,opt) {
   local gbTower, ans, ff, count, startingGB, opts, skelton,withSkel, autof,    local gbTower, ans, ff, count, startingGB, opts, skelton,withSkel, autof,
         gbasis;          gbasis, nohomog;
     nohomog = false;
     count = -1;
   if (Length(Arglist) >= 2) {    if (Length(Arglist) >= 2) {
     if (IsInteger(opt)) count = opt;      if (IsInteger(opt)) {
         count = opt;
       }else if (IsString(opt)) {
         if (opt == "homogenized") {
            nohomog = true;
         }else{
            Println("Warning: unknown option");
            Println(opt);
         }
       }
   }else{    }else{
     count = -1;      count = -1;
   }    }
Line 153  def SresolutionFrameWithTower(g,opt) {
Line 164  def SresolutionFrameWithTower(g,opt) {
   */    */
   
   sm1(" (mmLarger) (matrix) switch_function ");    sm1(" (mmLarger) (matrix) switch_function ");
   g = Map(g,"Shomogenize");    if (! nohomog) {
       Println("Automatic homogenization.");
       g = Map(g,"Shomogenize");
     }else{
       Println("No automatic homogenization.");
     }
   if (SonAutoReduce) {    if (SonAutoReduce) {
     sm1("[ (AutoReduce) ] system_variable /autof set ");      sm1("[ (AutoReduce) ] system_variable /autof set ");
     sm1("[ (AutoReduce) 1 ] system_variable ");      sm1("[ (AutoReduce) 1 ] system_variable ");
Line 193  def SresolutionFrameWithTower(g,opt) {
Line 209  def SresolutionFrameWithTower(g,opt) {
 }  }
 HelpAdd(["SresolutionFrameWithTower",  HelpAdd(["SresolutionFrameWithTower",
 ["It returs [resolution of the initial, gbTower, skelton, gbasis]",  ["It returs [resolution of the initial, gbTower, skelton, gbasis]",
    "option: \"homogenized\" (no automatic homogenization) ",
  "Example: Sweyl(\"x,y\");",   "Example: Sweyl(\"x,y\");",
  "         a=SresolutionFrameWithTower([x^3,x*y,y^3-1]);"]]);   "         a=SresolutionFrameWithTower([x^3,x*y,y^3-1]);"]]);
   
 def SresolutionFrame(f,opt) {  def SresolutionFrame(f,opt) {
   local ans;    local ans;
   ans = SresolutionFrameWithTower(f);    ans = SresolutionFrameWithTower(f,opt);
   return(ans[0]);    return(ans[0]);
 }  }
 /* ---------------------------- */  /* ---------------------------- */
Line 363  def Sdegree(f,tower,level) {
Line 380  def Sdegree(f,tower,level) {
   
 def SgenerateTable(tower) {  def SgenerateTable(tower) {
   local height, n,i,j, ans, ans_at_each_floor;    local height, n,i,j, ans, ans_at_each_floor;
   
     /*
     Print("SgenerateTable: tower=");Println(tower);
     sm1(" print_switch_status "); */
   height = Length(tower);    height = Length(tower);
   ans = NewArray(height);    ans = NewArray(height);
   for (i=0; i<height; i++) {    for (i=0; i<height; i++) {
Line 438  def SmaxOfStrategy(a) {
Line 459  def SmaxOfStrategy(a) {
 }  }
   
   
 def SlaScala(g) {  def SlaScala(g,opt) {
   local rf, tower, reductionTable, skel, redundantTable, bases,    local rf, tower, reductionTable, skel, redundantTable, bases,
         strategy, maxOfStrategy, height, level, n, i,          strategy, maxOfStrategy, height, level, n, i,
         freeRes,place, f, reducer,pos, redundant_seq,bettiTable,freeResV,ww,          freeRes,place, f, reducer,pos, redundant_seq,bettiTable,freeResV,ww,
Line 447  def SlaScala(g) {
Line 468  def SlaScala(g) {
   /* extern WeightOfSweyl; */    /* extern WeightOfSweyl; */
   ww = WeightOfSweyl;    ww = WeightOfSweyl;
   Print("WeightOfSweyl="); Println(WeightOfSweyl);    Print("WeightOfSweyl="); Println(WeightOfSweyl);
   rf = SresolutionFrameWithTower(g);    rf = SresolutionFrameWithTower(g,opt);
   Print("rf="); sm1_pmat(rf);    Print("rf="); sm1_pmat(rf);
   redundant_seq = 1;   redundant_seq_ordinary = 1;    redundant_seq = 1;   redundant_seq_ordinary = 1;
   tower = rf[1];    tower = rf[1];
   
     Println("Generating reduction table which gives an order of reduction.");
     Print("WeghtOfSweyl="); Println(WeightOfSweyl);
     Print("tower"); Println(tower);
   reductionTable = SgenerateTable(tower);    reductionTable = SgenerateTable(tower);
     Print("reductionTable="); sm1_pmat(reductionTable);
   
   skel = rf[2];    skel = rf[2];
   redundantTable = SnewArrayOfFormat(rf[1]);    redundantTable = SnewArrayOfFormat(rf[1]);
   redundantTable_ordinary = SnewArrayOfFormat(rf[1]);    redundantTable_ordinary = SnewArrayOfFormat(rf[1]);
Line 472  def SlaScala(g) {
Line 499  def SlaScala(g) {
         Println([level,i]);          Println([level,i]);
         reductionTable_tmp[i] = -200000;          reductionTable_tmp[i] = -200000;
         if (reductionTable[level,i] == strategy) {          if (reductionTable[level,i] == strategy) {
            Print("Processing "); Print([level,i]);             Print("Processing [level,i]= "); Print([level,i]);
            Print("   Strategy = "); Println(strategy);             Print("   Strategy = "); Println(strategy);
            if (level == 0) {             if (level == 0) {
              if (IsNull(redundantTable[level,i])) {               if (IsNull(redundantTable[level,i])) {
Line 540  def SlaScala(g) {
Line 567  def SlaScala(g) {
     bases = Sbases_to_vec(bases,bettiTable[i]);      bases = Sbases_to_vec(bases,bettiTable[i]);
     freeResV[i] = bases;      freeResV[i] = bases;
   }    }
   return([freeResV, redundantTable,reducer,bettiTable,redundantTable_ordinary]);    return([freeResV, redundantTable,reducer,bettiTable,redundantTable_ordinary,rf]);
 }  }
   
 def SthereIs(reductionTable_tmp,strategy) {  def SthereIs(reductionTable_tmp,strategy) {
Line 862  def Sbases_to_vec(bases,size) {
Line 889  def Sbases_to_vec(bases,size) {
   
 HelpAdd(["Sminimal",  HelpAdd(["Sminimal",
 ["It constructs the V-minimal free resolution by LaScala-Stillman's algorithm",  ["It constructs the V-minimal free resolution by LaScala-Stillman's algorithm",
    "option: \"homogenized\" (no automatic homogenization ",
  "Example:  Sweyl(\"x,y\",[[\"x\",-1,\"y\",-1,\"Dx\",1,\"Dy\",1]]);",   "Example:  Sweyl(\"x,y\",[[\"x\",-1,\"y\",-1,\"Dx\",1,\"Dy\",1]]);",
  "          v=[[2*x*Dx + 3*y*Dy+6, 0],",   "          v=[[2*x*Dx + 3*y*Dy+6, 0],",
  "             [3*x^2*Dy + 2*y*Dx, 0],",   "             [3*x^2*Dy + 2*y*Dx, 0],",
Line 873  HelpAdd(["Sminimal",
Line 901  HelpAdd(["Sminimal",
  "         IsExact_h(b,[x,y]):",   "         IsExact_h(b,[x,y]):",
  "Note:  a[0] is the V-minimal resolution. a[3] is the Schreyer resolution."]]);   "Note:  a[0] is the V-minimal resolution. a[3] is the Schreyer resolution."]]);
   
 def Sminimal(g) {  def Sminimal(g,opt) {
   local r, freeRes, redundantTable, reducer, maxLevel,    local r, freeRes, redundantTable, reducer, maxLevel,
         minRes, seq, maxSeq, level, betti, q, bases, dr,          minRes, seq, maxSeq, level, betti, q, bases, dr,
         betti_levelplus, newbases, i, j,qq, tminRes;          betti_levelplus, newbases, i, j,qq, tminRes;
   r = SlaScala(g);    if (Length(Arglist) < 2) {
        opt = null;
     }
     ScheckIfSchreyer("Sminimal:0");
     r = SlaScala(g,opt);
   /* Should I turn off the tower?? */    /* Should I turn off the tower?? */
     ScheckIfSchreyer("Sminimal:1");
   freeRes = r[0];    freeRes = r[0];
   redundantTable = r[1];    redundantTable = r[1];
   reducer = r[2];    reducer = r[2];
Line 936  def Sminimal(g) {
Line 969  def Sminimal(g) {
    }     }
    tminRes = Stetris(minRes,redundantTable);     tminRes = Stetris(minRes,redundantTable);
    return([SpruneZeroRow(tminRes), tminRes,     return([SpruneZeroRow(tminRes), tminRes,
           [ minRes, redundantTable, reducer,r[3],r[4]],r[0]]);            [ minRes, redundantTable, reducer,r[3],r[4]],r[0],r[5]]);
   /* r[4] is the redundantTable_ordinary */    /* r[4] is the redundantTable_ordinary */
   /* r[0] is the freeResolution */    /* r[0] is the freeResolution */
     /* r[5] is the skelton */
 }  }
   
   
Line 1167  def Sschreyer(g) {
Line 1201  def Sschreyer(g) {
   rf = SresolutionFrameWithTower(g);    rf = SresolutionFrameWithTower(g);
   redundant_seq = 1;   redundant_seq_ordinary = 1;    redundant_seq = 1;   redundant_seq_ordinary = 1;
   tower = rf[1];    tower = rf[1];
     Println("Generating reduction table which gives an order of reduction.");
     Println("But, you are in Sschreyer...., you may not use LaScala-Stillman");
     Print("WeghtOfSweyl="); Println(WeightOfSweyl);
     Print("tower"); Println(tower);
   reductionTable = SgenerateTable(tower);    reductionTable = SgenerateTable(tower);
   skel = rf[2];    skel = rf[2];
   redundantTable = SnewArrayOfFormat(rf[1]);    redundantTable = SnewArrayOfFormat(rf[1]);
Line 1730  HelpAdd(["ReParse",
Line 1768  HelpAdd(["ReParse",
  "In this case, ReParse the outputs from these functions.",   "In this case, ReParse the outputs from these functions.",
  "cf. IsExaxt_h"   "cf. IsExaxt_h"
 ]]);  ]]);
   
   def ScheckIfSchreyer(s) {
     local ss;
     sm1(" (report) (grade) switch_function /ss set ");
     if (ss != "module1v") {
        Print("ScheckIfSchreyer: from "); Println(s);
        Error("grade is not module1v");
     }
     /*
     sm1(" (report) (mmLarger) switch_function /ss set ");
     if (ss != "tower") {
        Print("ScheckIfSchreyer: from "); Println(s);
        Error("mmLarger is not tower");
     }
     */
     sm1(" [(Schreyer)] system_variable (universalNumber) dc /ss set ");
     if (ss != 1) {
        Print("ScheckIfSchreyer: from "); Println(s);
        Error("Schreyer order is not set.");
     }
     /* More check will be necessary. */
     return(true);
   }
   

Legend:
Removed from v.1.14  
changed lines
  Added in v.1.17

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