## ecart.gb

```a ecart.gb b
array a; array b;
b : [g ii];  array g; array in; g is a standard (Grobner) basis of f
in the ring of differential operators.
The computation is done by using Ecart division algorithm and
the double homogenization.
cf. M.Granger and T.Oaku: Minimal filtered free resolutions ... 2003
ii is the initial ideal in case of w is given or <<a>> belongs
to a ring. In the other cases, it returns the initial monominal.
a : [f ];    array f;  f is a set of generators of an ideal in a ring.
a : [f v];   array f; string v;  v is the variables.
a : [f v w]; array f; string v; array of array w; w is the weight matirx.
a : [f v w [(degreeShift) ds]]; array f; string v; array of array w; w is the weight matirx.
array ds; ds is the degree shift for the ring.
a : [f v w [(degreeShift) ds (startingShift) hdShift]]; array f; string v; array of array w; w is the weight matirx.
array ds; ds is the degree shift for the ring.
array hsShift is the degree shift for the homogenization. cf.homogenize
a : [f v w [(degreeShift) ds (noAutoHomogenize) 1]]; array f; string v; array of array w; w is the weight matirx.
No automatic homogenization.
[(degreeShift) ds (noAutoHomogenize) 1 (sugar) 1] -->use the sugar strate

cf. ecarth.gb (homogenized),  ecartd.gb (dehomogenize), ecartd.reduction
ecartd.gb.oxRingStructure

Example 1: [ [( (x Dx)^2 + (y Dy)^2 -1) ( x y Dx Dy -1)] (x,y)
[ [ (Dx) 1 ] [(x) -1 (y) -1 (Dx) 1 (Dy) 1]] ] ecart.gb pmat ;
Example 2:
[ [(2 x Dx + 3 y Dy+6) (2 y Dx + 3 x^2 Dy)] (x,y)
[[(x) -1 (Dx) 1 (y) -1 (Dy) 1]]] ecart.gb  /ff set ff pmat ;
To set the current ring to the ring in which ff belongs
ff getRing ring_def

Example 3: [ [( (x Dx)^2 + (y Dy)^2 -1) (  x y Dx Dy -1)] (x,y)
[ [ (Dx) 1 (Dy) 1] ] ] ecart.gb pmat ;
This example will cause an error on order.

Example 4: [[ [(x^2) (y+x)] [(x+y) (y^3)] [(2 x^2+x y) (y+x+x y^3)]] (x,y)
[ [ (x) -1 (y) -1] [(x) -1 (y) -1 (Dx) 1 (Dy) 1]] ] ecart.gb pmat ;
This example will cause an error on order.

Example 5: [[ [(x^2) (y+x)] [(x+y) (y^3)] [(2 x^2+x y) (y+x+x y^3)]] (x,y)
[ [(Dx) 1 (Dy) 1] [(x) -1 (y) -1 (Dx) 1 (Dy) 1] ]
[(degreeShift) [[0 1] [-3 1]]] ] ecart.gb pmat ;

Example 6:  [ [(1-z) (-x+1-y-z)] (x,y,z)
[[(y) -1 (z) -1 (Dy) 1 (Dz) 1] [(x) 1 (Dx) 1]]
[(partialEcartGlobalVarX) [(x)]] ] /std set
std ecart.gb pmat ;
std ecart.gb getRing ::

cf. gb, groebner, ecarth.gb, ecartd.gb, ecart.syz, ecart.begin, ecart.end, ecart.homogenize01,
ecart.dehomogenize, ecart.dehomogenizeH
[(weightedHomogenization) 1 (degreeShift) [[1 2 1]]] : options for
define_ring
/ecart.autoHomogenize 0 def
not to dehomogenize and homogenize
```

Nobuki Takayama 2020-11-24