=================================================================== RCS file: /home/cvs/OpenXM/src/asir-contrib/packages/doc/Attic/sm1.oxweave,v retrieving revision 1.7 retrieving revision 1.14 diff -u -p -r1.7 -r1.14 --- OpenXM/src/asir-contrib/packages/doc/Attic/sm1.oxweave 2003/05/04 08:37:40 1.7 +++ OpenXM/src/asir-contrib/packages/doc/Attic/sm1.oxweave 2004/03/05 15:30:50 1.14 @@ -1,12 +1,13 @@ -/*$OpenXM: OpenXM/src/asir-contrib/packages/doc/sm1.oxweave,v 1.6 2002/08/23 08:16:13 takayama Exp $ */ +/*$OpenXM: OpenXM/src/asir-contrib/packages/doc/sm1.oxweave,v 1.13 2003/07/28 01:36:36 takayama Exp $ */ /*&C-texi @c DO NOT EDIT THIS FILE oxphc.texi */ /*&C-texi @node SM1 Functions,,, Top + */ -/*&jp-texi +/*&ja @chapter SM1 函数 この節では sm1 の ox サーバ @code{ox_sm1_forAsir} @@ -32,7 +33,7 @@ $X$ は平面に二つの穴をあけた空間であるので, ��次元を答える. @end tex */ -/*&eg-texi +/*&en @chapter SM1 Functions This chapter describes interface functions for @@ -72,7 +73,7 @@ cohomology groups. @include opening.texi -[283] sm1_deRham([x*(x-1),[x]]); +[283] sm1.deRham([x*(x-1),[x]]); [1,2] @end example */ @@ -86,41 +87,45 @@ Grobner Deformations of Hypergeometric Differential Eq See the appendix. */ -/* +/*&C-texi @menu * ox_sm1_forAsir:: -* sm1_start:: -* sm1:: -* sm1_push_int0:: -* sm1_gb:: -* sm1_deRham:: -* sm1_hilbert:: -* hilbert_polynomial:: -* sm1_genericAnn:: -* sm1_wTensor0:: -* sm1_reduction:: -* sm1_xml_tree_to_prefix_string:: -* sm1_syz:: -* sm1_mul:: -* sm1_distraction:: -* sm1_gkz:: -* sm1_appell1:: -* sm1_appell4:: -* sm1_rank:: -* sm1_auto_reduce:: -* sm1_slope:: +* sm1.start:: +* sm1.sm1:: +* sm1.push_int0:: +* sm1.gb:: +* sm1.deRham:: +* sm1.hilbert:: +* sm1.genericAnn:: +* sm1.wTensor0:: +* sm1.reduction:: +* sm1.xml_tree_to_prefix_string:: +* sm1.syz:: +* sm1.mul:: +* sm1.distraction:: +* sm1.gkz:: +* sm1.appell1:: +* sm1.appell4:: +* sm1.rank:: +* sm1.auto_reduce:: +* sm1.slope:: +* sm1.ahg:: +* sm1.bfunction:: +* sm1.generalized_bfunction:: +* sm1.restriction:: +* sm1.saturation:: @end menu */ -/*&jp-texi +/*&ja @section @code{ox_sm1_forAsir} サーバ */ -/*&eg-texi +/*&en @section @code{ox_sm1_forAsir} Server */ -/*&eg-texi -@node ox_sm1_forAsir,,, Top +/*&en +@node ox_sm1_forAsir,,, SM1 Functions @subsection @code{ox_sm1_forAsir} @findex ox_sm1_forAsir @table @t @@ -130,7 +135,7 @@ See the appendix. @itemize @bullet @item @code{ox_sm1_forAsir} is the @code{sm1} server started from asir - by the command @code{sm1_start}. + by the command @code{sm1.start}. In the standard setting, @* @code{ox_sm1_forAsir} = @file{$(OpenXM_HOME)/lib/sm1/bin/ox_sm1} @@ -150,8 +155,8 @@ See the appendix. to build your own server by reading @code{sm1} macros. @end itemize */ -/*&jp-texi -@node ox_sm1_forAsir,,, Top +/*&ja +@node ox_sm1_forAsir,,, SM1 Functions @subsection @code{ox_sm1_forAsir} @findex ox_sm1_forAsir @table @t @@ -161,7 +166,7 @@ to build your own server by reading @code{sm1} macros. @itemize @bullet @item サーバ @code{ox_sm1_forAsir} は @code{asir} よりコマンド - @code{sm1_start} で起動される @code{sm1} サーバである. + @code{sm1.start} で起動される @code{sm1} サーバである. 標準的設定では, @* @code{ox_sm1_forAsir} = @@ -183,35 +188,21 @@ to build your own server by reading @code{sm1} macros. @end itemize */ -def sm1_check_server(P) { - M=ox_get_serverinfo(P); - if (M == []) { - return(sm1_start()); - } - if (M[0][1] != "Ox_system=ox_sm1_ox_sm1_forAsir") { - print("Warning: the server number ",0)$ - print(P,0)$ - print(" is not ox_sm1_forAsir server.")$ - print("Starting ox_sm1_forAsir server on the localhost.")$ - return(sm1_start()); - } - return(P); -} -/*&jp-texi +/*&ja @section 函数一覧 */ -/*&eg-texi +/*&en @section Functions */ -/*&eg-texi -@c sort-sm1_start -@node sm1_start,,, SM1 Functions -@subsection @code{sm1_start} -@findex sm1_start +/*&en +@c sort-sm1.start +@node sm1.start,,, SM1 Functions +@subsection @code{sm1.start} +@findex sm1.start @table @t -@item sm1_start() +@item sm1.start() :: Start @code{ox_sm1_forAsir} on the localhost. @end table @@ -242,16 +233,18 @@ for computation in @code{sm1}. and @code{x0}, ..., @code{x20}, @code{y0}, ..., @code{y20}, @code{z0}, ..., @code{z20} can be used as variables for ring of differential operators in default. (cf. @code{Sm1_ord_list} in @code{sm1}). -@item The descriptor is stored in @code{Sm1_proc}. +@item The descriptor is stored in @code{static Sm1_proc}. +The descriptor can be obtained by the function +@code{sm1.get_Sm1_proc()}. @end itemize */ -/*&jp-texi -@c sort-sm1_start -@node sm1_start,,, SM1 Functions -@subsection @code{sm1_start} -@findex sm1_start +/*&ja +@c sort-sm1.start +@node sm1.start,,, SM1 Functions +@subsection @code{sm1.start} +@findex sm1.start @table @t -@item sm1_start() +@item sm1.start() :: localhost で @code{ox_sm1_forAsir} をスタートする. @end table @@ -282,7 +275,8 @@ differential operators in default. (cf. @code{Sm1_ord_ それから, @code{x0}, ..., @code{x20}, @code{y0}, ..., @code{y20}, @code{z0}, ..., @code{z20} は, デフォールトで微分作用素環の変数として 使える (cf. @code{Sm1_ord_list} in @code{sm1}). -@item 識別番号は @code{Sm1_proc} に格納される. +@item 識別番号は @code{static Sm1_proc} に格納される. +この識別番号は関数 @code{sm1.get_Sm1_proc()} でとりだすことができる. @end itemize */ /*&C-texi @@ -295,64 +289,36 @@ differential operators in default. (cf. @code{Sm1_ord_ a*da [262] cc*dcc; dcc*cc -[263] sm1_mul(da,a,[a]); +[263] sm1.mul(da,a,[a]); a*da+1 -[264] sm1_mul(a,da,[a]); +[264] sm1.mul(a,da,[a]); a*da @end example */ -/*&eg-texi +/*&en @table @t @item Reference - @code{ox_launch}, @code{sm1_push_int0}, @code{sm1_push_poly0}, + @code{ox_launch}, @code{sm1.push_int0}, @code{sm1.push_poly0}, @code{ord} @end table */ -/*&jp-texi +/*&ja @table @t @item 参照 - @code{ox_launch}, @code{sm1_push_int0}, @code{sm1_push_poly0}, + @code{ox_launch}, @code{sm1.push_int0}, @code{sm1.push_poly0}, @code{ord} @end table */ -def sm1_start() { - extern Sm1_lib; - extern Xm_noX; - extern Sm1_proc; - if (Xm_noX) { - P = ox_launch_nox(0,Sm1_lib+"/bin/ox_sm1_forAsir"); - }else{ - P = ox_launch(0,Sm1_lib+"/bin/ox_sm1_forAsir"); - } - if (Xm_noX) { - sm1(P," oxNoX "); - } - ox_check_errors(P); - Sm1_proc = P; - return(P); -} - -/* ox_sm1 */ -/* P is the process number */ -def sm1flush(P) { - ox_execute_string(P,"[(flush)] extension pop"); -} - -def sm1push(P,F) { - G = ox_ptod(F); - ox_push_cmo(P,G); -} - -/*&eg-texi +/*&en @c sort-sm1 -@node sm1,,, SM1 Functions -@subsection @code{sm1} -@findex sm1 +@node sm1.sm1,,, SM1 Functions +@subsection @code{sm1.sm1} +@findex sm1.sm1 @table @t -@item sm1(@var{p},@var{s}) +@item sm1.sm1(@var{p},@var{s}) :: ask the @code{sm1} server to execute the command string @var{s}. @end table @@ -368,14 +334,15 @@ String @itemize @bullet @item It asks the @code{sm1} server of the descriptor number @var{p} to execute the command string @var{s}. +(In the next example, the descriptor number is 0.) @end itemize */ -/*&jp-texi -@node sm1,,, SM1 Functions -@subsection @code{sm1} -@findex sm1 +/*&ja +@node sm1.sm1,,, SM1 Functions +@subsection @code{sm1.sm1} +@findex sm1.sm1 @table @t -@item sm1(@var{p},@var{s}) +@item sm1.sm1(@var{p},@var{s}) :: サーバ @code{sm1} にコマンド列 @var{s} を実行してくれるようにたのむ. @end table @@ -391,148 +358,43 @@ to execute the command string @var{s}. @itemize @bullet @item 識別番号 @var{p} の @code{sm1} サーバに コマンド列 @var{s} を実行してくれるように頼む. + (次の例では, 識別番号 0) @end itemize */ /*&C-texi @example -[261] sm1(0," ( (x-1)^2 ) . "); +[261] sm1.sm1(0," ( (x-1)^2 ) . "); 0 [262] ox_pop_string(0); x^2-2*x+1 -[263] sm1(0," [(x*(x-1)) [(x)]] deRham "); +[263] sm1.sm1(0," [(x*(x-1)) [(x)]] deRham "); 0 [264] ox_pop_string(0); [1 , 2] @end example */ -def sm1(P,F) { - ox_execute_string(P,F); - sm1flush(P); -} -/*&jp-texi + +/*&ja @table @t @item 参照 - @code{sm1_start}, @code{ox_push_int0}, @code{sm1_push_poly0}, @code{Sm1_proc}. + @code{sm1.start}, @code{ox_push_int0}, @code{sm1.push_poly0}, @code{sm1.get_Sm1_proc()}. @end table */ -/*&eg-texi +/*&en @table @t @item Reference - @code{sm1_start}, @code{ox_push_int0}, @code{sm1_push_poly0}, @code{Sm1_proc}. + @code{sm1.start}, @code{ox_push_int0}, @code{sm1.push_poly0}, @code{sm1.get_Sm1_proc()}. @end table */ -def sm1pop(P) { - return(ox_pop_cmo(P)); -} -def sm1_to_asir_form(V) { return(toAsirForm(V)); } -def toAsirForm(V) { - extern ToAsirForm_V; /* for debug */ - if (type(V) == 4) { /* list */ - if((length(V) == 3) && (V[0] == "sm1_dp")) { - /* For debugging. */ - if (ToAsir_Debug != 0) { - ToAsirForm_V = V; - print(map(type,V[1])); - print(V); - } - /* */ - Vlist = map(strtov,V[1]); - return(dp_dtop(V[2],Vlist)); - } else { - return(map(toAsirForm,V)); - } - }else{ - return(V); - } -} - -def sm1_toOrdered(V) { - if (type(V) == 4) { /* list */ - if((length(V) == 3) && (V[0] == "sm1_dp")) { - Vlist = map(strtov,V[1]); - Ans = ""; - F = V[2]; - while (F != 0) { - G = dp_hm(F); - F = dp_rest(F); - if (dp_hc(G)>0) { - Ans += "+"; - } - Ans += rtostr(dp_dtop(G,Vlist)); - } - return Ans; - } else { - return(map(sm1_toOrdered,V)); - } - }else{ - return(V); - } -} - - -def sm1_push_poly0_R(A,P,Vlist) { - return(sm1_push_poly0(P,A,Vlist)); -} -def sm1_push_poly0(P,A,Vlist) { - if (type(Vlist[0]) == 4) { - Vlist = Vlist[2]; - } - /* if Vlist=[[e,x,y,H,E,Dx,Dy,h],[e,x,y,hH,eE,dx,dy,h],[e,x,y,hH,eE,dx,dy,h]] - list of str (sm1) list of str (asir) list of var (asir) - then we execute the code above. - */ - if (type(A) == 2 || type(A) == 1) { /* recursive poly or number*/ - A = dp_ptod(A,Vlist); - ox_push_cmo(P,A); - return; - } - if (type(A) == 0) { /* zero */ - sm1(P," (0). "); - return; - } - if (type(A) == 4) { /* list */ - ox_execute_string(P," [ "); - map(sm1_push_poly0_R,A,P,Vlist); - ox_execute_string(P," ] "); - return; - } - ox_push_cmo(P,A); - ox_check_errors2(P); - return; -} -/* sm1_push_poly0(0,[0,1,x+y,["Hello",y^3]],[x,y]); */ - -def sm1_pop_poly0(P,Vlist) { - if (type(Vlist[0]) == 4) { - Vlist = Vlist[2]; - } - A = ox_pop_cmo(P); - return(sm1_pop_poly0_0(P,A,Vlist)); -} -def sm1_pop_poly0_0_R(A,P,Vlist) { - return(sm1_pop_poly0_0(P,A,Vlist)); -} -def sm1_pop_poly0_0(P,A,Vlist) { - if (type(A) == 4) { - return(map(sm1_pop_poly0_0_R,A,P,Vlist)); - } - if (type(A)== 9) {return(dp_dtop(A,Vlist));} - return(A); -} - -def sm1_push_int0_R(A,P) { - return(sm1_push_int0(P,A)); -} - -/*&eg-texi -@c sort-sm1_push_int0 -@node sm1_push_int0,,, SM1 Functions -@subsection @code{sm1_push_int0} -@findex sm1_push_int0 +/*&en +@c sort-sm1.push_int0 +@node sm1.push_int0,,, SM1 Functions +@subsection @code{sm1.push_int0} +@findex sm1.push_int0 @table @t -@item sm1_push_int0(@var{p},@var{f}) +@item sm1.push_int0(@var{p},@var{f}) :: push the object @var{f} to the server with the descriptor number @var{p}. @end table @@ -564,13 +426,13 @@ Note that @code{ox_push_cmo(@var{p},1234)} send the bi @item In other cases, @code{ox_push_cmo} is called without data conversion. @end itemize */ -/*&jp-texi -@c sort-sm1_push_int0 -@node sm1_push_int0,,, SM1 Functions -@subsection @code{sm1_push_int0} -@findex sm1_push_int0 +/*&ja +@c sort-sm1.push_int0 +@node sm1.push_int0,,, SM1 Functions +@subsection @code{sm1.push_int0} +@findex sm1.push_int0 @table @t -@item sm1_push_int0(@var{p},@var{f}) +@item sm1.push_int0(@var{p},@var{f}) :: オブジェクト @var{f} を識別子 @var{p} のサーバへ送る. @end table @@ -601,9 +463,9 @@ Note that @code{ox_push_cmo(@var{p},1234)} send the bi */ /*&C @example -[219] P=sm1_start(); +[219] P=sm1.start(); 0 -[220] sm1_push_int0(P,x*dx+1); +[220] sm1.push_int0(P,x*dx+1); 0 [221] A=ox_pop_cmo(P); x*dx+1 @@ -612,7 +474,7 @@ x*dx+1 @end example @example -[271] sm1_push_int0(0,[x*(x-1),[x]]); +[271] sm1.push_int0(0,[x*(x-1),[x]]); 0 [272] ox_execute_string(0," deRham "); 0 @@ -620,13 +482,13 @@ x*dx+1 [1,2] @end example */ -/*&eg-texi +/*&en @table @t @item Reference @code{ox_push_cmo} @end table */ -/*&jp-texi +/*&ja @table @t @item Reference @code{ox_push_cmo} @@ -634,140 +496,18 @@ x*dx+1 */ -def sm1_push_int0(P,A) { - if (type(A) == 1 || type(A) == 0) { - /* recursive poly or number or 0*/ - A = rtostr(A); - ox_push_cmo(P,A); - sm1(P," . (integer) dc "); - return; - } - if (type(A) == 2) { - A = rtostr(A); ox_push_cmo(P,A); - return; - } - if (type(A) == 4) { /* list */ - ox_execute_string(P," [ "); - map(sm1_push_int0_R,A,P); - ox_execute_string(P," ] "); - return; - } - ox_push_cmo(P,A); - return; -} -def sm1_push_0_R(A,P) { - return(sm1_push_0(P,A)); -} -def sm1_push_0(P,A) { - if (type(A) == 0) { - /* 0 */ - A = rtostr(A); - ox_push_cmo(P,A); - sm1(P," .. "); - return; - } - if (type(A) == 2) { - /* Vlist = vars(A); One should check Vlist is a subset of Vlist3. */ - Vlist2 = sm1_vlist(P); - Vlist3 = map(strtov,Vlist2[1]); - B = dp_ptod(A,Vlist3); - ox_push_cmo(P,B); - return; - } - if (type(A) == 4) { /* list */ - ox_execute_string(P," [ "); - map(sm1_push_0_R,A,P); - ox_execute_string(P," ] "); - return; - } - ox_push_cmo(P,A); - return; -} - -def sm1_push(P,A) { - sm1_push_0(P,A); -} - - -def sm1_pop(P) { - extern V_sm1_pop; - sm1(P," toAsirForm "); - V_sm1_pop = ox_pop_cmo(P); - return(toAsirForm(V_sm1_pop)); -} - -def sm1_pop2(P) { - extern V_sm1_pop; - sm1(P," toAsirForm "); - V_sm1_pop = ox_pop_cmo(P); - return([toAsirForm(V_sm1_pop),V_sm1_pop]); -} - -def sm1_check_arg_gb(A,Fname) { - /* A = [[x^2+y^2-1,x*y],[x,y],[[x,-1,y,-1]]] */ - if (type(A) != 4) { - error(Fname+" : argument should be a list."); - } - if (length(A) < 2) { - error(Fname+" : argument should be a list of 2 or 3 elements."); - } - if (type(A[0]) != 4) { - error(Fname+" : example: [[dx^2+dy^2-4,dx*dy-1]<== it should be a list,[x,y]]"); - } - if (!sm1_isListOfPoly(A[0])) { - error(Fname+" : example: [[dx^2+dy^2-4,dx*dy-1]<== it should be a list of polynomials or strings,[x,y]]"); - } - if (!sm1_isListOfVar(A[1])) { - error(Fname+" : example: [[dx^2+dy^2-4,dx*dy-1],[x,y]<== list of variables or \"x,y\"]"); - } - if (length(A) >= 3) { - if (type(A[2]) != 4) { - error(Fname+" : example:[[dx^2+dy^2-4,dx*dy-1],[x,y],[[x,-1,dx,1]]<== a list of weights]"); - } - if (type(A[2][0]) != 4) { - error(Fname+" : example:[[dx^2+dy^2-4,dx*dy-1],[x,y],[[x,-1,dx,1],[dy,1]]<== a list of lists of weight]"); - } - } - return(1); -} - -def sm1_isListOfPoly(A) { - if (type(A) !=4 ) return(0); - N = length(A); - for (I=0; I<N; I++) { - if (!(type(A[I]) == 0 || type(A[I]) == 1 || type(A[I]) == 2 || - type(A[I]) == 7 || type(A[I]) == 9)) { - return(0); - } - } - return(1); -} - -def sm1_isListOfVar(A) { - if (type(A) == 7) return(1); /* "x,y" */ - if (type(A) != 4) return(0); - N = length(A); - for (I=0; I<N; I++) { - if (!(type(A[I]) == 2 || type(A[I]) == 7 )) { - return(0); - } - } - return(1); -} - -/*&eg-texi -@c sort-sm1_gb -@node sm1_gb,,, SM1 Functions -@node sm1_gb_d,,, SM1 Functions -@subsection @code{sm1_gb} -@findex sm1_gb -@findex sm1_gb_d +/*&en +@c sort-sm1.gb +@node sm1.gb,,, SM1 Functions +@subsection @code{sm1.gb} +@findex sm1.gb +@findex sm1.gb_d @table @t -@item sm1_gb([@var{f},@var{v},@var{w}]|proc=@var{p},sorted=@var{q},dehomogenize=@var{r}) +@item sm1.gb([@var{f},@var{v},@var{w}]|proc=@var{p},sorted=@var{q},dehomogenize=@var{r}) :: computes the Grobner basis of @var{f} in the ring of differential operators with the variable @var{v}. -@item sm1_gb_d([@var{f},@var{v},@var{w}]|proc=@var{p}) +@item sm1.gb_d([@var{f},@var{v},@var{w}]|proc=@var{p}) :: computes the Grobner basis of @var{f} in the ring of differential operators with the variable @var{v}. The result will be returned as a list of distributed polynomials. @@ -791,11 +531,11 @@ List If @var{w} is not given, the graded reverse lexicographic order will be used to compute Grobner basis. @item - The return value of @code{sm1_gb} + The return value of @code{sm1.gb} is the list of the Grobner basis of @var{f} and the initial terms (when @var{w} is not given) or initial ideal (when @var{w} is given). @item - @code{sm1_gb_d} returns the results by a list of distributed polynomials. + @code{sm1.gb_d} returns the results by a list of distributed polynomials. Monomials in each distributed polynomial are ordered in the given order. The return value consists of [variable names, order matrix, grobner basis in districuted polynomials, @@ -805,7 +545,7 @@ List the homogenized Weyl algebra (See Section 1.2 of the book of SST). The homogenization variable h is automatically added. @item - When the optional variable @var{q} is set, @code{sm1_gb} returns, + When the optional variable @var{q} is set, @code{sm1.gb} returns, as the third return value, a list of the Grobner basis and the initial ideal with sums of monomials sorted by the given order. @@ -814,17 +554,16 @@ List the polynomials are dehomogenized (,i.e., h is set to 1). @end itemize */ -/*&jp-texi -@c sort-sm1_gb -@node sm1_gb,,, SM1 Functions -@node sm1_gb_d,,, SM1 Functions -@subsection @code{sm1_gb} -@findex sm1_gb -@findex sm1_gb_d +/*&ja +@c sort-sm1.gb +@node sm1.gb,,, SM1 Functions +@subsection @code{sm1.gb} +@findex sm1.gb +@findex sm1.gb_d @table @t -@item sm1_gb([@var{f},@var{v},@var{w}]|proc=@var{p},sorted=@var{q},dehomogenize=@var{r}) +@item sm1.gb([@var{f},@var{v},@var{w}]|proc=@var{p},sorted=@var{q},dehomogenize=@var{r}) :: @var{v} 上の微分作用素環において @var{f} のグレブナ基底を計算する. -@item sm1_gb_d([@var{f},@var{v},@var{w}]|proc=@var{p}) +@item sm1.gb_d([@var{f},@var{v},@var{w}]|proc=@var{p}) :: @var{v} 上の微分作用素環において @var{f} のグレブナ基底を計算する. 結果を分散多項式のリストで戻す. @end table @@ -845,11 +584,11 @@ List 省略した場合, graded reverse lexicographic order をつかって ブレブナ基底を計算する. @item - @code{sm1_gb} の戻り値は @var{f} のグレブナ基底およびイニシャルモノミアル + @code{sm1.gb} の戻り値は @var{f} のグレブナ基底およびイニシャルモノミアル ( @var{w} がないとき ) または イニシァル多項式 ( @var{w} が与えらたとき) のリストである. @item - @code{sm1_gb_d} は結果を分散多項式のリストで戻す. + @code{sm1.gb_d} は結果を分散多項式のリストで戻す. 多項式の中に現れるモノミアルはグレブナ基底を計算するときに与えらた順序でソートされている. 戻り値は [変数名のリスト, 順序をきめる行列, グレブナ基底, イニシャルモノミアルまたはイニシァル多項式] @@ -867,11 +606,11 @@ List */ /*&C-texi @example -[293] sm1_gb([[x*dx+y*dy-1,x*y*dx*dy-2],[x,y]]); +[293] sm1.gb([[x*dx+y*dy-1,x*y*dx*dy-2],[x,y]]); [[x*dx+y*dy-1,y^2*dy^2+2],[x*dx,y^2*dy^2]] @end example */ -/*&eg-texi +/*&en In the example above, @tex the set $\{ x \partial_x + y \partial_y -1, y^2 \partial_y^2+2\}$ @@ -882,7 +621,7 @@ The set $\{x \partial_x, y^2 \partial_y\}$ is the lead (the initial monominals) of the Gr\"obner basis. @end tex */ -/*&jp-texi +/*&ja 上の例において, @tex 集合 $\{ x \partial_x + y \partial_y -1, y^2 \partial_y^2+2\}$ @@ -896,11 +635,11 @@ graded reverse lexicographic order に関するグレブナ������γ∑纔��舌�逅跂��温丸�鼾円艪�桷�黄糯涓⑳��糯⑰檪椈�檪栩鬻�穐糯���毫櫞��温丸�鼾窺艪�桷�黄糯涓⑳��糯⑰檪椈�檪栩鬻�穐糯���毫櫞��栩鬻�埇貝勘糯�糯浚��埇沖榎�鬻�糯浚毫��舌鈔�纔瘢韭����⑮�繚∑纔���緕��侮���纔瘢韭�痰阮絳���迴鈿迚瘡���泉纔��ろ����埇�樶癇�瘡燔溂�樶癇�瘡燎溪�瘤��誓�Ⅴ嘘���飢��誓�竢逅癇繖�磔���鱚�鴦�跂�竢苒瘰蓍�闥粤������蜀�さ違�筰��軌礑�筵�Г��緕�����鱚�鴦�跂�竢苒鞜蓍�闥粤鬧��舌鈔������⑮�褓∑纔���裃��上の例において二つのモノミアル @tex $m = x^a y^b \partial_x^c \partial_y^d$ および @@ -929,7 +668,7 @@ $m' = x^{a'} y^{b'} \partial_x^{c'} \partial_y^{d'}$ */ /*&C-texi @example -[294] F=sm1_gb([[dx^2+dy^2-4,dx*dy-1],[x,y],[[dx,50,dy,2,x,1]]]|sorted=1); +[294] F=sm1.gb([[dx^2+dy^2-4,dx*dy-1],[x,y],[[dx,50,dy,2,x,1]]]|sorted=1); map(print,F[2][0])$ map(print,F[2][1])$ @end example @@ -937,14 +676,14 @@ $m' = x^{a'} y^{b'} \partial_x^{c'} \partial_y^{d'}$ /*&C-texi @example [595] - sm1_gb([["dx*(x*dx +y*dy-2)-1","dy*(x*dx + y*dy -2)-1"], + sm1.gb([["dx*(x*dx +y*dy-2)-1","dy*(x*dx + y*dy -2)-1"], [x,y],[[dx,1,x,-1],[dy,1]]]); [[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], [x*dx^2+(y*dy-h^2)*dx,x*dy*dx+y*dy^2-h^2*dy-h^3,h^3*dx]] [596] - sm1_gb_d([["dx (x dx +y dy-2)-1","dy (x dx + y dy -2)-1"], + sm1.gb_d([["dx (x dx +y dy-2)-1","dy (x dx + y dy -2)-1"], "x,y",[[dx,1,x,-1],[dy,1]]]); [[[e0,x,y,H,E,dx,dy,h], [[0,-1,0,0,0,1,0,0],[0,0,0,0,0,0,1,0],[1,0,0,0,0,0,0,0], @@ -961,61 +700,28 @@ $m' = x^{a'} y^{b'} \partial_x^{c'} \partial_y^{d'}$ @end example */ -/*&eg-texi +/*&en @table @t @item Reference - @code{sm1_reduction}, @code{sm1_rat_to_p} + @code{sm1.reduction}, @code{sm1.rat_to_p} @end table */ -/*&jp-texi +/*&ja @table @t @item 参照 - @code{sm1_reduction}, @code{sm1_rat_to_p} + @code{sm1.reduction}, @code{sm1.rat_to_p} @end table */ -def sm1_gb(A) { - SM1_FIND_PROC(P); - P = sm1_check_server(P); - sm1_check_arg_gb(A,"Error in sm1_gb"); - sm1_push_int0(P,A); - sm1(P," gb "); - T = sm1_pop2(P); - return(append(T[0],[sm1_toOrdered(T[1])])); -} -def sm1_gb_d(A) { - SM1_FIND_PROC(P); - P = sm1_check_server(P); - sm1_check_arg_gb(A,"Error in sm1_gb_d"); - sm1_push_int0(P,A); - sm1(P," gb /gb.tmp1 set "); - sm1(P," gb.tmp1 getOrderMatrix {{(universalNumber) dc} map } map /gb.tmp2 set "); - sm1(P," gb.tmp1 0 get 0 get getvNamesCR { [(class) (indeterminate)] dc } map /gb.tmp3 set "); - sm1(P," gb.tmp1 getRing ring_def "); /* Change the current ring! */ - sm1(P,"[[ gb.tmp3 gb.tmp2] gb.tmp1] "); - return(ox_pop_cmo(P)); -} -def sm1_pgb(A) { - SM1_FIND_PROC(P); - P = sm1_check_server(P); - sm1_check_arg_gb(A,"Error in sm1_pgb"); - sm1(P," set_timer "); - sm1_push_int0(P,A); - sm1(P," pgb "); - B = sm1_pop(P); - sm1(P," set_timer "); - return(B); -} - -/*&eg-texi -@c sort-sm1_deRham -@node sm1_deRham,,, SM1 Functions -@subsection @code{sm1_deRham} -@findex sm1_deRham +/*&en +@c sort-sm1.deRham +@node sm1.deRham,,, SM1 Functions +@subsection @code{sm1.deRham} +@findex sm1.deRham @table @t -@item sm1_deRham([@var{f},@var{v}]|proc=@var{p}) +@item sm1.deRham([@var{f},@var{v}]|proc=@var{p}) :: ask the server to evaluate the dimensions of the de Rham cohomology groups of C^n - (the zero set of @var{f}=0). @end table @@ -1038,8 +744,8 @@ List [dim H^0(X,C), dim H^1(X,C), dim H^2(X,C), ..., dim H^n(X,C)]. @item @var{v} is a list of variables. n = @code{length(@var{v})}. @item - @code{sm1_deRham} requires huge computer resources. - For example, @code{sm1_deRham(0,[x*y*z*(x+y+z-1)*(x-y),[x,y,z]])} + @code{sm1.deRham} requires huge computer resources. + For example, @code{sm1.deRham(0,[x*y*z*(x+y+z-1)*(x-y),[x,y,z]])} is already very hard. @item To efficiently analyze the roots of b-function, @code{ox_asir} should be used @@ -1048,19 +754,19 @@ List by the command @* @code{sm1(0,"[(parse) (oxasir.sm1) pushfile] extension");} This command is automatically executed when @code{ox_sm1_forAsir} is started. -@item If you make an interruption to the function @code{sm1_deRham} -by @code{ox_reset(Sm1_proc);}, the server might get out of the standard +@item If you make an interruption to the function @code{sm1.deRham} +by @code{ox_reset(sm1.get_Sm1_proc());}, the server might get out of the standard mode. So, it is strongly recommended to execute the command -@code{ox_shutdown(Sm1_proc);} to interrupt and restart the server. +@code{ox_shutdown(sm1.get_Sm1_proc());} to interrupt and restart the server. @end itemize */ -/*&jp-texi -@c sort-sm1_deRham -@node sm1_deRham,,, SM1 Functions -@subsection @code{sm1_deRham} -@findex sm1_deRham +/*&ja +@c sort-sm1.deRham +@node sm1.deRham,,, SM1 Functions +@subsection @code{sm1.deRham} +@findex sm1.deRham @table @t -@item sm1_deRham([@var{f},@var{v}]|proc=@var{p}) +@item sm1.deRham([@var{f},@var{v}]|proc=@var{p}) :: 空間 C^n - (the zero set of @var{f}=0) のドラームコホモロジ群の次元を計算してくれるようにサーバに頼む. @end table @@ -1082,8 +788,8 @@ mode. So, it is strongly recommended to execute the co を戻す. @item @var{v} は変数のリスト. n = @code{length(@var{v})} である. @item - @code{sm1_deRham} は計算機の資源を大量に使用する. - たとえば @code{sm1_deRham(0,[x*y*z*(x+y+z-1)*(x-y),[x,y,z]])} + @code{sm1.deRham} は計算機の資源を大量に使用する. + たとえば @code{sm1.deRham(0,[x*y*z*(x+y+z-1)*(x-y),[x,y,z]])} の計算すらすでに非常に大変である. @item b-関数の根を効率よく解析するには, @code{ox_asir} が @code{ox_sm1_forAsir} @@ -1092,34 +798,34 @@ mode. So, it is strongly recommended to execute the co を用いて, @code{ox_asir} との通信モジュールをあらかじめロードしておくとよい. このコマンドは @code{ox_asir_forAsir} のスタート時に自動的に実行されている. @item - @code{sm1_deRham} を @code{ox_reset(Sm1_proc);} で中断すると, + @code{sm1.deRham} を @code{ox_reset(sm1.get_Sm1_proc());} で中断すると, 以後 sm1 サーバが非標準モードに入り予期しない動作をする場合 - があるので, コマンド @code{ox_shutdown(Sm1_proc);} で, @code{ox_sm1_forAsir} + があるので, コマンド @code{ox_shutdown(sm1.get_Sm1_proc());} で, @code{ox_sm1_forAsir} を一時 shutdown してリスタートした方が安全である. @end itemize */ /*&C-texi @example -[332] sm1_deRham([x^3-y^2,[x,y]]); +[332] sm1.deRham([x^3-y^2,[x,y]]); [1,1,0] -[333] sm1_deRham([x*(x-1),[x]]); +[333] sm1.deRham([x*(x-1),[x]]); [1,2] @end example */ -/*&eg-texi +/*&en @table @t @item Reference - @code{sm1_start}, @code{deRham} (sm1 command) + @code{sm1.start}, @code{deRham} (sm1 command) @item Algorithm: Oaku, Takayama, An algorithm for de Rham cohomology groups of the complement of an affine variety via D-module computation, Journal of pure and applied algebra 139 (1999), 201--233. @end table */ -/*&jp-texi +/*&ja @table @t @item 参照 - @code{sm1_start}, @code{deRham} (sm1 command) + @code{sm1.start}, @code{deRham} (sm1 command) @item Algorithm: Oaku, Takayama, An algorithm for de Rham cohomology groups of the complement of an affine variety via D-module computation, @@ -1128,114 +834,16 @@ mode. So, it is strongly recommended to execute the co */ -def sm1_deRham(A) { - SM1_FIND_PROC(P); - P = sm1_check_server(P); - sm1(P," set_timer "); - sm1_push_int0(P,A); - sm1(P," deRham "); - B = sm1_pop(P); - sm1(P," set_timer "); - ox_check_errors2(P); - return(B); -} -def sm1_vlist(P) { - sm1(P," getvNamesC "); - B=ox_pop_cmo(P); - sm1(P," getvNamesC toAsirVar "); - C=ox_pop_cmo(P); - return([B,C,map(strtov,C)]); -} -/* [ sm1 names(string), asir names(string), asir names(var)] */ -/* Vlist = sm1_vlist(P); - sm1_push_poly0( x + 20*x, Vlist[2]); - sm1_pop_poly0(Vlist[2]); -*/ -/* ring of Differential operators */ -def sm1_ringD(V,W) { - SM1_FIND_PROC(P); - sm1(P," [ "); - if (type(V) == 7) { /* string */ - ox_push_cmo(P,V); - }else if (type(V) == 4) {/* list */ - V = map(rtostr,V); - ox_push_cmo(P,V); - sm1(P," from_records "); - }else { printf("Error: sm1_ringD"); return(-1); } - sm1(P," ring_of_differential_operators "); - if (type(W) != 0) { - sm1_push_int0(P,W); sm1(P," weight_vector "); - } - sm1(P," pstack "); - sm1(P," 0 ] define_ring getOrderMatrix {{(universalNumber) dc}map}map "); - ox_check_errors2(P); - M = ox_pop_cmo(P); - return([sm1_vlist(P)[2],M]); -} - -def sm1_expand_d(F) { - SM1_FIND_PROC(P); - ox_push_cmo(P,F); - sm1(P, " expand "); - return(ox_pop_cmo(P)); -} - -def sm1_mul_d(A,B) { - SM1_FIND_PROC(P); - ox_push_cmo(P,A); - ox_push_cmo(P,B); - sm1(P," mul "); - return(ox_pop_cmo(P)); -} - -def sm1_dehomogenize_d(A) { - SM1_FIND_PROC(P); - ox_push_cmo(P,A); - sm1(P," dehomogenize "); - return(ox_pop_cmo(P)); -} - -def sm1_homogenize_d(A) { - SM1_FIND_PROC(P); - ox_push_cmo(P,A); - sm1(P," homogenize "); - return(ox_pop_cmo(P)); -} - -def sm1_groebner_d(A) { - SM1_FIND_PROC(P); - ox_push_cmo(P,A); - sm1(P," groebner "); - return(ox_pop_cmo(P)); -} - -def sm1_reduction_d(F,G) { - SM1_FIND_PROC(P); - ox_push_cmo(P,F); - ox_push_cmo(P,G); - sm1(P," reduction "); - return(ox_pop_cmo(P)); -} - -def sm1_reduction_noH_d(F,G) { - SM1_FIND_PROC(P); - ox_push_cmo(P,F); - ox_push_cmo(P,G); - sm1(P," reduction-noH "); - return(ox_pop_cmo(P)); -} - - -/*&eg-texi -@c sort-sm1_hilbert -@node sm1_hilbert,,, SM1 Functions -@subsection @code{sm1_hilbert} -@findex sm1_hilbert +/*&en +@c sort-sm1.hilbert +@node sm1.hilbert,,, SM1 Functions +@subsection @code{sm1.hilbert} +@findex sm1.hilbert @findex hilbert_polynomial @table @t -@item sm1_hilbert([@var{f},@var{v}]|proc=@var{p}) +@item sm1.hilbert([@var{f},@var{v}]|proc=@var{p}) :: ask the server to compute the Hilbert polynomial for the set of polynomials @var{f}. @item hilbert_polynomial(@var{f},@var{v}) :: ask the server to compute the Hilbert polynomial for the set of polynomials @var{f}. @@ -1259,7 +867,7 @@ List degree is less than or equal to k and I is the ideal generated by the set of polynomials @var{f}. @item - Note for sm1_hilbert: + Note for sm1.hilbert: For an efficient computation, it is preferable that the set of polynomials @var{f} is a set of monomials. In fact, this function firstly compute a Grobner basis of @var{f}, and then @@ -1270,14 +878,14 @@ List polynomials in @code{sm1} is slower than in @code{asir}. @end itemize */ -/*&jp-texi -@c sort-sm1_hilbert -@node sm1_hilbert,,, SM1 Functions -@subsection @code{sm1_hilbert} -@findex sm1_hilbert +/*&ja +@c sort-sm1.hilbert +@node sm1.hilbert,,, SM1 Functions +@subsection @code{sm1.hilbert} +@findex sm1.hilbert @findex hilbert_polynomial @table @t -@item sm1_hilbert([@var{f},@var{v}]|proc=@var{p}) +@item sm1.hilbert([@var{f},@var{v}]|proc=@var{p}) :: 多項式の集合 @var{f} のヒルベルト多項式を計算する. @item hilbert_polynomial(@var{f},@var{v}) :: 多項式の集合 @var{f} のヒルベルト多項式を計算する. @@ -1299,7 +907,7 @@ List h(k) = dim_Q F_k/I \cap F_k ここで F_k は次数が k 以下であるような 多項式の集合である. I は多項式の集合 @var{f} で生成されるイデアルである. @item - sm1_hilbert にかんするノート: + sm1.hilbert にかんするノート: 効率よく計算するには @var{f} はモノミアルの集合にした方がいい. 実際, この函数はまず @var{f} のグレブナ基底を計算し, それからその initial monomial 達のヒルベルト多項式を計算する. @@ -1334,45 +942,32 @@ List [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, 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, u5^4*u2,u5^4*u1,u5^6] -[284] sm1_hilbert([C,[u0,u1,u2,u3,u4,u5]]); +[284] sm1.hilbert([C,[u0,u1,u2,u3,u4,u5]]); 32 @end example */ -/*&eg-texi +/*&en @table @t @item Reference - @code{sm1_start}, @code{sm1_gb}, @code{longname} + @code{sm1.start}, @code{sm1.gb}, @code{longname} @end table */ -/*&jp-texi +/*&ja @table @t @item 参照 - @code{sm1_start}, @code{sm1_gb}, @code{longname} + @code{sm1.start}, @code{sm1.gb}, @code{longname} @end table */ -def sm1_hilbert(A) { - SM1_FIND_PROC(P); - P = sm1_check_server(P); - sm1(P,"[ "); - sm1_push_int0(P,A[0]); - sm1_push_int0(P,A[1]); - sm1(P," ] pgb /sm1_hilbert.gb set "); - sm1(P," sm1_hilbert.gb 0 get { init toString } map "); - sm1_push_int0(P,A[1]); - sm1(P, " hilbert "); - B = sm1_pop(P); - return(B[1]/fac(B[0])); -} -/*&eg-texi -@c sort-sm1_genericAnn -@node sm1_genericAnn,,, SM1 Functions -@subsection @code{sm1_genericAnn} -@findex sm1_genericAnn +/*&en +@c sort-sm1.genericAnn +@node sm1.genericAnn,,, SM1 Functions +@subsection @code{sm1.genericAnn} +@findex sm1.genericAnn @table @t -@item sm1_genericAnn([@var{f},@var{v}]|proc=@var{p}) +@item sm1.genericAnn([@var{f},@var{v}]|proc=@var{p}) :: It computes the annihilating ideal for @var{f}^s. @var{v} is the list of variables. Here, s is @var{v}[0] and @var{f} is a polynomial in the variables @code{rest}(@var{v}). @@ -1395,13 +990,13 @@ List @var{f} is a polynomial in the variables @code{rest}(@var{v}). @end itemize */ -/*&jp-texi -@c sort-sm1_genericAnn -@node sm1_genericAnn,,, SM1 Functions -@subsection @code{sm1_genericAnn} -@findex sm1_genericAnn +/*&ja +@c sort-sm1.genericAnn +@node sm1.genericAnn,,, SM1 Functions +@subsection @code{sm1.genericAnn} +@findex sm1.genericAnn @table @t -@item sm1_genericAnn([@var{f},@var{v}]|proc=@var{p}) +@item sm1.genericAnn([@var{f},@var{v}]|proc=@var{p}) :: @var{f}^s のみたす微分方程式全体をもとめる. @var{v} は変数のリストである. ここで, s は @var{v}[0] であり, @var{f} は変数 @code{rest}(@var{v}) 上の多項式である. @@ -1427,48 +1022,32 @@ List */ /*&C-texi @example -[595] sm1_genericAnn([x^3+y^3+z^3,[s,x,y,z]]); +[595] sm1.genericAnn([x^3+y^3+z^3,[s,x,y,z]]); [-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] @end example */ -/*&eg-texi +/*&en @table @t @item Reference - @code{sm1_start} + @code{sm1.start} @end table */ -/*&jp-texi +/*&ja @table @t @item 参照 - @code{sm1_start} + @code{sm1.start} @end table */ -def sm1_genericAnn(F) { - SM1_FIND_PROC(P); - sm1_push_int0(P,F[0]); - sm1_push_int0(P,F[1]); - sm1(P, " genericAnn "); - B = sm1_pop(P); - return(B); -} -def sm1_tensor0(F) { - SM1_FIND_PROC(P); - sm1_push_int0(P,F); - sm1(P, " tensor0 "); - B = sm1_pop(P); - return(B); -} - -/*&eg-texi -@c sort-sm1_wTensor0 -@node sm1_wTensor0,,, SM1 Functions -@subsection @code{sm1_wTensor0} -@findex sm1_wTensor0 +/*&en +@c sort-sm1.wTensor0 +@node sm1.wTensor0,,, SM1 Functions +@subsection @code{sm1.wTensor0} +@findex sm1.wTensor0 @table @t -@item sm1_wTensor0([@var{f},@var{g},@var{v},@var{w}]|proc=@var{p}) +@item sm1.wTensor0([@var{f},@var{g},@var{v},@var{w}]|proc=@var{p}) :: It computes the D-module theoretic 0-th tensor product of @var{f} and @var{g}. @end table @@ -1491,7 +1070,7 @@ List @var{w} is a list of weights. The integer @var{w}[i] is the weight of the variable @var{v}[i]. @item - @code{sm1_wTensor0} calls @code{wRestriction0} of @code{ox_sm1}, + @code{sm1.wTensor0} calls @code{wRestriction0} of @code{ox_sm1}, which requires a generic weight vector @var{w} to compute the restriction. If @var{w} is not generic, the computation fails. @@ -1503,13 +1082,13 @@ the inputs @var{f} and @var{g} are left ideals of D. @end itemize */ -/*&jp-texi -@c sort-sm1_wTensor0 -@node sm1_wTensor0,,, SM1 Functions -@subsection @code{sm1_wTensor0} -@findex sm1_wTensor0 +/*&ja +@c sort-sm1.wTensor0 +@node sm1.wTensor0,,, SM1 Functions +@subsection @code{sm1.wTensor0} +@findex sm1.wTensor0 @table @t -@item sm1_wTensor0([@var{f},@var{g},@var{v},@var{w}]|proc=@var{p}) +@item sm1.wTensor0([@var{f},@var{g},@var{v},@var{w}]|proc=@var{p}) :: @var{f} と @var{g} の D-module としての 0 次テンソル積を 計算する. @end table @@ -1532,7 +1111,7 @@ the inputs @var{f} and @var{g} are left ideals of D. @var{w} は weight のリストである. 整数 @var{w}[i] は変数 @var{v}[i] の weight である. @item - @code{sm1_wTensor0} は @code{ox_sm1} の @code{wRestriction0} + @code{sm1.wTensor0} は @code{ox_sm1} の @code{wRestriction0} をよんでいる. @code{wRestriction0} は, generic な weight ベクトル @var{w} をもとにして制限を計算している. @@ -1545,7 +1124,7 @@ the inputs @var{f} and @var{g} are left ideals of D. */ /*&C-texi @example -[258] sm1_wTensor0([[x*dx -1, y*dy -4],[dx+dy,dx-dy^2],[x,y],[1,2]]); +[258] sm1.wTensor0([[x*dx -1, y*dy -4],[dx+dy,dx-dy^2],[x,y],[1,2]]); [[-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], [-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], [y^2*dy^2+(-y^2-8*y)*dy+4*y+20]] @@ -1553,22 +1132,14 @@ the inputs @var{f} and @var{g} are left ideals of D. */ -def sm1_wTensor0(F) { - SM1_FIND_PROC(P); - sm1_push_int0(P,F); - sm1(P, " wTensor0 "); - B = sm1_pop(P); - return(B); -} - -/*&eg-texi -@c sort-sm1_reduction -@node sm1_reduction,,, SM1 Functions -@subsection @code{sm1_reduction} -@findex sm1_reduction +/*&en +@c sort-sm1.reduction +@node sm1.reduction,,, SM1 Functions +@subsection @code{sm1.reduction} +@findex sm1.reduction @table @t -@item sm1_reduction([@var{f},@var{g},@var{v},@var{w}]|proc=@var{p}) +@item sm1.reduction([@var{f},@var{g},@var{v},@var{w}]|proc=@var{p}) :: @end table @@ -1588,7 +1159,7 @@ Number (the process number of ox_sm1) in the homogenized Weyl algebra; it applies the division algorithm to @var{f}. The set of variables is @var{v} and @var{w} is weight vectors to determine the order, which can be ommited. -@code{sm1_reduction_noH} is for the Weyl algebra. +@code{sm1.reduction_noH} is for the Weyl algebra. @item The return value is of the form [r,c0,[c1,...,cm],[g1,...gm]] where @var{g}=[g1, ..., gm] and c0 f + c1 g1 + ... + cm gm = r. @@ -1596,16 +1167,16 @@ r/c0 is the normal form. @item The function reduction reduces reducible terms that appear in lower order terms. @item The functions -sm1_reduction_d(P,F,G) and sm1_reduction_noH_d(P,F,G) +sm1.reduction_d(P,F,G) and sm1.reduction_noH_d(P,F,G) are for distributed polynomials. @end itemize */ -/*&jp-texi -@node sm1_reduction,,, SM1 Functions -@subsection @code{sm1_reduction} -@findex sm1_reduction +/*&ja +@node sm1.reduction,,, SM1 Functions +@subsection @code{sm1.reduction} +@findex sm1.reduction @table @t -@item sm1_reduction([@var{f},@var{g},@var{v},@var{w}]|proc=@var{p}) +@item sm1.reduction([@var{f},@var{g},@var{v},@var{w}]|proc=@var{p}) :: @end table @@ -1627,7 +1198,7 @@ are for distributed polynomials. 変数集合は @var{v} で指定する. @var{w} は順序を指定するための ウエイトベクトルであり, 省略してもよい. -@code{sm1_reduction_noH} は, Weyl algebra 用. +@code{sm1.reduction_noH} は, Weyl algebra 用. @item 戻り値は次の形をしている: [r,c0,[c1,...,cm],g] ここで @var{g}=[g1, ..., gm] であり, c0 f + c1 g1 + ... + cm gm = r @@ -1635,71 +1206,38 @@ c0 f + c1 g1 + ... + cm gm = r r/c0 が normal form である. @item この函数は, 低次項にあらわれる reducible な項も簡単化する. @item 函数 -sm1_reduction_d(P,F,G) および sm1_reduction_noH_d(P,F,G) +sm1.reduction_d(P,F,G) および sm1.reduction_noH_d(P,F,G) は, 分散多項式用である. @end itemize */ /*&C-texi @example -[259] sm1_reduction([x^2+y^2-4,[y^4-4*y^2+1,x+y^3-4*y],[x,y]]); +[259] sm1.reduction([x^2+y^2-4,[y^4-4*y^2+1,x+y^3-4*y],[x,y]]); [x^2+y^2-4,1,[0,0],[y^4-4*y^2+1,x+y^3-4*y]] -[260] sm1_reduction([x^2+y^2-4,[y^4-4*y^2+1,x+y^3-4*y],[x,y],[[x,1]]]); +[260] sm1.reduction([x^2+y^2-4,[y^4-4*y^2+1,x+y^3-4*y],[x,y],[[x,1]]]); [0,1,[-y^2+4,-x+y^3-4*y],[y^4-4*y^2+1,x+y^3-4*y]] @end example */ -/*&eg-texi +/*&en @table @t @item Reference - @code{sm1_start}, @code{sm1_find_proc}, @code{d_true_nf} + @code{sm1.start}, @code{d_true_nf} @end table */ -/*&jp-texi +/*&ja @table @t @item 参照 - @code{sm1_start}, @code{sm1_find_proc}, @code{d_true_nf} + @code{sm1.start}, @code{d_true_nf} @end table */ -def sm1_reduction(A) { - /* Example: sm1_reduction(A|proc=10) */ - SM1_FIND_PROC(P); - /* check the arguments */ - if (type(A) != 4) { - error("sm1_reduction(A|proc=p): A must be a list."); - } - AA = [rtostr(A[0])]; - AA = append(AA,[ map(rtostr,A[1]) ]); - AA = append(AA, cdr(cdr(A))); - sm1(P," /reduction*.noH 0 def "); - sm1_push_int0(P,AA); - sm1(P," reduction* "); - ox_check_errors2(P); - return(sm1_pop(P)); -} -def sm1_reduction_noH(A) { - /* Example: sm1_reduction(A|proc=10) */ - SM1_FIND_PROC(P); - /* check the arguments */ - if (type(A) != 4) { - error("sm1_reduction_noH(A|proc=p): A must be a list."); - } - AA = [rtostr(A[0])]; - AA = append(AA,[ map(rtostr,A[1]) ]); - AA = append(AA, cdr(cdr(A))); - sm1(P," /reduction*.noH 1 def "); - sm1_push_int0(P,AA); - sm1(P," reduction* "); - ox_check_errors2(P); - return(sm1_pop(P)); -} - -/*&eg-texi -@node sm1_xml_tree_to_prefix_string,,, SM1 Functions -@subsection @code{sm1_xml_tree_to_prefix_string} -@findex sm1_xml_tree_to_prefix_string +/*&en +@node sm1.xml_tree_to_prefix_string,,, SM1 Functions +@subsection @code{sm1.xml_tree_to_prefix_string} +@findex sm1.xml_tree_to_prefix_string @table @t -@item sm1_xml_tree_to_prefix_string(@var{s}|proc=@var{p}) +@item sm1.xml_tree_to_prefix_string(@var{s}|proc=@var{p}) :: Translate OpenMath Tree Expression @var{s} in XML to a prefix notation. @end table @@ -1722,12 +1260,12 @@ asir has not yet understood this CMO. command search path.) @end itemize */ -/*&jp-texi -@node sm1_xml_tree_to_prefix_string,,, SM1 Functions -@subsection @code{sm1_xml_tree_to_prefix_string} -@findex sm1_xml_tree_to_prefix_string +/*&ja +@node sm1.xml_tree_to_prefix_string,,, SM1 Functions +@subsection @code{sm1.xml_tree_to_prefix_string} +@findex sm1.xml_tree_to_prefix_string @table @t -@item sm1_xml_tree_to_prefix_string(@var{s}|proc=@var{p}) +@item sm1.xml_tree_to_prefix_string(@var{s}|proc=@var{p}) :: XML で書かれた OpenMath の木表現 @var{s} を前置記法になおす. @end table @@ -1762,17 +1300,17 @@ Trying to connect to the server... Done. <OMI>1</OMI></OMA><OMA><OMS name="times" cd="basic"/><OMA> <OMS name="power" cd="basic"/><OMV name="x"/><OMI>0</OMI></OMA> <OMI>-1</OMI></OMA></OMA></OMOBJ> -[271] sm1_xml_tree_to_prefix_string(F); +[271] sm1.xml_tree_to_prefix_string(F); basic_plus(basic_times(basic_power(x,4),1),basic_times(basic_power(x,0),-1)) @end example */ -/*&eg-texi +/*&en @table @t @item Reference @code{om_*}, @code{OpenXM/src/OpenMath}, @code{eval_str} @end table */ -/*&jp-texi +/*&ja @table @t @item 参照 @code{om_*}, @code{OpenXM/src/OpenMath}, @code{eval_str} @@ -1780,79 +1318,16 @@ basic_plus(basic_times(basic_power(x,4),1),basic_times */ -def sm1_xml_tree_to_prefix_string(A) { - SM1_FIND_PROC(P); - /* check the arguments */ - if (type(A) != 7) { - error("sm1_xml_tree_to_prefix_string(A|proc=p): A must be a string."); - } - ox_push_cmo(P,A); - sm1(P," xml_tree_to_prefix_string "); - ox_check_errors2(P); - return(ox_pop_cmo(P)); -} -def sm1_wbf(A) { - SM1_FIND_PROC(P); - /* check the arguments */ - if (type(A) != 4) { - error("sm1_wbf(A): A must be a list."); - } - if (length(A) != 3) { - error("sm1_wbf(A): A must be a list of the length 3."); - } - if (type(A[0]) != 4 || type(A[1]) != 4 || type(A[2]) != 4) { - error("sm1_wbf([A,B,C]): A, B, C must be a list."); - } - if (! (type(A[2][0]) == 7 || type(A[2][0]) == 2)) { - error("sm1_wbf([A,B,C]): C must be of a form [v-name, v-weight, ...]"); - } - sm1_push_int0(P,A); - sm1(P," wbf "); - ox_check_errors2(P); - return(sm1_pop(P)); -} -def sm1_wbfRoots(A) { - SM1_FIND_PROC(P); - /* check the arguments */ - if (type(A) != 4) { - error("sm1_wbfRoots(A): A must be a list."); - } - if (length(A) != 3) { - error("sm1_wbfRoots(A): A must be a list of the length 3."); - } - if (type(A[0]) != 4 || type(A[1]) != 4 || type(A[2]) != 4) { - error("sm1_wbfRoots([A,B,C]): A, B, C must be a list."); - } - if (! (type(A[2][0]) == 7 || type(A[2][0]) == 2)) { - error("sm1_wbfRoots([A,B,C]): C must be of a form [v-name, v-weight, ...]"); - } - sm1_push_int0(P,A); - sm1(P," wbfRoots "); - ox_check_errors2(P); - return(sm1_pop(P)); -} - - -def sm1_res_div(A) { - SM1_FIND_PROC(P); - sm1_push_int0(P,[[A[0],A[1]],A[2]]); - sm1(P," res*div "); - ox_check_errors2(P); - return(sm1_pop(P)); -} - - -/*&eg-texi -@c sort-sm1_syz -@node sm1_syz,,, SM1 Functions -@node sm1_syz_d,,, SM1 Functions -@subsection @code{sm1_syz} -@findex sm1_syz -@findex sm1_syz_d +/*&en +@c sort-sm1.syz +@node sm1.syz,,, SM1 Functions +@subsection @code{sm1.syz} +@findex sm1.syz +@findex sm1.syz_d @table @t -@item sm1_syz([@var{f},@var{v},@var{w}]|proc=@var{p}) +@item sm1.syz([@var{f},@var{v},@var{w}]|proc=@var{p}) :: computes the syzygy of @var{f} in the ring of differential operators with the variable @var{v}. @end table @@ -1874,7 +1349,7 @@ Here @var{s} is the syzygy of @var{f} in the ring of d operators with the variable @var{v}. @var{g} is a Groebner basis of @var{f} with the weight vector @var{w}, and @var{m} is a matrix that translates the input matrix @var{f} to the Gr\"obner -basis @var {g}. +basis @var{g}. @var{t} is the syzygy of the Gr\"obner basis @var{g}. In summary, @var{g} = @var{m} @var{f} and @var{s} @var{f} = 0 hold as matrices. @@ -1888,15 +1363,14 @@ In summary, @var{g} = @var{m} @var{f} and The homogenization variable h is automatically added. @end itemize */ -/*&jp-texi -@c sort-sm1_syz -@node sm1_syz,,, SM1 Functions -@node sm1_syz_d,,, SM1 Functions -@subsection @code{sm1_syz} -@findex sm1_syz -@findex sm1_syz_d +/*&ja +@c sort-sm1.syz +@node sm1.syz,,, SM1 Functions +@subsection @code{sm1.syz} +@findex sm1.syz +@findex sm1.syz_d @table @t -@item sm1_syz([@var{f},@var{v},@var{w}]|proc=@var{p}) +@item sm1.syz([@var{f},@var{v},@var{w}]|proc=@var{p}) :: @var{v} 上の微分作用素環において @var{f} の syzygy を計算する. @end table @@ -1933,7 +1407,7 @@ syzygy である. */ /*&C-texi @example -[293] sm1_syz([[x*dx+y*dy-1,x*y*dx*dy-2],[x,y]]); +[293] sm1.syz([[x*dx+y*dy-1,x*y*dx*dy-2],[x,y]]); [[[y*x*dy*dx-2,-x*dx-y*dy+1]], generators of the syzygy [[[x*dx+y*dy-1],[y^2*dy^2+2]], grobner basis [[1,0],[y*dy,-1]], transformation matrix @@ -1942,7 +1416,7 @@ syzygy である. */ /*&C-texi @example -[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]]]); +[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]]]); [[[y*x*dy*dx-1,-x^2*dx^2-x*dx-y^2*dy^2-y*dy+4]], generators of the syzygy [[[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 [h^4*x*dx+y^3*dy^3+3*h^2*y^2*dy^2-3*h^4*y*dy]], @@ -1952,45 +1426,13 @@ syzygy である. */ -def sm1_syz(A) { - SM1_FIND_PROC(P); - sm1_push_int0(P,A); - sm1(P," syz "); - ox_check_errors2(P); - return(sm1_pop(P)); -} -def sm1_res_solv(A) { - SM1_FIND_PROC(P); - sm1_push_int0(P,[[A[0],A[1]],A[2]]); - sm1(P," res*solv "); - ox_check_errors2(P); - return(sm1_pop(P)); -} - -def sm1_res_solv_h(A) { - SM1_FIND_PROC(P); - sm1_push_int0(P,[[A[0],A[1]],A[2]]); - sm1(P," res*solv*h "); - ox_check_errors2(P); - return(sm1_pop(P)); -} - - -def sm1_mul(A,B,V) { - SM1_FIND_PROC(P); - sm1_push_int0(P,[[A,B],V]); - sm1(P," res*mul "); - ox_check_errors2(P); - return(sm1_pop(P)); -} - -/*&eg-texi -@node sm1_mul,,, SM1 Functions -@subsection @code{sm1_mul} -@findex sm1_mul +/*&en +@node sm1.mul,,, SM1 Functions +@subsection @code{sm1.mul} +@findex sm1.mul @table @t -@item sm1_mul(@var{f},@var{g},@var{v}|proc=@var{p}) +@item sm1.mul(@var{f},@var{g},@var{v}|proc=@var{p}) :: ask the sm1 server to multiply @var{f} and @var{g} in the ring of differential operators over @var{v}. @end table @@ -2007,16 +1449,16 @@ List @itemize @bullet @item Ask the sm1 server to multiply @var{f} and @var{g} in the ring of differential operators over @var{v}. -@item @code{sm1_mul_h} is for homogenized Weyl algebra. +@item @code{sm1.mul_h} is for homogenized Weyl algebra. @end itemize */ -/*&jp-texi -@node sm1_mul,,, SM1 Functions -@subsection @code{sm1_mul} -@findex sm1_mul +/*&ja +@node sm1.mul,,, SM1 Functions +@subsection @code{sm1.mul} +@findex sm1.mul @table @t -@item sm1_mul(@var{f},@var{g},@var{v}|proc=@var{p}) +@item sm1.mul(@var{f},@var{g},@var{v}|proc=@var{p}) :: sm1サーバ に @var{f} かける @var{g} を @var{v} 上の微分作用素環でやってくれるように頼む. @end table @@ -2035,18 +1477,18 @@ List @itemize @bullet @item sm1サーバ に @var{f} かける @var{g} を @var{v} 上の微分作用素環でやってくれるように頼む. -@item @code{sm1_mul_h} は homogenized Weyl 代数用. +@item @code{sm1.mul_h} は homogenized Weyl 代数用. @end itemize */ /*&C-texi @example -[277] sm1_mul(dx,x,[x]); +[277] sm1.mul(dx,x,[x]); x*dx+1 -[278] sm1_mul([x,y],[1,2],[x,y]); +[278] sm1.mul([x,y],[1,2],[x,y]); x+2*y -[279] sm1_mul([[1,2],[3,4]],[[x,y],[1,2]],[x,y]); +[279] sm1.mul([[1,2],[3,4]],[[x,y],[1,2]],[x,y]); [[x+2,y+4],[3*x+4,3*y+8]] @end example @@ -2054,133 +1496,13 @@ x+2*y -def sm1_mul_h(A,B,V) { - SM1_FIND_PROC(P); - sm1_push_int0(P,[[A,B],V]); - sm1(P," res*mul*h "); - ox_check_errors2(P); - return(sm1_pop(P)); -} -def sm1_adjoint(A,V) { - SM1_FIND_PROC(P); - sm1_push_int0(P,[A,V]); - sm1(P," res*adjoint "); - ox_check_errors2(P); - return(sm1_pop(P)); -} - -def transpose(A) { - if (type(A) == 4) { - N = length(A); M = length(A[0]); - B = newmat(N,M,A); - C = newmat(M,N); - for (I=0; I<N; I++) { - for (J=0; J<M; J++) { - C[J][I] = B[I][J]; - } - } - D = newvect(M); - for (J=0; J<M; J++) { - D[J] = C[J]; - } - return(map(vtol,vtol(D))); - }else{ - print(A)$ - error("tranpose: traspose for this argument has not been implemented."); - } -} - -def sm1_resol1(A) { - SM1_FIND_PROC(P); - sm1_push_int0(P,A); - sm1(P," res*resol1 "); - ox_check_errors2(P); - return(sm1_pop(P)); -} - - -def sm1_gcd_aux(A,B) { - if (type(A) == 1 && type(B) == 1) return(igcd(A,B)); - else return(gcd(A,B)); -} - -def sm1_lcm_aux(V) { /* sm1_lcm_aux([3,5,6]); */ - N = length(V); - if (N == 0) return(0); - if (N == 1) return(V[0]); - L = V[0]; - for (I=1; I<N; I++) { - L = red(L*V[I]/sm1_gcd_aux(L,V[I])); - } - return(L); -} - -def sm1_mul_v(V,S) { - if (type(V) == 4) { - return(map(sm1_mul_v,V,S)); - } else { - return(V*S); - } -} - -def sm1_div_v(V,S) { - if (type(V) == 4) { - return(map(sm1_div_v,V,S)); - } else { - return(V/S); - } -} - - -def sm1_rat_to_p_aux(T) { /* cf. sm1_rat2plist2 */ - T = red(T); - T1 = nm(T); T1a = ptozp(T1); - T1b = red(T1a/T1); - T2 = dn(T); - return([T1a*dn(T1b),T2*nm(T1b)]); -} - -def sm1_denom_aux0(A) { - return(A[1]); -} -def sm1_num_aux0(P) { - return(P[0]); -} - -def sm1_rat_to_p(T) { - if (type(T) == 4) { - A = map(sm1_rat_to_p,T); - D = map(sm1_denom_aux0,A); - N = map(sm1_num_aux0,A); - L = sm1_lcm_aux(D); - B = newvect(length(N)); - for (I=0; I<length(N); I++) { - B[I] = sm1_mul_v(N[I],L/D[I]); - } - return([vtol(B),L]); - }else{ - return(sm1_rat_to_p_aux(T)); - } -} - - - -/* ---------------------------------------------- */ -def sm1_distraction(A) { - SM1_FIND_PROC(P); - sm1_push_int0(P,A); - sm1(P," distraction2* "); - ox_check_errors2(P); - return(sm1_pop(P)); -} - -/*&eg-texi -@node sm1_distraction,,, SM1 Functions -@subsection @code{sm1_distraction} -@findex sm1_distraction +/*&en +@node sm1.distraction,,, SM1 Functions +@subsection @code{sm1.distraction} +@findex sm1.distraction @table @t -@item sm1_distraction([@var{f},@var{v},@var{x},@var{d},@var{s}]|proc=@var{p}) +@item sm1.distraction([@var{f},@var{v},@var{x},@var{d},@var{s}]|proc=@var{p}) :: ask the @code{sm1} server to compute the distraction of @var{f}. @end table @@ -2206,13 +1528,13 @@ See Saito, Sturmfels, Takayama : Grobner Deformations @end itemize */ -/*&jp-texi -@node sm1_distraction,,, SM1 Functions +/*&ja +@node sm1.distraction,,, SM1 Functions -@subsection @code{sm1_distraction} -@findex sm1_distraction +@subsection @code{sm1.distraction} +@findex sm1.distraction @table @t -@item sm1_distraction([@var{f},@var{v},@var{x},@var{d},@var{s}]|proc=@var{p}) +@item sm1.distraction([@var{f},@var{v},@var{x},@var{d},@var{s}]|proc=@var{p}) :: @code{sm1} に @var{f} の distraction を計算してもらう. @end table @@ -2240,98 +1562,41 @@ See Saito, Sturmfels, Takayama : Grobner Deformations /*&C-texi @example -[280] sm1_distraction([x*dx,[x],[x],[dx],[x]]); +[280] sm1.distraction([x*dx,[x],[x],[dx],[x]]); x -[281] sm1_distraction([dx^2,[x],[x],[dx],[x]]); +[281] sm1.distraction([dx^2,[x],[x],[dx],[x]]); x^2-x -[282] sm1_distraction([x^2,[x],[x],[dx],[x]]); +[282] sm1.distraction([x^2,[x],[x],[dx],[x]]); x^2+3*x+2 [283] fctr(@@); [[1,1],[x+1,1],[x+2,1]] -[284] sm1_distraction([x*dx*y+x^2*dx^2*dy,[x,y],[x],[dx],[x]]); +[284] sm1.distraction([x*dx*y+x^2*dx^2*dy,[x,y],[x],[dx],[x]]); (x^2-x)*dy+x*y @end example */ -/*&eg-texi +/*&en @table @t @item Reference @code{distraction2(sm1)}, @end table */ -/*&jp-texi +/*&ja @table @t @item 参照 @code{distraction2(sm1)}, @end table */ -/* Temporary functions */ -/* Use this function for a while to wait a fix of asir. */ -def sm1_ntoint32(I) { /* Fixed */ - SM1_FIND_PROC(P); - if (I >= 0) return(ntoint32(I)); - sm1(P," "+rtostr(I)+" "); - return(ox_pop_cmo(P)); -} -def sm1_to_ascii_array(S) { /* Use strtoascii */ - SM1_FIND_PROC(P); - ox_push_cmo(P,S); - sm1(P," (array) dc { (universalNumber) dc } map "); - return(ox_pop_cmo(P)); -} -def sm1_from_ascii_array(S) { /* Use asciitostr */ - SM1_FIND_PROC(P); - ox_push_cmo(P,S); - sm1(P," { (integer) dc (string) dc } map cat "); - return(ox_pop_cmo(P)); -} -/* -[288] sm1_to_ascii_array("Hello"); -[72,101,108,108,111] -[289] sm1_from_ascii_array(@@); -Hello -*/ -/* end of temporary functions */ - -def sm1_gkz(S) { - SM1_FIND_PROC(P); - A = S[0]; - B = S[1]; - AA = [ ]; - BB = [ ]; - for (I=0; I<length(A); I++) { - AA = append(AA,[map(ntoint32,A[I])]); - BB = append(BB,[ntoint32(0)]); - } - sm1(P,"[ "); - sm1_push_int0(P,AA); - sm1_push_int0(P,BB); - sm1(P," ] gkz "); - ox_check_errors2(P); - R = sm1_pop(P); - RR0 = map(eval_str,R[0]); - RR1 = map(eval_str,R[1]); - RR3 = [ ]; - for (I=0; I<length(B); I++) { - RR3 = append(RR3,[ sm1_rat_to_p(RR0[I]-B[I])[0] ]); - } - for (I=length(B); I<length(RR0); I++) { - RR3 = append(RR3,[RR0[I]]); - } - return([RR3,RR1]); -} - - -/*&eg-texi -@node sm1_gkz,,, SM1 Functions -@subsection @code{sm1_gkz} -@findex sm1_gkz +/*&en +@node sm1.gkz,,, SM1 Functions +@subsection @code{sm1.gkz} +@findex sm1.gkz @table @t -@item sm1_gkz([@var{A},@var{B}]|proc=@var{p}) +@item sm1.gkz([@var{A},@var{B}]|proc=@var{p}) :: Returns the GKZ system (A-hypergeometric system) associated to the matrix @var{A} with the parameter vector @var{B}. @end table @@ -2351,12 +1616,12 @@ List @end itemize */ -/*&jp-texi -@node sm1_gkz,,, SM1 Functions -@subsection @code{sm1_gkz} -@findex sm1_gkz +/*&ja +@node sm1.gkz,,, SM1 Functions +@subsection @code{sm1.gkz} +@findex sm1.gkz @table @t -@item sm1_gkz([@var{A},@var{B}]|proc=@var{p}) +@item sm1.gkz([@var{A},@var{B}]|proc=@var{p}) :: 行列 @var{A} とパラメータ @var{B} に付随した GKZ 系 (A-hypergeometric system) をもどす. @end table @@ -2378,7 +1643,7 @@ List @example -[280] sm1_gkz([ [[1,1,1,1],[0,1,3,4]], [0,2] ]); +[280] sm1.gkz([ [[1,1,1,1],[0,1,3,4]], [0,2] ]); [[x4*dx4+x3*dx3+x2*dx2+x1*dx1,4*x4*dx4+3*x3*dx3+x2*dx2-2, -dx1*dx4+dx2*dx3,-dx2^2*dx4+dx1*dx3^2,dx1^2*dx3-dx2^3,-dx2*dx4^2+dx3^3], [x1,x2,x3,x4]] @@ -2388,57 +1653,14 @@ List */ -def sm1_appell1(S) { - N = length(S)-2; - B = cdr(cdr(S)); - A = S[0]; - C = S[1]; - V = [ ]; - for (I=0; I<N; I++) { - V = append(V,[sm1aux_x(I+1)]); - } - Ans = [ ]; - Euler = 0; - for (I=0; I<N; I++) { - Euler = sm1aux_x(I+1)*sm1aux_dx(I+1) + Euler; - } - for (I=0; I<N; I++) { - T = sm1_mul(sm1aux_dx(I+1), Euler+C-1,V)- - sm1_mul(Euler+A, sm1aux_x(I+1)*sm1aux_dx(I+1)+B[I],V); - /* Tmp=sm1_rat_to_p(T); - print(Tmp[0]/Tmp[1]-T)$ */ - T = sm1_rat_to_p(T)[0]; - Ans = append(Ans,[T]); - } - for (I=0; I<N; I++) { - for (J=I+1; J<N; J++) { - T = (sm1aux_x(I+1)-sm1aux_x(J+1))*sm1aux_dx(I+1)*sm1aux_dx(J+1) - - B[J]*sm1aux_dx(I+1) + B[I]*sm1aux_dx(J+1); - /* Tmp=sm1_rat_to_p(T); - print(Tmp[0]/Tmp[1]-T)$ */ - T = sm1_rat_to_p(T)[0]; - Ans = append(Ans,[T]); - } - } - return([Ans,V]); -} -def sm1aux_dx(I) { - return(strtov("dx"+rtostr(I))); -} -def sm1aux_x(I) { - return(strtov("x"+rtostr(I))); -} - - - -/*&eg-texi -@node sm1_appell1,,, SM1 Functions -@subsection @code{sm1_appell1} -@findex sm1_appell1 +/*&en +@node sm1.appell1,,, SM1 Functions +@subsection @code{sm1.appell1} +@findex sm1.appell1 @table @t -@item sm1_appell1(@var{a}|proc=@var{p}) +@item sm1.appell1(@var{a}|proc=@var{p}) :: Returns the Appell hypergeometric system F_1 or F_D. @end table @@ -2460,12 +1682,12 @@ The parameters a, c, b1, ..., bn may be rational numbe @end itemize */ -/*&jp-texi -@node sm1_appell1,,, SM1 Functions -@subsection @code{sm1_appell1} -@findex sm1_appell1 +/*&ja +@node sm1.appell1,,, SM1 Functions +@subsection @code{sm1.appell1} +@findex sm1.appell1 @table @t -@item sm1_appell1(@var{a}|proc=@var{p}) +@item sm1.appell1(@var{a}|proc=@var{p}) :: F_1 または F_D に対応する方程式系を戻す. @end table @@ -2491,13 +1713,13 @@ F_D(a,b1,b2,...,bn,c;x1,...,xn) @example -[281] sm1_appell1([1,2,3,4]); +[281] sm1.appell1([1,2,3,4]); [[((-x1+1)*x2*dx1-3*x2)*dx2+(-x1^2+x1)*dx1^2+(-5*x1+2)*dx1-3, (-x2^2+x2)*dx2^2+((-x1*x2+x1)*dx1-6*x2+2)*dx2-4*x1*dx1-4, ((-x2+x1)*dx1+3)*dx2-4*dx1], equations [x1,x2]] the list of variables -[282] sm1_gb(@@); +[282] sm1.gb(@@); [[((-x2+x1)*dx1+3)*dx2-4*dx1,((-x1+1)*x2*dx1-3*x2)*dx2+(-x1^2+x1)*dx1^2 +(-5*x1+2)*dx1-3,(-x2^2+x2)*dx2^2+((-x2^2+x1)*dx1-3*x2+2)*dx2 +(-4*x2-4*x1)*dx1-4, @@ -2505,11 +1727,11 @@ F_D(a,b1,b2,...,bn,c;x1,...,xn) +(-3*x1-2)*x2+2*x1)*dx2-4*x1^2*dx1+4*x2-4*x1], [x1*dx1*dx2,-x1^2*dx1^2,-x2^2*dx1*dx2,-x1*x2^2*dx2^2]] -[283] sm1_rank(sm1_appell1([1/2,3,5,-1/3])); +[283] sm1.rank(sm1.appell1([1/2,3,5,-1/3])); 1 [285] Mu=2$ Beta = 1/3$ -[287] sm1_rank(sm1_appell1([Mu+Beta,Mu+1,Beta,Beta,Beta])); +[287] sm1.rank(sm1.appell1([Mu+Beta,Mu+1,Beta,Beta,Beta])); 4 @@ -2517,37 +1739,12 @@ F_D(a,b1,b2,...,bn,c;x1,...,xn) */ -def sm1_appell4(S) { - N = length(S)-2; - B = cdr(cdr(S)); - A = S[0]; - C = S[1]; - V = [ ]; - for (I=0; I<N; I++) { - V = append(V,[sm1aux_x(I+1)]); - } - Ans = [ ]; - Euler = 0; - for (I=0; I<N; I++) { - Euler = sm1aux_x(I+1)*sm1aux_dx(I+1) + Euler; - } - for (I=0; I<N; I++) { - T = sm1_mul(sm1aux_dx(I+1), sm1aux_x(I+1)*sm1aux_dx(I+1)+B[I]-1,V)- - sm1_mul(Euler+A,Euler+C,V); - /* Tmp=sm1_rat_to_p(T); - print(Tmp[0]/Tmp[1]-T)$ */ - T = sm1_rat_to_p(T)[0]; - Ans = append(Ans,[T]); - } - return([Ans,V]); -} - -/*&eg-texi -@node sm1_appell4,,, SM1 Functions -@subsection @code{sm1_appell4} -@findex sm1_appell4 +/*&en +@node sm1.appell4,,, SM1 Functions +@subsection @code{sm1.appell4} +@findex sm1.appell4 @table @t -@item sm1_appell4(@var{a}|proc=@var{p}) +@item sm1.appell4(@var{a}|proc=@var{p}) :: Returns the Appell hypergeometric system F_4 or F_C. @end table @@ -2569,12 +1766,12 @@ The parameters a, b, c1, ..., cn may be rational numbe @end itemize */ -/*&jp-texi -@node sm1_appell4,,, SM1 Functions -@subsection @code{sm1_appell4} -@findex sm1_appell4 +/*&ja +@node sm1.appell4,,, SM1 Functions +@subsection @code{sm1.appell4} +@findex sm1.appell4 @table @t -@item sm1_appell4(@var{a}|proc=@var{p}) +@item sm1.appell4(@var{a}|proc=@var{p}) :: F_4 または F_C に対応する方程式系を戻す. @end table @@ -2600,13 +1797,13 @@ F_C(a,b,c1,c2,...,cn;x1,...,xn) @example -[281] sm1_appell4([1,2,3,4]); +[281] sm1.appell4([1,2,3,4]); [[-x2^2*dx2^2+(-2*x1*x2*dx1-4*x2)*dx2+(-x1^2+x1)*dx1^2+(-4*x1+3)*dx1-2, (-x2^2+x2)*dx2^2+(-2*x1*x2*dx1-4*x2+4)*dx2-x1^2*dx1^2-4*x1*dx1-2], equations [x1,x2]] the list of variables -[282] sm1_rank(@@); +[282] sm1.rank(@@); 4 @end example @@ -2614,31 +1811,14 @@ F_C(a,b,c1,c2,...,cn;x1,...,xn) */ -def sm1_rank(A) { - SM1_FIND_PROC(P); - sm1_push_int0(P,A); - sm1(P," rank toString .. "); - ox_check_errors2(P); - R = sm1_pop(P); - return(R); -} -def sm1_rrank(A) { - SM1_FIND_PROC(P); - sm1_push_int0(P,A); - sm1(P," rrank toString .. "); - ox_check_errors2(P); - R = sm1_pop(P); - return(R); -} - -/*&eg-texi -@node sm1_rank,,, SM1 Functions -@subsection @code{sm1_rank} -@findex sm1_rank +/*&en +@node sm1.rank,,, SM1 Functions +@subsection @code{sm1.rank} +@findex sm1.rank @table @t -@item sm1_rank(@var{a}|proc=@var{p}) +@item sm1.rank(@var{a}|proc=@var{p}) :: Returns the holonomic rank of the system of differential equations @var{a}. @end table @@ -2657,17 +1837,17 @@ at a generic point of the system of differential equat The dimension is called the holonomic rank. @item @var{a} is a list consisting of a list of differential equations and a list of variables. -@item @code{sm1_rrank} returns the holonomic rank when @var{a} is regular -holonomic. It is generally faster than @code{sm1_rank}. +@item @code{sm1.rrank} returns the holonomic rank when @var{a} is regular +holonomic. It is generally faster than @code{sm1.rank}. @end itemize */ -/*&jp-texi -@node sm1_rank,,, SM1 Functions -@subsection @code{sm1_rank} -@findex sm1_rank +/*&ja +@node sm1.rank,,, SM1 Functions +@subsection @code{sm1.rank} +@findex sm1.rank @table @t -@item sm1_rank(@var{a}|proc=@var{p}) +@item sm1.rank(@var{a}|proc=@var{p}) :: 微分方程式系 @var{a} の holonomic rank を戻す. @end table @@ -2684,9 +1864,9 @@ holonomic. It is generally faster than @code{sm1_rank} @item 微分方程式系 @var{a} の, generic point での正則解の次元を 戻す. この次元を, holonomic rank と呼ぶ. @item @var{a} は微分作用素のリストと変数のリストよりなる. -@item @var{a} が regular holonomic のときは @code{sm1_rrank} +@item @var{a} が regular holonomic のときは @code{sm1.rrank} も holonomic rank を戻す. -いっぱんにこの関数の方が @code{sm1_rank} より早い. +いっぱんにこの関数の方が @code{sm1.rank} より早い. @end itemize */ @@ -2694,38 +1874,31 @@ holonomic. It is generally faster than @code{sm1_rank} @example -[284] sm1_gkz([ [[1,1,1,1],[0,1,3,4]], [0,2] ]); +[284] sm1.gkz([ [[1,1,1,1],[0,1,3,4]], [0,2] ]); [[x4*dx4+x3*dx3+x2*dx2+x1*dx1,4*x4*dx4+3*x3*dx3+x2*dx2-2, -dx1*dx4+dx2*dx3, -dx2^2*dx4+dx1*dx3^2,dx1^2*dx3-dx2^3,-dx2*dx4^2+dx3^3], [x1,x2,x3,x4]] -[285] sm1_rrank(@@); +[285] sm1.rrank(@@); 4 -[286] sm1_gkz([ [[1,1,1,1],[0,1,3,4]], [1,2]]); +[286] sm1.gkz([ [[1,1,1,1],[0,1,3,4]], [1,2]]); [[x4*dx4+x3*dx3+x2*dx2+x1*dx1-1,4*x4*dx4+3*x3*dx3+x2*dx2-2, -dx1*dx4+dx2*dx3,-dx2^2*dx4+dx1*dx3^2,dx1^2*dx3-dx2^3,-dx2*dx4^2+dx3^3], [x1,x2,x3,x4]] -[287] sm1_rrank(@@); +[287] sm1.rrank(@@); 5 @end example */ -def sm1_auto_reduce(T) { - SM1_FIND_PROC(P); - sm1(P,"[(AutoReduce) "+rtostr(T)+" ] system_variable "); - ox_check_errors2(P); - R = sm1_pop(P); - return(R); -} -/*&eg-texi -@node sm1_auto_reduce,,, SM1 Functions -@subsection @code{sm1_auto_reduce} -@findex sm1_auto_reduce +/*&en +@node sm1.auto_reduce,,, SM1 Functions +@subsection @code{sm1.auto_reduce} +@findex sm1.auto_reduce @table @t -@item sm1_auto_reduce(@var{s}|proc=@var{p}) +@item sm1.auto_reduce(@var{s}|proc=@var{p}) :: Set the flag "AutoReduce" to @var{s}. @end table @@ -2746,12 +1919,12 @@ Grobner bases. This is the default. @end itemize */ -/*&jp-texi -@node sm1_auto_reduce,,, SM1 Functions -@subsection @code{sm1_auto_reduce} -@findex sm1_auto_reduce +/*&ja +@node sm1.auto_reduce,,, SM1 Functions +@subsection @code{sm1.auto_reduce} +@findex sm1.auto_reduce @table @t -@item sm1_auto_reduce(@var{s}|proc=@var{p}) +@item sm1.auto_reduce(@var{s}|proc=@var{p}) :: フラグ "AutoReduce" を @var{s} に設定. @end table @@ -2773,23 +1946,13 @@ reduced グレブナ基底とはかぎらない. こちらが����������℡繙�鼾円鼬關紲鰭��頭崙����嗟円読猟瀰厦竪乂����循鰭��頭崙飮���鼾円頤鼈煢銓姶亂践���鼾烏亂�鼬關��囈鱸鈑�〒���陂焜蒹站煥鴪闥鷁�������纐瘡燗��躅熕關�����鱚�鴈��������⑮�繚∑纔�㍉鈿粤�鼾円鼬關絳��嗟�弐釿�闔�㍉齦碵繝�闔�雪閼纛鼾円鼬關缸�㍉肅鈔纔�鼾円鼬關���緕��鈿粤�鼾窺鼬關絳��嗟�弐釿�闔��齦碵繝�闔�雪閼纛鼾窺鼬關缸��肅鈔纔�鼾窺鼬關��泉痰跂�泉�㍉蜚纃�鼾円鼬關紲洗癇詹蝮��鴿���鴿聨肅踉鱇�闔�洗癇軏煕蛹�癆蜿鍄�鳫秉洗癇譿���蜚纃�鼾窺鼬關紲洗癇詹蝮��鴿���鴿聨肅踉鱇�闔�洗癇軏煕蛹�癆蜿鍄�鳫秉洗癇譿���査��吶�鴈���鼬關纉�閹�粡聿纈緕�瘡�繿��闔�洗癇詹蝮��舌鈔��碎���誓�⑱鍵幸��昂岡�誓�也齡��繪艾��笏闥��舌鈔��碎����千�迚淏�説�跂�㍉蜚纃�雪閼纛鼾円鼬關缸�鱚�鴈����繽辣�蜒�鼬關纉���蜚纃�雪閼纛鼾窺鼬關缸�鱚�鴈����繽辣�蜒�鼬關纉���閹���齷齡纃�閹�粡聿纈緕�瘡�繿��闔�洗癇詹蝮��瘡闔���蔔鞳鴃赱鈬�齔繝蜀蜈�磔�����肅踉鱇�闔�洗癇軏煕蛹�癆蜿鍄�誓�⑱顕幸渦��更岡渦�誓�閹���鼬關纉�癇�鱚�鴈繖��������⑮�褓∑纔�㍉鈿粤�鼾円鼬關絳��嗟�弐釿�闔�㍉齦碵繝�闔�雪閼纛鼾円鼬關缸�㍉肅鈔纔�鼾円鼬關���裃��鈿粤�鼾窺鼬關絳��嗟�弐釿�闔��齦碵繝�闔�雪閼纛鼾窺鼬關缸��肅鈔纔�鼾窺鼬關��泉痰跂�泉�㍉蜚纃�鼾円鼬關紲洗癇詹蝮��鴿���鴿聨肅踉鱇�闔�洗癇軏煕蛹�癆蜿鍄�鳫秉洗癇譿���蜚纃�鼾窺鼬關紲洗癇詹蝮��鴿���鴿聨肅踉鱇�闔�洗癇軏煕蛹�癆蜿鍄�鳫秉洗癇譿���査��微分方程式系 @var{ii} の slope を戻す. @end table @@ -2854,7 +2017,7 @@ of the slopes are returned. @end table @itemize @bullet -@item @code{sm1_slope} は +@item @code{sm1.slope} は 微分方程式系 @var{ii} の V filtration @var{v_filtration} で指定する超平面に沿っての (geomeric) slope を計算する. @item @var{v} は変数のリスト. @@ -2876,40 +2039,40 @@ Slope の絶対値を戻す. @example -[284] A= sm1_gkz([ [[1,2,3]], [-3] ]); +[284] A= sm1.gkz([ [[1,2,3]], [-3] ]); -[285] sm1_slope(A[0],A[1],[0,0,0,1,1,1],[0,0,-1,0,0,1]); +[285] sm1.slope(A[0],A[1],[0,0,0,1,1,1],[0,0,-1,0,0,1]); -[286] A2 = sm1_gkz([ [[1,1,1,0],[2,-3,1,-3]], [1,0]]); +[286] A2 = sm1.gkz([ [[1,1,1,0],[2,-3,1,-3]], [1,0]]); (* This is an interesting example given by Laura Matusevich, June 9, 2001 *) -[287] sm1_slope(A2[0],A2[1],[0,0,0,0,1,1,1,1],[0,0,0,-1,0,0,0,1]); +[287] sm1.slope(A2[0],A2[1],[0,0,0,0,1,1,1,1],[0,0,0,-1,0,0,0,1]); @end example */ -/*&eg-texi +/*&en @table @t @item Reference - @code{sm_gb} + @code{sm.gb} @end table */ -/*&jp-texi +/*&ja @table @t @item 参照 - @code{sm_gb} + @code{sm.gb} @end table */ -/*&eg-texi +/*&en @include sm1-auto-en.texi */ -/*&jp-texi +/*&ja @include sm1-auto-ja.texi */