*/

/*&ja

*/ /*&en

*/ /*&ja

COMPLEX 函数
**********

函数一覧
====

*/ /*&en

COMPLEX function
****************

A list of functions
===================

*/ /*&C

*/

/*&ja

Res_solv
--------

Res_solv(M,D)
     ::  一次不定方程式 u M =D の解をもとめる.

Res_solv(M,D,R)
     ::  一次不定方程式 u M =D の解をもとめる. R は ring.

*/ /*&en

Res_solv
--------

Res_solv(M,D)
     ::  Find a solution u of the linear indefinite equation u M =D.

Res_solv(M,D,R)
     ::  Find a solution u of the linear indefinite equation u M =D. R is a ring object.

*/

/*&ja

return
     [c,r] が戻り値のとき c/r が解 u (横ベクトル).

m
     行列またはベクトル

d
     ベクトル またはスカラー

  * 一次不定方程式 u M =D の解をもとめる.

  * M, D の順に環の定義を検索し, その環と同じ変数集合をもつ微分作用素環(graded reverse lexicographic order)で不定方程式を解く. 環 R があたえられているときは, R と同じ変数集合をもつ微分作用素環(graded reverse lexicographic order)で不定方程式を解く.

  * M, D が定数成分のときは, 環 R を与える必要がある. (M, D より環の情報をとりだせないため).

*/ /*&en

return
     When [c,r] is the return value,  c/r is the solution u.

m
     Matrix or vector

d
     Vector or scalar

  * Find a solution u of the linear indefinite equation u M =D.

  * It solves the linear indefinite equation in the ring of differential operators (with graded reverse lexicographic order) of the same set of variables of the ring to which M or D belongs. When the ring R is given, it solves the linear indefinite equation in the ring of differential operators (with graded reverse lexicographic order) of the same set of variables of the ring R.

  * When M and D consist of constants, a ring R should be given.

*/

/*&C

     In(16)= RingD("x,y");
     In(17)= mm=[Dx,Dy,x];
     In(18)= Res_solv(mm,1):
     [    [    x , 0 , -Dx ]  , -1 ]

*/ /*&ja これは -x*Dx + 0*Dy+Dx*x = 1 であることを示す. */ /*&en The output means that  -x*Dx + 0*Dy+Dx*x = 1. */

/*&C

     In(4)=RingD("x");
          m=[ [x*Dx+2, 0],[Dx+3,x^3],[3,x],[Dx*(x*Dx+3)-(x*Dx+2)*(x*Dx-4),0]];
          d=[1,0];
          Res_solv(m,d):

     [    [    x^2*Dx-x*Dx-4*x-1 , 0 , 0 , x ]  , -2 ]

*/ /*&ja これは -(1/2)*(x^2*Dx-x*Dx-4*x-1)*[x*Dx+2, 0]-(1/2)*[Dx*(x*Dx+3)-(x*Dx+2)*(x*Dx-4),0] = [1,0] であることを示す. */ /*&en The output implies that -(1/2)*(x^2*Dx-x*Dx-4*x-1)*[x*Dx+2, 0]-(1/2)*[Dx*(x*Dx+3)-(x*Dx+2)*(x*Dx-4),0] = [1,0] */

/*&C

     In(4)= r=RingD("x,y");
     In(5)= Res_solv([[1,2],[3,4]],[5,0],r):
     [    [    10 , -5 ]  , -1 ]

*/

/*&ja

参照
     Res_solv_h, Kernel,  GetRing, SetRing.

Files
     lib/restriction/complex.k

*/ /*&en

See also
     Res_solv_h, Kernel,  GetRing, SetRing.

Files
     lib/restriction/complex.k

*/

/*&ja

Res_solv2
---------

Res_solv2(M,V,J)
     ::  一次不定方程式 u M =V mod J の解をもとめる.

Res_solv2(M,V,J,R)
     ::  一次不定方程式 u M =V mod J の解をもとめる. R は ring.

*/ /*&en

Res_solv2
---------

Res_solv2(M,V,J)
     ::  Find a solution u of the linear indefinite equation u M =V mod J.

Res_solv2(M,V,J,R)
     ::  Find a solution u of the linear indefinite equation u M =V mod J. R is a ring object.

*/

