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