[BACK]Return to noro_module_syz-ja.texi CVS log [TXT][DIR] Up to [local] / OpenXM / src / asir-contrib / packages / doc / noro_module_syz

Annotation of OpenXM/src/asir-contrib/packages/doc/noro_module_syz/noro_module_syz-ja.texi, Revision 1.5

1.5     ! noro        1: %comment $OpenXM: OpenXM/src/asir-contrib/packages/doc/noro_module_syz/noro_module_syz-ja.texi,v 1.4 2017/08/31 06:31:47 takayama Exp $
1.3       takayama    2: %comment --- おまじない ---
1.4       takayama    3: \input texinfo-ja
1.1       noro        4: @iftex
                      5: @catcode`@#=6
                      6: @def@fref#1{@xrefX[#1,,@code{#1},,,]}
                      7: @def@b#1{{@bf@gt #1}}
                      8: @catcode`@#=@other
                      9: @end iftex
                     10: @overfullrule=0pt
1.4       takayama   11: @documentlanguage ja
1.1       noro       12: @c -*-texinfo-*-
                     13: @comment %**start of header
1.3       takayama   14: @comment --- おまじない終り ---
1.1       noro       15:
1.3       takayama   16: @comment --- GNU info ファイルの名前 ---
1.1       noro       17: @setfilename asir-contrib-noro_module_syz
                     18:
1.3       takayama   19: @comment --- タイトル ---
1.1       noro       20: @settitle noro_module_syz
                     21:
                     22: @comment %**end of header
                     23: @comment %@setchapternewpage odd
                     24:
1.3       takayama   25: @comment --- おまじない ---
1.1       noro       26: @ifinfo
                     27: @macro fref{name}
                     28: @ref{\name\,,@code{\name\}}
                     29: @end macro
                     30: @end ifinfo
                     31:
                     32: @iftex
                     33: @comment @finalout
                     34: @end iftex
                     35:
                     36: @titlepage
1.3       takayama   37: @comment --- おまじない終り ---
1.1       noro       38:
1.3       takayama   39: @comment --- タイトル, バージョン, 著者名, 著作権表示 ---
1.1       noro       40: @title noro_module_syz
                     41: @subtitle noro_module_syz User's Manual
1.5     ! noro       42: @subtitle Edition 2.0
        !            43: @subtitle Sep 2020
1.1       noro       44:
                     45: @author  by Masayuki Noro
                     46: @page
                     47: @vskip 0pt plus 1filll
                     48: Copyright @copyright{} Masayuki Noro
                     49: 2016. All rights reserved.
                     50: @end titlepage
                     51:
1.3       takayama   52: @comment --- おまじない ---
1.1       noro       53: @synindex vr fn
1.3       takayama   54: @comment --- おまじない終り ---
1.1       noro       55:
1.3       takayama   56: @comment --- @node は GNU info, HTML 用 ---
                     57: @comment --- @node  の引数は node-name,  next,  previous,  up ---
1.1       noro       58: @node Top,, (dir), (dir)
                     59:
1.3       takayama   60: @comment --- @menu は GNU info, HTML 用 ---
                     61: @comment --- chapter 名を正確に並べる ---
1.1       noro       62: @menu
                     63: * noro_module_syz.rr ::
                     64: * Index::
                     65: @end menu
                     66:
1.3       takayama   67: @comment --- chapter の開始 ---
                     68: @comment --- 親 chapter 名を正確に ---
1.1       noro       69: @node noro_module_syz.rr ,,, Top
                     70: @chapter noro_module_syz.rr
1.3       takayama   71: @comment --- section 名を正確に並べる ---
1.1       noro       72: @menu
1.5     ! noro       73: * 多項式環上の加群::
1.3       takayama   74: * 加群の syzygy::
                     75: * 加群の自由分解::
1.1       noro       76: @end menu
                     77:
1.3       takayama   78: このマニュアルでは, asir-contrib パッケージに収録されている,
                     79: 加群の syzygy および自由分解を計算するパッケージ
                     80: @samp{noro_module_syz.rr} について解説する.
                     81: このパッケージを使うには, まず @samp{noro_module_syz.rr} をロードする.
1.1       noro       82: @example
                     83: [...] load("noro_module_syz.rr");
                     84: @end example
                     85: @noindent