/*&ja

return
     [c,r] が戻り値のとき c/r が解 u (横ベクトル).

m
     行列またはベクトル

v  j
     ベクトル またはスカラー

  * 一次不定方程式 u M =V mod J の解をもとめる.

  * これは, M を M :  D^p ---> D^q/J なる左 D homomorphism とみなすとき, M^(-1)(V) を求めることに相当する.

  * M, V の順に環の定義を検索し, その環と同じ変数集合をもつ微分作用素環(graded reverse lexicographic order)で不定方程式を解く. 環 R があたえられているときは, R と同じ変数集合をもつ微分作用素環(graded reverse lexicographic order)で不定方程式を解く.

  * M, V が定数成分のときは, 環 R を与える必要がある. (M, V より環の情報をとりだせないため).

*/ /*&en

return
     When [c,r] is the return value,  c/r is the solution u.

m
     Matrix or vector

v j
     Vector or scalar

  * Find a solution u of the linear indefinite equation u M =V mod J.

  * Let  M be the left D-homomorphism M :  D^p ---> D^q/J. The function returns an element in M^(-1)(V).

  * It solves the linear indefinite equation in the ring of differential operators (with graded reverse lexicographic order) of the same set of variables of the ring to which M or V belongs. When the ring R is given, it solves the linear indefinite equation in the ring of differential operators (with graded reverse lexicographic order) of the same set of variables of the ring R.

  * When M and V consist of constants, a ring R should be given.

*/

/*&C

     In(28)= r=RingD("x,y");
     In(29)= Res_solv2([x,y],[x^2+y^2],[x]):
     [    [    0 , y ]  , 1 ]

*/ /*&ja これは 0*x + y*y = x^2+y^2 mod x であることを示す. */ /*&en The output means that  0*x + y*y = x^2+y^2 mod x */

/*&C

     In(32)= Res_solv2([x,y],[x^2+y^2],[],r):
     [    [    x , y ]  , 1 ]

*/ /*&ja これは x*x + y*y = x^2+y^2 であることを示す. */ /*&en The output implies that x*x + y*y = x^2+y^2. */

/*&ja

参照
     Res_solv2_h, Kernel2,  GetRing, SetRing.

Files
     lib/restriction/complex.k

*/ /*&en

See also
     Res_solv2_h, Kernel2,  GetRing, SetRing.

Files
     lib/restriction/complex.k

*/

/*&ja

Kernel
------

Kernel(M)
     ::  一次不定方程式 u M =0 の解空間の基底を求める.

Kernel(M,R)
     ::  一次不定方程式 u M =0 の解空間の基底を求める. R は ring.

*/ /*&en

Kernel
------

Kernel(M)
     ::  Find solution basis of the linear indefinite equation u M =0.

Kernel(M,R)
     ::  Find solution basis of the linear indefinite equation u M =0. R is a ring object.

*/

/*&ja

return
     リスト

m
     行列またはベクトル

  * 一次不定方程式 u M =0 の解空間の基底を求める.

  * 戻り値を k とするとき k[0] が 解空間の基底の集合. k[1] は [gb, backward transformation, syzygy without dehomogenization].

  * M より環の定義を検索し, その環でカーネルを計算する. 環 R があたえられているときは, R でカーネルを計算する.

  * M が定数成分のときは, 環 R を与える必要がある. (M より環の情報をとりだせないため).

  * BUG:  Kernel および Res_solv (syz, res-solv) のみが, 環引数に対応してる. (2000, 12/29 現在).

*/ /*&en

return
     List

m
     Matrix or vector

  * Find solution basis of the linear indefinite equation u M =0.

  * When the return value is  k, k[0] is a set of generators of the kernel. k[1] is [gb, backward transformation, syzygy without dehomogenization].

  * It finds the kernel in the ring to which M belongs. When the ring R is given, it finds the kernel in the ring R.

  * When M consists of constants, a ring R should be given.

*/

