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