1.3       takayama   86: このパッケージの函数を呼び出すには, 全て @code{newsyz.} を先頭につける.
1.1       noro       87:
1.3       takayama   88: @comment --- section の開始 ---
                     89: @comment --- 書体指定について ---
                     90: @comment --- @code{} はタイプライタ体表示 ---
                     91: @comment --- @var{} は斜字体表示 ---
                     92: @comment --- @b{} はボールド表示 ---
                     93: @comment --- @samp{} はファイル名などの表示 ---
1.1       noro       94:
1.5     ! noro       95: @node 多項式環上の加群,,, noro_module_syz.rr
        !            96: @section 多項式環上の加群
        !            97:
        !            98: 多項式環上の自由加群の元は, 加群単項式 te_i の線型和として内部表現される.
        !            99: ここで t は多項式環の単項式, e_i は自由加群の標準基底である. 加群単項式は, 多項式環の単項式
        !           100: に位置 i を追加した @code{<<a,b,...,c:i>>} で表す. 加群多項式, すなわち加群単項式の線型和は,
        !           101: 設定されている加群項順序にしたがって降順に整列される. 加群項順序には以下の3種類がある.
        !           102:
        !           103: @table @code
        !           104: @item TOP 順序
        !           105:
        !           106: これは, te_i > se_j となるのは t>s または (t=s かつ i<j) となるような項順序である. ここで,
        !           107: t, s の比較は多項式環に設定されている順序で行う.
        !           108: この型の順序は, @code{dp_ord([0,Ord])} に
        !           109: より設定する. ここで, @code{Ord} は多項式環の順序型である.
        !           110:
        !           111: @item POT 順序
        !           112:
        !           113: これは, te_i > se_j となるのは i<j または (i=j かつ t>s) となるような項順序である. ここで,
        !           114: t, s の比較は多項式環に設定されている順序で行う.
        !           115: この型の順序は, @code{dp_ord([1,Ord])} に
        !           116: より設定する. ここで, @code{Ord} は多項式環の順序型である.
        !           117:
        !           118: @item Schreyer 型順序
        !           119:
        !           120: 各標準基底 e_i に対し, 別の自由加群の加群単項式 T_i が与えられていて, te_i > se_j となるのは
        !           121: tT_i > sT_j または (tT_i=sT_j かつ i<j) となるような項順序である. ここで tT_i, sT_j の
        !           122: 比較は, これらが所属する自由加群に設定されている順序で行う.
        !           123: この型の順序は, 通常再帰的に設定される. すなわち, T_i が所属する自由加群の順序も Schreyer 型
        !           124: であるか, またはボトムとなる TOP, POT などの項順序となる.
        !           125: この型の順序は @code{dpm_set_schreyer([H_1,H_2,...])} により指定する. ここで,
        !           126: @code{H_i=[T_1,T_2,...]} は加群単項式のリストで, @code{[H_2,...]} で定義される Schreyer 型項順序を
        !           127: @code{tT_i} らに適用するという意味である.
        !           128: @end table
        !           129:
        !           130: 加群多項式を入力する方法としては, @code{<<a,b,...:i>>} なる形式で直接入力する他に,
        !           131: 多項式リストを作り, @code{dpm_ltod()} により変換する方法もある.
        !           132:
1.3       takayama  133: @node 加群の syzygy,,, noro_module_syz.rr
                    134: @section 加群の syzygy
1.1       noro      135:
                    136: @menu
                    137: * noro_module_syz.modue_syz::
                    138: @end menu
                    139:
1.3       takayama  140: @node newsyz.module_syz,,, 加群の syzygy
1.1       noro      141:
                    142: @subsection @code{newsyz.module_syz}
                    143: @findex newsyz.module_syz
                    144:
                    145: @table @t
1.5     ! noro      146: @item newsyz.module_syz(@var{f},@var{v},@var{h},@var{O}[|weyl=1,dp=1,f4=1])
1.3       takayama  147: syzygy の生成系 (グレブナー基底) を計算する.
1.1       noro      148: @end table
                    149:
                    150: @table @var
                    151: @item return
1.5     ! noro      152: 要素が3つのリスト, 各要素は多項式リストまたは加群多項式のリスト
1.1       noro      153:
                    154: @item f
