[BACK]Return to sm1.oxw CVS log [TXT][DIR] Up to [local] / OpenXM / src / asir-contrib / packages / doc / sm1

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>