Annotation of OpenXM/src/asir-contrib/packages/doc/sm1/sm1.oxw, Revision 1.1
1.1 ! takayama 1: /*$OpenXM$ */
! 2:
! 3: /*&C
! 4: @c DO NOT EDIT THIS FILE
! 5: */
! 6: /*&C
! 7: @node SM1 Functions,,, Top
! 8:
! 9: */
! 10: /*&ja
! 11: @chapter SM1 $BH!?t(B
! 12:
! 13: $B$3$N@a$G$O(B sm1 $B$N(B ox $B%5!<%P(B @code{ox_sm1_forAsir}
! 14: $B$H$N%$%s%?%U%'!<%94X?t$r2r@b$9$k(B.
! 15: $B$3$l$i$N4X?t$O%U%!%$%k(B @file{sm1.rr} $B$GDj5A$5$l$F$$$k(B.
! 16: @file{sm1.rr} $B$O(B @file{$(OpenXM_HOME)/lib/asir-contrib} $B$K$"$k(B.
! 17: $B%7%9%F%`(B @code{sm1} $B$OHyJ,:nMQAG4D$G7W;;$9$k$?$a$N%7%9%F%`$G$"$k(B.
! 18: $B7W;;Be?t4v2?$N$$$m$$$m$JITJQNL$N7W;;$,HyJ,:nMQAG$N7W;;$K5"Ce$9$k(B.
! 19: @code{sm1} $B$K$D$$$F$NJ8=q$O(B @code{OpenXM/doc/kan96xx} $B$K$"$k(B.
! 20:
! 21: $B$H$3$KCG$j$,$J$$$+$.$j$3$N@a$N$9$Y$F$N4X?t$O(B,
! 22: $BM-M}?t78?t$N<0$rF~NO$H$7$F$&$1$D$1$J$$(B.
! 23: $B$9$Y$F$NB?9`<0$N78?t$O@0?t$G$J$$$H$$$1$J$$(B.
! 24:
! 25: @tex
! 26: $B6u4V(B
! 27: $X:={\bf C} \setminus \{ 0, 1 \} = {\bf C} \setminus V(x(x-1))$
! 28: $B$N%I%i!<%`%3%[%b%m%872C#$N<!85$r7W;;$7$F$_$h$&(B.
! 29: $X$ $B$OJ?LL$KFs$D$N7j$r$"$1$?6u4V$G$"$k$N$G(B, $BE@(B $x=0$, $x=1$ $B$N$^$o$j$r(B
! 30: $B$^$o$kFs$D$N%k!<%W$,(B1$B<!85$N%[%b%m%8!<72$N6u4V$r$O$k(B.
! 31: $B$7$?$,$C$F(B, 1$B<!85%I%i!<%`%3%[%b%m%872$N<!85$O(B $2$ $B$G$"$k(B.
! 32: @code{sm1} $B$O(B $0$ $B<!85$N%3%[%b%m%872$N<!85$*$h$S(B $1$ $B<!85$N%3%[%b%m%872$N(B
! 33: $B<!85$rEz$($k(B.
! 34: @end tex
! 35: */
! 36: /*&en
! 37: @chapter SM1 Functions
! 38:
! 39: This chapter describes interface functions for
! 40: sm1 ox server @code{ox_sm1_forAsir}.
! 41: These interface functions are defined in the file @file{sm1.rr}.
! 42: The file @file{sm1.rr} is @*
! 43: at @file{$(OpenXM_HOME)/lib/asir/contrib-packages}.
! 44: The system @code{sm1} is a system to compute in the ring of differential
! 45: operators.
! 46: Many constructions of invariants
! 47: in the computational algebraic geometry reduce
! 48: to constructions in the ring of differential operators.
! 49: Documents on @code{sm1} are in
! 50: the directory @code{OpenXM/doc/kan96xx}.
! 51:
! 52: All the coefficients of input polynomials should be
! 53: integers for most functions in this section.
! 54: Other functions accept rational numbers as inputs
! 55: and it will be explicitely noted in each explanation
! 56: of these functions.
! 57:
! 58:
! 59:
! 60: @tex
! 61: Let us evaluate the dimensions of the de Rham cohomology groups
! 62: of
! 63: $X:={\bf C} \setminus \{ 0, 1 \} = {\bf C} \setminus V(x(x-1))$.
! 64: The space $X$ is a two punctured plane, so two loops that encircles the
! 65: points $x=0$ and $x=1$ respectively spans the first homology group.
! 66: Hence, the dimension of the first de Rham cohomology group is $2$.
! 67: @code{sm1} answers the dimensions of the 0th and the first
! 68: cohomology groups.
! 69: @end tex
! 70: */
! 71: /*&C
! 72: @example
! 73:
! 74: [283] sm1.deRham([x*(x-1),[x]]);
! 75: [1,2]
! 76: @end example
! 77: */
! 78: /*&C
! 79: @noindent
! 80: The author of @code{sm1} : Nobuki Takayama, @code{takayama@@math.sci.kobe-u.ac.jp} @*
! 81: The author of sm1 packages : Toshinori Oaku, @code{oaku@@twcu.ac.jp} @*
! 82: Reference: [SST] Saito, M., Sturmfels, B., Takayama, N.,
! 83: Grobner Deformations of Hypergeometric Differential Equations,
! 84: 1999, Springer.
! 85: @url{http://www.math.kobe-u.ac.jp/KAN}
! 86: */
! 87:
! 88: /*&C
! 89: @menu
! 90: * ox_sm1_forAsir::
! 91: * sm1.start::
! 92: * sm1.sm1::
! 93: * sm1.push_int0::
! 94: * sm1.gb::
! 95: * sm1.deRham::
! 96: * sm1.hilbert::
! 97: * sm1.genericAnn::
! 98: * sm1.wTensor0::
! 99: * sm1.reduction::
! 100: * sm1.xml_tree_to_prefix_string::
! 101: * sm1.syz::
! 102: * sm1.mul::
! 103: * sm1.distraction::
! 104: * sm1.gkz::
! 105: * sm1.appell1::
! 106: * sm1.appell4::
! 107: * sm1.rank::
! 108: * sm1.auto_reduce::
! 109: * sm1.slope::
! 110: * sm1.ahg::
! 111: * sm1.bfunction::
! 112: * sm1.generalized_bfunction::
! 113: * sm1.restriction::
! 114: * sm1.saturation::
! 115: @end menu
! 116: */
! 117:
! 118: /*&ja
! 119: @section @code{ox_sm1_forAsir} $B%5!<%P(B
! 120: */
! 121: /*&en
! 122: @section @code{ox_sm1_forAsir} Server
! 123: */
! 124:
! 125: /*&en
! 126: @node ox_sm1_forAsir,,, SM1 Functions
! 127: @subsection @code{ox_sm1_forAsir}
! 128: @findex ox_sm1_forAsir
! 129: @table @t
! 130: @item ox_sm1_forAsir
! 131: :: @code{sm1} server for @code{asir}.
! 132: @end table
! 133: @itemize @bullet
! 134: @item
! 135: @code{ox_sm1_forAsir} is the @code{sm1} server started from asir
! 136: by the command @code{sm1.start}.
! 137: In the standard setting, @*
! 138: @code{ox_sm1_forAsir} =
! 139: @file{$(OpenXM_HOME)/lib/sm1/bin/ox_sm1}
! 140: +
! 141: @file{$(OpenXM_HOME)/lib/sm1/callsm1.sm1} (macro file) @*
! 142: +
! 143: @file{$(OpenXM_HOME)/lib/sm1/callsm1b.sm1} (macro file) @*
! 144: The macro files @file{callsm1.sm1} and @file{callsm1b.sm1}
! 145: are searched from
! 146: current directory, @code{$(LOAD_SM1_PATH)},
! 147: @code{$(OpenXM_HOME)/lib/sm1},
! 148: @code{/usr/local/lib/sm1}
! 149: in this order.
! 150: @item Note for programmers: See the files
! 151: @file{$(OpenXM_HOME)/src/kxx/oxserver00.c},
! 152: @file{$(OpenXM_HOME)/src/kxx/sm1stackmachine.c}
! 153: to build your own server by reading @code{sm1} macros.
! 154: @end itemize
! 155: */
! 156: /*&ja
! 157: @node ox_sm1_forAsir,,, SM1 Functions
! 158: @subsection @code{ox_sm1_forAsir}
! 159: @findex ox_sm1_forAsir
! 160: @table @t
! 161: @item ox_sm1_forAsir
! 162: :: @code{asir} $B$N$?$a$N(B @code{sm1} $B%5!<%P(B.
! 163: @end table
! 164: @itemize @bullet
! 165: @item
! 166: $B%5!<%P(B @code{ox_sm1_forAsir} $B$O(B @code{asir} $B$h$j%3%^%s%I(B
! 167: @code{sm1.start} $B$G5/F0$5$l$k(B @code{sm1} $B%5!<%P$G$"$k(B.
! 168:
! 169: $BI8=`E*@_Dj$G$O(B, @*
! 170: @code{ox_sm1_forAsir} =
! 171: @file{$(OpenXM_HOME)/lib/sm1/bin/ox_sm1}
! 172: +
! 173: @file{$(OpenXM_HOME)/lib/sm1/callsm1.sm1} (macro file) @*
! 174: +
! 175: @file{$(OpenXM_HOME)/lib/sm1/callsm1b.sm1} (macro file) @*
! 176: $B$G$"$j(B, $B$3$l$i$N%^%/%m%U%!%$%k$O(B, $B0lHL$K$O(B
! 177: current directory, @code{$(LOAD_SM1_PATH)},
! 178: @code{$(OpenXM_HOME)/lib/sm1},
! 179: @code{/usr/local/lib/sm1}
! 180: $B$N=gHV$G$5$,$5$l$k(B.
! 181: @item $B%W%m%0%i%^!<$N$?$a$N%N!<%H(B:
! 182: @code{sm1} $B%^%/%m$rFI$_9~$s$G<+J,FH<+$N%5!<%P$r:n$k$K$O(B
! 183: $B<!$N%U%!%$%k$b8+$h(B
! 184: @file{$(OpenXM_HOME)/src/kxx/oxserver00.c},
! 185: @file{$(OpenXM_HOME)/src/kxx/sm1stackmachine.c}
! 186: @end itemize
! 187: */
! 188:
! 189:
! 190: /*&ja
! 191: @section $BH!?t0lMw(B
! 192: */
! 193: /*&en
! 194: @section Functions
! 195: */
! 196:
! 197: /*&en
! 198: @c sort-sm1.start
! 199: @node sm1.start,,, SM1 Functions
! 200: @subsection @code{sm1.start}
! 201: @findex sm1.start
! 202: @table @t
! 203: @item sm1.start()
! 204: :: Start @code{ox_sm1_forAsir} on the localhost.
! 205: @end table
! 206:
! 207: @table @var
! 208: @item return
! 209: Integer
! 210: @end table
! 211:
! 212: @itemize @bullet
! 213: @item Start @code{ox_sm1_forAsir} on the localhost.
! 214: It returns the descriptor of @code{ox_sm1_forAsir}.
! 215: @item Set @code{Xm_noX = 1} to start @code{ox_sm1_forAsir}
! 216: without a debug window.
! 217: @item You might have to set suitable orders of variable by the command
! 218: @code{ord}. For example,
! 219: when you are working in the
! 220: ring of differential operators on the variable @code{x} and @code{dx}
! 221: (@code{dx} stands for
! 222: @tex $\partial/\partial x$
! 223: @end tex
! 224: ),
! 225: @code{sm1} server assumes that
! 226: the variable @code{dx} is collected to the right and the variable
! 227: @code{x} is collected to the left in the printed expression.
! 228: In the example below, you must not use the variable @code{cc}
! 229: for computation in @code{sm1}.
! 230: @item The variables from @code{a} to @code{z} except @code{d} and @code{o}
! 231: and @code{x0}, ..., @code{x20}, @code{y0}, ..., @code{y20},
! 232: @code{z0}, ..., @code{z20} can be used as variables for ring of
! 233: differential operators in default. (cf. @code{Sm1_ord_list} in @code{sm1}).
! 234: @item The descriptor is stored in @code{static Sm1_proc}.
! 235: The descriptor can be obtained by the function
! 236: @code{sm1.get_Sm1_proc()}.
! 237: @end itemize
! 238: */
! 239: /*&ja
! 240: @c sort-sm1.start
! 241: @node sm1.start,,, SM1 Functions
! 242: @subsection @code{sm1.start}
! 243: @findex sm1.start
! 244: @table @t
! 245: @item sm1.start()
! 246: :: localhost $B$G(B @code{ox_sm1_forAsir} $B$r%9%?!<%H$9$k(B.
! 247: @end table
! 248:
! 249: @table @var
! 250: @item return
! 251: $B@0?t(B
! 252: @end table
! 253:
! 254: @itemize @bullet
! 255: @item localhost $B$G(B @code{ox_sm1_forAsir} $B$r%9%?!<%H$9$k(B.
! 256: $B%5!<%P(B @code{ox_sm1_forAsir} $B$N<1JLHV9f$rLa$9(B.
! 257: @item @code{Xm_noX = 1} $B$H$*$/$H%5!<%P(B @code{ox_sm1_forAsir} $B$r%G%P%C%0MQ$N(B
! 258: $B%&%#%s%I%&$J$7$K5/F0$G$-$k(B.
! 259: @item $B%3%^%s%I(B @code{ord} $B$rMQ$$$FJQ?t=g=x$r@5$7$/@_Dj$7$F$*$/I,MW$,(B
! 260: $B$"$k(B.
! 261: $B$?$H$($P(B,
! 262: $BJQ?t(B @code{x} $B$H(B @code{dx} $B>e$NHyJ,:nMQAG4D(B
! 263: (@code{dx} $B$O(B
! 264: @tex $\partial/\partial x$
! 265: @end tex
! 266: $B$KBP1~(B)
! 267: $B$G7W;;$7$F$$$k$H$-(B,
! 268: @code{sm1} $B%5!<%P$O<0$r0u:~$7$?$H$-(B,
! 269: $BJQ?t(B @code{dx} $B$O1&B&$K=8$a$lJQ?t(B
! 270: @code{x} $B$O:8B&$K$"$D$a$i$l$F$$$k$H2>Dj$7$F$$$k(B.
! 271: $B<!$NNc$G$O(B, $BJQ?t(B @code{cc} $B$r(B @code{sm1} $B$G$N7W;;$N$?$a$KMQ$$$F$O$$$1$J$$(B.
! 272: @item @code{a} $B$h$j(B @code{z} $B$N$J$+$G(B, @code{d} $B$H(B @code{o} $B$r=|$$$?$b$N(B,
! 273: $B$=$l$+$i(B, @code{x0}, ..., @code{x20}, @code{y0}, ..., @code{y20},
! 274: @code{z0}, ..., @code{z20} $B$O(B, $B%G%U%)!<%k%H$GHyJ,:nMQAG4D$NJQ?t$H$7$F(B
! 275: $B;H$($k(B (cf. @code{Sm1_ord_list} in @code{sm1}).
! 276: @item $B<1JLHV9f$O(B @code{static Sm1_proc} $B$K3JG<$5$l$k(B.
! 277: $B$3$N<1JLHV9f$O4X?t(B @code{sm1.get_Sm1_proc()} $B$G$H$j$@$9$3$H$,$G$-$k(B.
! 278: @end itemize
! 279: */
! 280: /*&C
! 281: @example
! 282: [260] ord([da,a,db,b]);
! 283: [da,a,db,b,dx,dy,dz,x,y,z,dt,ds,t,s,u,v,w,
! 284: ......... omit ..................
! 285: ]
! 286: [261] a*da;
! 287: a*da
! 288: [262] cc*dcc;
! 289: dcc*cc
! 290: [263] sm1.mul(da,a,[a]);
! 291: a*da+1
! 292: [264] sm1.mul(a,da,[a]);
! 293: a*da
! 294: @end example
! 295: */
! 296: /*&en
! 297: @table @t
! 298: @item Reference
! 299: @code{ox_launch}, @code{sm1.push_int0}, @code{sm1.push_poly0},
! 300: @code{ord}
! 301: @end table
! 302: */
! 303: /*&ja
! 304: @table @t
! 305: @item $B;2>H(B
! 306: @code{ox_launch}, @code{sm1.push_int0}, @code{sm1.push_poly0},
! 307: @code{ord}
! 308: @end table
! 309: */
! 310:
! 311:
! 312:
! 313: /*&en
! 314: @c sort-sm1
! 315: @node sm1.sm1,,, SM1 Functions
! 316: @subsection @code{sm1.sm1}
! 317: @findex sm1.sm1
! 318: @table @t
! 319: @item sm1.sm1(@var{p},@var{s})
! 320: :: ask the @code{sm1} server to execute the command string @var{s}.
! 321: @end table
! 322:
! 323: @table @var
! 324: @item return
! 325: Void
! 326: @item p
! 327: Number
! 328: @item s
! 329: String
! 330: @end table
! 331:
! 332: @itemize @bullet
! 333: @item It asks the @code{sm1} server of the descriptor number @var{p}
! 334: to execute the command string @var{s}.
! 335: (In the next example, the descriptor number is 0.)
! 336: @end itemize
! 337: */
! 338: /*&ja
! 339: @node sm1.sm1,,, SM1 Functions
! 340: @subsection @code{sm1.sm1}
! 341: @findex sm1.sm1
! 342: @table @t
! 343: @item sm1.sm1(@var{p},@var{s})
! 344: :: $B%5!<%P(B @code{sm1} $B$K%3%^%s%INs(B @var{s} $B$r<B9T$7$F$/$l$k$h$&$K$?$N$`(B.
! 345: @end table
! 346:
! 347: @table @var
! 348: @item return
! 349: $B$J$7(B
! 350: @item p
! 351: $B?t(B
! 352: @item s
! 353: $BJ8;zNs(B
! 354: @end table
! 355:
! 356: @itemize @bullet
! 357: @item $B<1JLHV9f(B @var{p} $B$N(B @code{sm1} $B%5!<%P$K(B
! 358: $B%3%^%s%INs(B @var{s} $B$r<B9T$7$F$/$l$k$h$&$KMj$`(B.
! 359: ($B<!$NNc$G$O(B, $B<1JLHV9f(B 0)
! 360: @end itemize
! 361: */
! 362: /*&C
! 363: @example
! 364: [261] sm1.sm1(0," ( (x-1)^2 ) . ");
! 365: 0
! 366: [262] ox_pop_string(0);
! 367: x^2-2*x+1
! 368: [263] sm1.sm1(0," [(x*(x-1)) [(x)]] deRham ");
! 369: 0
! 370: [264] ox_pop_string(0);
! 371: [1 , 2]
! 372: @end example
! 373: */
! 374:
! 375: /*&ja
! 376: @table @t
! 377: @item $B;2>H(B
! 378: @code{sm1.start}, @code{ox_push_int0}, @code{sm1.push_poly0}, @code{sm1.get_Sm1_proc()}.
! 379: @end table
! 380: */
! 381: /*&en
! 382: @table @t
! 383: @item Reference
! 384: @code{sm1.start}, @code{ox_push_int0}, @code{sm1.push_poly0}, @code{sm1.get_Sm1_proc()}.
! 385: @end table
! 386: */
! 387:
! 388:
! 389: /*&en
! 390: @c sort-sm1.push_int0
! 391: @node sm1.push_int0,,, SM1 Functions
! 392: @subsection @code{sm1.push_int0}
! 393: @findex sm1.push_int0
! 394: @table @t
! 395: @item sm1.push_int0(@var{p},@var{f})
! 396: :: push the object @var{f} to the server with the descriptor number @var{p}.
! 397: @end table
! 398:
! 399: @table @var
! 400: @item return
! 401: Void
! 402: @item p
! 403: Number
! 404: @item f
! 405: Object
! 406: @end table
! 407:
! 408: @itemize @bullet
! 409: @item When @code{type(@var{f})} is 2 (recursive polynomial),
! 410: @var{f} is converted to a string (type == 7)
! 411: and is sent to the server by @code{ox_push_cmo}.
! 412: @item When @code{type(@var{f})} is 0 (zero),
! 413: it is translated to the 32 bit integer zero
! 414: on the server.
! 415: Note that @code{ox_push_cmo(@var{p},0)} sends @code{CMO_NULL} to the server.
! 416: In other words, the server does not get the 32 bit integer 0 nor
! 417: the bignum 0.
! 418: @item @code{sm1} integers are classfied into the 32 bit integer and
! 419: the bignum.
! 420: When @code{type(@var{f})} is 1 (number), it is translated to the
! 421: 32 bit integer on the server.
! 422: Note that @code{ox_push_cmo(@var{p},1234)} send the bignum 1234 to the
! 423: @code{sm1} server.
! 424: @item In other cases, @code{ox_push_cmo} is called without data conversion.
! 425: @end itemize
! 426: */
! 427: /*&ja
! 428: @c sort-sm1.push_int0
! 429: @node sm1.push_int0,,, SM1 Functions
! 430: @subsection @code{sm1.push_int0}
! 431: @findex sm1.push_int0
! 432: @table @t
! 433: @item sm1.push_int0(@var{p},@var{f})
! 434: :: $B%*%V%8%'%/%H(B @var{f} $B$r<1JL;R(B @var{p} $B$N%5!<%P$XAw$k(B.
! 435: @end table
! 436:
! 437: @table @var
! 438: @item return
! 439: $B$J$7(B
! 440: @item p
! 441: $B?t(B
! 442: @item f
! 443: $B%*%V%8%'%/%H(B
! 444: @end table
! 445:
! 446: @itemize @bullet
! 447: @item @code{type(@var{f})} $B$,(B 2 ($B:F5"B?9`<0(B) $B$N$H$-(B,
! 448: @var{f} $B$OJ8;zNs(B (type == 7) $B$KJQ49$5$l$F(B,
! 449: @code{ox_push_cmo} $B$rMQ$$$F%5!<%P$XAw$i$l$k(B.
! 450: @item @code{type(@var{f})} $B$,(B 0 (zero) $B$N$H$-$O(B,
! 451: $B%5!<%P>e$G$O(B, 32 bit $B@0?t$H2r<a$5$l$k(B.
! 452: $B$J$*(B @code{ox_push_cmo(P,0)} $B$O%5!<%P$KBP$7$F(B @code{CMO_NULL}
! 453: $B$r$*$/$k$N$G(B, $B%5!<%PB&$G$O(B, 32 bit $B@0?t$r<u$1<h$k$o$1$G$O$J$$(B.
! 454: @item @code{sm1} $B$N@0?t$O(B, 32 bit $B@0?t$H(B bignum $B$K$o$1$k$3$H$,$G$-$k(B.
! 455: @code{type(@var{f})} $B$,(B 1 ($B?t(B)$B$N$H$-(B, $B$3$N4X?t$O(B 32 bit integer $B$r%5!<%P$K(B
! 456: $B$*$/$k(B.
! 457: @code{ox_push_cmo(@var{p},1234)} $B$O(B bignum $B$N(B 1234 $B$r(B
! 458: @code{sm1} $B%5!<%P$K$*$/$k$3$H$KCm0U$7$h$&(B.
! 459: @item $B$=$NB>$N>l9g$K$O(B @code{ox_push_cmo} $B$r%G!<%?7?$NJQ49$J$7$K8F$S=P$9(B.
! 460: @end itemize
! 461: */
! 462: /*&C
! 463: @example
! 464: [219] P=sm1.start();
! 465: 0
! 466: [220] sm1.push_int0(P,x*dx+1);
! 467: 0
! 468: [221] A=ox_pop_cmo(P);
! 469: x*dx+1
! 470: [223] type(A);
! 471: 7 (string)
! 472: @end example
! 473:
! 474: @example
! 475: [271] sm1.push_int0(0,[x*(x-1),[x]]);
! 476: 0
! 477: [272] ox_execute_string(0," deRham ");
! 478: 0
! 479: [273] ox_pop_cmo(0);
! 480: [1,2]
! 481: @end example
! 482: */
! 483: /*&en
! 484: @table @t
! 485: @item Reference
! 486: @code{ox_push_cmo}
! 487: @end table
! 488: */
! 489: /*&ja
! 490: @table @t
! 491: @item Reference
! 492: @code{ox_push_cmo}
! 493: @end table
! 494: */
! 495:
! 496:
! 497:
! 498: /*&en
! 499: @c sort-sm1.gb
! 500: @node sm1.gb,,, SM1 Functions
! 501: @subsection @code{sm1.gb}
! 502: @findex sm1.gb
! 503: @findex sm1.gb_d
! 504: @table @t
! 505: @item sm1.gb([@var{f},@var{v},@var{w}]|proc=@var{p},sorted=@var{q},dehomogenize=@var{r})
! 506: :: computes the Grobner basis of @var{f} in the ring of differential
! 507: operators with the variable @var{v}.
! 508: @item sm1.gb_d([@var{f},@var{v},@var{w}]|proc=@var{p})
! 509: :: computes the Grobner basis of @var{f} in the ring of differential
! 510: operators with the variable @var{v}.
! 511: The result will be returned as a list of distributed polynomials.
! 512: @end table
! 513:
! 514: @table @var
! 515: @item return
! 516: List
! 517: @item p, q, r
! 518: Number
! 519: @item f, v, w
! 520: List
! 521: @end table
! 522:
! 523: @itemize @bullet
! 524: @item
! 525: It returns the Grobner basis of the set of polynomials @var{f}
! 526: in the ring of deferential operators with the variables @var{v}.
! 527: @item
! 528: The weight vectors are given by @var{w}, which can be omitted.
! 529: If @var{w} is not given,
! 530: the graded reverse lexicographic order will be used to compute Grobner basis.
! 531: @item
! 532: The return value of @code{sm1.gb}
! 533: is the list of the Grobner basis of @var{f} and the initial
! 534: terms (when @var{w} is not given) or initial ideal (when @var{w} is given).
! 535: @item
! 536: @code{sm1.gb_d} returns the results by a list of distributed polynomials.
! 537: Monomials in each distributed polynomial are ordered in the given order.
! 538: The return value consists of
! 539: [variable names, order matrix, grobner basis in districuted polynomials,
! 540: initial monomials or initial polynomials].
! 541: @item
! 542: When a non-term order is given, the Grobner basis is computed in
! 543: the homogenized Weyl algebra (See Section 1.2 of the book of SST).
! 544: The homogenization variable h is automatically added.
! 545: @item
! 546: When the optional variable @var{q} is set, @code{sm1.gb} returns,
! 547: as the third return value, a list of
! 548: the Grobner basis and the initial ideal
! 549: with sums of monomials sorted by the given order.
! 550: Each polynomial is expressed as a string temporally for now.
! 551: When the optional variable @var{r} is set to one,
! 552: the polynomials are dehomogenized (,i.e., h is set to 1).
! 553: @end itemize
! 554: */
! 555: /*&ja
! 556: @c sort-sm1.gb
! 557: @node sm1.gb,,, SM1 Functions
! 558: @subsection @code{sm1.gb}
! 559: @findex sm1.gb
! 560: @findex sm1.gb_d
! 561: @table @t
! 562: @item sm1.gb([@var{f},@var{v},@var{w}]|proc=@var{p},sorted=@var{q},dehomogenize=@var{r})
! 563: :: @var{v} $B>e$NHyJ,:nMQAG4D$K$*$$$F(B @var{f} $B$N%0%l%V%J4pDl$r7W;;$9$k(B.
! 564: @item sm1.gb_d([@var{f},@var{v},@var{w}]|proc=@var{p})
! 565: :: @var{v} $B>e$NHyJ,:nMQAG4D$K$*$$$F(B @var{f} $B$N%0%l%V%J4pDl$r7W;;$9$k(B. $B7k2L$rJ,;6B?9`<0$N%j%9%H$GLa$9(B.
! 566: @end table
! 567:
! 568: @table @var
! 569: @item return
! 570: $B%j%9%H(B
! 571: @item p, q, r
! 572: $B?t(B
! 573: @item f, v, w
! 574: $B%j%9%H(B
! 575: @end table
! 576:
! 577: @itemize @bullet
! 578: @item
! 579: @var{v} $B>e$NHyJ,:nMQAG4D$K$*$$$F(B @var{f} $B$N%0%l%V%J4pDl$r7W;;$9$k(B.
! 580: @item
! 581: Weight $B%Y%/%H%k(B @var{w} $B$O>JN,$7$F$h$$(B.
! 582: $B>JN,$7$?>l9g(B, graded reverse lexicographic order $B$r$D$+$C$F(B
! 583: $B%V%l%V%J4pDl$r7W;;$9$k(B.
! 584: @item
! 585: @code{sm1.gb} $B$NLa$jCM$O(B @var{f} $B$N%0%l%V%J4pDl$*$h$S%$%K%7%c%k%b%N%_%"%k(B
! 586: ( @var{w} $B$,$J$$$H$-(B ) $B$^$?$O(B $B%$%K%7%!%kB?9`<0(B ( @var{w} $B$,M?$($i$?$H$-(B)
! 587: $B$N%j%9%H$G$"$k(B.
! 588: @item
! 589: @code{sm1.gb_d} $B$O7k2L$rJ,;6B?9`<0$N%j%9%H$GLa$9(B.
! 590: $BB?9`<0$NCf$K8=$l$k%b%N%_%"%k$O%0%l%V%J4pDl$r7W;;$9$k$H$-$KM?$($i$?=g=x$G%=!<%H$5$l$F$$$k(B.
! 591: $BLa$jCM$O(B
! 592: [$BJQ?tL>$N%j%9%H(B, $B=g=x$r$-$a$k9TNs(B, $B%0%l%V%J4pDl(B, $B%$%K%7%c%k%b%N%_%"%k$^$?$O%$%K%7%!%kB?9`<0(B]
! 593: $B$G$"$k(B.
! 594: @item
! 595: Term order $B$G$J$$=g=x$,M?$($i$l$?>l9g$O(B, $BF1<!2=%o%$%kBe?t$G%0%l%V%J4pDl$,7W;;$5$l$k(B (SST $B$NK\$N(B Section 1.2 $B$r8+$h(B).
! 596: $BF1<!2=JQ?t(B @code{h} $B$,7k2L$K2C$o$k(B.
! 597: @item $B%*%W%7%g%J%kJQ?t(B @var{q} $B$,%;%C%H$5$l$F$$$k$H$-$O(B,
! 598: 3 $BHVL\$NLa$jCM$H$7$F(B, $B%0%l%V%J4pDl$*$h$S%$%K%7%!%k$N%j%9%H$,(B
! 599: $BM?$($i$l$?=g=x$G%=!<%H$5$l$?%b%N%_%"%k$NOB$H$7$FLa$5$l$k(B.
! 600: $B$$$^$N$H$3$m$3$NB?9`<0$O(B, $BJ8;zNs$GI=8=$5$l$k(B.
! 601: $B%*%W%7%g%J%kJQ?t(B @var{r} $B$,%;%C%H$5$l$F$$$k$H$-$O(B,
! 602: $BLa$jB?9`<0$O(B dehomogenize $B$5$l$k(B ($B$9$J$o$A(B h $B$K(B 1 $B$,BeF~$5$l$k(B).
! 603: @end itemize
! 604: */
! 605: /*&C
! 606: @example
! 607: [293] sm1.gb([[x*dx+y*dy-1,x*y*dx*dy-2],[x,y]]);
! 608: [[x*dx+y*dy-1,y^2*dy^2+2],[x*dx,y^2*dy^2]]
! 609: @end example
! 610: */
! 611: /*&en
! 612: In the example above,
! 613: @tex the set $\{ x \partial_x + y \partial_y -1,
! 614: y^2 \partial_y^2+2\}$
! 615: is the Gr\"obner basis of the input with respect to the
! 616: graded reverse lexicographic order such that
! 617: $ 1 \leq \partial_y \leq \partial_x \leq y \leq x \leq \cdots$.
! 618: The set $\{x \partial_x, y^2 \partial_y\}$ is the leading monomials
! 619: (the initial monominals) of the Gr\"obner basis.
! 620: @end tex
! 621: */
! 622: /*&ja
! 623: $B>e$NNc$K$*$$$F(B,
! 624: @tex $B=89g(B $\{ x \partial_x + y \partial_y -1,
! 625: y^2 \partial_y^2+2\}$
! 626: $B$O(B
! 627: $ 1 \leq \partial_y \leq \partial_x \leq y \leq x \leq \cdots$
! 628: $B$G$"$k$h$&$J(B
! 629: graded reverse lexicographic order $B$K4X$9$k%0%l%V%J4pDl$G$"$k(B.
! 630: $B=89g(B $\{x \partial_x, y^2 \partial_y\}$ $B$O%0%l%V%J4pDl$N3F85$K(B
! 631: $BBP$9$k(B leading monomial (initial monomial) $B$G$"$k(B.
! 632: @end tex
! 633: */
! 634: /*&C
! 635: @example
! 636: [294] sm1.gb([[dx^2+dy^2-4,dx*dy-1],[x,y],[[dx,50,dy,2,x,1]]]);
! 637: [[dx+dy^3-4*dy,-dy^4+4*dy^2-1],[dx,-dy^4]]
! 638: @end example
! 639: */
! 640: /*&en
! 641: In the example above, two monomials
! 642: @tex
! 643: $m = x^a y^b \partial_x^c \partial_y^d$ and
! 644: $m' = x^{a'} y^{b'} \partial_x^{c'} \partial_y^{d'}$
! 645: are firstly compared by the weight vector
! 646: {\tt (dx,dy,x,y) = (50,2,1,0)}
! 647: (i.e., $m$ is larger than $m'$ if $50c+2d+a > 50c'+2d'+a'$)
! 648: and when the comparison is tie, then these are
! 649: compared by the reverse lexicographic order
! 650: (i.e., if $50c+2d+a = 50c'+2d'+a'$, then use the reverse lexicogrpahic order).
! 651: @end tex
! 652: */
! 653: /*&ja
! 654: $B>e$NNc$K$*$$$FFs$D$N%b%N%_%"%k(B
! 655: @tex
! 656: $m = x^a y^b \partial_x^c \partial_y^d$ $B$*$h$S(B
! 657: $m' = x^{a'} y^{b'} \partial_x^{c'} \partial_y^{d'}$
! 658: $B$O:G=i$K(B weight vector
! 659: {\tt (dx,dy,x,y) = (50,2,1,0)} $B$rMQ$$$FHf3S$5$l$k(B
! 660: ($B$D$^$j(B $m$ $B$O(B $50c+2d+a > 50c'+2d'+a'$ $B$N$H$-(B
! 661: $m'$ $B$h$jBg$-$$(B )
! 662: $B<!$K$3$NHf3S$G>!Ii$,$D$+$J$$$H$-$O(B reverse lexicographic order $B$GHf3S$5$l$k(B
! 663: ($B$D$^$j(B $50c+2d+a = 50c'+2d'+a'$ $B$N$H$-(B reverse lexicographic order $B$GHf3S(B
! 664: $B$5$l$k(B).
! 665: @end tex
! 666: */
! 667: /*&C
! 668: @example
! 669: [294] F=sm1.gb([[dx^2+dy^2-4,dx*dy-1],[x,y],[[dx,50,dy,2,x,1]]]|sorted=1);
! 670: map(print,F[2][0])$
! 671: map(print,F[2][1])$
! 672: @end example
! 673: */
! 674: /*&C
! 675: @example
! 676: [595]
! 677: sm1.gb([["dx*(x*dx +y*dy-2)-1","dy*(x*dx + y*dy -2)-1"],
! 678: [x,y],[[dx,1,x,-1],[dy,1]]]);
! 679:
! 680: [[x*dx^2+(y*dy-h^2)*dx-h^3,x*dy*dx+y*dy^2-h^2*dy-h^3,h^3*dx-h^3*dy],
! 681: [x*dx^2+(y*dy-h^2)*dx,x*dy*dx+y*dy^2-h^2*dy-h^3,h^3*dx]]
! 682:
! 683: [596]
! 684: sm1.gb_d([["dx (x dx +y dy-2)-1","dy (x dx + y dy -2)-1"],
! 685: "x,y",[[dx,1,x,-1],[dy,1]]]);
! 686: [[[e0,x,y,H,E,dx,dy,h],
! 687: [[0,-1,0,0,0,1,0,0],[0,0,0,0,0,0,1,0],[1,0,0,0,0,0,0,0],
! 688: [0,1,1,1,1,1,1,0],[0,0,0,0,0,0,-1,0],[0,0,0,0,0,-1,0,0],
! 689: [0,0,0,0,-1,0,0,0],[0,0,0,-1,0,0,0,0],[0,0,-1,0,0,0,0,0],
! 690: [0,0,0,0,0,0,0,1]]],
! 691: [[(1)*<<0,0,1,0,0,1,1,0>>+(1)*<<0,1,0,0,0,2,0,0>>+(-1)*<<0,0,0,0,0,1,0,2>>+(-1)*
! 692: <<0,0,0,0,0,0,0,3>>,(1)*<<0,0,1,0,0,0,2,0>>+(1)*<<0,1,0,0,0,1,1,0>>+(-1)*<<0,0,0
! 693: ,0,0,0,1,2>>+(-1)*<<0,0,0,0,0,0,0,3>>,(1)*<<0,0,0,0,0,1,0,3>>+(-1)*<<0,0,0,0,0,0
! 694: ,1,3>>],
! 695: [(1)*<<0,0,1,0,0,1,1,0>>+(1)*<<0,1,0,0,0,2,0,0>>+(-1)*<<0,0,0,0,0,1,0,2>>,(1)*<
! 696: <0,0,1,0,0,0,2,0>>+(1)*<<0,1,0,0,0,1,1,0>>+(-1)*<<0,0,0,0,0,0,1,2>>+(-1)*<<0,0,0
! 697: ,0,0,0,0,3>>,(1)*<<0,0,0,0,0,1,0,3>>]]]
! 698: @end example
! 699: */
! 700:
! 701: /*&en
! 702: @table @t
! 703: @item Reference
! 704: @code{sm1.reduction}, @code{sm1.rat_to_p}
! 705: @end table
! 706: */
! 707: /*&ja
! 708: @table @t
! 709: @item $B;2>H(B
! 710: @code{sm1.reduction}, @code{sm1.rat_to_p}
! 711: @end table
! 712: */
! 713:
! 714:
! 715:
! 716: /*&en
! 717: @c sort-sm1.deRham
! 718: @node sm1.deRham,,, SM1 Functions
! 719: @subsection @code{sm1.deRham}
! 720: @findex sm1.deRham
! 721: @table @t
! 722: @item sm1.deRham([@var{f},@var{v}]|proc=@var{p})
! 723: :: ask the server to evaluate the dimensions of the de Rham cohomology groups
! 724: of C^n - (the zero set of @var{f}=0).
! 725: @end table
! 726:
! 727: @table @var
! 728: @item return
! 729: List
! 730: @item p
! 731: Number
! 732: @item f
! 733: String or polynomial
! 734: @item v
! 735: List
! 736: @end table
! 737:
! 738: @itemize @bullet
! 739: @item It returns the dimensions of the de Rham cohomology groups
! 740: of X = C^n \ V(@var{f}).
! 741: In other words, it returns
! 742: [dim H^0(X,C), dim H^1(X,C), dim H^2(X,C), ..., dim H^n(X,C)].
! 743: @item @var{v} is a list of variables. n = @code{length(@var{v})}.
! 744: @item
! 745: @code{sm1.deRham} requires huge computer resources.
! 746: For example, @code{sm1.deRham(0,[x*y*z*(x+y+z-1)*(x-y),[x,y,z]])}
! 747: is already very hard.
! 748: @item
! 749: To efficiently analyze the roots of b-function, @code{ox_asir} should be used
! 750: from @code{ox_sm1_forAsir}.
! 751: It is recommended to load the communication module for @code{ox_asir}
! 752: by the command @*
! 753: @code{sm1(0,"[(parse) (oxasir.sm1) pushfile] extension");}
! 754: This command is automatically executed when @code{ox_sm1_forAsir} is started.
! 755: @item If you make an interruption to the function @code{sm1.deRham}
! 756: by @code{ox_reset(sm1.get_Sm1_proc());}, the server might get out of the standard
! 757: mode. So, it is strongly recommended to execute the command
! 758: @code{ox_shutdown(sm1.get_Sm1_proc());} to interrupt and restart the server.
! 759: @end itemize
! 760: */
! 761: /*&ja
! 762: @c sort-sm1.deRham
! 763: @node sm1.deRham,,, SM1 Functions
! 764: @subsection @code{sm1.deRham}
! 765: @findex sm1.deRham
! 766: @table @t
! 767: @item sm1.deRham([@var{f},@var{v}]|proc=@var{p})
! 768: :: $B6u4V(B C^n - (the zero set of @var{f}=0) $B$N%I%i!<%`%3%[%b%m%872$N<!85$r7W;;$7$F$/$l$k$h$&$K%5!<%P$KMj$`(B.
! 769: @end table
! 770:
! 771: @table @var
! 772: @item return
! 773: $B%j%9%H(B
! 774: @item p
! 775: $B?t(B
! 776: @item f
! 777: $BJ8;zNs(B $B$^$?$O(B $BB?9`<0(B
! 778: @item v
! 779: $B%j%9%H(B
! 780: @end table
! 781:
! 782: @itemize @bullet
! 783: @item $B$3$NH!?t$O6u4V(B X = C^n \ V(@var{f}) $B$N%I%i!<%`%3%[%b%m%872$N<!85$r7W;;$9$k(B.
! 784: $B$9$J$o$A(B,
! 785: [dim H^0(X,C), dim H^1(X,C), dim H^2(X,C), ..., dim H^n(X,C)]
! 786: $B$rLa$9(B.
! 787: @item @var{v} $B$OJQ?t$N%j%9%H(B. n = @code{length(@var{v})} $B$G$"$k(B.
! 788: @item
! 789: @code{sm1.deRham} $B$O7W;;5!$N;q8;$rBgNL$K;HMQ$9$k(B.
! 790: $B$?$H$($P(B @code{sm1.deRham(0,[x*y*z*(x+y+z-1)*(x-y),[x,y,z]])}
! 791: $B$N7W;;$9$i$9$G$KHs>o$KBgJQ$G$"$k(B.
! 792: @item
! 793: b-$B4X?t$N:,$r8zN($h$/2r@O$9$k$K$O(B, @code{ox_asir} $B$,(B @code{ox_sm1_forAsir}
! 794: $B$h$j;HMQ$5$l$k$Y$-$G$"$k(B. $B%3%^%s%I(B @*
! 795: @code{sm1(0,"[(parse) (oxasir.sm1) pushfile] extension");}
! 796: $B$rMQ$$$F(B, @code{ox_asir} $B$H$NDL?.%b%8%e!<%k$r$"$i$+$8$a%m!<%I$7$F$*$/$H$h$$(B.
! 797: $B$3$N%3%^%s%I$O(B @code{ox_asir_forAsir} $B$N%9%?!<%H;~$K<+F0E*$K<B9T$5$l$F$$$k(B.
! 798: @item
! 799: @code{sm1.deRham} $B$r(B @code{ox_reset(sm1.get_Sm1_proc());} $B$GCfCG$9$k$H(B,
! 800: $B0J8e(B sm1 $B%5!<%P$,HsI8=`%b!<%I$KF~$jM=4|$7$J$$F0:n$r$9$k>l9g(B
! 801: $B$,$"$k$N$G(B, $B%3%^%s%I(B @code{ox_shutdown(sm1.get_Sm1_proc());} $B$G(B, @code{ox_sm1_forAsir}
! 802: $B$r0l;~(B shutdown $B$7$F%j%9%?!<%H$7$?J}$,0BA4$G$"$k(B.
! 803: @end itemize
! 804: */
! 805: /*&C
! 806: @example
! 807: [332] sm1.deRham([x^3-y^2,[x,y]]);
! 808: [1,1,0]
! 809: [333] sm1.deRham([x*(x-1),[x]]);
! 810: [1,2]
! 811: @end example
! 812: */
! 813: /*&en
! 814: @table @t
! 815: @item Reference
! 816: @code{sm1.start}, @code{deRham} (sm1 command)
! 817: @item Algorithm:
! 818: Oaku, Takayama, An algorithm for de Rham cohomology groups of the
! 819: complement of an affine variety via D-module computation,
! 820: Journal of pure and applied algebra 139 (1999), 201--233.
! 821: @end table
! 822: */
! 823: /*&ja
! 824: @table @t
! 825: @item $B;2>H(B
! 826: @code{sm1.start}, @code{deRham} (sm1 command)
! 827: @item Algorithm:
! 828: Oaku, Takayama, An algorithm for de Rham cohomology groups of the
! 829: complement of an affine variety via D-module computation,
! 830: Journal of pure and applied algebra 139 (1999), 201--233.
! 831: @end table
! 832: */
! 833:
! 834:
! 835:
! 836:
! 837: /*&en
! 838: @c sort-sm1.hilbert
! 839: @node sm1.hilbert,,, SM1 Functions
! 840: @subsection @code{sm1.hilbert}
! 841: @findex sm1.hilbert
! 842: @findex hilbert_polynomial
! 843: @table @t
! 844: @item sm1.hilbert([@var{f},@var{v}]|proc=@var{p})
! 845: :: ask the server to compute the Hilbert polynomial for the set of polynomials @var{f}.
! 846: @item hilbert_polynomial(@var{f},@var{v})
! 847: :: ask the server to compute the Hilbert polynomial for the set of polynomials @var{f}.
! 848: @end table
! 849:
! 850: @table @var
! 851: @item return
! 852: Polynomial
! 853: @item p
! 854: Number
! 855: @item f, v
! 856: List
! 857: @end table
! 858:
! 859: @itemize @bullet
! 860: @item It returns the Hilbert polynomial h(k) of the set of polynomials
! 861: @var{f}
! 862: with respect to the set of variables @var{v}.
! 863: @item
! 864: h(k) = dim_Q F_k/I \cap F_k where F_k the set of polynomials of which
! 865: degree is less than or equal to k and I is the ideal generated by the
! 866: set of polynomials @var{f}.
! 867: @item
! 868: Note for sm1.hilbert:
! 869: For an efficient computation, it is preferable that
! 870: the set of polynomials @var{f} is a set of monomials.
! 871: In fact, this function firstly compute a Grobner basis of @var{f}, and then
! 872: compute the Hilbert polynomial of the initial monomials of the basis.
! 873: If the input @var{f} is already a Grobner
! 874: basis, a Grobner basis is recomputed in this function,
! 875: which is a waste of time and Grobner basis computation in the ring of
! 876: polynomials in @code{sm1} is slower than in @code{asir}.
! 877: @end itemize
! 878: */
! 879: /*&ja
! 880: @c sort-sm1.hilbert
! 881: @node sm1.hilbert,,, SM1 Functions
! 882: @subsection @code{sm1.hilbert}
! 883: @findex sm1.hilbert
! 884: @findex hilbert_polynomial
! 885: @table @t
! 886: @item sm1.hilbert([@var{f},@var{v}]|proc=@var{p})
! 887: :: $BB?9`<0$N=89g(B @var{f} $B$N%R%k%Y%k%HB?9`<0$r7W;;$9$k(B.
! 888: @item hilbert_polynomial(@var{f},@var{v})
! 889: :: $BB?9`<0$N=89g(B @var{f} $B$N%R%k%Y%k%HB?9`<0$r7W;;$9$k(B.
! 890: @end table
! 891:
! 892: @table @var
! 893: @item return
! 894: $BB?9`<0(B
! 895: @item p
! 896: $B?t(B
! 897: @item f, v
! 898: $B%j%9%H(B
! 899: @end table
! 900:
! 901: @itemize @bullet
! 902: @item $BB?9`<0$N=89g(B @var{f} $B$NJQ?t(B @var{v} $B$K$+$s$9$k%R%k%Y%k%HB?9`<0(B h(k)
! 903: $B$r7W;;$9$k(B.
! 904: @item
! 905: h(k) = dim_Q F_k/I \cap F_k $B$3$3$G(B F_k $B$O<!?t$,(B k $B0J2<$G$"$k$h$&$J(B
! 906: $BB?9`<0$N=89g$G$"$k(B. I $B$OB?9`<0$N=89g(B @var{f} $B$G@8@.$5$l$k%$%G%"%k$G$"$k(B.
! 907: @item
! 908: sm1.hilbert $B$K$+$s$9$k%N!<%H(B:
! 909: $B8zN($h$/7W;;$9$k$K$O(B @var{f} $B$O%b%N%_%"%k$N=89g$K$7$?J}$,$$$$(B.
! 910: $B<B:](B, $B$3$NH!?t$O$^$:(B @var{f} $B$N%0%l%V%J4pDl$r7W;;$7(B, $B$=$l$+$i$=$N(B initial
! 911: monomial $BC#$N%R%k%Y%k%HB?9`<0$r7W;;$9$k(B.
! 912: $B$7$?$,$C$F(B, $BF~NO(B @var{f} $B$,$9$G$K%0%l%V%J4pDl$@$H$3$NH!?t$N$J$+$G$b$&0lEY(B
! 913: $B%0%l%V%J4pDl$N7W;;$,$*$3$J$o$l$k(B. $B$3$l$O;~4V$NL5BL$G$"$k$7(B, @code{sm1} $B$N(B
! 914: $BB?9`<0%0%l%V%J4pDl7W;;$O(B @code{asir} $B$h$jCY$$(B.
! 915: @end itemize
! 916: */
! 917:
! 918: /*&C
! 919: @example
! 920:
! 921: [346] load("katsura")$
! 922: [351] A=hilbert_polynomial(katsura(5),[u0,u1,u2,u3,u4,u5]);
! 923: 32
! 924:
! 925: @end example
! 926:
! 927: @example
! 928: [279] load("katsura")$
! 929: [280] A=gr(katsura(5),[u0,u1,u2,u3,u4,u5],0)$
! 930: [281] dp_ord();
! 931: 0
! 932: [282] B=map(dp_ht,map(dp_ptod,A,[u0,u1,u2,u3,u4,u5]));
! 933: [(1)*<<1,0,0,0,0,0>>,(1)*<<0,0,0,2,0,0>>,(1)*<<0,0,1,1,0,0>>,(1)*<<0,0,2,0,0,0>>,
! 934: (1)*<<0,1,1,0,0,0>>,(1)*<<0,2,0,0,0,0>>,(1)*<<0,0,0,1,1,1>>,(1)*<<0,0,0,1,2,0>>,
! 935: (1)*<<0,0,1,0,2,0>>,(1)*<<0,1,0,0,2,0>>,(1)*<<0,1,0,1,1,0>>,(1)*<<0,0,0,0,2,2>>,
! 936: (1)*<<0,0,1,0,1,2>>,(1)*<<0,1,0,0,1,2>>,(1)*<<0,1,0,1,0,2>>,(1)*<<0,0,0,0,3,1>>,
! 937: (1)*<<0,0,0,0,4,0>>,(1)*<<0,0,0,0,1,4>>,(1)*<<0,0,0,1,0,4>>,(1)*<<0,0,1,0,0,4>>,
! 938: (1)*<<0,1,0,0,0,4>>,(1)*<<0,0,0,0,0,6>>]
! 939: [283] C=map(dp_dtop,B,[u0,u1,u2,u3,u4,u5]);
! 940: [u0,u3^2,u3*u2,u2^2,u2*u1,u1^2,u5*u4*u3,u4^2*u3,u4^2*u2,u4^2*u1,u4*u3*u1,
! 941: u5^2*u4^2,u5^2*u4*u2,u5^2*u4*u1,u5^2*u3*u1,u5*u4^3,u4^4,u5^4*u4,u5^4*u3,
! 942: u5^4*u2,u5^4*u1,u5^6]
! 943: [284] sm1.hilbert([C,[u0,u1,u2,u3,u4,u5]]);
! 944: 32
! 945: @end example
! 946: */
! 947:
! 948: /*&en
! 949: @table @t
! 950: @item Reference
! 951: @code{sm1.start}, @code{sm1.gb}, @code{longname}
! 952: @end table
! 953: */
! 954: /*&ja
! 955: @table @t
! 956: @item $B;2>H(B
! 957: @code{sm1.start}, @code{sm1.gb}, @code{longname}
! 958: @end table
! 959: */
! 960:
! 961:
! 962: /*&en
! 963: @c sort-sm1.genericAnn
! 964: @node sm1.genericAnn,,, SM1 Functions
! 965: @subsection @code{sm1.genericAnn}
! 966: @findex sm1.genericAnn
! 967: @table @t
! 968: @item sm1.genericAnn([@var{f},@var{v}]|proc=@var{p})
! 969: :: It computes the annihilating ideal for @var{f}^s.
! 970: @var{v} is the list of variables. Here, s is @var{v}[0] and
! 971: @var{f} is a polynomial in the variables @code{rest}(@var{v}).
! 972: @end table
! 973:
! 974: @table @var
! 975: @item return
! 976: List
! 977: @item p
! 978: Number
! 979: @item f
! 980: Polynomial
! 981: @item v
! 982: List
! 983: @end table
! 984:
! 985: @itemize @bullet
! 986: @item This function computes the annihilating ideal for @var{f}^s.
! 987: @var{v} is the list of variables. Here, s is @var{v}[0] and
! 988: @var{f} is a polynomial in the variables @code{rest}(@var{v}).
! 989: @end itemize
! 990: */
! 991: /*&ja
! 992: @c sort-sm1.genericAnn
! 993: @node sm1.genericAnn,,, SM1 Functions
! 994: @subsection @code{sm1.genericAnn}
! 995: @findex sm1.genericAnn
! 996: @table @t
! 997: @item sm1.genericAnn([@var{f},@var{v}]|proc=@var{p})
! 998: :: @var{f}^s $B$N$_$?$9HyJ,J}Dx<0A4BN$r$b$H$a$k(B.
! 999: @var{v} $B$OJQ?t$N%j%9%H$G$"$k(B. $B$3$3$G(B, s $B$O(B @var{v}[0] $B$G$"$j(B,
! 1000: @var{f} $B$OJQ?t(B @code{rest}(@var{v}) $B>e$NB?9`<0$G$"$k(B.
! 1001: @end table
! 1002:
! 1003: @table @var
! 1004: @item return
! 1005: $B%j%9%H(B
! 1006: @item p
! 1007: $B?t(B
! 1008: @item f
! 1009: $BB?9`<0(B
! 1010: @item v
! 1011: $B%j%9%H(B
! 1012: @end table
! 1013:
! 1014: @itemize @bullet
! 1015: @item $B$3$NH!?t$O(B,
! 1016: @var{f}^s $B$N$_$?$9HyJ,J}Dx<0A4BN$r$b$H$a$k(B.
! 1017: @var{v} $B$OJQ?t$N%j%9%H$G$"$k(B. $B$3$3$G(B, s $B$O(B @var{v}[0] $B$G$"$j(B,
! 1018: @var{f} $B$OJQ?t(B @code{rest}(@var{v}) $B>e$NB?9`<0$G$"$k(B.
! 1019: @end itemize
! 1020: */
! 1021: /*&C
! 1022: @example
! 1023: [595] sm1.genericAnn([x^3+y^3+z^3,[s,x,y,z]]);
! 1024: [-x*dx-y*dy-z*dz+3*s,z^2*dy-y^2*dz,z^2*dx-x^2*dz,y^2*dx-x^2*dy]
! 1025: @end example
! 1026: */
! 1027: /*&en
! 1028: @table @t
! 1029: @item Reference
! 1030: @code{sm1.start}
! 1031: @end table
! 1032: */
! 1033: /*&ja
! 1034: @table @t
! 1035: @item $B;2>H(B
! 1036: @code{sm1.start}
! 1037: @end table
! 1038: */
! 1039:
! 1040:
! 1041:
! 1042: /*&en
! 1043: @c sort-sm1.wTensor0
! 1044: @node sm1.wTensor0,,, SM1 Functions
! 1045: @subsection @code{sm1.wTensor0}
! 1046: @findex sm1.wTensor0
! 1047: @table @t
! 1048: @item sm1.wTensor0([@var{f},@var{g},@var{v},@var{w}]|proc=@var{p})
! 1049: :: It computes the D-module theoretic 0-th tensor product
! 1050: of @var{f} and @var{g}.
! 1051: @end table
! 1052:
! 1053: @table @var
! 1054: @item return
! 1055: List
! 1056: @item p
! 1057: Number
! 1058: @item f, g, v, w
! 1059: List
! 1060: @end table
! 1061:
! 1062: @itemize @bullet
! 1063: @item
! 1064: It returns the D-module theoretic 0-th tensor product
! 1065: of @var{f} and @var{g}.
! 1066: @item
! 1067: @var{v} is a list of variables.
! 1068: @var{w} is a list of weights. The integer @var{w}[i] is
! 1069: the weight of the variable @var{v}[i].
! 1070: @item
! 1071: @code{sm1.wTensor0} calls @code{wRestriction0} of @code{ox_sm1},
! 1072: which requires a generic weight
! 1073: vector @var{w} to compute the restriction.
! 1074: If @var{w} is not generic, the computation fails.
! 1075: @item Let F and G be solutions of @var{f} and @var{g} respectively.
! 1076: Intuitively speaking, the 0-th tensor product is a system of
! 1077: differential equations which annihilates the function FG.
! 1078: @item The answer is a submodule of a free module D^r in general even if
! 1079: the inputs @var{f} and @var{g} are left ideals of D.
! 1080: @end itemize
! 1081: */
! 1082:
! 1083: /*&ja
! 1084: @c sort-sm1.wTensor0
! 1085: @node sm1.wTensor0,,, SM1 Functions
! 1086: @subsection @code{sm1.wTensor0}
! 1087: @findex sm1.wTensor0
! 1088: @table @t
! 1089: @item sm1.wTensor0([@var{f},@var{g},@var{v},@var{w}]|proc=@var{p})
! 1090: :: @var{f} $B$H(B @var{g} $B$N(B D-module $B$H$7$F$N(B 0 $B<!%F%s%=%k@Q$r(B
! 1091: $B7W;;$9$k(B.
! 1092: @end table
! 1093:
! 1094: @table @var
! 1095: @item return
! 1096: $B%j%9%H(B
! 1097: @item p
! 1098: $B?t(B
! 1099: @item f, g, v, w
! 1100: $B%j%9%H(B
! 1101: @end table
! 1102:
! 1103: @itemize @bullet
! 1104: @item
! 1105: @var{f} $B$H(B @var{g} $B$N(B
! 1106: D-$B2C72$H$7$F$N(B 0 $B<!%F%s%=%k@Q$r7W;;$9$k(B.
! 1107: @item
! 1108: @var{v} $B$OJQ?t$N%j%9%H$G$"$k(B.
! 1109: @var{w} $B$O(B weight $B$N%j%9%H$G$"$k(B.
! 1110: $B@0?t(B @var{w}[i] $B$OJQ?t(B @var{v}[i] $B$N(B weight $B$G$"$k(B.
! 1111: @item
! 1112: @code{sm1.wTensor0} $B$O(B @code{ox_sm1} $B$N(B @code{wRestriction0}
! 1113: $B$r$h$s$G$$$k(B.
! 1114: @code{wRestriction0} $B$O(B, generic $B$J(B weight $B%Y%/%H%k(B @var{w}
! 1115: $B$r$b$H$K$7$F@)8B$r7W;;$7$F$$$k(B.
! 1116: Weight $B%Y%/%H%k(B @var{w} $B$,(B generic $B$G$J$$$H7W;;$,%(%i!<$GDd;_$9$k(B.
! 1117: @item F $B$*$h$S(B G $B$r(B @var{f} $B$H(B @var{g} $B$=$l$>$l$N2r$H$9$k(B.
! 1118: $BD>4QE*$K$$$($P(B, 0 $B<!$N%F%s%=%k@Q$O(B $B4X?t(B FG $B$N$_$?$9HyJ,J}Dx<07O$G$"$k(B.
! 1119: @item $BF~NO(B @var{f}, @var{g} $B$,(B D $B$N:8%$%G%"%k$G$"$C$F$b(B,
! 1120: $B0lHL$K(B, $B=PNO$O<+M32C72(B D^r $B$NItJ,2C72$G$"$k(B.
! 1121: @end itemize
! 1122: */
! 1123: /*&C
! 1124: @example
! 1125: [258] sm1.wTensor0([[x*dx -1, y*dy -4],[dx+dy,dx-dy^2],[x,y],[1,2]]);
! 1126: [[-y*x*dx-y*x*dy+4*x+y],[5*x*dx^2+5*x*dx+2*y*dy^2+(-2*y-6)*dy+3],
! 1127: [-25*x*dx+(-5*y*x-2*y^2)*dy^2+((5*y+15)*x+2*y^2+16*y)*dy-20*x-8*y-15],
! 1128: [y^2*dy^2+(-y^2-8*y)*dy+4*y+20]]
! 1129: @end example
! 1130: */
! 1131:
! 1132:
! 1133:
! 1134: /*&en
! 1135: @c sort-sm1.reduction
! 1136: @node sm1.reduction,,, SM1 Functions
! 1137: @subsection @code{sm1.reduction}
! 1138: @findex sm1.reduction
! 1139: @table @t
! 1140: @item sm1.reduction([@var{f},@var{g},@var{v},@var{w}]|proc=@var{p})
! 1141: ::
! 1142: @end table
! 1143:
! 1144: @table @var
! 1145: @item return
! 1146: List
! 1147: @item f
! 1148: Polynomial
! 1149: @item g, v, w
! 1150: List
! 1151: @item p
! 1152: Number (the process number of ox_sm1)
! 1153: @end table
! 1154:
! 1155: @itemize @bullet
! 1156: @item It reduces @var{f} by the set of polynomial @var{g}
! 1157: in the homogenized Weyl algebra; it applies the
! 1158: division algorithm to @var{f}. The set of variables is @var{v} and
! 1159: @var{w} is weight vectors to determine the order, which can be ommited.
! 1160: @code{sm1.reduction_noH} is for the Weyl algebra.
! 1161: @item The return value is of the form
! 1162: [r,c0,[c1,...,cm],[g1,...gm]] where @var{g}=[g1, ..., gm] and
! 1163: c0 f + c1 g1 + ... + cm gm = r.
! 1164: r/c0 is the normal form.
! 1165: @item The function reduction reduces reducible terms that appear
! 1166: in lower order terms.
! 1167: @item The functions
! 1168: sm1.reduction_d(P,F,G) and sm1.reduction_noH_d(P,F,G)
! 1169: are for distributed polynomials.
! 1170: @end itemize
! 1171: */
! 1172: /*&ja
! 1173: @node sm1.reduction,,, SM1 Functions
! 1174: @subsection @code{sm1.reduction}
! 1175: @findex sm1.reduction
! 1176: @table @t
! 1177: @item sm1.reduction([@var{f},@var{g},@var{v},@var{w}]|proc=@var{p})
! 1178: ::
! 1179: @end table
! 1180:
! 1181: @table @var
! 1182: @item return
! 1183: $B%j%9%H(B
! 1184: @item f
! 1185: $BB?9`<0(B
! 1186: @item g, v, w
! 1187: $B%j%9%H(B
! 1188: @item p
! 1189: $B?t(B (ox_sm1 $B$N%W%m%;%9HV9f(B)
! 1190: @end table
! 1191:
! 1192: @itemize @bullet
! 1193: @item $B$3$NH!?t$O(B @var{f} $B$r(B homogenized $B%o%$%kBe?t$K$*$$$F(B,
! 1194: $BB?9`<0=89g(B @var{g} $B$G4JC12=(B (reduce) $B$9$k(B; $B$D$^$j(B,
! 1195: $B$3$NH!?t$O(B, @var{f} $B$K3d;;%"%k%4%j%:%`$rE,MQ$9$k(B.
! 1196: $BJQ?t=89g$O(B @var{v} $B$G;XDj$9$k(B.
! 1197: @var{w} $B$O=g=x$r;XDj$9$k$?$a$N(B $B%&%(%$%H%Y%/%H%k$G$"$j(B,
! 1198: $B>JN,$7$F$b$h$$(B.
! 1199: @code{sm1.reduction_noH} $B$O(B, Weyl algebra $BMQ(B.
! 1200: @item $BLa$jCM$O<!$N7A$r$7$F$$$k(B:
! 1201: [r,c0,[c1,...,cm],g] $B$3$3$G(B @var{g}=[g1, ..., gm] $B$G$"$j(B,
! 1202: c0 f + c1 g1 + ... + cm gm = r
! 1203: $B$,$J$j$?$D(B.
! 1204: r/c0 $B$,(B normal form $B$G$"$k(B.
! 1205: @item $B$3$NH!?t$O(B, $BDc<!9`$K$"$i$o$l$k(B reducible $B$J9`$b4JC12=$9$k(B.
! 1206: @item $BH!?t(B
! 1207: sm1.reduction_d(P,F,G) $B$*$h$S(B sm1.reduction_noH_d(P,F,G)
! 1208: $B$O(B, $BJ,;6B?9`<0MQ$G$"$k(B.
! 1209: @end itemize
! 1210: */
! 1211: /*&C
! 1212: @example
! 1213: [259] sm1.reduction([x^2+y^2-4,[y^4-4*y^2+1,x+y^3-4*y],[x,y]]);
! 1214: [x^2+y^2-4,1,[0,0],[y^4-4*y^2+1,x+y^3-4*y]]
! 1215: [260] sm1.reduction([x^2+y^2-4,[y^4-4*y^2+1,x+y^3-4*y],[x,y],[[x,1]]]);
! 1216: [0,1,[-y^2+4,-x+y^3-4*y],[y^4-4*y^2+1,x+y^3-4*y]]
! 1217: @end example
! 1218: */
! 1219: /*&en
! 1220: @table @t
! 1221: @item Reference
! 1222: @code{sm1.start}, @code{d_true_nf}
! 1223: @end table
! 1224: */
! 1225: /*&ja
! 1226: @table @t
! 1227: @item $B;2>H(B
! 1228: @code{sm1.start}, @code{d_true_nf}
! 1229: @end table
! 1230: */
! 1231:
! 1232:
! 1233: /*&en
! 1234: @node sm1.xml_tree_to_prefix_string,,, SM1 Functions
! 1235: @subsection @code{sm1.xml_tree_to_prefix_string}
! 1236: @findex sm1.xml_tree_to_prefix_string
! 1237: @table @t
! 1238: @item sm1.xml_tree_to_prefix_string(@var{s}|proc=@var{p})
! 1239: :: Translate OpenMath Tree Expression @var{s} in XML to a prefix notation.
! 1240: @end table
! 1241:
! 1242: @table @var
! 1243: @item return
! 1244: String
! 1245: @item p
! 1246: Number
! 1247: @item s
! 1248: String
! 1249: @end table
! 1250:
! 1251: @itemize @bullet
! 1252: @item It translate OpenMath Tree Expression @var{s} in XML to a prefix notation.
! 1253: @item This function should be moved to om_* in a future.
! 1254: @item @code{om_xml_to_cmo(OpenMath Tree Expression)} returns CMO_TREE.
! 1255: asir has not yet understood this CMO.
! 1256: @item @code{java} execution environment is required.
! 1257: (For example, @code{/usr/local/jdk1.1.8/bin} should be in the
! 1258: command search path.)
! 1259: @end itemize
! 1260: */
! 1261: /*&ja
! 1262: @node sm1.xml_tree_to_prefix_string,,, SM1 Functions
! 1263: @subsection @code{sm1.xml_tree_to_prefix_string}
! 1264: @findex sm1.xml_tree_to_prefix_string
! 1265: @table @t
! 1266: @item sm1.xml_tree_to_prefix_string(@var{s}|proc=@var{p})
! 1267: :: XML $B$G=q$+$l$?(B OpenMath $B$NLZI=8=(B @var{s} $B$rA0CV5-K!$K$J$*$9(B.
! 1268: @end table
! 1269:
! 1270: @table @var
! 1271: @item return
! 1272: String
! 1273: @item p
! 1274: Number
! 1275: @item s
! 1276: String
! 1277: @end table
! 1278:
! 1279: @itemize @bullet
! 1280: @item XML $B$G=q$+$l$?(B OpenMath $B$NLZI=8=(B @var{s} $B$rA0CV5-K!$K$J$*$9(B.
! 1281: @item $B$3$NH!?t$O(B om_* $B$K>-Mh0\$9$Y$-$G$"$k(B.
! 1282: @item @code{om_xml_to_cmo(OpenMath Tree Expression)} $B$O(B CMO_TREE
! 1283: $B$rLa$9(B. @code{asir} $B$O$3$N(B CMO $B$r$^$@%5%]!<%H$7$F$$$J$$(B.
! 1284: @item @code{java} $B$N<B9T4D6-$,I,MW(B.
! 1285: ($B$?$H$($P(B, /usr/local/jdk1.1.8/bin $B$r%3%^%s%I%5!<%A%Q%9$KF~$l$k$J$I(B.)
! 1286: @end itemize
! 1287: */
! 1288: /*&C
! 1289: @example
! 1290: [263] load("om");
! 1291: 1
! 1292: [270] F=om_xml(x^4-1);
! 1293: control: wait OX
! 1294: Trying to connect to the server... Done.
! 1295: <OMOBJ><OMA><OMS name="plus" cd="basic"/><OMA>
! 1296: <OMS name="times" cd="basic"/><OMA>
! 1297: <OMS name="power" cd="basic"/><OMV name="x"/><OMI>4</OMI></OMA>
! 1298: <OMI>1</OMI></OMA><OMA><OMS name="times" cd="basic"/><OMA>
! 1299: <OMS name="power" cd="basic"/><OMV name="x"/><OMI>0</OMI></OMA>
! 1300: <OMI>-1</OMI></OMA></OMA></OMOBJ>
! 1301: [271] sm1.xml_tree_to_prefix_string(F);
! 1302: basic_plus(basic_times(basic_power(x,4),1),basic_times(basic_power(x,0),-1))
! 1303: @end example
! 1304: */
! 1305: /*&en
! 1306: @table @t
! 1307: @item Reference
! 1308: @code{om_*}, @code{OpenXM/src/OpenMath}, @code{eval_str}
! 1309: @end table
! 1310: */
! 1311: /*&ja
! 1312: @table @t
! 1313: @item $B;2>H(B
! 1314: @code{om_*}, @code{OpenXM/src/OpenMath}, @code{eval_str}
! 1315: @end table
! 1316: */
! 1317:
! 1318:
! 1319:
! 1320:
! 1321: /*&en
! 1322: @c sort-sm1.syz
! 1323: @node sm1.syz,,, SM1 Functions
! 1324: @subsection @code{sm1.syz}
! 1325: @findex sm1.syz
! 1326: @findex sm1.syz_d
! 1327: @table @t
! 1328: @item sm1.syz([@var{f},@var{v},@var{w}]|proc=@var{p})
! 1329: :: computes the syzygy of @var{f} in the ring of differential
! 1330: operators with the variable @var{v}.
! 1331: @end table
! 1332:
! 1333: @table @var
! 1334: @item return
! 1335: List
! 1336: @item p
! 1337: Number
! 1338: @item f, v, w
! 1339: List
! 1340: @end table
! 1341:
! 1342: @itemize @bullet
! 1343: @item
! 1344: The return values is of the form
! 1345: [@var{s},[@var{g}, @var{m}, @var{t}]].
! 1346: Here @var{s} is the syzygy of @var{f} in the ring of differential
! 1347: operators with the variable @var{v}.
! 1348: @var{g} is a Groebner basis of @var{f} with the weight vector @var{w},
! 1349: and @var{m} is a matrix that translates the input matrix @var{f} to the Gr\"obner
! 1350: basis @var{g}.
! 1351: @var{t} is the syzygy of the Gr\"obner basis @var{g}.
! 1352: In summary, @var{g} = @var{m} @var{f} and
! 1353: @var{s} @var{f} = 0 hold as matrices.
! 1354: @item
! 1355: The weight vectors are given by @var{w}, which can be omitted.
! 1356: If @var{w} is not given,
! 1357: the graded reverse lexicographic order will be used to compute Grobner basis.
! 1358: @item
! 1359: When a non-term order is given, the Grobner basis is computed in
! 1360: the homogenized Weyl algebra (See Section 1.2 of the book of SST).
! 1361: The homogenization variable h is automatically added.
! 1362: @end itemize
! 1363: */
! 1364: /*&ja
! 1365: @c sort-sm1.syz
! 1366: @node sm1.syz,,, SM1 Functions
! 1367: @subsection @code{sm1.syz}
! 1368: @findex sm1.syz
! 1369: @findex sm1.syz_d
! 1370: @table @t
! 1371: @item sm1.syz([@var{f},@var{v},@var{w}]|proc=@var{p})
! 1372: :: @var{v} $B>e$NHyJ,:nMQAG4D$K$*$$$F(B @var{f} $B$N(B syzygy $B$r7W;;$9$k(B.
! 1373: @end table
! 1374:
! 1375: @table @var
! 1376: @item return
! 1377: $B%j%9%H(B
! 1378: @item p
! 1379: $B?t(B
! 1380: @item f, v, w
! 1381: $B%j%9%H(B
! 1382: @end table
! 1383:
! 1384: @itemize @bullet
! 1385: @item
! 1386: $BLa$jCM$O<!$N7A$r$7$F$$$k(B:
! 1387: [@var{s},[@var{g}, @var{m}, @var{t}]].
! 1388: $B$3$3$G(B @var{s} $B$O(B @var{f} $B$N(B @var{v} $B$rJQ?t$H$9$kHyJ,:nMQAG4D$K$*$1$k(B
! 1389: syzygy $B$G$"$k(B.
! 1390: @var{g} $B$O(B @var{f} $B$N(B weight vector @var{w} $B$K4X$9$k%0%l%V%J4pDl$G$"$k(B.
! 1391: @var{m} $B$OF~NO9TNs(B @var{f} $B$r%0%l%V%J4pDl(B
! 1392: @var{g} $B$XJQ49$9$k9TNs$G$"$k(B.
! 1393: @var{t} $B$O%0%l%V%J4pDl(B @var{g} $B$N(B syzygy $B$G$"$k(B.
! 1394: $B$^$H$a$k$H(B, $B<!$NEy<0$,$J$j$?$D(B:
! 1395: @var{g} = @var{m} @var{f} ,
! 1396: @var{s} @var{f} = 0.
! 1397: @item
! 1398: Weight $B%Y%/%H%k(B @var{w} $B$O>JN,$7$F$h$$(B.
! 1399: $B>JN,$7$?>l9g(B, graded reverse lexicographic order $B$r$D$+$C$F(B
! 1400: $B%V%l%V%J4pDl$r7W;;$9$k(B.
! 1401: @item
! 1402: Term order $B$G$J$$=g=x$,M?$($i$l$?>l9g$O(B, $BF1<!2=%o%$%kBe?t$G%0%l%V%J4pDl$,7W;;$5$l$k(B (SST $B$NK\$N(B Section 1.2 $B$r8+$h(B).
! 1403: $BF1<!2=JQ?t(B @code{h} $B$,7k2L$K2C$o$k(B.
! 1404: @end itemize
! 1405: */
! 1406: /*&C
! 1407: @example
! 1408: [293] sm1.syz([[x*dx+y*dy-1,x*y*dx*dy-2],[x,y]]);
! 1409: [[[y*x*dy*dx-2,-x*dx-y*dy+1]], generators of the syzygy
! 1410: [[[x*dx+y*dy-1],[y^2*dy^2+2]], grobner basis
! 1411: [[1,0],[y*dy,-1]], transformation matrix
! 1412: [[y*x*dy*dx-2,-x*dx-y*dy+1]]]]
! 1413: @end example
! 1414: */
! 1415: /*&C
! 1416: @example
! 1417: [294]sm1.syz([[x^2*dx^2+x*dx+y^2*dy^2+y*dy-4,x*y*dx*dy-1],[x,y],[[dx,-1,x,1]]]);
! 1418: [[[y*x*dy*dx-1,-x^2*dx^2-x*dx-y^2*dy^2-y*dy+4]], generators of the syzygy
! 1419: [[[x^2*dx^2+h^2*x*dx+y^2*dy^2+h^2*y*dy-4*h^4],[y*x*dy*dx-h^4], GB
! 1420: [h^4*x*dx+y^3*dy^3+3*h^2*y^2*dy^2-3*h^4*y*dy]],
! 1421: [[1,0],[0,1],[y*dy,-x*dx]], transformation matrix
! 1422: [[y*x*dy*dx-h^4,-x^2*dx^2-h^2*x*dx-y^2*dy^2-h^2*y*dy+4*h^4]]]]
! 1423: @end example
! 1424: */
! 1425:
! 1426:
! 1427:
! 1428: /*&en
! 1429: @node sm1.mul,,, SM1 Functions
! 1430: @subsection @code{sm1.mul}
! 1431: @findex sm1.mul
! 1432: @table @t
! 1433: @item sm1.mul(@var{f},@var{g},@var{v}|proc=@var{p})
! 1434: :: ask the sm1 server to multiply @var{f} and @var{g} in the ring of differential operators over @var{v}.
! 1435: @end table
! 1436:
! 1437: @table @var
! 1438: @item return
! 1439: Polynomial or List
! 1440: @item p
! 1441: Number
! 1442: @item f, g
! 1443: Polynomial or List
! 1444: @item v
! 1445: List
! 1446: @end table
! 1447:
! 1448: @itemize @bullet
! 1449: @item Ask the sm1 server to multiply @var{f} and @var{g} in the ring of differential operators over @var{v}.
! 1450: @item @code{sm1.mul_h} is for homogenized Weyl algebra.
! 1451: @item BUG: @code{sm1.mul(p0*dp0,1,[p0])} returns
! 1452: @code{dp0*p0+1}.
! 1453: A variable order such that d-variables come after non-d-variables
! 1454: is necessary for the correct computation.
! 1455: @end itemize
! 1456: */
! 1457:
! 1458: /*&ja
! 1459: @node sm1.mul,,, SM1 Functions
! 1460: @subsection @code{sm1.mul}
! 1461: @findex sm1.mul
! 1462: @table @t
! 1463: @item sm1.mul(@var{f},@var{g},@var{v}|proc=@var{p})
! 1464: :: sm1$B%5!<%P(B $B$K(B @var{f} $B$+$1$k(B @var{g} $B$r(B @var{v}
! 1465: $B>e$NHyJ,:nMQAG4D$G$d$C$F$/$l$k$h$&$KMj$`(B.
! 1466: @end table
! 1467:
! 1468: @table @var
! 1469: @item return
! 1470: $BB?9`<0$^$?$O%j%9%H(B
! 1471: @item p
! 1472: $B?t(B
! 1473: @item f, g
! 1474: $BB?9`<0$^$?$O%j%9%H(B
! 1475: @item v
! 1476: $B%j%9%H(B
! 1477: @end table
! 1478:
! 1479: @itemize @bullet
! 1480: @item sm1$B%5!<%P(B $B$K(B @var{f} $B$+$1$k(B @var{g} $B$r(B @var{v}
! 1481: $B>e$NHyJ,:nMQAG4D$G$d$C$F$/$l$k$h$&$KMj$`(B.
! 1482: @item @code{sm1.mul_h} $B$O(B homogenized Weyl $BBe?tMQ(B.
! 1483: @item BUG: @code{sm1.mul(p0*dp0,1,[p0])} $B$O(B
! 1484: @code{dp0*p0+1} $B$rLa$9(B.
! 1485: d$BJQ?t$,8e$m$K$/$k$h$&$JJQ?t=g=x$,$O$$$C$F$$$J$$$H(B, $B$3$N4X?t$O@5$7$$Ez$($rLa$5$J$$(B.
! 1486: @end itemize
! 1487: */
! 1488:
! 1489: /*&C
! 1490:
! 1491: @example
! 1492: [277] sm1.mul(dx,x,[x]);
! 1493: x*dx+1
! 1494: [278] sm1.mul([x,y],[1,2],[x,y]);
! 1495: x+2*y
! 1496: [279] sm1.mul([[1,2],[3,4]],[[x,y],[1,2]],[x,y]);
! 1497: [[x+2,y+4],[3*x+4,3*y+8]]
! 1498: @end example
! 1499:
! 1500: */
! 1501:
! 1502:
! 1503:
! 1504:
! 1505: /*&en
! 1506: @node sm1.distraction,,, SM1 Functions
! 1507: @subsection @code{sm1.distraction}
! 1508: @findex sm1.distraction
! 1509: @table @t
! 1510: @item sm1.distraction([@var{f},@var{v},@var{x},@var{d},@var{s}]|proc=@var{p})
! 1511: :: ask the @code{sm1} server to compute the distraction of @var{f}.
! 1512: @end table
! 1513:
! 1514: @table @var
! 1515: @item return
! 1516: List
! 1517: @item p
! 1518: Number
! 1519: @item f
! 1520: Polynomial
! 1521: @item v,x,d,s
! 1522: List
! 1523: @end table
! 1524:
! 1525: @itemize @bullet
! 1526: @item It asks the @code{sm1} server of the descriptor number @var{p}
! 1527: to compute the distraction of @var{f} in the ring of differential
! 1528: operators with variables @var{v}.
! 1529: @item @var{x} is a list of x-variables and @var{d} is that of d-variables
! 1530: to be distracted. @var{s} is a list of variables to express the distracted @var{f}.
! 1531: @item Distraction is roughly speaking to replace x*dx by a single variable x.
! 1532: See Saito, Sturmfels, Takayama : Grobner Deformations of Hypergeometric Differential Equations at page 68 for details.
! 1533: @end itemize
! 1534: */
! 1535:
! 1536: /*&ja
! 1537: @node sm1.distraction,,, SM1 Functions
! 1538:
! 1539: @subsection @code{sm1.distraction}
! 1540: @findex sm1.distraction
! 1541: @table @t
! 1542: @item sm1.distraction([@var{f},@var{v},@var{x},@var{d},@var{s}]|proc=@var{p})
! 1543: :: @code{sm1} $B$K(B @var{f} $B$N(B distraction $B$r7W;;$7$F$b$i$&(B.
! 1544: @end table
! 1545:
! 1546: @table @var
! 1547: @item return
! 1548: $B%j%9%H(B
! 1549: @item p
! 1550: $B?t(B
! 1551: @item f
! 1552: $BB?9`<0(B
! 1553: @item v,x,d,s
! 1554: $B%j%9%H(B
! 1555: @end table
! 1556:
! 1557: @itemize @bullet
! 1558: @item $B<1JL;R(B @var{p} $B$N(B @code{sm1} $B%5!<%P$K(B,
! 1559: @var{f} $B$N(B distraction $B$r(B @var{v} $B>e$NHyJ,:nMQAG4D$G7W;;$7$F$b$i$&(B.
! 1560: @item @var{x} , @var{d} $B$O(B, $B$=$l$>$l(B, distract $B$9$Y$-(B x $BJQ?t(B, d $BJQ?t$N(B
! 1561: $B%j%9%H(B. Distraction $B$7$?$i(B, @var{s} $B$rJQ?t$H$7$F7k2L$rI=$9(B.
! 1562: @item Distraction $B$H$$$&$N$O(B x*dx $B$r(B x $B$GCV$-49$($k$3$H$G$"$k(B.
! 1563: $B>\$7$/$O(B Saito, Sturmfels, Takayama : Grobner Deformations of Hypergeometric Differential Equations $B$N(B page 68 $B$r8+$h(B.
! 1564: @end itemize
! 1565: */
! 1566:
! 1567: /*&C
! 1568:
! 1569: @example
! 1570: [280] sm1.distraction([x*dx,[x],[x],[dx],[x]]);
! 1571: x
! 1572: [281] sm1.distraction([dx^2,[x],[x],[dx],[x]]);
! 1573: x^2-x
! 1574: [282] sm1.distraction([x^2,[x],[x],[dx],[x]]);
! 1575: x^2+3*x+2
! 1576: [283] fctr(@@);
! 1577: [[1,1],[x+1,1],[x+2,1]]
! 1578: [284] sm1.distraction([x*dx*y+x^2*dx^2*dy,[x,y],[x],[dx],[x]]);
! 1579: (x^2-x)*dy+x*y
! 1580: @end example
! 1581: */
! 1582:
! 1583: /*&en
! 1584: @table @t
! 1585: @item Reference
! 1586: @code{distraction2(sm1)},
! 1587: @end table
! 1588: */
! 1589:
! 1590: /*&ja
! 1591: @table @t
! 1592: @item $B;2>H(B
! 1593: @code{distraction2(sm1)},
! 1594: @end table
! 1595: */
! 1596:
! 1597:
! 1598:
! 1599: /*&en
! 1600: @node sm1.gkz,,, SM1 Functions
! 1601: @subsection @code{sm1.gkz}
! 1602: @findex sm1.gkz
! 1603: @table @t
! 1604: @item sm1.gkz([@var{A},@var{B}]|proc=@var{p})
! 1605: :: Returns the GKZ system (A-hypergeometric system) associated to the matrix
! 1606: @var{A} with the parameter vector @var{B}.
! 1607: @end table
! 1608:
! 1609: @table @var
! 1610: @item return
! 1611: List
! 1612: @item p
! 1613: Number
! 1614: @item A, B
! 1615: List
! 1616: @end table
! 1617:
! 1618: @itemize @bullet
! 1619: @item Returns the GKZ hypergeometric system
! 1620: (A-hypergeometric system) associated to the matrix
! 1621: @end itemize
! 1622: */
! 1623:
! 1624: /*&ja
! 1625: @node sm1.gkz,,, SM1 Functions
! 1626: @subsection @code{sm1.gkz}
! 1627: @findex sm1.gkz
! 1628: @table @t
! 1629: @item sm1.gkz([@var{A},@var{B}]|proc=@var{p})
! 1630: :: $B9TNs(B @var{A} $B$H%Q%i%a!<%?(B @var{B} $B$KIU?o$7$?(B GKZ $B7O(B (A-hypergeometric system) $B$r$b$I$9(B.
! 1631: @end table
! 1632:
! 1633: @table @var
! 1634: @item return
! 1635: $B%j%9%H(B
! 1636: @item p
! 1637: $B?t(B
! 1638: @item A, B
! 1639: $B%j%9%H(B
! 1640: @end table
! 1641:
! 1642: @itemize @bullet
! 1643: @item $B9TNs(B @var{A} $B$H%Q%i%a!<%?(B @var{B} $B$KIU?o$7$?(B GKZ $B7O(B (A-hypergeometric system) $B$r$b$I$9(B.
! 1644: @end itemize
! 1645: */
! 1646:
! 1647: /*&C
! 1648:
! 1649: @example
! 1650:
! 1651: [280] sm1.gkz([ [[1,1,1,1],[0,1,3,4]], [0,2] ]);
! 1652: [[x4*dx4+x3*dx3+x2*dx2+x1*dx1,4*x4*dx4+3*x3*dx3+x2*dx2-2,
! 1653: -dx1*dx4+dx2*dx3,-dx2^2*dx4+dx1*dx3^2,dx1^2*dx3-dx2^3,-dx2*dx4^2+dx3^3],
! 1654: [x1,x2,x3,x4]]
! 1655:
! 1656: @end example
! 1657:
! 1658: */
! 1659:
! 1660:
! 1661:
! 1662:
! 1663: /*&en
! 1664: @node sm1.appell1,,, SM1 Functions
! 1665: @subsection @code{sm1.appell1}
! 1666: @findex sm1.appell1
! 1667: @table @t
! 1668: @item sm1.appell1(@var{a}|proc=@var{p})
! 1669: :: Returns the Appell hypergeometric system F_1 or F_D.
! 1670: @end table
! 1671:
! 1672: @table @var
! 1673: @item return
! 1674: List
! 1675: @item p
! 1676: Number
! 1677: @item a
! 1678: List
! 1679: @end table
! 1680:
! 1681: @itemize @bullet
! 1682: @item Returns the hypergeometric system for the Lauricella function
! 1683: F_D(a,b1,b2,...,bn,c;x1,...,xn)
! 1684: where @var{a} =(a,c,b1,...,bn).
! 1685: When n=2, the Lauricella function is called the Appell function F_1.
! 1686: The parameters a, c, b1, ..., bn may be rational numbers.
! 1687: @item It does not call sm1 function appell1. As a concequence,
! 1688: when parameters are rational or symbolic, this function also works
! 1689: as well as integral parameters.
! 1690: @end itemize
! 1691: */
! 1692:
! 1693: /*&ja
! 1694: @node sm1.appell1,,, SM1 Functions
! 1695: @subsection @code{sm1.appell1}
! 1696: @findex sm1.appell1
! 1697: @table @t
! 1698: @item sm1.appell1(@var{a}|proc=@var{p})
! 1699: :: F_1 $B$^$?$O(B F_D $B$KBP1~$9$kJ}Dx<07O$rLa$9(B.
! 1700: @end table
! 1701:
! 1702: @table @var
! 1703: @item return
! 1704: $B%j%9%H(B
! 1705: @item p
! 1706: $B?t(B
! 1707: @item a
! 1708: $B%j%9%H(B
! 1709: @end table
! 1710:
! 1711: @itemize @bullet
! 1712: @item Appell $B$N4X?t(B F_1 $B$*$h$S(B $B$=$N(B n $BJQ?t2=$G$"$k(B Lauricella $B$N4X?t(B
! 1713: F_D(a,b1,b2,...,bn,c;x1,...,xn)
! 1714: $B$N$_$?$9HyJ,J}Dx<07O$rLa$9(B. $B$3$3$G(B,
! 1715: @var{a} =(a,c,b1,...,bn).
! 1716: $B%Q%i%a!<%?$OM-M}?t$G$b$h$$(B.
! 1717: @item sm1 $B$N4X?t(B appell1 $B$r$h$V$o$1$G$J$$$N$G(B, $B%Q%i%a!<%?$,M-M}?t$dJ8;z<0$N>l9g$b(B
! 1718: $B@5$7$/F0$/(B.
! 1719: @end itemize
! 1720: */
! 1721:
! 1722: /*&C
! 1723:
! 1724: @example
! 1725:
! 1726: [281] sm1.appell1([1,2,3,4]);
! 1727: [[((-x1+1)*x2*dx1-3*x2)*dx2+(-x1^2+x1)*dx1^2+(-5*x1+2)*dx1-3,
! 1728: (-x2^2+x2)*dx2^2+((-x1*x2+x1)*dx1-6*x2+2)*dx2-4*x1*dx1-4,
! 1729: ((-x2+x1)*dx1+3)*dx2-4*dx1], equations
! 1730: [x1,x2]] the list of variables
! 1731:
! 1732: [282] sm1.gb(@@);
! 1733: [[((-x2+x1)*dx1+3)*dx2-4*dx1,((-x1+1)*x2*dx1-3*x2)*dx2+(-x1^2+x1)*dx1^2
! 1734: +(-5*x1+2)*dx1-3,(-x2^2+x2)*dx2^2+((-x2^2+x1)*dx1-3*x2+2)*dx2
! 1735: +(-4*x2-4*x1)*dx1-4,
! 1736: (x2^3+(-x1-1)*x2^2+x1*x2)*dx2^2+((-x1*x2+x1^2)*dx1+6*x2^2
! 1737: +(-3*x1-2)*x2+2*x1)*dx2-4*x1^2*dx1+4*x2-4*x1],
! 1738: [x1*dx1*dx2,-x1^2*dx1^2,-x2^2*dx1*dx2,-x1*x2^2*dx2^2]]
! 1739:
! 1740: [283] sm1.rank(sm1.appell1([1/2,3,5,-1/3]));
! 1741: 3
! 1742:
! 1743: [285] Mu=2$ Beta = 1/3$
! 1744: [287] sm1.rank(sm1.appell1([Mu+Beta,Mu+1,Beta,Beta,Beta]));
! 1745: 4
! 1746:
! 1747:
! 1748: @end example
! 1749:
! 1750: */
! 1751:
! 1752: /*&en
! 1753: @node sm1.appell4,,, SM1 Functions
! 1754: @subsection @code{sm1.appell4}
! 1755: @findex sm1.appell4
! 1756: @table @t
! 1757: @item sm1.appell4(@var{a}|proc=@var{p})
! 1758: :: Returns the Appell hypergeometric system F_4 or F_C.
! 1759: @end table
! 1760:
! 1761: @table @var
! 1762: @item return
! 1763: List
! 1764: @item p
! 1765: Number
! 1766: @item a
! 1767: List
! 1768: @end table
! 1769:
! 1770: @itemize @bullet
! 1771: @item Returns the hypergeometric system for the Lauricella function
! 1772: F_4(a,b,c1,c2,...,cn;x1,...,xn)
! 1773: where @var{a} =(a,b,c1,...,cn).
! 1774: When n=2, the Lauricella function is called the Appell function F_4.
! 1775: The parameters a, b, c1, ..., cn may be rational numbers.
! 1776: @item @item It does not call sm1 function appell4. As a concequence,
! 1777: when parameters are rational or symbolic, this function also works
! 1778: as well as integral parameters.
! 1779: @end itemize
! 1780: */
! 1781:
! 1782: /*&ja
! 1783: @node sm1.appell4,,, SM1 Functions
! 1784: @subsection @code{sm1.appell4}
! 1785: @findex sm1.appell4
! 1786: @table @t
! 1787: @item sm1.appell4(@var{a}|proc=@var{p})
! 1788: :: F_4 $B$^$?$O(B F_C $B$KBP1~$9$kJ}Dx<07O$rLa$9(B.
! 1789: @end table
! 1790:
! 1791: @table @var
! 1792: @item return
! 1793: $B%j%9%H(B
! 1794: @item p
! 1795: $B?t(B
! 1796: @item a
! 1797: $B%j%9%H(B
! 1798: @end table
! 1799:
! 1800: @itemize @bullet
! 1801: @item Appell $B$N4X?t(B F_4 $B$*$h$S(B $B$=$N(B n $BJQ?t2=$G$"$k(B Lauricella $B$N4X?t(B
! 1802: F_C(a,b,c1,c2,...,cn;x1,...,xn)
! 1803: $B$N$_$?$9HyJ,J}Dx<07O$rLa$9(B. $B$3$3$G(B,
! 1804: @var{a} =(a,b,c1,...,cn).
! 1805: $B%Q%i%a!<%?$OM-M}?t$G$b$h$$(B.
! 1806: @item sm1 $B$N4X?t(B appell1 $B$r$h$V$o$1$G$J$$$N$G(B, $B%Q%i%a!<%?$,M-M}?t$dJ8;z<0$N>l9g$b(B
! 1807: $B@5$7$/F0$/(B.
! 1808: @end itemize
! 1809: */
! 1810:
! 1811: /*&C
! 1812:
! 1813: @example
! 1814:
! 1815: [281] sm1.appell4([1,2,3,4]);
! 1816: [[-x2^2*dx2^2+(-2*x1*x2*dx1-4*x2)*dx2+(-x1^2+x1)*dx1^2+(-4*x1+3)*dx1-2,
! 1817: (-x2^2+x2)*dx2^2+(-2*x1*x2*dx1-4*x2+4)*dx2-x1^2*dx1^2-4*x1*dx1-2],
! 1818: equations
! 1819: [x1,x2]] the list of variables
! 1820:
! 1821: [282] sm1.rank(@@);
! 1822: 4
! 1823:
! 1824: @end example
! 1825:
! 1826: */
! 1827:
! 1828:
! 1829:
! 1830:
! 1831: /*&en
! 1832: @node sm1.rank,,, SM1 Functions
! 1833: @subsection @code{sm1.rank}
! 1834: @findex sm1.rank
! 1835: @table @t
! 1836: @item sm1.rank(@var{a}|proc=@var{p})
! 1837: :: Returns the holonomic rank of the system of differential equations @var{a}.
! 1838: @end table
! 1839:
! 1840: @table @var
! 1841: @item return
! 1842: Number
! 1843: @item p
! 1844: Number
! 1845: @item a
! 1846: List
! 1847: @end table
! 1848:
! 1849: @itemize @bullet
! 1850: @item It evaluates the dimension of the space of holomorphic solutions
! 1851: at a generic point of the system of differential equations @var{a}.
! 1852: The dimension is called the holonomic rank.
! 1853: @item @var{a} is a list consisting of a list of differential equations and
! 1854: a list of variables.
! 1855: @item @code{sm1.rrank} returns the holonomic rank when @var{a} is regular
! 1856: holonomic. It is generally faster than @code{sm1.rank}.
! 1857: @end itemize
! 1858: */
! 1859:
! 1860: /*&ja
! 1861: @node sm1.rank,,, SM1 Functions
! 1862: @subsection @code{sm1.rank}
! 1863: @findex sm1.rank
! 1864: @table @t
! 1865: @item sm1.rank(@var{a}|proc=@var{p})
! 1866: :: $BHyJ,J}Dx<07O(B @var{a} $B$N(B holonomic rank $B$rLa$9(B.
! 1867: @end table
! 1868:
! 1869: @table @var
! 1870: @item return
! 1871: $B?t(B
! 1872: @item p
! 1873: $B?t(B
! 1874: @item a
! 1875: $B%j%9%H(B
! 1876: @end table
! 1877:
! 1878: @itemize @bullet
! 1879: @item $BHyJ,J}Dx<07O(B @var{a} $B$N(B, generic point $B$G$N@5B'2r$N<!85$r(B
! 1880: $BLa$9(B. $B$3$N<!85$r(B, holonomic rank $B$H8F$V(B.
! 1881: @item @var{a} $B$OHyJ,:nMQAG$N%j%9%H$HJQ?t$N%j%9%H$h$j$J$k(B.
! 1882: @item @var{a} $B$,(B regular holonomic $B$N$H$-$O(B @code{sm1.rrank}
! 1883: $B$b(B holonomic rank $B$rLa$9(B.
! 1884: $B$$$C$Q$s$K$3$N4X?t$NJ}$,(B @code{sm1.rank} $B$h$jAa$$(B.
! 1885: @end itemize
! 1886: */
! 1887:
! 1888: /*&C
! 1889:
! 1890: @example
! 1891:
! 1892: [284] sm1.gkz([ [[1,1,1,1],[0,1,3,4]], [0,2] ]);
! 1893: [[x4*dx4+x3*dx3+x2*dx2+x1*dx1,4*x4*dx4+3*x3*dx3+x2*dx2-2,
! 1894: -dx1*dx4+dx2*dx3, -dx2^2*dx4+dx1*dx3^2,dx1^2*dx3-dx2^3,-dx2*dx4^2+dx3^3],
! 1895: [x1,x2,x3,x4]]
! 1896: [285] sm1.rrank(@@);
! 1897: 4
! 1898:
! 1899: [286] sm1.gkz([ [[1,1,1,1],[0,1,3,4]], [1,2]]);
! 1900: [[x4*dx4+x3*dx3+x2*dx2+x1*dx1-1,4*x4*dx4+3*x3*dx3+x2*dx2-2,
! 1901: -dx1*dx4+dx2*dx3,-dx2^2*dx4+dx1*dx3^2,dx1^2*dx3-dx2^3,-dx2*dx4^2+dx3^3],
! 1902: [x1,x2,x3,x4]]
! 1903: [287] sm1.rrank(@@);
! 1904: 5
! 1905:
! 1906: @end example
! 1907:
! 1908: */
! 1909:
! 1910:
! 1911: /*&en
! 1912: @node sm1.auto_reduce,,, SM1 Functions
! 1913: @subsection @code{sm1.auto_reduce}
! 1914: @findex sm1.auto_reduce
! 1915: @table @t
! 1916: @item sm1.auto_reduce(@var{s}|proc=@var{p})
! 1917: :: Set the flag "AutoReduce" to @var{s}.
! 1918: @end table
! 1919:
! 1920: @table @var
! 1921: @item return
! 1922: Number
! 1923: @item p
! 1924: Number
! 1925: @item s
! 1926: Number
! 1927: @end table
! 1928:
! 1929: @itemize @bullet
! 1930: @item If @var{s} is 1, then all Grobner bases to be computed
! 1931: will be the reduced Grobner bases.
! 1932: @item If @var{s} is 0, then Grobner bases are not necessarily the reduced
! 1933: Grobner bases. This is the default.
! 1934: @end itemize
! 1935: */
! 1936:
! 1937: /*&ja
! 1938: @node sm1.auto_reduce,,, SM1 Functions
! 1939: @subsection @code{sm1.auto_reduce}
! 1940: @findex sm1.auto_reduce
! 1941: @table @t
! 1942: @item sm1.auto_reduce(@var{s}|proc=@var{p})
! 1943: :: $B%U%i%0(B "AutoReduce" $B$r(B @var{s} $B$K@_Dj(B.
! 1944: @end table
! 1945:
! 1946: @table @var
! 1947: @item $BLa$jCM(B
! 1948: $B?t(B
! 1949: @item p
! 1950: $B?t(B
! 1951: @item s
! 1952: $B?t(B
! 1953: @end table
! 1954:
! 1955: @itemize @bullet
! 1956: @item @var{s} $B$,(B 1 $B$N$H$-(B, $B0J8e7W;;$5$l$k%0%l%V%J4pDl$O$9$Y$F(B,
! 1957: reduced $B%0%l%V%J4pDl$H$J$k(B.
! 1958: @item @var{s} $B$,(B 0 $B$N$H$-(B, $B7W;;$5$l$k%0%l%V%J4pDl$O(B
! 1959: reduced $B%0%l%V%J4pDl$H$O$+$.$i$J$$(B. $B$3$A$i$,%G%U%)!<%k%H(B.
! 1960: @end itemize
! 1961: */
! 1962:
! 1963:
! 1964:
! 1965: /*&en
! 1966: @node sm1.slope,,, SM1 Functions
! 1967: @subsection @code{sm1.slope}
! 1968: @findex sm1.slope
! 1969: @table @t
! 1970: @item sm1.slope(@var{ii},@var{v},@var{f_filtration},@var{v_filtration}|proc=@var{p})
! 1971: :: Returns the slopes of differential equations @var{ii}.
! 1972: @end table
! 1973:
! 1974: @table @var
! 1975: @item return
! 1976: List
! 1977: @item p
! 1978: Number
! 1979: @item ii
! 1980: List (equations)
! 1981: @item v
! 1982: List (variables)
! 1983: @item f_filtration
! 1984: List (weight vector)
! 1985: @item v_filtration
! 1986: List (weight vector)
! 1987: @end table
! 1988:
! 1989: @itemize @bullet
! 1990: @item @code{sm1.slope} returns the (geometric) slopes
! 1991: of the system of differential equations @var{ii}
! 1992: along the hyperplane specified by
! 1993: the V filtration @var{v_filtration}.
! 1994: @item @var{v} is a list of variables.
! 1995: @item The return value is a list of lists.
! 1996: The first entry of each list is the slope and the second entry
! 1997: is the weight vector for which the microcharacteristic variety is
! 1998: not bihomogeneous.
! 1999: @end itemize
! 2000:
! 2001: @noindent
! 2002: Algorithm:
! 2003: see "A.Assi, F.J.Castro-Jimenez and J.M.Granger,
! 2004: How to calculate the slopes of a D-module, Compositio Math, 104, 1-17, 1996"
! 2005: Note that the signs of the slopes are negative, but the absolute values
! 2006: of the slopes are returned.
! 2007:
! 2008: */
! 2009:
! 2010: /*&ja
! 2011: @node sm1.slope,,, SM1 Functions
! 2012: @subsection @code{sm1.slope}
! 2013: @findex sm1.slope
! 2014: @table @t
! 2015: @item sm1.slope(@var{ii},@var{v},@var{f_filtration},@var{v_filtration}|proc=@var{p})
! 2016: :: $BHyJ,J}Dx<07O(B @var{ii} $B$N(B slope $B$rLa$9(B.
! 2017: @end table
! 2018:
! 2019: @table @var
! 2020: @item return
! 2021: $B?t(B
! 2022: @item p
! 2023: $B?t(B
! 2024: @item ii
! 2025: $B%j%9%H(B ($BJ}Dx<0(B)
! 2026: @item v
! 2027: $B%j%9%H(B ($BJQ?t(B)
! 2028: @item f_filtration
! 2029: $B%j%9%H(B (weight vector)
! 2030: @item v_filtration
! 2031: $B%j%9%H(B (weight vector)
! 2032: @end table
! 2033:
! 2034: @itemize @bullet
! 2035: @item @code{sm1.slope} $B$O(B
! 2036: $BHyJ,J}Dx<07O(B @var{ii} $B$N(B V filtration @var{v_filtration}
! 2037: $B$G;XDj$9$kD6J?LL$K1h$C$F$N(B (geomeric) slope $B$r7W;;$9$k(B.
! 2038: @item @var{v} $B$OJQ?t$N%j%9%H(B.
! 2039: @item $BLa$jCM$O(B, $B%j%9%H$r@.J,$H$9$k%j%9%H$G$"$k(B.
! 2040: $B@.J,%j%9%H$NBh(B 1 $BMWAG$,(B slope, $BBh(B 2 $BMWAG$O(B, $B$=$N(B weight vector $B$KBP1~$9$k(B
! 2041: microcharacteristic variety $B$,(B bihomogeneous $B$G$J$$(B.
! 2042: @end itemize
! 2043:
! 2044: @noindent
! 2045: Algorithm:
! 2046: "A.Assi, F.J.Castro-Jimenez and J.M.Granger,
! 2047: How to calculate the slopes of a D-module, Compositio Math, 104, 1-17, 1996"
! 2048: $B$r$_$h(B.
! 2049: Slope $B$NK\Mh$NDj5A$G$O(B, $BId9f$,Ii$H$J$k$,(B, $B$3$N%W%m%0%i%`$O(B,
! 2050: Slope $B$N@dBPCM$rLa$9(B.
! 2051: */
! 2052:
! 2053: /*&C
! 2054:
! 2055: @example
! 2056:
! 2057: [284] A= sm1.gkz([ [[1,2,3]], [-3] ]);
! 2058:
! 2059:
! 2060: [285] sm1.slope(A[0],A[1],[0,0,0,1,1,1],[0,0,-1,0,0,1]);
! 2061:
! 2062: [286] A2 = sm1.gkz([ [[1,1,1,0],[2,-3,1,-3]], [1,0]]);
! 2063: (* This is an interesting example given by Laura Matusevich,
! 2064: June 9, 2001 *)
! 2065:
! 2066: [287] sm1.slope(A2[0],A2[1],[0,0,0,0,1,1,1,1],[0,0,0,-1,0,0,0,1]);
! 2067:
! 2068:
! 2069: @end example
! 2070:
! 2071: */
! 2072: /*&en
! 2073: @table @t
! 2074: @item Reference
! 2075: @code{sm.gb}
! 2076: @end table
! 2077: */
! 2078: /*&ja
! 2079: @table @t
! 2080: @item $B;2>H(B
! 2081: @code{sm.gb}
! 2082: @end table
! 2083: */
! 2084:
! 2085:
! 2086: /*&en
! 2087: @include sm1-auto.en
! 2088: */
! 2089:
! 2090: /*&ja
! 2091: @include sm1-auto.ja
! 2092: */
! 2093:
! 2094:
! 2095: end$
! 2096:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>