1.3       takayama  155: 多項式リスト, または多項式リストのリスト
1.1       noro      156: @item v
1.3       takayama  157: 変数リスト
1.1       noro      158: @item h
1.3       takayama  159: 非負整数
1.1       noro      160: @item O
1.3       takayama  161: 項順序
1.1       noro      162: @end table
                    163:
                    164: @itemize @bullet
1.3       takayama  165: @item 多項式
                    166: 多項式列またが多項式ベクトル列に対する syzygy 加群のグレブナー基底を計算する.
                    167: @item @var{f=[f1,...,fm]} に対し, @var{h1*f1+...+hm*fm=0}を
                    168: 満たす多項式ベクトル @var{(h1,...,hm)} 全体のなす加群のグレブナー基底を
                    169: 計算する.
                    170: @item @var{fi} が多項式リストの場合, 自然に多項式ベクトルと見なす.
1.5     ! noro      171: @item 返される結果は @var{[S,G,C]} の形のリストである. ここで
        !           172: @var{S}は,
        !           173: 与えられた項順序 @var{O} に対し, 加群の項順序 @var{[1,O]} すなわち
        !           174: @var{O} で定まる POT (position over term) 項順序でのグレブナー基底である.
        !           175: @var{G}は, 入力加群のPOT 項順序でのグレブナー基底である.
        !           176: @var{C}は, 入力生成系から@var{G}の各元を生成する係数リストのリストである.
        !           177:
1.3       takayama  178: @item @var{h} が 0 のとき有理数体上で trace アルゴリズムにより計算する.
                    179: @var{h} が 1 のとき有理数体上で斉次化 trace アルゴリズムにより計算する.
                    180: @var{h} が 2 以上の素数のとき有限体上で計算する.
1.5     ! noro      181:
        !           182: @item オプション @var{f4} が 1 のとき, F4 アルゴリズムにより計算する.
        !           183: @item オプション @var{weyl} が 1 のとき Weyl 代数上で, 左イデアル (左加群) として計算する.
        !           184: @item オプション @var{dp}l が 1 のとき, 返される結果は, 加群の要素を表す
        !           185: 多項式リストの代わりに加群単項式が用いられる.
1.1       noro      186: @end itemize
                    187:
                    188: @example
1.5     ! noro      189: [0] load("noro_module_syz.rr")$
        !           190: [43] load("cyclic")$
        !           191: [53] F=cyclic(4);
        !           192: [c3*c2*c1*c0-1,((c2+c3)*c1+c3*c2)*c0+c3*c2*c1,(c1+c3)*c0+c2*c1+c3*c2,
        !           193: c0+c1+c2+c3]
        !           194: [54] V=[c0,c1,c2,c3]$
        !           195: [55] L=newsyz.module_syz(F,V,0,0)$
        !           196: [56] L[0];
        !           197: [[(-c2^2+c3^2)*c1-c3*c2^2+c3^3,-c3^2*c2^2+1,(c3*c2^3-c3^3*c2)*c1+...],
        !           198: ...,[0,0,c0+c1+c2+c3,(-c1-c3)*c0-c2*c1-c3*c2]]
        !           199: [57] L[1];
        !           200: [[(-c2+c3)*c1-c3^4*c2^2-c3*c2+2*c3^2],[-c3^2*c2^3-c3^3*c2^2+c2+c3],
        !           201: ...,[c1^2+2*c3*c1+c3^2],[c0+c1+c2+c3]]
        !           202: [58] L[2];
        !           203: [[(c2-c3)*c1+c3*c2-2*c3^2,c3^2*c2,(-c3*c2^2+c3^2*c2)*c1-c3*c2^3,...],
        !           204: ...,[0,0,-1,c1+c3],[0,0,0,1]]
        !           205: [59] C0=L[2][0];
        !           206: [(c2-c3)*c1+c3*c2-2*c3^2,c3^2*c2,(-c3*c2^2+c3^2*c2)*c1-c3*c2^3,
        !           207: (c3*c2^3-c3^2*c2^2)*c1+c3^2*c2^3-c3^3*c2^2]
        !           208: [60] L[1][0][0]-(C0[0]*F[0]+C0[1]*F[1]+C0[2]*F[2]+C0[3]*F[3]);
        !           209: 0
        !           210: [61] M=newsuz.modules_syz(F,V,0,0dp=1)$
        !           211: [62] M[0];
        !           212: [(-1)*<<0,1,2,0:1>>+(-1)*<<0,0,2,1:1>>+(1)*<<0,1,0,2:1>>+...,
        !           213: ...,(1)*<<1,0,0,0:3>>+(1)*<<0,1,0,0:3>>+(1)*<<0,0,1,0:3>>+
        !           214: ...+(-1)*<<0,1,1,0:4>>+(-1)*<<1,0,0,1:4>>+(-1)*<<0,0,1,1:4>>]
