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

### `dp_gr_main`

`dp_gr_main(f | v=vv, order=oo, homo=n, matrix=m, block=b, sugarweight=sw)`
  :: dp_gr_main の新しいインタフェース.

return
  リスト (グレブナ基底. 再帰表現多項式か分散表現多項式のリスト)
f
  リスト (入力多項式系. 再帰表現多項式か分散表現多項式のリスト)
vv
  リスト (変数のリスト)
oo
  リスト (順序をあらわすリスト)
n
  0 か1 (homogenization をするか)
m
  順序を matrix で表現する場合 (cf. dp_ord).
b
  ???
sw
  Sugar strategy を適用するときの weight vector. 全ての要素は非負.

- `dp_gr_main(f)` は, f のグレブナ基底を計算する. グレブナ基底は順序を変えるとその形が変わる. asir ではいままで順序の指定方法が 系統だっていなかった. dp_gr_main の新しいインタフェースでは順序をある文法に従い指定する.
- 順序 order は次の文法で定義する. {, } は 0 回以上の繰り返しを意味する.

        order         : '[' orderElement { ',' orderElement } ']'
        orderElement   :  weightVec | builtinOrder
        weightVec     : '[' weightElement { ',' weightElement } ']'
        builtiniOrder : '[' orderName  ',' setOfVariables ']'
        weightElement :   NUMBER | setOfVariables ',' NUMBER
        setOfVariables:  V | range(V,V)
        orderName    : @grlex | @glex | @lex

  ここで `V` は 変数名, `NUMBER` は整数をあわらす. 例1: `v=[x,y,z,u,v], order=[[x,10,y,5,z,1],[@grlex,range(x,v)]]` は `x`,`y`,`z` がそれぞれ weight 10, 5, 1 をもつ 順序で比較したあと, `[x,y,z,u,v]` についての graded reverse lexicographic order を tie-breaker として用いることを意味する. 参考書: B.Sturmfels: Gr\"obner Bases and Convex Polytopes (1995). M.Saito, B.Sturmfels, N.Takayama: Gr\"obner Deformations of Hypergeometric Differential Equations (2000).
- 順序要素 (orderElement) の指定方法は (1) 変数名または rangeで指定された変数の集合と重みの値の繰り返し (2) 重みの値を変数リストの順番に並べる方法 (3) 変数名または rangeで指定された変数の集合と順序名の組 の三通りの基礎的方法がある. 似た指定方法が Macaulay, Singular, CoCoA, Kan/sm1 等の環論システムで 使用されていた. Risa/Asir の指定方法はこれらのシステムの指定方法を参考に さらに改良を加えたもので柔軟性が高い.
- order の tie-breaker は grlex がデフォールト.
- 分散表現多項式を引数としたときは結果も分散表現多項式として戻る. order 指定にもちいるデフォールトの変数名はこのとき x0, x1, x2, ... となる.
- オプションの値は option_list キーワードを用いてリストで与えてもよい. 下の例を参照.

    [218] load("cyclic");
    [219] V=vars(cyclic(4));
    [c0,c1,c2,c3]
    [220]dp_gr_main(cyclic(4) | v=V, order=[[c0,10,c1,1],[c2,5],[@grlex,range(c0,c3)]]);
    [ 10 1 0 0 ]
    [ 0 0 5 0 ]
    [ R R R R ]
    [(-c3^6+c3^2)*c2^2+c3^4-1,c3^2*c2^3+c3^3*c2^2-c2-c3,
     (c3^4-1)*c1+c3^5-c3,(c2-c3)*c1+c3^4*c2^2+c3*c2-2*c3^2,-c1^2-2*c3*c1-c3^2,
     c0+c1+c2+c3]

    [1151]  F=map(dp_ptod,katsura(4), vars(katsura(4)));
    [(1)*<<1,0,0,0,0>>+(2)*<<0,1,0,0,0>>+ ... ]
    [1152] dp_gr_main(F | order=[[range(x0,x3),1]]);
    [ 1 1 1 1 0 ]
    [ R R R R R ]
    [(47774098944)*<<0,0,0,0,13>>+ ... ]

    [1153] Opt=[["v",[x,y]], ["order",[[x,5,y,1]]]];
    [[v,[x,y]],[order,[[x,5,y,1]]]]
    [1154]  dp_gr_main([x^2+y^2-1,x*y-1] | option_list=Opt);
    [ 5 1 ]
    [ R R ]
    [-y^4+y^2-1,x+y^3-y]

ChangeLog

- この関数は 2003-12 から 2004-2 の始めに大きな修正が行われた.
- `setOfVariables`の表現のために range オブジェクトが導入された.
- グレブナ基底は順序を変えるとその形が変わる. asir ではいままで順序の指定方法が 系統だっていなかった. dp_gr_main の新しいインタフェースでは順序をある文法に従い指定する.
- OpenXM_contrib2/asir2000 の下の次の各ファイルが修正をうけた. builtin/gr.c 1.56--1.57, builtin/dp-supp.c 1.27--1.31 (create_composite_order_spec), builtin/dp.c 1.46--1.48 (parse_gr_option), engine/Fgfs.c 1.20, engine/dist.c 1.27--1.28 engine/nd.c 1.89, include/ca.h 1.42--1.43, io/pexpr.c 1.28, io/sexpr.c 1.26, parse/arith.c 1.11, parse/glob.c 1.44-1.45, parse/lex.c 1.29, parse/parse.h 1.23--1.26
- Todo: return キーワードで戻り値のデータを quote のリストにできるように. attribute, ring 構造体.

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