/*&C

     In(16)= RingD("x,y");
     In(17)= mm=[[Dx],[Dy],[x]];
     In(18)= Pmat(Kernel(mm));
      [
       [
         [    -x*Dx-2 , 0 , Dx^2 ]
         [    -x*Dy , -1 , Dx*Dy ]
         [    -x^2 , 0 , x*Dx-1 ]
       ]
       [
        [
          [    -1 ]
        ]
        [
          [    x , 0 , -Dx ]
        ]
        [
          [    -x*Dx-2 , 0 , Dx^2 ]
          [    -x*Dy , -1 , Dx*Dy ]
          [    -x^2 , 0 , x*Dx-1 ]
        ]
       ]
      ]

*/

/*&C

     In(4)= r=RingD("x,y");
     In(5)= k=Kernel([[1,2],[2,4]],r); k[0]:
     [    [    2 , -1 ]  ]

*/

/*&ja

参照
     Kernel_h, Res_solv, GetRing, SetRing.

Files
     lib/restriction/complex.k

*/ /*&en

See also
     Kernel_h, Res_solv,  GetRing, SetRing.

Files
     lib/restriction/complex.k

*/ /*&ja

Kernel2
-------

Kernel2(M,J)
     ::  M : D^p ---> D^q/J の Kernel を求める.

Kernel2(M,J,R)
     ::  M : D^p ---> D^q/J の Kernel を求める. R は ring.

*/ /*&en

Kernel2
-------

Kernel2(M)
     ::  Get the kernel of M : D^p ---> D^q/J.

Kernel2(M,R)
     ::   Get the kernel of M : D^p ---> D^q/J. R is a ring object.

*/

/*&ja

return
     リスト

m  j
     行列またはベクトル

  * M : D^p ---> D^q/J の Kernel を求める.

  * D^p は横ベクトルであり, u が D^p の元のとき, u M で写像を定義する.

  * M より環の定義を検索し, その環でカーネルを計算する. 環 R があたえられているときは, R でカーネルを計算する.

  * M が定数成分のときは, 環 R を与える必要がある. (M より環の情報をとりだせないため).

*/ /*&en

return
     List

m  j
     Matrix or vector

  * Get a set of generators of the the kernel of M : D^p ---> D^q/J.

  * D^p is a set of row vectors. When u is an element of D^p, define the map from D^p to D^q/J by u M.

  * It finds the kernel in the ring to which M belongs. When the ring R is given, it finds the kernel in the ring R.

  * When M consists of constants, a ring R should be given.

*/

/*&C

     In(27)= r=RingD("x,y");
     In(28)= Kernel2([[x,y],[x^2,x*y]],[]):
     [    [    -x , 1 ]  ]
     In(29)=Kernel2([[x,y],[x^2,x*y]],[[x,y]]):
     [    [    1 , 0 ]  , [    0 , 1 ]  ]

     In(41)=Kernel2([0],[0],r):
     [    [    1 ]  , [    0 ]  ]
     In(42)=Kernel2([[0,0],[0,0]],[[0,0]],r):
     [    [    1 , 0 ]  , [    0 , 1 ]  , [    0 , 0 ]  ]
     In(43)=Kernel2([[0,0,0],[0,0,0]],[],r):
     [    [    1 , 0 ]  , [    0 , 1 ]  ]

*/

/*&ja

参照
     Kernel2_h, Res_solv2, GetRing, SetRing, Kernel.

Files
     lib/restriction/complex.k

*/ /*&en

See also
     Kernel2_h, Res_solv2,  GetRing, SetRing, Kernel

Files
     lib/restriction/complex.k

*/

/*&ja

Gb
--

Gb(F)
     ::  F のグレブナ基底をもとめる.

Gb(F,R)
     ::  F のグレブナ基底をもとめる. R は ring.

Gb_h(F)
     ::  F のグレブナ基底をもとめる.

Gb_h(F,R)
     ::  F のグレブナ基底をもとめる. R は ring.

*/ /*&en

Gb
--

Gb(F)
     ::  It computes the Grobner basis of F.

Gb(M,R)
     ::  It computes the Grobner basis of F. R is a ring object.

Gb_h(F)
     ::  It computes the Grobner basis of F.

Gb_h(M,R)
     ::  It computes the Grobner basis of F. R is a ring object.

*/