1.1       noro      215: @end example
                    216:
1.3       takayama  217: @node 加群の自由分解,,, noro_module_syz.rr
                    218: @section 加群の自由分解
1.1       noro      219:
                    220: @menu
1.5     ! noro      221: * newsyz.fres newsyz.minres::
        !           222: * newsyz.lres newsyz.sres newsyz.minsres::
1.1       noro      223: @end menu
                    224:
1.5     ! noro      225: R を多項式環とし. F_i を R 上の自由加群, n_i を F_i のランクとする.
        !           226: 本節の関数は, F_0 の部分加群 I に対し, F_0/I の自由分解
        !           227: @iftex
        !           228: @tex
        !           229: $$0\to F_l\to \cdots \to F_0 \to F_0/I \to 0$$
        !           230: @end tex
        !           231: @end iftex
        !           232: @ifnottex
        !           233: 0->F_l->...->F_0->F_0/I->0
        !           234: @end ifnottex
        !           235: を与える関数について解説する.
        !           236: この自由分解において phi_i:F_i->F_(i-1) とする.
        !           237:
        !           238: @node newsyz.fres newsyz.minres,,,加群の自由分解
        !           239: @subsection @code{newsyz.fres}, @code{newsyz.minres}
        !           240: @findex newsyz.fres
        !           241: @findex newsyz.minres
1.1       noro      242:
                    243: @table @t
1.5     ! noro      244: @item newsyz.fres(@var{f},@var{v},@var{h},@var{O}[|weyl=1])
        !           245: @itemx newsyz.minres(@var{f},@var{v},@var{h},@var{O}[|weyl=1])
1.3       takayama  246: 加群の自由分解を計算する.
1.1       noro      247: @end table
                    248:
                    249: @table @var
                    250: @item return
1.3       takayama  251: 多項式リストのリストのリスト
1.1       noro      252:
1.2       noro      253: @item f
1.3       takayama  254: 多項式リスト, または多項式リストのリスト
1.1       noro      255: @item v
1.3       takayama  256: 変数リスト
1.2       noro      257: @item h
1.3       takayama  258: 非負整数
1.2       noro      259: @item O
1.3       takayama  260: 項順序
1.1       noro      261: @end table
                    262:
                    263:
                    264: @itemize @bullet
