Go to the first, previous, next, last section, table of contents.

### `gr`, `hgr`, `gr_mod`, `dgr`

`gr(plist,vlist,order)`
`hgr(plist,vlist,order)`
`gr_mod(plist,vlist,order,p)`
`dgr(plist,vlist,order,procs)`
  :: グレブナ基底の計算

return
  リスト
plist vlist procs
  リスト
order
  数, リストまたは行列
p
  2^27 未満の素数

- 標準ライブラリの ``gr'` で定義されている.
- いずれも, 多項式リスト plist の, 変数順序 vlist, 項順序型 order に関するグレブナ基底を求める. `gr()`, `hgr()` は 有理数係数, `gr_mod()` は GF(p) 係数として計算する.
- vlist は不定元のリスト. vlist に現れない不定元は, 係数体に属すると見なされる.
- `gr()`, trace-lifting (モジュラ演算を用いた高速化) および sugar strategy による計算, `hgr()` は trace-lifting および 斉次化による 矯正された sugar strategy による計算を行う.
- `dgr()` は, `gr()`, `hgr()` を 子プロセスリスト procs の 2 つのプロセスにより同時に計算させ, 先に結果を返した方の結果を返す. 結果は同一であるが, どちらの方法が 高速か一般には不明のため, 実際の経過時間を短縮するのに有効である.
- `dgr()` で表示される時間は, この函数が実行されているプロセスでの CPU 時間であり, この函数の場合はほとんど通信のための時間である.
- 多項式リスト plist の要素が分散表現多項式の場合は 結果も分散表現多項式のリストである. この場合, 引数の分散多項式は与えられた順序に従い `dp_sort` で ソートされてから計算される. 多項式リストの要素が分散表現多項式の場合も 変数の数分の不定元のリストを vlist 引数として与えないといけない (ダミー).

    [0] load("gr")$
    [64] load("cyclic")$
    [74] G=gr(cyclic(5),[c0,c1,c2,c3,c4],2);
    [c4^15+122*c4^10-122*c4^5-1,...]
    [75] GM=gr_mod(cyclic(5),[c0,c1,c2,c3,c4],2,31991)$
    24628*c4^15+29453*c4^10+2538*c4^5+7363
    [76] (G[0]*24628-GM[0])%31991;
    0

`参照`
  section `dp_gr_main`, `dp_gr_mod_main`, `dp_gr_f_main`, `dp_weyl_gr_main`, `dp_weyl_gr_mod_main`, `dp_weyl_gr_f_main`, section `dp_ord`.

Go to the first, previous, next, last section, table of contents.