/*&ja

return
     リスト

f
     行列またはベクトル

  * F のグレブナ基底をもとめる.

  * _h 付きの場合は, 同次ワイル代数で計算をおこなう.

  * 戻り値を k とするとき k[0] が グレブナ基底. 環が weight vector 付きで定義されたときは, k[1] は initial ideal または initial module.

  * M より環の定義を検索し, その環でグレブナ基底を計算する. 環 R があたえられているときは, R でグレブナ基底を計算する.

  * M が定数成分のときは, 環 R を与える必要がある. (M より環の情報をとりだせないため).

*/ /*&en

return
     List

f
     Matrix or vector

  * Compute the Grobner basis of F.

  * Functions with _h  computes Grobner bases in the homogenized Weyl algebra.

  * When the return value is  k, k[0] is the Grobner basis. k[1] is the initial ideal or the initial module of F, when the ring is defined with a weight vector.

  * It computes the Grobner basis in the ring to which F belongs. When the ring R is given, it computes the Grobner basis in the ring R.

  * When F consists of constants, a ring R should be given.

*/

/*&C

     In(5)= r=RingD("x,y");
     In(6)= m=[[x^2+y^2-1],[x*y-1]];
     In(7)= Gb(m):
     [    [    [    x^2+y^2-1 ]  , [    x*y-1 ]  , [    y^3+x-y ]  ]  ,
     [    [    x^2+y^2-1 ]  , [    x*y-1 ]  , [    y^3+x-y ]  ]  ]

     In(11)= RingD("x,y",[["x",1]]);
     In(12)= r=RingD("x,y",[["x",1]]);
     In(13)= Gb(m,r):
     [    [    [    x+y^3-y ]  , [    -y^4+y^2-1 ]  ]  ,
     [    [    x ]  , [    -y^4+y^2-1 ]  ]  ]

*/

/*&ja

参照
     Gb_h, Kernel, Res_solv, RingD, GetRing, SetRing.

Files
     lib/restriction/complex.k

*/ /*&en

See also
     Gb_h, Kernel, Res_solv, RingD, GetRing, SetRing.

Files
     lib/restriction/complex.k

*/

/*&ja

Res_shiftMatrix
---------------

Res_shiftMatrix(M,V)
     ::  Degree shift ベクトル M に対応する行列を作る.

Res_shiftMatrix(F,V,R)
     ::  Degree shift ベクトル M に対応する行列を作る. R は ring.

*/ /*&en

Res_shiftMatrix
---------------

Res_shiftMatrix(M,V)
     ::  Generate a matrix associated to a degree shift vector M

Res_shiftMatrix(M,V,R)
     ::  Generate a matrix associated to a degree shift vector M R is a ring object.

*/

/*&ja

return
     行列.

m
     ベクトル

v
     多項式変数または文字列

  * diag(V^(M1), ..., V^(Mn)) なる n × n 行列を戻す.

*/ /*&en

return
     Matrix

m
     Vector

v
     多項式変数または文字列

  * Returns n by n matrix diag(V^(M1), ..., V^(Mn))

*/

/*&C

     In(5)= r=RingD("x,y");
     In(6)= Res_shiftMatrix([-1,0,3],x):
     [    [    x^(-1) , 0 , 0 ]  , [    0 , 1 , 0 ]  , [    0 , 0 , x^3 ]  ]

*/

