version 1.11, 2003/08/24 05:19:44 |
version 1.12, 2003/08/26 05:06:00 |
|
|
% $OpenXM: OpenXM/src/kan96xx/Doc/ecart.sm1,v 1.10 2003/08/23 02:28:40 takayama Exp $ |
% $OpenXM: OpenXM/src/kan96xx/Doc/ecart.sm1,v 1.11 2003/08/24 05:19:44 takayama Exp $ |
%[(parse) (hol.sm1) pushfile] extension |
%[(parse) (hol.sm1) pushfile] extension |
%[(parse) (appell.sm1) pushfile] extension |
%[(parse) (appell.sm1) pushfile] extension |
|
|
|
|
} ifelse |
} ifelse |
} { |
} { |
[(degreeShift) [ ] ll ] homogenize /arg1 set |
[(degreeShift) [ ] ll ] homogenize /arg1 set |
} |
} ifelse |
] pop |
] pop |
popVariables |
popVariables |
arg1 |
arg1 |
|
|
} ifelse |
} ifelse |
} { |
} { |
[(degreeShift) sv ll ] homogenize /arg1 set |
[(degreeShift) sv ll ] homogenize /arg1 set |
} |
} ifelse |
] pop |
] pop |
popVariables |
popVariables |
arg1 |
arg1 |
|
|
]] putUsages |
]] putUsages |
|
|
/ecart.gb.verbose 1 def |
/ecart.gb.verbose 1 def |
|
%ecarth.gb s(H)-homogenized outputs. GG's original version of ecart gb. |
/ecarth.gb { |
/ecarth.gb { |
/arg1 set |
/arg1 set |
[/in-ecarth.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 |
|
/hdShift |
] pushVariables |
] pushVariables |
[(CurrentRingp) (KanGBmessage)] pushEnv |
[(CurrentRingp) (KanGBmessage)] pushEnv |
[ |
[ |
|
|
/setarg 0 def |
/setarg 0 def |
/wv 0 def |
/wv 0 def |
/degreeShift 0 def |
/degreeShift 0 def |
|
/hdShift 0 def |
/opt [(weightedHomogenization) 1] def |
/opt [(weightedHomogenization) 1] def |
aa { tag } map /typev set |
aa { tag } map /typev set |
typev [ ArrayP ] eq |
typev [ ArrayP ] eq |
|
|
/degreeShift aa 3 get def |
/degreeShift aa 3 get def |
/setarg 1 def |
/setarg 1 def |
} { } ifelse |
} { } ifelse |
|
|
|
typev [ArrayP StringP ArrayP ArrayP ArrayP] eq |
|
{ /f aa 0 get def |
|
/v aa 1 get def |
|
/wv aa 2 get def |
|
/degreeShift aa 3 get def |
|
/hdShift aa 4 get def |
|
/setarg 1 def |
|
} { } ifelse |
typev [ArrayP ArrayP ArrayP ArrayP] eq |
typev [ArrayP ArrayP ArrayP ArrayP] eq |
{ /f aa 0 get def |
{ /f aa 0 get def |
/v aa 1 get from_records def |
/v aa 1 get from_records def |
|
|
/degreeShift aa 3 get def |
/degreeShift aa 3 get def |
/setarg 1 def |
/setarg 1 def |
} { } ifelse |
} { } ifelse |
|
typev [ArrayP ArrayP ArrayP ArrayP ArrayP] eq |
|
{ /f aa 0 get def |
|
/v aa 1 get from_records def |
|
/wv aa 2 get def |
|
/degreeShift aa 3 get def |
|
/hdShift aa 4 get def |
|
/setarg 1 def |
|
} { } ifelse |
|
typev [ArrayP ArrayP ArrayP ArrayP StringP] eq |
|
{ /f aa 0 get def |
|
/v aa 1 get from_records def |
|
/wv aa 2 get def |
|
/degreeShift aa 3 get def |
|
aa 4 get (no) eq { |
|
/hdShift -1 def |
|
} { |
|
(Unknown keyword for the 5th argument) error |
|
} ifelse |
|
/setarg 1 def |
|
} { } ifelse |
|
|
/env1 getOptions def |
/env1 getOptions def |
|
|
setarg { } { (ecart.gb : Argument mismatch) error } ifelse |
ecart.gb.verbose { $ecarth.gb computes std basis with h-s(H)-homogenized buchberger algorithm.$ message } { } ifelse |
|
setarg { } { (ecarth.gb : Argument mismatch) error } ifelse |
|
|
[(KanGBmessage) ecart.gb.verbose ] system_variable |
[(KanGBmessage) ecart.gb.verbose ] system_variable |
|
|
|
|
|
|
ecart.gb.verbose { (gb.options = ) messagen gb.options message } { } ifelse |
ecart.gb.verbose { (gb.options = ) messagen gb.options message } { } ifelse |
ecart.autoHomogenize { |
ecart.autoHomogenize { |
(ecart.gb: Input polynomial or vectors are automatically h-H-homogenized.) |
(ecarth.gb: Input polynomial or vectors are automatically h-H-homogenized.) |
message |
message |
} { } ifelse |
} { } ifelse |
ecart.autoHomogenize { |
|
f { {. ecart.dehomogenize} map} map /f set |
hdShift tag 1 eq { |
f ecart.homogenize01 /f set |
ecart.autoHomogenize not hdShift -1 eq or { |
}{ |
% No automatic h-s-homogenization. |
f { {. } map } map /f set |
f { {. } map} map /f set |
} ifelse |
} { |
|
% Automatic h-s-homogenization without degreeShift |
|
f { {. ecart.dehomogenize} map} map /f set |
|
f ecart.homogenize01 /f set |
|
} ifelse |
|
} { |
|
% Automatic h-s-homogenization with degreeShift |
|
f { {. ecart.dehomogenize} map} map /f set |
|
f {/fi set [(degreeShift) hdShift fi] homogenize} map /f set |
|
}ifelse |
|
|
ecart.needSyz { |
ecart.needSyz { |
[f [(needSyz)] gb.options join ] groebner /gg set |
[f [(needSyz)] gb.options join ] groebner /gg set |
} { |
} { |
|
|
(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.) |
(The computation is done by using Ecart division algorithm and ) |
(The computation is done by using Ecart division algorithm.) |
(the double homogenization.) |
$Buchberger algorithm is applied for double h-H(s)-homogenized elements and$ |
|
(they are not dehomogenized.) |
(cf. M.Granger and T.Oaku: Minimal filtered free resolutions ... 2003) |
(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$ |
$ 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.$ |
$ to a ring. In the other cases, it returns the initial monominal.$ |
|
|
( define_ring ) |
( define_ring ) |
]] putUsages |
]] putUsages |
|
|
%% BUG: " f weight init " works well in case of vectors with degree shift ? |
|
|
|
/ecart.syz { |
/ecart.syz { |
/arg1 set |
/arg1 set |
|
|
ecart.gb.verbose { (gb.options = ) messagen gb.options message } { } ifelse |
ecart.gb.verbose { (gb.options = ) messagen gb.options message } { } ifelse |
|
|
hdShift tag 1 eq { |
hdShift tag 1 eq { |
hdShift -1 eq { |
ecart.autoHomogenize not hdShift -1 eq or { |
% No automatic h-homogenization. |
% No automatic h-homogenization. |
f { {. } map} map /f set |
f { {. } map} map /f set |
} { |
} { |