=================================================================== RCS file: /home/cvs/OpenXM/src/asir-doc/parts/groebner.texi,v retrieving revision 1.17 retrieving revision 1.20 diff -u -p -r1.17 -r1.20 --- OpenXM/src/asir-doc/parts/groebner.texi 2006/09/06 23:53:31 1.17 +++ OpenXM/src/asir-doc/parts/groebner.texi 2017/08/31 04:54:36 1.20 @@ -1,4 +1,4 @@ -@comment $OpenXM: OpenXM/src/asir-doc/parts/groebner.texi,v 1.16 2004/10/20 00:30:55 fujiwara Exp $ +@comment $OpenXM: OpenXM/src/asir-doc/parts/groebner.texi,v 1.19 2016/08/29 04:56:58 noro Exp $ \BJP @node グレブナ基底の計算,,, Top @chapter グレブナ基底の計算 @@ -201,16 +201,16 @@ In an @b{Asir} session, it is displayed in the form li \EG and also can be input in such a form. \BJP -@itemx 頭単項式 (head monomial) @item 頭項 (head term) +@itemx 頭単項式 (head monomial) @itemx 頭係数 (head coefficient) 分散表現多項式における各単項式は, 項順序により整列される. この時順 序最大の単項式を頭単項式, それに現れる項, 係数をそれぞれ頭項, 頭係数 と呼ぶ. \E \BEG -@itemx head monomial @item head term +@itemx head monomial @itemx head coefficient Monomials in a distributed polynomial is sorted by a total order. @@ -220,7 +220,45 @@ the head term and the head coefficient respectively. \E @end table +@noindent +ChangeLog +@itemize @bullet \BJP +@item 分散表現多項式は任意のオブジェクトを係数にもてるようになった. +また加群のk成分の要素を次の形式 <> で表現するようになった (2017-08-31). +\E +\BEG +@item Distributed polynomials accept objects as coefficients. +The k-th element of a free module is expressed as <> (2017-08-31). +\E +@item +1.15 algnum.c, +1.53 ctrl.c, +1.66 dp-supp.c, +1.105 dp.c, +1.73 gr.c, +1.4 reduct.c, +1.16 _distm.c, +1.17 dalg.c, +1.52 dist.c, +1.20 distm.c, +1.8 gmpq.c, +1.238 engine/nd.c, +1.102 ca.h, +1.411 version.h, +1.28 cpexpr.c, +1.42 pexpr.c, +1.20 pexpr_body.c, +1.40 spexpr.c, +1.27 arith.c, +1.77 eval.c, +1.56 parse.h, +1.37 parse.y, +1.8 stdio.c, +1.31 plotf.c +@end itemize + +\BJP @node ファイルの読み込み,,, グレブナ基底の計算 @section ファイルの読み込み \E @@ -1467,12 +1505,13 @@ Computation of the global b function is implemented as * nd_gr nd_gr_trace nd_f4 nd_f4_trace nd_weyl_gr nd_weyl_gr_trace:: * dp_gr_flags dp_gr_print:: * dp_ord:: +* dp_set_weight dp_set_top_weight dp_weyl_set_weight:: * dp_ptod:: * dp_dtop:: * dp_mod dp_rat:: * dp_homo dp_dehomo:: * dp_ptozp dp_prim:: -* dp_nf dp_nf_mod dp_true_nf dp_true_nf_mod:: +* dp_nf dp_nf_mod dp_true_nf dp_true_nf_mod dp_weyl_nf dp_weyl_nf_mod:: * dp_hm dp_ht dp_hc dp_rest:: * dp_td dp_sugar:: * dp_lcm:: @@ -2319,7 +2358,7 @@ except for lack of the argument for controlling homoge @itemx nd_gr_trace(@var{plist},@var{vlist},@var{homo},@var{p},@var{order}) @itemx nd_f4(@var{plist},@var{vlist},@var{modular},@var{order}) @itemx nd_f4_trace(@var{plist},@var{vlist},@var{homo},@var{p},@var{order}) -@item nd_weyl_gr(@var{plist},@var{vlist},@var{p},@var{order}) +@itemx nd_weyl_gr(@var{plist},@var{vlist},@var{p},@var{order}) @itemx nd_weyl_gr_trace(@var{plist},@var{vlist},@var{homo},@var{p},@var{order}) \JP :: グレブナ基底の計算 (組み込み函数) \EG :: Groebner basis computation (built-in functions) @@ -2352,11 +2391,11 @@ except for lack of the argument for controlling homoge Buchberger アルゴリズムを実行する. @item @code{nd_gr_trace} および @code{nd_f4_trace} は有理数体上で trace アルゴリズムを実行する. -@code{p} が 0 または 1 のとき, 自動的に選ばれた素数を用いて, 成功する +@var{p} が 0 または 1 のとき, 自動的に選ばれた素数を用いて, 成功する まで trace アルゴリズムを実行する. -@code{p} が 2 以上のとき, trace はGF(p) 上で計算される. trace アルゴリズム -が失敗した場合 0 が返される. @code{p} が負の場合, グレブナ基底チェックは -行わない. この場合, @code{p} が -1 ならば自動的に選ばれた素数が, +@var{p} が 2 以上のとき, trace はGF(p) 上で計算される. trace アルゴリズム +が失敗した場合 0 が返される. @var{p} が負の場合, グレブナ基底チェックは +行わない. この場合, @var{p} が -1 ならば自動的に選ばれた素数が, それ以外は指定された素数を用いてグレブナ基底候補の計算が行われる. @code{nd_f4_trace} は, 各全次数について, ある有限体上で F4 アルゴリズム で行った結果をもとに, その有限体上で 0 でない基底を与える S-多項式のみを @@ -2367,9 +2406,15 @@ Buchberger アルゴリズムを実行する. @code{nd_f4} は @code{modular} が 0 のとき有理数体上の, @code{modular} が マシンサイズ素数のとき有限体上の F4 アルゴリズムを実行する. @item +@var{plist} が多項式リストの場合, @var{plist}で生成されるイデアルのグレブナー基底が +計算される. @var{plist} が多項式リストのリストの場合, 各要素は多項式環上の自由加群の元と見なされ, +これらが生成する部分加群のグレブナー基底が計算される. 後者の場合, 項順序は加群に対する項順序を +指定する必要がある. これは @var{[s,ord]} の形で指定する. @var{s} が 0 ならば TOP (Term Over Position), +1 ならば POT (Position Over Term) を意味し, @var{ord} は多項式環の単項式に対する項順序である. +@item @code{nd_weyl_gr}, @code{nd_weyl_gr_trace} は Weyl 代数用である. @item -いずれの関数も, 有理関数体上の計算は未対応である. +@code{f4} 系関数以外はすべて有理関数係数の計算が可能である. @item 一般に @code{dp_gr_main}, @code{dp_gr_mod_main} より高速であるが, 特に有限体上の場合顕著である. @@ -2403,10 +2448,16 @@ check procedure as in the case of @code{nd_gr_trace} i @code{nd_f4} executes F4 algorithm over Q if @code{modular} is equal to 0, or over a finite field GF(@code{modular}) if @code{modular} is a prime number of machine size (<2^29). +If @var{plist} is a list of polynomials, then a Groebner basis of the ideal generated by @var{plist} +is computed. If @var{plist} is a list of lists of polynomials, then each list of polynomials are regarded +as an element of a free module over a polynomial ring and a Groebner basis of the sub-module generated by @var{plist} +in the free module. In the latter case a term order in the free module should be specified. +This is specified by @var{[s,ord]}. If @var{s} is 0 then it means TOP (Term Over Position). +If @var{s} is 1 then it means POT 1 (Position Over Term). @var{ord} is a term order in the base polynomial ring. @item @code{nd_weyl_gr}, @code{nd_weyl_gr_trace} are for Weyl algebra computation. @item -Each function cannot handle rational function coefficient cases. +Functions except for F4 related ones can handle rational coeffient cases. @item In general these functions are more efficient than @code{dp_gr_main}, @code{dp_gr_mod_main}, especially over finite fields. @@ -2614,6 +2665,79 @@ when functions other than top level functions are call \EG @fref{Setting term orderings} @end table +\JP @node dp_set_weight dp_set_top_weight dp_weyl_set_weight,,, グレブナ基底に関する函数 +\EG @node dp_set_weight dp_set_top_weight dp_weyl_set_weight,,, Functions for Groebner basis computation +@subsection @code{dp_set_weight}, @code{dp_set_top_weight}, @code{dp_weyl_set_weight} +@findex dp_set_weight +@findex dp_set_top_weight +@findex dp_weyl_set_weight + +@table @t +@item dp_set_weight([@var{weight}]) +\JP :: sugar weight の設定, 参照 +\EG :: Set and show the sugar weight. +@item dp_set_top_weight([@var{weight}]) +\JP :: top weight の設定, 参照 +\EG :: Set and show the top weight. +@item dp_weyl_set_weight([@var{weight}]) +\JP :: weyl weight の設定, 参照 +\EG :: Set and show the weyl weight. +@end table + +@table @var +@item return +\JP ベクトル +\EG a vector +@item weight +\JP 整数のリストまたはベクトル +\EG a list or vector of integers +@end table + +@itemize @bullet +\BJP +@item +@code{dp_set_weight} は sugar weight を @var{weight} に設定する. 引数がない時, +現在設定されている sugar weight を返す. sugar weight は正整数を成分とするベクトルで, +各変数の重みを表す. 次数つき順序において, 単項式の次数を計算する際に用いられる. +斉次化変数用に, 末尾に 1 を付け加えておくと安全である. +@item +@code{dp_set_top_weight} は top weight を @var{weight} に設定する. 引数がない時, +現在設定されている top weight を返す. top weight が設定されているとき, +まず top weight による単項式比較を先に行う. tie breaker として現在設定されている +項順序が用いられるが, この比較には top weight は用いられない. + +@item +@code{dp_weyl_set_weight} は weyl weight を @var{weight} に設定する. 引数がない時, +現在設定されている weyl weight を返す. weyl weight w を設定すると, +項順序型 11 での計算において, (-w,w) を top weight, tie breaker を graded reverse lex +とした項順序が設定される. +\E +\BEG +@item +@code{dp_set_weight} sets the sugar weight=@var{weight}. It returns the current sugar weight. +A sugar weight is a vector with positive integer components and it represents the weights of variables. +It is used for computing the weight of a monomial in a graded ordering. +It is recommended to append a component 1 at the end of the weight vector for a homogenizing variable. +@item +@code{dp_set_top_weight} sets the top weight=@var{weight}. It returns the current top weight. +It a top weight is set, the weights of monomials under the top weight are firstly compared. +If the the weights are equal then the current term ordering is applied as a tie breaker, but +the top weight is not used in the tie breaker. + +@item +@code{dp_weyl_set_weight} sets the weyl weigh=@var{weight}. It returns the current weyl weight. +If a weyl weight w is set, in the comparsion by the term order type 11, a term order with +the top weight=(-w,w) and the tie breaker=graded reverse lex is applied. +\E +@end itemize + +@table @t +\JP @item 参照 +\EG @item References +@fref{Weight} +@end table + + \JP @node dp_ptod,,, グレブナ基底に関する函数 \EG @node dp_ptod,,, Functions for Groebner basis computation @subsection @code{dp_ptod} @@ -2796,7 +2920,7 @@ converting the coefficients into elements of a finite @table @t \JP @item 参照 \EG @item References -@fref{dp_nf dp_nf_mod dp_true_nf dp_true_nf_mod}, +@fref{dp_nf dp_nf_mod dp_true_nf dp_true_nf_mod dp_weyl_nf dp_weyl_nf_mod}, @fref{subst psubst}, @fref{setmod}. @end table @@ -2887,7 +3011,7 @@ These are used internally in @code{hgr()} etc. into an integral distributed polynomial such that GCD of all its coefficients is 1. \E -@itemx dp_prim(@var{dpoly}) +@item dp_prim(@var{dpoly}) \JP :: 有理式倍して係数を整数係数多項式係数かつ係数の多項式 GCD を 1 にする. \BEG :: Converts a distributed polynomial @var{poly} with rational function @@ -2940,17 +3064,21 @@ polynomial contents included in the coefficients are n @fref{ptozp}. @end table -\JP @node dp_nf dp_nf_mod dp_true_nf dp_true_nf_mod,,, グレブナ基底に関する函数 -\EG @node dp_nf dp_nf_mod dp_true_nf dp_true_nf_mod,,, Functions for Groebner basis computation +\JP @node dp_nf dp_nf_mod dp_true_nf dp_true_nf_mod dp_weyl_nf dp_weyl_nf_mod,,, グレブナ基底に関する函数 +\EG @node dp_nf dp_nf_mod dp_true_nf dp_true_nf_mod dp_weyl_nf dp_weyl_nf_mod,,, Functions for Groebner basis computation @subsection @code{dp_nf}, @code{dp_nf_mod}, @code{dp_true_nf}, @code{dp_true_nf_mod} @findex dp_nf @findex dp_true_nf @findex dp_nf_mod @findex dp_true_nf_mod +@findex dp_weyl_nf +@findex dp_weyl_nf_mod @table @t @item dp_nf(@var{indexlist},@var{dpoly},@var{dpolyarray},@var{fullreduce}) +@item dp_weyl_nf(@var{indexlist},@var{dpoly},@var{dpolyarray},@var{fullreduce}) @item dp_nf_mod(@var{indexlist},@var{dpoly},@var{dpolyarray},@var{fullreduce},@var{mod}) +@item dp_weyl_nf_mod(@var{indexlist},@var{dpoly},@var{dpolyarray},@var{fullreduce},@var{mod}) \JP :: 分散表現多項式の正規形を求める. (結果は定数倍されている可能性あり) \BEG @@ -2992,6 +3120,8 @@ is returned in such a list as @code{[numerator, denomi @item 分散表現多項式 @var{dpoly} の正規形を求める. @item +名前に weyl を含む関数はワイル代数における正規形計算を行う. 以下の説明は weyl を含むものに対しても同様に成立する. +@item @code{dp_nf_mod()}, @code{dp_true_nf_mod()} の入力は, @code{dp_mod()} など により, 有限体上の分散表現多項式になっていなければならない. @item @@ -3024,6 +3154,9 @@ is returned in such a list as @code{[numerator, denomi @item Computes the normal form of a distributed polynomial. @item +Functions whose name contain @code{weyl} compute normal forms in Weyl algebra. The description below also applies to +the functions for Weyl algebra. +@item @code{dp_nf_mod()} and @code{dp_true_nf_mod()} require distributed polynomials with coefficients in a finite field as arguments. @item @@ -3805,7 +3938,7 @@ refer to @code{dp_true_nf()} and @code{dp_true_nf_mod( @fref{dp_ptod}, @fref{dp_dtop}, @fref{dp_ord}, -@fref{dp_nf dp_nf_mod dp_true_nf dp_true_nf_mod}. +@fref{dp_nf dp_nf_mod dp_true_nf dp_true_nf_mod dp_weyl_nf dp_weyl_nf_mod}. @end table \JP @node p_terms,,, グレブナ基底に関する函数