/*&C

     In(9)=  rrr = RingD("t,x,y",[["t",1,"x",-1,"y",-1,"Dx",1,"Dy",1]]);
     In(10)=  m=[Dx-(x*Dx+y*Dy+2),Dy-(x*Dx+y*Dy+2)];
     In(12)=  m=Gb(m);
     In(13)=  k = Kernel_h(m[0]);
     In(14)=  Pmat(k[0]);
      [
        [    -Dy+3*h , Dx-3*h , 1 ]
        [    -x*Dx+x*Dy-y*Dy-3*x*h , y*Dy+3*x*h , h-x ]
      ]

     In(15)=Pmat(m[0]);
       [    Dx*h-x*Dx-y*Dy-2*h^2 , Dy*h-x*Dx-y*Dy-2*h^2 ,
            x*Dx^2-x*Dx*Dy+y*Dx*Dy-y*Dy^2 ]

     In(18)=k2 = Gb_h(k[0]*Res_shiftMatrix([1,1,1],t));
     In(19)=Pmat(Substitute(k2[0],t,1));
      [
        [    -Dy+3*h , Dx-3*h , 1 ]
        [    -x*Dx+x*Dy-y*Dy-3*x*h , y*Dy+3*x*h , h-x ]
      ]

*/

/*&ja

参照
     Gb, (m,(u,v))-グレブナ基底

Files
     lib/restriction/complex.k

*/ /*&en

See also
     Gb, (m,(u,v))-Grobner basis

Files
     lib/restriction/complex.k

*/

/*&ja

基本 函数
*****

函数一覧
====

*/ /*&en

Primitive function
******************

A list of functions
===================

*/ /*&C
*/

/*&ja

ChangeRing
----------

ChangeRing(F)
     ::  ChangeRing は F の要素が属する環を current ring にする.

return
     true か false

f  リスト

        RingD("x,y");
        f=[x+y,0];
        RingD("p,q,r");
        ChangeRing(f);

Files
     lib/restriction/complex.k

*/

/*&ja

Intersection
------------

Intersection(I,J)
     ::  イデアル I と J の交わりを求める.

Intersection(I,J,R)
     ::  イデアル I と J の交わりを求める. 計算を環 R でおこなう.

return
     リストであたえられたイデアルまたは自由加群の部分加群

i  j
     イデアルまたは自由加群の部分加群

r
     環

  * ::  イデアル I と J の交わりを求める.

     In(16)= RingD("x,y");
     In(17)= mm=[ [x,0],[0,y] ]; nn = [ [x^2,0],[0,y^3]];
     In(19)= Intersection(mm,nn):
     In(33)=Intersection(mm,nn):
     [    [    -x^2 , 0 ]  , [    0 , -y^3 ]  ]

参照

Files
     lib/restriction/complex.k

*/

/*&ja

Getxvars
--------

Getxvars()
     ::  x 変数を戻す

*/ /*&en

Getxvars
--------

Getxvars()
     ::  Return x variables

*/

/*&ja

return
     [x_list, x_str]  x_list は x 変数のリスト, x_str は x 変数を , で区切った文字列.

*/ /*&en

return
     [x_list, x_str] x_list is a list of x variables, x_str is a string consisting of x variables separated by commas.

*/

/*&C

     In(4)=RingD("x,y");
     In(5)=Getxvars():
     [    [    y , x ]  , y,x, ]

*/

/*&ja

参照

Files
     lib/restriction/complex.k

*/ /*&en

See also

Files
     lib/restriction/complex.k

*/

/*&ja

Firstn
------

Firstn(M,N)
     ::  M の最初の N 個をとりだす.

*/ /*&en

Firstn
------

Firstn(M,N)
     ::  Return the first N elements of M.

*/

/*&ja

return
     行列またはベクトル

m
     行列またはベクトル

n
     数

  * m の最初の n 個.  とくに m が行列のときは, 各行より最初の n 個をとりだしたもので作れらた行列を戻す.

*/ /*&en

return
     Matrix or vector

m
     Matrix or vector

n
     Number

  * The first n elements of m.  When m is a matrix, it returns the matrix consisting of first n elements of rows of m.

*/

/*&C

     In(16)= mm = [[1,2,3],[4,5,6]];
     In(17)= Firstn(mm,2):
         [[1,2],
          [4,5]]

*/

/*&ja

参照

Files
     lib/restriction/complex.k

*/ /*&en

See also

Files
     lib/restriction/complex.k

*/

/*&ja

索引
**

*/ /*&en

index
*****

*/ /*&C