version 1.5, 2003/08/04 11:42:42 |
version 1.8, 2003/08/21 12:28:58 |
|
|
% $OpenXM: OpenXM/src/kan96xx/Doc/ecart.sm1,v 1.4 2003/07/30 09:00:51 takayama Exp $ |
% $OpenXM: OpenXM/src/kan96xx/Doc/ecart.sm1,v 1.7 2003/08/18 06:36:50 takayama Exp $ |
%[(parse) (hol.sm1) pushfile] extension |
%[(parse) (hol.sm1) pushfile] extension |
%[(parse) (appell.sm1) pushfile] extension |
%[(parse) (appell.sm1) pushfile] extension |
|
|
|
|
/ecart.end { endEcart } def |
/ecart.end { endEcart } def |
/ecart.autoHomogenize 1 def |
/ecart.autoHomogenize 1 def |
/ecart.needSyz 0 def |
/ecart.needSyz 0 def |
|
/ecartd.begin { |
|
ecart.begin |
|
[(EcartAutomaticHomogenization) 1] system_variable |
|
} def |
|
/ecartd.end { |
|
ecart.end |
|
[(EcartAutomaticHomogenization) 0] system_variable |
|
} def |
|
|
/ecart.dehomogenize { |
/ecart.dehomogenize { |
/arg1 set |
/arg1 set |
|
|
arg1 |
arg1 |
} def |
} def |
|
|
|
/ecart.gb {ecartd.gb} def |
|
|
|
[(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 ds]; array f; string v; array of array w; w is the weight matirx.) |
|
( array ds; ds is the degree shift ) |
|
( ) |
|
$cf. ecarth.gb (homogenized), ecartd.gb (dehomogenize) $ |
|
( ) |
|
$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 pmat ;$ |
|
( ) |
|
$Example 3: [ [( (x Dx)^2 + (y Dy)^2 -1) ( x y Dx Dy -1)] (x,y) $ |
|
$ [ [ (Dx) 1 (Dy) 1] ] ] ecart.gb pmat ; $ |
|
( ) |
|
$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 ; $ |
|
( ) |
|
$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] ] [[0 1] [-3 1] ] ] ecart.gb pmat ; $ |
|
( ) |
|
(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) |
|
]] putUsages |
|
|
/ecart.gb.verbose 1 def |
/ecart.gb.verbose 1 def |
/ecart.gb { |
/ecarth.gb { |
/arg1 set |
/arg1 set |
[/in-ecart.gb /aa /typev /setarg /f /v |
[/in-ecarth.gb /aa /typev /setarg /f /v |
/gg /wv /vec /ans /rr /mm |
/gg /wv /vec /ans /rr /mm |
/degreeShift /env2 /opt /ans.gb |
/degreeShift /env2 /opt /ans.gb |
] pushVariables |
] pushVariables |
|
|
} { } ifelse |
} { } ifelse |
wv isInteger { |
wv isInteger { |
[v ring_of_differential_operators |
[v ring_of_differential_operators |
[ v ecart.wv1 v ecart.wv2 ] weight_vector |
% [ v ecart.wv1 v ecart.wv2 ] weight_vector |
gb.characteristic |
gb.characteristic |
opt |
opt |
] define_ring |
] define_ring |
}{ |
}{ |
degreeShift isInteger { |
degreeShift isInteger { |
[v ring_of_differential_operators |
[v ring_of_differential_operators |
[v ecart.wv1 v ecart.wv2] wv join weight_vector |
% [v ecart.wv1 v ecart.wv2] wv join weight_vector |
|
wv weight_vector |
gb.characteristic |
gb.characteristic |
opt |
opt |
] define_ring |
] define_ring |
|
|
}{ |
}{ |
[v ring_of_differential_operators |
[v ring_of_differential_operators |
[v ecart.wv1 v ecart.wv2] wv join weight_vector |
% [v ecart.wv1 v ecart.wv2] wv join weight_vector |
|
wv weight_vector |
gb.characteristic |
gb.characteristic |
[(degreeShift) degreeShift] opt join |
[(degreeShift) degreeShift] opt join |
] define_ring |
] define_ring |
|
|
%%% Enf of the preprocess |
%%% Enf of the preprocess |
|
|
ecart.gb.verbose { |
ecart.gb.verbose { |
(The first and the second weight vectors are automatically set as follows) |
(The first and the second weight vectors for automatic homogenization: ) |
message |
message |
v ecart.wv1 message |
v ecart.wv1 message |
v ecart.wv2 message |
v ecart.wv2 message |
|
|
popVariables |
popVariables |
arg1 |
arg1 |
} def |
} def |
(ecart.gb ) messagen-quiet |
(ecarth.gb ) messagen-quiet |
|
|
[(ecart.gb) |
[(ecarth.gb) |
[(a ecart.gb b) |
[(a ecarth.gb b) |
(array a; array b;) |
(array a; array b;) |
$b : [g ii]; array g; array in; g is a standard (Grobner) basis of f$ |
$b : [g ii]; array g; array in; g is a standard (Grobner) basis of f$ |
( in the ring of differential operators.) |
( in the ring of differential operators.) |
|
|
( not to dehomogenize and homogenize) |
( not to dehomogenize and homogenize) |
( ) |
( ) |
$Example 1: [ [( (x Dx)^2 + (y Dy)^2 -1) ( x y Dx Dy -1)] (x,y) $ |
$Example 1: [ [( (x Dx)^2 + (y Dy)^2 -1) ( x y Dx Dy -1)] (x,y) $ |
$ [ [ (Dx) 1 ] ] ] ecart.gb pmat ; $ |
$ [ [ (Dx) 1 ] [(x) -1 (y) -1 (Dx) 1 (Dy) 1]] ] ecarth.gb pmat ; $ |
(Example 2: ) |
(Example 2: ) |
(To put H and h=1, type in, e.g., ) |
(To put H and h=1, type in, e.g., ) |
$ [ [(2 x Dx + 3 y Dy+6) (2 y Dx + 3 x^2 Dy)] (x,y) $ |
$ [ [(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 /gg set gg ecart.dehomogenize pmat ;$ |
$ [[(x) -1 (Dx) 1 (y) -1 (Dy) 1]]] ecarth.gb /gg set gg ecart.dehomogenize pmat ;$ |
( ) |
( ) |
$Example 3: [ [( (x Dx)^2 + (y Dy)^2 -1) ( x y Dx Dy -1)] (x,y) $ |
$Example 3: [ [( (x Dx)^2 + (y Dy)^2 -1) ( x y Dx Dy -1)] (x,y) $ |
$ [ [ (Dx) 1 (Dy) 1] ] ] ecart.gb pmat ; $ |
$ [ [ (Dx) 1 (Dy) 1] ] ] ecarth.gb pmat ; $ |
( ) |
( ) |
$Example 4: [[ [(x^2) (y+x)] [(x+y) (y^3)] [(2 x^2+x y) (y+x+x y^3)]] (x,y) $ |
$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] ] ] ecart.gb pmat ; $ |
$ [ [ (x) -1 (y) -1] [(x) -1 (y) -1 (Dx) 1 (Dy) 1]] ] ecarth.gb pmat ; $ |
( ) |
( ) |
$Example 5: [[ [(x^2) (y+x)] [(x+y) (y^3)] [(2 x^2+x y) (y+x+x y^3)]] (x,y) $ |
$Example 5: [[ [(x^2) (y+x)] [(x+y) (y^3)] [(2 x^2+x y) (y+x+x y^3)]] (x,y) $ |
$ [ [ (x) -1 (y) -1] ] [[0 1] [-3 1] ] ] ecart.gb pmat ; $ |
$ [ [(Dx) 1 (Dy) 1] [(x) -1 (y) -1 (Dx) 1 (Dy) 1] ] [[0 1] [-3 1] ] ] ecarth.gb pmat ; (buggy infinite loop)$ |
( ) |
( ) |
(cf. gb, groebner, ecart.syz, ecart.begin, ecart.end, ecart.homogenize01, ) |
(cf. gb, groebner, ecart.gb, ecartd.gb, ecart.syz, ecart.begin, ecart.end, ecart.homogenize01, ) |
( ecart.dehomogenize, ecart.dehomogenizeH) |
( ecart.dehomogenize, ecart.dehomogenizeH) |
( [(weightedHomogenization) 1 (degreeShift) [[1 2 1]]] : options for ) |
( [(weightedHomogenization) 1 (degreeShift) [[1 2 1]]] : options for ) |
( define_ring ) |
( define_ring ) |
|
|
(array a; array b;) |
(array a; array b;) |
$b : [syzygy gb tmat input]; gb = tmat * input $ |
$b : [syzygy gb tmat input]; gb = tmat * input $ |
$Example 1: [ [( (x Dx)^2 + (y Dy)^2 -1) ( x y Dx Dy -1)] (x,y) $ |
$Example 1: [ [( (x Dx)^2 + (y Dy)^2 -1) ( x y Dx Dy -1)] (x,y) $ |
$ [ [ (Dx) 1 (Dy) 1] ] ] ecart.syz /ff set $ |
$ [ [ (Dx) 1 (Dy) 1] [(x) -1 (y) -1 (Dx) 1 (Dy) 1]] ] ecart.syz /ff set $ |
$ ff 0 get ff 3 get mul pmat $ |
$ ff 0 get ff 3 get mul pmat $ |
$ ff 2 get ff 3 get mul [ff 1 get ] transpose sub pmat ; $ |
$ ff 2 get ff 3 get mul [ff 1 get ] transpose sub pmat ; $ |
( ) |
( ) |
$Example 2: [[ [(x^2) (y+x)] [(x+y) (y^3)] [(2 x^2+x y) (y+x+x y^3)]] (x,y) $ |
$Example 2: [[ [(x^2) (y+x)] [(x+y) (y^3)] [(2 x^2+x y) (y+x+x y^3)]] (x,y) $ |
$ [ [ (x) -1 (y) -1] ] [[0 1] [-3 1] ] ] ecart.syz pmat ; $ |
$ [ [(Dx) 1 (Dy) 1] [ (x) -1 (y) -1] ] [[0 1] [-3 1] ] ] ecart.syz pmat ; $ |
( ) |
( ) |
(cf. ecart.gb) |
(cf. ecart.gb) |
( /ecart.autoHomogenize 0 def ) |
( /ecart.autoHomogenize 0 def ) |
|
|
%%BUG: case of v is integer |
%%BUG: case of v is integer |
v ecart.checkOrder |
v ecart.checkOrder |
|
|
ecart.begin |
ecartd.begin |
[(EcartAutomaticHomogenization) 1] system_variable |
|
|
|
ecart.gb.verbose { (gb.options = ) messagen gb.options message } { } ifelse |
ecart.gb.verbose { (gb.options = ) messagen gb.options message } { } ifelse |
|
|
|
|
ifelse |
ifelse |
} ifelse |
} ifelse |
|
|
ecart.end |
ecartd.end |
[(EcartAutomaticHomogenization) 0] system_variable |
|
|
|
%% |
%% |
env1 restoreOptions %% degreeShift changes "grade" |
env1 restoreOptions %% degreeShift changes "grade" |
|
|
/i set |
/i set |
vv i get . /tt set |
vv i get . /tt set |
tt (1). add init (1). eq { } |
tt (1). add init (1). eq { } |
{ [vv i get ( is larger than 1) vv i get] cat error} ifelse |
{ [vv i get ( is larger than 1 ) ] cat error} ifelse |
} for |
} for |
/arg1 1 def |
/arg1 1 def |
] pop |
] pop |