Copyright © Masayuki Noro 2016. All rights reserved.
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
1 noro_module_syz.rr | ||
Index |
1.1 多項式環上の加群 | ||
1.2 加群の syzygy | ||
1.3 加群の自由分解 |
このマニュアルでは, asir-contrib パッケージに収録されている, 加群の syzygy および自由分解を計算するパッケージ ‘noro_module_syz.rr’ について解説する. このパッケージを使うには, まず ‘noro_module_syz.rr’ をロードする.
[...] load("noro_module_syz.rr");
このパッケージの函数を呼び出すには, 全て newsyz.
を先頭につける.
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
多項式環上の自由加群の元は, 加群単項式 te_i の線型和として内部表現される.
ここで t は多項式環の単項式, e_i は自由加群の標準基底である. 加群単項式は, 多項式環の単項式
に位置 i を追加した <<a,b,...,c:i>>
で表す. 加群多項式, すなわち加群単項式の線型和は,
設定されている加群項順序にしたがって降順に整列される. 加群項順序には以下の3種類がある.
TOP 順序
これは, te_i > se_j となるのは t>s または (t=s かつ i<j) となるような項順序である. ここで,
t, s の比較は多項式環に設定されている順序で行う.
この型の順序は, dp_ord([0,Ord])
に
より設定する. ここで, Ord
は多項式環の順序型である.
POT 順序
これは, te_i > se_j となるのは i<j または (i=j かつ t>s) となるような項順序である. ここで,
t, s の比較は多項式環に設定されている順序で行う.
この型の順序は, dp_ord([1,Ord])
に
より設定する. ここで, Ord
は多項式環の順序型である.
Schreyer 型順序
各標準基底 e_i に対し, 別の自由加群の加群単項式 T_i が与えられていて, te_i > se_j となるのは
tT_i > sT_j または (tT_i=sT_j かつ i<j) となるような項順序である. ここで tT_i, sT_j の
比較は, これらが所属する自由加群に設定されている順序で行う.
この型の順序は, 通常再帰的に設定される. すなわち, T_i が所属する自由加群の順序も Schreyer 型
であるか, またはボトムとなる TOP, POT などの項順序となる.
この型の順序は dpm_set_schreyer([H_1,H_2,...])
により指定する. ここで,
H_i=[T_1,T_2,...]
は加群単項式のリストで, [H_2,...]
で定義される Schreyer 型項順序を
tT_i
らに適用するという意味である.
加群多項式を入力する方法としては, <<a,b,...:i>>
なる形式で直接入力する他に,
多項式リストを作り, dpm_ltod()
により変換する方法もある.
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
• noro_module_syz.modue_syz |
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
newsyz.module_syz
syzygy の生成系 (グレブナー基底) を計算する.
要素が3つのリスト, 各要素は多項式リストまたは加群多項式のリスト
多項式リスト, または多項式リストのリスト
変数リスト
非負整数
項順序
[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>>]
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
1.3.1 newsyz.fres , newsyz.minres | ||
1.3.2 newsyz.lres , newsyz.sres , newsyz.minsres , |
R を多項式環とし. F_i を R 上の自由加群, n_i を F_i のランクとする. 本節の関数は, F_0 の部分加群 I に対し, F_0/I の自由分解 0->F_l->...->F_0->F_0/I->0 を与える関数について解説する. この自由分解において phi_i:F_i->F_(i-1) とする.
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
newsyz.fres
, newsyz.minres
加群の自由分解を計算する.
多項式リストのリストのリスト
多項式リスト, または多項式リストのリスト
変数リスト
非負整数
項順序
newsyz.module_syz
を逐次的に実行する.
newsyz.minres
では, 得られた syzygy の生成系のうち, 定数を成分に持つものがある限り簡約を行う.
newsyz.minres
は, f が斉次の場合, 極小自由分解を得る.
newsyz.module_syz
と同様である.
[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]
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
newsyz.lres
, newsyz.sres
, newsyz.minsres
,加群の自由分解を計算する.
多項式リストのリストのリスト
多項式リスト, または多項式リストのリスト
変数リスト
0 または 1
項順序
newsyz.lres
は F_0/I の自由分解を La Scala-Stillman アルゴリズムにより計算する.
newsyz.sres
, newsyz.minsres
は F_0/I の自由分解を Schreyer アルゴリズムにより計算する.
newsyz.lres
において top=1 のとき, S-多項式の剰余計算は, 先頭項が簡約できなかった時点で修了する.
newsyz.lres
および newsyz.minsres
は極小自由分解を得る.
[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]
[ << ] | [ < ] | [上] | [ > ] | [ >> ] | [冒頭] | [目次] | [見出し] | [ ? ] |
移動: | N |
---|
移動: | N |
---|
[冒頭] | [目次] | [見出し] | [ ? ] |
[冒頭] | [目次] | [見出し] | [ ? ] |
[冒頭] | [目次] | [見出し] | [ ? ] |
この文書は1月 17, 2025にtexi2html 5.0を用いて生成されました。
ナビゲーションパネル中のボタンには以下の意味があります。
ボタン | 名称 | 移動先 | 1.2.3項からの移動先 |
---|---|---|---|
[ << ] | FastBack | Beginning of this chapter or previous chapter | 1 |
[ < ] | Back | Previous section in reading order | 1.2.2 |
[上] | Up | Up section | 1.2 |
[ > ] | Forward | Next section in reading order | 1.2.4 |
[ >> ] | FastForward | Next chapter | 2 |
[冒頭] | 冒頭 | Cover (top) of document | |
[目次] | 目次 | Table of contents | |
[見出し] | 見出し | 見出し | |
[ ? ] | About | About (help) |
例では、以下に示す構造を持つ文書の1.2.3項を現在位置に仮定しています。
この文書は1月 17, 2025にtexi2html 5.0を用いて生成されました。