version 1.13, 2003/08/26 12:46:03 |
version 1.14, 2003/08/27 03:11:13 |
|
|
% $OpenXM: OpenXM/src/kan96xx/Doc/ecart.sm1,v 1.12 2003/08/26 05:06:00 takayama Exp $ |
% $OpenXM: OpenXM/src/kan96xx/Doc/ecart.sm1,v 1.13 2003/08/26 12:46:03 takayama Exp $ |
%[(parse) (hol.sm1) pushfile] extension |
%[(parse) (hol.sm1) pushfile] extension |
%[(parse) (appell.sm1) pushfile] extension |
%[(parse) (appell.sm1) pushfile] extension |
|
|
|
|
arg1 |
arg1 |
} def |
} def |
|
|
|
/ecart.isZeroRow { |
|
/arg1 set |
|
[/in-ecart.isZeroRow /aa /i /n /yes] pushVariables |
|
[ |
|
/aa arg1 def |
|
aa length /n set |
|
/yes 1 def |
|
0 1 n 1 sub { |
|
/i set |
|
aa i get (0). eq { |
|
} { |
|
/yes 0 def |
|
} ifelse |
|
} for |
|
/arg1 yes def |
|
] pop |
|
popVariables |
|
arg1 |
|
} def |
|
|
|
/ecart.removeZeroRow { |
|
/arg1 set |
|
[/in-ecart.removeZeroRow /aa /i /n /ans] pushVariables |
|
[ |
|
/aa arg1 def |
|
aa length /n set |
|
/ans [ ] def |
|
0 1 n 1 sub { |
|
/i set |
|
aa i get ecart.isZeroRow { |
|
} { |
|
ans aa i get append /ans set |
|
} ifelse |
|
} for |
|
/arg1 ans def |
|
] pop |
|
popVariables |
|
arg1 |
|
} def |
|
|
|
/ecart.gen_input { |
|
/arg1 set |
|
[/in-ecart.gen_input /aa /typev /setarg /f /v |
|
/gg /wv /vec /ans /rr /mm |
|
/degreeShift /env2 /opt /ss0 |
|
/hdShift /ff |
|
] pushVariables |
|
[ |
|
/aa arg1 def |
|
aa isArray { } { ( << array >> ecart.gen_input) error } ifelse |
|
/setarg 0 def |
|
/wv 0 def |
|
/degreeShift 0 def |
|
/hdShift 0 def |
|
aa { tag } map /typev set |
|
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 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 |
|
setarg { } { (ecart.minimalBase : Argument mismatch) error } ifelse |
|
|
|
[(KanGBmessage) ecart.gb.verbose ] system_variable |
|
|
|
f 0 get tag ArrayP eq { } |
|
{ f { /tt set [ tt ] } map /f set } ifelse |
|
|
|
[f v wv degreeShift [hdShift 0 get degreeShift 0 get]] |
|
ecart.gb /ff set |
|
ff getRing ring_def |
|
|
|
ff 0 get { {toString } map } map /ff set |
|
|
|
[ff v wv degreeShift [hdShift 0 get degreeShift 0 get]] /arg1 set |
|
] pop |
|
popVariables |
|
arg1 |
|
} def |
|
[(ecart.gen_input) |
|
[([ff v weight_vector uv_shift_m [D_shift_n uv_shift_m]] ecart.gen_input ) |
|
( [gg_h v weight_vector uv_shift_m [D_shift_n uv_shift_m]] ) |
|
(It generates the input for the minimal filtered free resolution.) |
|
(Current ring is changed to the ring of gg_h.) |
|
(cf. ecart.minimalBase) |
|
$Example: [ [(t-x^3+y^2) (Dx+ 3 x^2 Dt) (Dy - 2 y Dt)] (t,x,y) $ |
|
$ [ [(t) -1 (Dt) 1] [(t) -1 (x) -1 (y) -1 (Dt) 1 (Dx) 1 (Dy) 1]] $ |
|
$ [ [0] ] $ |
|
$ [ [0] [0] ] ] ecart.gen_input /gg set gg pmat $ |
|
]] putUsages |
|
|
|
|
[(ecart.minimalBase) |
[(ecart.minimalBase) |
[([ff v weight_vector degreeShift [D_shift_n uv_shift_m]] ecart.minimalBase mbase) |
[([ff v weight_vector uv_shift_m [D_shift_n uv_shift_m]] ecart.minimalBase ) |
|
( [mbase gr_of_mbase ) |
|
( [syz v weight_vector new_uv_shift_m [new_D_shift_n new_uv_shift_m]]) |
|
( gr_of_syz ]) |
|
(mbase is the minimal generators of ff in D^h in the sense of filtered minimal) |
|
(generators.) |
|
$Example: [ [(t-x^3+y^2) (Dx+ 3 x^2 Dt) (Dy - 2 y Dt)] (t,x,y) $ |
|
$ [ [(t) -1 (Dt) 1] [(t) -1 (x) -1 (y) -1 (Dt) 1 (Dx) 1 (Dy) 1]] $ |
|
$ [ [0] ] $ |
|
$ [ [0] [0] ] ] ecart.gen_input /gg0 set $ |
|
$ gg0 ecart.minimalBase /ss0 set $ |
|
$ ss0 2 get ecart.minimalBase /ss1 set $ |
|
$ ss1 2 get ecart.minimalBase /ss2 set $ |
|
$ (--------- minimal filtered resolution -------) message $ |
|
$ ss0 0 get pmat ss1 0 get pmat ss2 0 get pmat $ |
|
$ (--------- degree shift (n,m) n:D-shift m:uv-shift -------) message $ |
|
$ gg0 4 get message $ |
|
$ ss0 2 get 4 get message $ |
|
$ ss1 2 get 4 get message $ |
|
$ ss2 2 get 4 get message ; $ |
|
|
]] putUsages |
]] putUsages |
/ecart.minimalBase { |
/ecart.minimalBase { |
/arg1 set |
/arg1 set |
|
|
|
|
%C Note 2003.8.26 |
%C Note 2003.8.26 |
|
|
|
ai [ ] eq { |
|
exit |
|
} { } ifelse |
|
|
/s ai length def |
/s ai length def |
/r ai 0 get length def |
/r ai 0 get length def |
|
|
|
|
} for |
} for |
|
|
% ( ) error |
% ( ) error |
/ai1 ai1_new def |
/ai1 ai1_new def |
/ai ai_new2 def |
/ai ai_new2 ecart.removeZeroRow def |
|
|
} loop |
} loop |
/arg1 ai1 def |
/arg1 |
|
[ ai1 |
|
ai1 {[wv 0 get weightv degreeShift 0 get] init} map %Getting gr of A_{i-1} |
|
[ai v wv [degreeShiftUVnew] [degreeShiftDnew degreeShiftUVnew]] |
|
ai {[wv 0 get weightv degreeShiftUVnew] init} map %Getting gr of A_i |
|
] |
|
def |
] pop |
] pop |
popVariables |
popVariables |
arg1 |
arg1 |