D-module (library by Okutani)
*****************************

ファイル gr, xm, Matrix, Diff, Dmodule が必要です.

OpenXM/Risa/Asir での利用にあたっては,

     load("Diff")$ load("Dmodule")$

が始めに必要.

Yukio Okutani 氏による D-加群計算用の sm1 サーバとのインタフェースライブラリです. すべての関数名は odmodule_ で始まります.

odmodule_d_op_tosm1
-------------------

odmodule_d_op_tosm1(LL,V)
     ::  リスト形式の微分作用素リストを sm1 形式に変換します.

return
     リスト

LL
     リスト

V
     リスト

  * 微分作用素の係数は整数多項式に変換されます.

  * この関数はdiff_op_tosm1と等価です.

  * odmodule_d_op_tosm1の例

     [299] odmodule_d_op_tosm1([[[x,[2,0]],[-1,[0,0]]],
                               [[y,[0,2]],[-1,[0,0]]]],[x,y]);
     [ + ( + (1) x) dx^2 + ( + (-1)), + ( + (1) y) dy^2 + ( + (-1))]

     [300] odmodule_d_op_tosm1([[[x,[1,0]],[y,[0,1]],[1,[0,0]]],
                               [[1,[2,0]],[1,[0,2]]]],[x,y]);
     [ + ( + (1) x) dx + ( + (1) y) dy + ( + (1)), + ( + (1)) dx^2 + ( + (1)) dy^2]

     [301] odmodule_d_op_tosm1([[[1/2,[1,0]],[1,[0,0]]],
                               [[1/3,[0,1]],[1/4,[0,0]]]],[x,y]);
     [ + ( + (6)) dx + ( + (12)), + ( + (4)) dy + ( + (3))]

     [302] odmodule_d_op_tosm1([[[1/2*x,[1,0]],[1,[0,0]]],
                               [[1/3*y,[0,1]],[1/4,[0,0]]]],[x,y]);
     [ + ( + (6) x) dx + ( + (12)), + ( + (4) y) dy + ( + (3))]

odmodule_d_op_toasir
--------------------

odmodule_d_op_toasir(LL,V)
     ::  リスト形式の微分作用素リスト LL を asir の多項式に変換します.

return
     リスト

LL
     リスト

V
     リスト

  * この関数はdiff_op_toasirと等価です.

  * odmodule_d_op_toasirの例

     [303] odmodule_d_op_toasir([[[1/2*x,[1,0]],[1,[0,0]]],
                                [[1/3*y,[0,1]],[1/4,[0,0]]]],[x,y]);
     [1/2*x*dx+1,1/3*y*dy+1/4]

     [304] odmodule_d_op_toasir([[[x,[1,0]],[y,[0,1]],[1,[0,0]]],
                                [[1,[2,0]],[1,[0,2]]]],[x,y]);
     [x*dx+y*dy+1,dx^2+dy^2]

odmodule_d_op_fromasir
----------------------

odmodule_d_op_fromasir(D_LIST,V)
     ::  asir の多項式からリスト形式の微分作用素リストに変換します.

return
     リスト

D_list
     リスト

V
     リスト

  * この関数はdiff_op_fromasirと等価です.

  * odmodule_d_op_fromasirの例

     [305] odmodule_d_op_fromasir([1/2*x*dx+1,1/3*y*dy+1/4],[x,y]);
     [[[1/2*x,[1,0]],[1,[0,0]]],[[1/3*y,[0,1]],[1/4,[0,0]]]]

     [306] odmodule_d_op_fromasir([x*dx+y*dy+1,dx^2+dy^2],[x,y]);
     [[[x,[1,0]],[y,[0,1]],[1,[0,0]]],[[1,[2,0]],[1,[0,2]]]]

odmodule_ch_ideal
-----------------

odmodule_ch_ideal(D_IDEAL,V)
     ::  D_IDEALのcharacteristic idealを求めます.

return
     リスト

D_ideal
     リスト

V
     リスト

  * D_IDEALはgeneric parameterを含むことができます.

  * odmodule_ch_idealの例

     [344] odmodule_ch_ideal([x*dx+y*dy+a,dx^2+dy^2],[x,y]);
     [x*dx+y*dy,dx^2+dy^2,y*dy*dx-x*dy^2,(x^2+y^2)*dy^2]

     [348] odmodule_ch_ideal(diff_op_appell4(a,b,c1,c2,[x,y]),[x,y]);
     [-x*dx^2+y*dy^2,2*y*x*dy*dx+(y*x+y^2-y)*dy^2,
      (2*y^2-2*y)*dy^2*dx+(-y*x+3*y^2+y)*dy^3,
      2*y*x*dy^2*dx+(y*x^2+(-2*y^2-y)*x+y^3-y^2)*dy^3]

odmodule_singular_locus
-----------------------

odmodule_singular_locus(D_IDEAL,V)
     ::  D_IDEALのsingular locusを求めます.

return
     リスト

D_ideal
     リスト

V
     リスト

  * D_IDEALはgeneric parameterを含むことができます.

  * odmodule_singular_locusの例

     [356] D = diff_op_appell4(a,b,c1,c2,[x,y])$
     [357] odmodule_singular_locus(D,[x,y]);
     [-y*x^3+(2*y^2+2*y)*x^2+(-y^3+2*y^2-y)*x]

     [358] D = diff_op_hg1(a,b,c,[x])$
     [359] odmodule_singular_locus(D,[x]);
     [x^2-x]

odmodule_restriction
--------------------

odmodule_restriction(D_IDEAL,V,REST)
     ::  D_IDEALの 0 次のrestrictionを求めます.

return
     リスト

D_IDEAL
     リスト

V
     リスト

REST
     リスト

  * D_IDEALはgeneric parameterを含むことができます.

  * odmodule_restrictionの例.

     [345] odmodule_restriction([x*dx+y*dy+a,dx^2+dy^2],[x,y],[y]);
     [[2,[-x*dx-a,-e0*x*dx-e0*a-e0]]]

odmodule_elimination
--------------------

odmodule_elimination(D_IDEAL,V,ELIM)
     ::  D_IDEALのelimination idealを求めます.

return
     リスト

D_IDEAL
     リスト

V
     リスト

ELIM
     リスト

  * D_IDEALはgeneric parameterを含むことができます.

  * odmodule_eliminationの例.

     [346] odmodule_elimination([x*dx+y*dy+a,dx^2+dy^2],[x,y],[[y],[0]]);
     [x^2*dx^2+(2*a+2)*x*dx+a^2+a]

     [347] odmodule_elimination([x*dx+y*dy+a,dx^2+dy^2],[x,y],[[y],[b]]);
     [(x^2+b^2)*dx^2+(2*a+2)*x*dx+a^2+a]