1.5     ! noro      265: f=[f_1,...,f_m] を部分加群 I の生成系とするとき,
        !           266: の生成系とする.  この関数は, F_0/I の自由分解を計算する.
        !           267: @item 結果は [M_1,...,M_l] なるリストで, M_i は [phi_i(e_1),...,phi_i(e_(n_i)]
        !           268: なるベクトルのリストで, syz M_(i-1) の, O 上の POT 順序に関するグレブナー基底である.
        !           269: @item @code{newsyz.module_syz} を逐次的に実行する.
        !           270: @code{newsyz.minres} では, 得られた syzygy の生成系のうち, 定数を成分に持つものがある限り簡約を行う.
        !           271: @item @code{newsyz.minres} は, f が斉次の場合, 極小自由分解を得る.
        !           272: @item h, O, オプション weyl については @code{newsyz.module_syz} と同様である.
1.1       noro      273: @end itemize
                    274:
                    275: @example
1.5     ! noro      276: [0] load("noro_module_syz.rr")$
        !           277: [43] load("katsura")$
        !           278: [47] F=hkatsura(4)$
        !           279: [48] V=[t,u0,u1,u2,u3,u4]$
        !           280: [49] R=newsyz.fres(F,V,0,0)$
        !           281: [51] map(length,R);
        !           282: [5,22,28,12,2]
        !           283: [52] S=newsyz.minres(F,V,0,0)$
        !           284: [5,10,10,5,1]
        !           285: @end example
        !           286:
        !           287: @node newsyz.lres newsyz.sres newsyz.minsres,,,加群の自由分解
        !           288: @subsection @code{newsyz.lres}, @code{newsyz.sres}, @code{newsyz.minsres},
        !           289: @findex newsyz.lres
        !           290: @findex newsyz.sres
        !           291: @findex newsyz.minsres
        !           292:
        !           293: @table @t
        !           294: @item newsyz.lres(@var{f},@var{v},@var{h},@var{O}[|dp=1,top=1])
        !           295: @itemx newsyz.sres(@var{f},@var{v},@var{h},@var{O}[|dp=1])
        !           296: @itemx newsyz.minsres(@var{f},@var{v},@var{h},@var{O}[|dp=1])
        !           297: 加群の自由分解を計算する.
        !           298: @end table
        !           299:
        !           300: @table @var
        !           301: @item return
        !           302: 多項式リストのリストのリスト
        !           303:
        !           304: @item f
        !           305: 多項式リスト, または多項式リストのリスト
        !           306: @item v
        !           307: 変数リスト
        !           308: @item h
        !           309: 0 または 1
        !           310: @item O
        !           311: 項順序
        !           312: @end table
        !           313:
        !           314: @itemize @bullet
        !           315: @item
        !           316: f=[f_1,...,f_m] を部分加群 I の生成系とするとき,
        !           317: @code{newsyz.lres} は F_0/I の自由分解を La Scala-Stillman アルゴリズムにより計算する.
        !           318: @code{newsyz.sres}, @code{newsyz.minsres} は F_0/I の自由分解を Schreyer アルゴリズムにより計算する.
        !           319: @item
        !           320: 有理数体上の多項式環上の加群に対してのみ実装されている.
        !           321: @item 結果は [M_1,...,M_l] なるリストで, M_i は syz M_(i-1) の, Schreyer 順序に関する
        !           322: グレブナー基底である.
        !           323: @item h=1 のとき, 最初のグレブナー基底計算が斉次化経由で行われる.
        !           324: @item dp=1 のとき, 結果を加群多項式で返す.
        !           325: @item @code{newsyz.lres} において top=1 のとき, S-多項式の剰余計算は, 先頭項が簡約できなかった時点で修了する.
        !           326: @item f が斉次の場合, @code{newsyz.lres} および @code{newsyz.minsres} は極小自由分解を得る.
        !           327: @end itemize
        !           328:
        !           329: @example
        !           330: [0] load("noro_module_syz.rr")$
        !           331: [43] F=[x00*x11-x01*x10,x01*x12-x02*x11,x02*x13-x03*x12,-x11*x20+x21*x10,
        !           332: -x21*x12+x22*x11,-x22*x13+x23*x12,x31*x20-x30*x21,x32*x21-x31*x22,x33*x22-x32*x23]$
        !           333: [44] V=[x00,x01,x02,x03,x10,x11,x12,x13,x20,x21,x22,x23,x30,x31,x32,x33]$
        !           334: [45] cputime(1)$
        !           335: 1.8e-05sec(1.502e-05sec)
        !           336: [46] R=newsyz.minres(F,V,0,0)$
        !           337: 333.4sec(339.6sec)
        !           338: [47] S=newsyz.lres(F,V,0,0)$
        !           339: 85.34sec(85.56sec)
        !           340: [48] T=newsyz.minsres(F,V,0,0)$
        !           341: 241.2sec(250.3sec)
        !           342: [49] cputime(0)$
        !           343: [50] map(length,R);
        !           344: [9,75,456,1602,3391,4680,4388,2849,1290,393,72,6]
        !           345: [51] map(length,S);
        !           346: [9,75,456,1602,3391,4680,4388,2849,1290,393,72,6,0]
        !           347: [52] map(length,T);
        !           348: [9,75,456,1602,3391,4680,4388,2849,1290,393,72,6,0]
        !           349:
1.1       noro      350: @end example
                    351:
1.3       takayama  352: @comment --- おまじない ---
1.1       noro      353: @node Index,,, Top
                    354: @unnumbered Index
                    355: @printindex fn
                    356: @printindex cp
                    357: @iftex
                    358: @vfill @eject
                    359: @end iftex
                    360: @summarycontents
                    361: @contents
                    362: @bye
1.3       takayama  363: @comment --- おまじない終り ---
1.1       noro      364:

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>