[BACK]Return to toric0.k.19970310 CVS log [TXT][DIR] Up to [local] / OpenXM / src / k097 / debug / Old

Annotation of OpenXM/src/k097/debug/Old/toric0.k.19970310, Revision 1.1

1.1     ! maekawa     1:
        !             2: /* SSWork/yacc/ip-k/ex3.ccc,   1996, 8/12. This is original. ---> */
        !             3: /*             debug/toric0.k */
        !             4:
        !             5: /* load("debug/db.ccc");
        !             6: load("help.ccc"); */
        !             7:
        !             8: def ringd() {
        !             9:  R = RingD("s,t,a,b,c,d,b1,b2",
        !            10:       [["s",1,"t",1],["a",100,"b",10,"c",1,"d",150]]);
        !            11:  /* 定義をやりなおすと別の ring になるよ。
        !            12:                                      これは要注意。 */
        !            13:  SetRingVariables();
        !            14:  myinput = [ a - s, b - s*t , c - s*t^2, d - s*t^4 ];
        !            15: }
        !            16: Println("Type in ringd(); to define the ring.");
        !            17: Println("Type in toric(myinput) to get the toric ideal.");
        !            18:
        !            19: sm1(" /mydegree {2 1 roll degree} def ");
        !            20: def expvec(f) {
        !            21:   local vars,n,i,ans;
        !            22:   vars = [a,b,c,d,Da,Db,Dc,Dd]; /* change here. */
        !            23:   if (f == Poly("0")) return([ ] );
        !            24:   sm1(f," /ff.tmp set ", vars ,
        !            25:         " { ff.tmp mydegree (universalNumber) dc } map /FunctionValue set ");
        !            26: }
        !            27:
        !            28: def in_w(f) {
        !            29:   local w,top,ans,wtop;
        !            30:   weight = [-100,-10,-1,0,100,10,1,0]; /* change here. */
        !            31:   if (f == Poly("0")) return( Poly("0") );
        !            32:   top = sm1(f, " init ");
        !            33:   w = expvec(top) * weight ;
        !            34:   wtop = w;
        !            35:   ans = top;
        !            36:   f = f-top;
        !            37:   while(true) {
        !            38:     if ( f == Poly("0")) sm1("exit");
        !            39:     top = sm1(f, " init ");
        !            40:     w = expvec(top) * weight ;
        !            41:     if (w < wtop) sm1(" exit ");
        !            42:     ans = ans + top;
        !            43:     f = f-top;
        !            44:     /* Println(ans); */
        !            45:   }
        !            46:   return(ans);
        !            47: }
        !            48:
        !            49: def toric(input) {
        !            50:   local ans ,ans2;
        !            51:   ans = Replace(Groebner(input),[[h,Poly("1")]]);
        !            52:   ans2 = sm1( ans, " [(s) (t)] eliminatev ");
        !            53:   return(ans2);
        !            54: }
        !            55:
        !            56:
        !            57:
        !            58: def ringd1() {
        !            59:  local weight,ans;
        !            60:  weight = ["a",100,"b",10,"c",1,"d",150];
        !            61:  R = RingD("s,t,a,b,c,d,b1,b2",
        !            62:       [["s",1,"t",1],weight]);
        !            63:  SetRingVariables();
        !            64:  Print("Weight="); Println(weight);
        !            65:  myinput = [ a - s, b - s*t , c - s*t^2, d - s*t^4 ];
        !            66:  ans = toric(myinput);
        !            67:  Println(ans);
        !            68:  return(ans);
        !            69: }
        !            70:
        !            71: def void ringd2() {
        !            72:  local weight;
        !            73:  weight = ["a",1,"b",15,"c",1,"d",4];
        !            74:  R = RingD("s,t,a,b,c,d,b1,b2",
        !            75:       [["s",1,"t",1],weight]);
        !            76:  SetRingVariables();
        !            77:  Print("Weight="); Println(weight);
        !            78:  myinput = [ a - s, b - s*t , c - s*t^2, d - s*t^4 ];
        !            79:  Println(toric(myinput));
        !            80: }
        !            81:
        !            82: /* This is used to find a bug */
        !            83: def void ringd3() {
        !            84:  local weight;
        !            85:  weight = ["a",1,"b",15,"c",1,"d",4];
        !            86:  R = RingD("s,t,a,b,c,d,b1,b2",
        !            87:       [["s",1,"t",1],weight]);
        !            88:  SetRingVariables();
        !            89:  /* Print("Weight="); Println(weight);
        !            90:  myinput = [ a - s, b - s*t , c - s*t^2, d - s*t^4 ]; */
        !            91:  /* Println(toric(myinput)); */
        !            92: }
        !            93:
        !            94: def MinimalBase(base) {
        !            95:   sm1( base, " minimalBase /FunctionValue set ");
        !            96: }
        !            97: HelpAdd(["MinimalBase",
        !            98:  ["MinimalBase[base] prunes redundant elements in the Grobner basis <<base>>."
        !            99: ]]);
        !           100:
        !           101:
        !           102: def IndexedVariables(name,size) {
        !           103:   local result,i,result2;
        !           104:   result = [ ];
        !           105:   for (i=0; i<size-1; i++) {
        !           106:     result = Append(result,Indexed(name,i));
        !           107:     result = Append(result,",");
        !           108:   }
        !           109:   if (size-1 >= 0) {
        !           110:     result = Append(result,Indexed(name,size-1));
        !           111:   }
        !           112:   result2 = Join(["{"],result);
        !           113:   result2 = Join(result2,["}"]);
        !           114:   return(AddString(result2));
        !           115: }
        !           116: HelpAdd(["IndexedVariables",
        !           117: ["IndexedVariables(name,size) returns the string ",
        !           118:  " {name[0],name[1],...,name[size-1]} which can be used as inputs to ",
        !           119:  " the function RingD  (string name, integer size).",
        !           120:  " Ex. R = RingD(IndexedVariables(\"a\",3)); ",
        !           121:  "     h = Poly(\"h\");",
        !           122:  "     a = NewArray(3);",
        !           123:  "     for (i=0; i<3; i++) {a[i] = Poly(Indexed(\"a\",i));} ;"]]);
        !           124:
        !           125:
        !           126: def IndexedRingD(vList, size, weightMatrix) {
        !           127:   local myring,tmp,k00_i,argsize,vListD;
        !           128:   /* You cannot use these local varialbes as a name of global ring
        !           129:      variables. Change these names to names that start with k00_ */
        !           130:   argsize = Length(Arglist);
        !           131:   if (argsize == 1) {
        !           132:     Println("Error (IndexedRingD): ");
        !           133:     return(null);
        !           134:   }
        !           135:   if (argsize == 2) {
        !           136:     vListD = AddString(["D",vList]);
        !           137:     myring = RingD(IndexedVariables(vList,size));
        !           138:     SetRingVariables();
        !           139:     tmp = NewArray(size);
        !           140:     for (k00_i=0; k00_i<size; k00_i++) {tmp[k00_i]=Poly(Indexed(vList,k00_i));}
        !           141:     sm1(vList, " (literal) dc ", tmp, " def ");
        !           142:     tmp = NewArray(size);
        !           143:     for (k00_i=0; k00_i<size; k00_i++) {tmp[k00_i]=Poly(Indexed(vListD,k00_i));}
        !           144:     sm1(vListD, " (literal) dc ", tmp, " def ");
        !           145:     Print("Set the global variables ");
        !           146:     sm1("[(parse) ",vList," ] extension pop print ");
        !           147:     sm1("[(parse) ",vListD," ] extension pop print "); Ln();
        !           148:     return( myring );
        !           149:   }
        !           150:   if (argsize == 3) {
        !           151:    vListD = AddString(["D",vList]);
        !           152:     myring = RingD(IndexedVariables(vList,size),weightMatrix);
        !           153:     SetRingVariables();
        !           154:     tmp = NewArray(size);
        !           155:     for (k00_i=0;k00_i<size; k00_i++) {tmp[k00_i]=Poly(Indexed(vList,k00_i));}
        !           156:     sm1(vList, " (literal) dc ", tmp, " def ");
        !           157:     tmp = NewArray(size);
        !           158:     for (k00_i=0;k00_i<size; k00_i++) {tmp[k00_i]=Poly(Indexed(vListD,k00_i));}
        !           159:     sm1(vListD, " (literal) dc ", tmp, " def ");
        !           160:     Print("Set the global variables ");
        !           161:     sm1("[(parse) ",vList," ] extension pop print ");
        !           162:     sm1("[(parse) ",vListD," ] extension pop print "); Ln();
        !           163:     return( myring );
        !           164:   }
        !           165:   return(-1);
        !           166: }
        !           167:
        !           168:
        !           169:
        !           170: def void foo() {
        !           171:   Println("IndexedVariables:");
        !           172:   Println(IndexedVariables("xyz",5));
        !           173: }
        !           174:
        !           175:
        !           176:

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