%comment $OpenXM: OpenXM/src/asir-contrib/packages/doc/noro_module_syz/noro_module_syz-ja.texi,v 1.5 2020/09/08 09:16:57 noro Exp $ %comment --- おまじない --- \input texinfo-ja @iftex @catcode`@#=6 @def@fref#1{@xrefX[#1,,@code{#1},,,]} @def@b#1{{@bf@gt #1}} @catcode`@#=@other @end iftex @overfullrule=0pt @documentlanguage ja @c -*-texinfo-*- @comment %**start of header @comment --- おまじない終り --- @comment --- GNU info ファイルの名前 --- @setfilename asir-contrib-noro_module_syz @comment --- タイトル --- @settitle noro_module_syz @comment %**end of header @comment %@setchapternewpage odd @comment --- おまじない --- @ifinfo @macro fref{name} @ref{\name\,,@code{\name\}} @end macro @end ifinfo @iftex @comment @finalout @end iftex @titlepage @comment --- おまじない終り --- @comment --- タイトル, バージョン, 著者名, 著作権表示 --- @title noro_module_syz @subtitle noro_module_syz User's Manual @subtitle Edition 2.0 @subtitle Sep 2020 @author by Masayuki Noro @page @vskip 0pt plus 1filll Copyright @copyright{} Masayuki Noro 2016. All rights reserved. @end titlepage @comment --- おまじない --- @synindex vr fn @comment --- おまじない終り --- @comment --- @node は GNU info, HTML 用 --- @comment --- @node の引数は node-name, next, previous, up --- @node Top,, (dir), (dir) @comment --- @menu は GNU info, HTML 用 --- @comment --- chapter 名を正確に並べる --- @menu * noro_module_syz.rr :: * Index:: @end menu @comment --- chapter の開始 --- @comment --- 親 chapter 名を正確に --- @node noro_module_syz.rr ,,, Top @chapter noro_module_syz.rr @comment --- section 名を正確に並べる --- @menu * 多項式環上の加群:: * 加群の syzygy:: * 加群の自由分解:: @end menu このマニュアルでは, asir-contrib パッケージに収録されている, 加群の syzygy および自由分解を計算するパッケージ @samp{noro_module_syz.rr} について解説する. このパッケージを使うには, まず @samp{noro_module_syz.rr} をロードする. @example [...] load("noro_module_syz.rr"); @end example @noindent このパッケージの函数を呼び出すには, 全て @code{newsyz.} を先頭につける. @comment --- section の開始 --- @comment --- 書体指定について --- @comment --- @code{} はタイプライタ体表示 --- @comment --- @var{} は斜字体表示 --- @comment --- @b{} はボールド表示 --- @comment --- @samp{} はファイル名などの表示 --- @node 多項式環上の加群,,, noro_module_syz.rr @section 多項式環上の加群 多項式環上の自由加群の元は, 加群単項式 te_i の線型和として内部表現される. ここで t は多項式環の単項式, e_i は自由加群の標準基底である. 加群単項式は, 多項式環の単項式 に位置 i を追加した @code{<>} で表す. 加群多項式, すなわち加群単項式の線型和は, 設定されている加群項順序にしたがって降順に整列される. 加群項順序には以下の3種類がある. @table @code @item TOP 順序 これは, te_i > se_j となるのは t>s または (t=s かつ i se_j となるのは is) となるような項順序である. ここで, t, s の比較は多項式環に設定されている順序で行う. この型の順序は, @code{dp_ord([1,Ord])} に より設定する. ここで, @code{Ord} は多項式環の順序型である. @item Schreyer 型順序 各標準基底 e_i に対し, 別の自由加群の加群単項式 T_i が与えられていて, te_i > se_j となるのは tT_i > sT_j または (tT_i=sT_j かつ i>} なる形式で直接入力する他に, 多項式リストを作り, @code{dpm_ltod()} により変換する方法もある. @node 加群の syzygy,,, noro_module_syz.rr @section 加群の syzygy @menu * noro_module_syz.modue_syz:: @end menu @node newsyz.module_syz,,, 加群の syzygy @subsection @code{newsyz.module_syz} @findex newsyz.module_syz @table @t @item newsyz.module_syz(@var{f},@var{v},@var{h},@var{O}[|weyl=1,dp=1,f4=1]) syzygy の生成系 (グレブナー基底) を計算する. @end table @table @var @item return 要素が3つのリスト, 各要素は多項式リストまたは加群多項式のリスト @item f 多項式リスト, または多項式リストのリスト @item v 変数リスト @item h 非負整数 @item O 項順序 @end table @itemize @bullet @item 多項式 多項式列またが多項式ベクトル列に対する syzygy 加群のグレブナー基底を計算する. @item @var{f=[f1,...,fm]} に対し, @var{h1*f1+...+hm*fm=0}を 満たす多項式ベクトル @var{(h1,...,hm)} 全体のなす加群のグレブナー基底を 計算する. @item @var{fi} が多項式リストの場合, 自然に多項式ベクトルと見なす. @item 返される結果は @var{[S,G,C]} の形のリストである. ここで @var{S}は, 与えられた項順序 @var{O} に対し, 加群の項順序 @var{[1,O]} すなわち @var{O} で定まる POT (position over term) 項順序でのグレブナー基底である. @var{G}は, 入力加群のPOT 項順序でのグレブナー基底である. @var{C}は, 入力生成系から@var{G}の各元を生成する係数リストのリストである. @item @var{h} が 0 のとき有理数体上で trace アルゴリズムにより計算する. @var{h} が 1 のとき有理数体上で斉次化 trace アルゴリズムにより計算する. @var{h} が 2 以上の素数のとき有限体上で計算する. @item オプション @var{f4} が 1 のとき, F4 アルゴリズムにより計算する. @item オプション @var{weyl} が 1 のとき Weyl 代数上で, 左イデアル (左加群) として計算する. @item オプション @var{dp}l が 1 のとき, 返される結果は, 加群の要素を表す 多項式リストの代わりに加群単項式が用いられる. @end itemize @example [0] load("noro_module_syz.rr")$ [43] load("cyclic")$ [53] F=cyclic(4); [c3*c2*c1*c0-1,((c2+c3)*c1+c3*c2)*c0+c3*c2*c1,(c1+c3)*c0+c2*c1+c3*c2, c0+c1+c2+c3] [54] V=[c0,c1,c2,c3]$ [55] L=newsyz.module_syz(F,V,0,0)$ [56] L[0]; [[(-c2^2+c3^2)*c1-c3*c2^2+c3^3,-c3^2*c2^2+1,(c3*c2^3-c3^3*c2)*c1+...], ...,[0,0,c0+c1+c2+c3,(-c1-c3)*c0-c2*c1-c3*c2]] [57] L[1]; [[(-c2+c3)*c1-c3^4*c2^2-c3*c2+2*c3^2],[-c3^2*c2^3-c3^3*c2^2+c2+c3], ...,[c1^2+2*c3*c1+c3^2],[c0+c1+c2+c3]] [58] L[2]; [[(c2-c3)*c1+c3*c2-2*c3^2,c3^2*c2,(-c3*c2^2+c3^2*c2)*c1-c3*c2^3,...], ...,[0,0,-1,c1+c3],[0,0,0,1]] [59] C0=L[2][0]; [(c2-c3)*c1+c3*c2-2*c3^2,c3^2*c2,(-c3*c2^2+c3^2*c2)*c1-c3*c2^3, (c3*c2^3-c3^2*c2^2)*c1+c3^2*c2^3-c3^3*c2^2] [60] L[1][0][0]-(C0[0]*F[0]+C0[1]*F[1]+C0[2]*F[2]+C0[3]*F[3]); 0 [61] M=newsuz.modules_syz(F,V,0,0dp=1)$ [62] M[0]; [(-1)*<<0,1,2,0:1>>+(-1)*<<0,0,2,1:1>>+(1)*<<0,1,0,2:1>>+..., ...,(1)*<<1,0,0,0:3>>+(1)*<<0,1,0,0:3>>+(1)*<<0,0,1,0:3>>+ ...+(-1)*<<0,1,1,0:4>>+(-1)*<<1,0,0,1:4>>+(-1)*<<0,0,1,1:4>>] @end example @node 加群の自由分解,,, noro_module_syz.rr @section 加群の自由分解 @menu * newsyz.fres newsyz.minres:: * newsyz.lres newsyz.sres newsyz.minsres:: @end menu R を多項式環とし. F_i を R 上の自由加群, n_i を F_i のランクとする. 本節の関数は, F_0 の部分加群 I に対し, F_0/I の自由分解 @iftex @tex $$0\to F_l\to \cdots \to F_0 \to F_0/I \to 0$$ @end tex @end iftex @ifnottex 0->F_l->...->F_0->F_0/I->0 @end ifnottex を与える関数について解説する. この自由分解において phi_i:F_i->F_(i-1) とする. @node newsyz.fres newsyz.minres,,,加群の自由分解 @subsection @code{newsyz.fres}, @code{newsyz.minres} @findex newsyz.fres @findex newsyz.minres @table @t @item newsyz.fres(@var{f},@var{v},@var{h},@var{O}[|weyl=1]) @itemx newsyz.minres(@var{f},@var{v},@var{h},@var{O}[|weyl=1]) 加群の自由分解を計算する. @end table @table @var @item return 多項式リストのリストのリスト @item f 多項式リスト, または多項式リストのリスト @item v 変数リスト @item h 非負整数 @item O 項順序 @end table @itemize @bullet f=[f_1,...,f_m] を部分加群 I の生成系とするとき, の生成系とする. この関数は, F_0/I の自由分解を計算する. @item 結果は [M_1,...,M_l] なるリストで, M_i は [phi_i(e_1),...,phi_i(e_(n_i)] なるベクトルのリストで, syz M_(i-1) の, O 上の POT 順序に関するグレブナー基底である. @item @code{newsyz.module_syz} を逐次的に実行する. @code{newsyz.minres} では, 得られた syzygy の生成系のうち, 定数を成分に持つものがある限り簡約を行う. @item @code{newsyz.minres} は, f が斉次の場合, 極小自由分解を得る. @item h, O, オプション weyl については @code{newsyz.module_syz} と同様である. @end itemize @example [0] load("noro_module_syz.rr")$ [43] load("katsura")$ [47] F=hkatsura(4)$ [48] V=[t,u0,u1,u2,u3,u4]$ [49] R=newsyz.fres(F,V,0,0)$ [51] map(length,R); [5,22,28,12,2] [52] S=newsyz.minres(F,V,0,0)$ [5,10,10,5,1] @end example @node newsyz.lres newsyz.sres newsyz.minsres,,,加群の自由分解 @subsection @code{newsyz.lres}, @code{newsyz.sres}, @code{newsyz.minsres}, @findex newsyz.lres @findex newsyz.sres @findex newsyz.minsres @table @t @item newsyz.lres(@var{f},@var{v},@var{h},@var{O}[|dp=1,top=1]) @itemx newsyz.sres(@var{f},@var{v},@var{h},@var{O}[|dp=1]) @itemx newsyz.minsres(@var{f},@var{v},@var{h},@var{O}[|dp=1]) 加群の自由分解を計算する. @end table @table @var @item return 多項式リストのリストのリスト @item f 多項式リスト, または多項式リストのリスト @item v 変数リスト @item h 0 または 1 @item O 項順序 @end table @itemize @bullet @item f=[f_1,...,f_m] を部分加群 I の生成系とするとき, @code{newsyz.lres} は F_0/I の自由分解を La Scala-Stillman アルゴリズムにより計算する. @code{newsyz.sres}, @code{newsyz.minsres} は F_0/I の自由分解を Schreyer アルゴリズムにより計算する. @item 有理数体上の多項式環上の加群に対してのみ実装されている. @item 結果は [M_1,...,M_l] なるリストで, M_i は syz M_(i-1) の, Schreyer 順序に関する グレブナー基底である. @item h=1 のとき, 最初のグレブナー基底計算が斉次化経由で行われる. @item dp=1 のとき, 結果を加群多項式で返す. @item @code{newsyz.lres} において top=1 のとき, S-多項式の剰余計算は, 先頭項が簡約できなかった時点で修了する. @item f が斉次の場合, @code{newsyz.lres} および @code{newsyz.minsres} は極小自由分解を得る. @end itemize @example [0] load("noro_module_syz.rr")$ [43] F=[x00*x11-x01*x10,x01*x12-x02*x11,x02*x13-x03*x12,-x11*x20+x21*x10, -x21*x12+x22*x11,-x22*x13+x23*x12,x31*x20-x30*x21,x32*x21-x31*x22,x33*x22-x32*x23]$ [44] V=[x00,x01,x02,x03,x10,x11,x12,x13,x20,x21,x22,x23,x30,x31,x32,x33]$ [45] cputime(1)$ 1.8e-05sec(1.502e-05sec) [46] R=newsyz.minres(F,V,0,0)$ 333.4sec(339.6sec) [47] S=newsyz.lres(F,V,0,0)$ 85.34sec(85.56sec) [48] T=newsyz.minsres(F,V,0,0)$ 241.2sec(250.3sec) [49] cputime(0)$ [50] map(length,R); [9,75,456,1602,3391,4680,4388,2849,1290,393,72,6] [51] map(length,S); [9,75,456,1602,3391,4680,4388,2849,1290,393,72,6,0] [52] map(length,T); [9,75,456,1602,3391,4680,4388,2849,1290,393,72,6,0] @end example @comment --- おまじない --- @node Index,,, Top @unnumbered Index @printindex fn @printindex cp @iftex @vfill @eject @end iftex @summarycontents @contents @bye @comment --- おまじない終り ---