version 1.34, 2004/09/13 11:24:10 |
version 1.35, 2004/09/14 03:12:17 |
|
|
% $OpenXM: OpenXM/src/kan96xx/Doc/ecart.sm1,v 1.33 2004/09/10 13:20:22 takayama Exp $ |
% $OpenXM: OpenXM/src/kan96xx/Doc/ecart.sm1,v 1.34 2004/09/13 11:24:10 takayama Exp $ |
(hol_loaded) boundp { } |
(hol_loaded) boundp { } |
{ [(parse) (hol.sm1) pushfile] extension } ifelse |
{ [(parse) (hol.sm1) pushfile] extension } ifelse |
%[(parse) (appell.sm1) pushfile] extension |
%[(parse) (appell.sm1) pushfile] extension |
|
|
(ecart.sm1 : ecart division for D, 2003/07/25 ) message-quiet |
(ecart.sm1 : ecart division for D, 2003/07/25, 2004/09/14 ) message-quiet |
/ecart.begin { beginEcart } def |
/ecart.begin { beginEcart } def |
/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.gb.oxRingStructure [[ ] [ ] ] def |
/ecartd.gb.oxRingStructure [[ ] [ ] ] def |
|
/ecart.partialEcartGlobalVarX [ ] def |
|
|
/ecartd.begin { |
/ecartd.begin { |
ecart.begin |
ecart.begin |
|
|
/ecart.messagen { |
/ecart.messagen { |
ecart.message.quiet { pop } { messagen } ifelse |
ecart.message.quiet { pop } { messagen } ifelse |
} def |
} def |
|
/ecart.setOpt.init { |
|
% Initialize |
|
/ecart.partialEcartGlobalVarX [ ] def |
|
} def |
/ecart.setOpt { |
/ecart.setOpt { |
/arg1 set |
/arg1 set |
[/in-ecart.setOpt /opt /i /n /ans] pushVariables |
[/in-ecart.setOpt /opt /i /n /ans] pushVariables |
|
|
/opt arg1 def |
/opt arg1 def |
/ans [ ] def |
/ans [ ] def |
/n opt length def |
/n opt length def |
|
|
|
ecart.setOpt.init |
|
|
0 2 n 1 sub { |
0 2 n 1 sub { |
/i set |
/i set |
opt i get tag StringP eq not { |
opt i get tag StringP eq not { |
|
|
exit |
exit |
} { } ifelse |
} { } ifelse |
|
|
|
% Global: ecart.partialEcartGlobalVarX |
|
opt i get (partialEcartGlobalVarX) eq { |
|
/ecart.partialEcartGlobalVarX opt , i 1 add , get def |
|
% do not exit. |
|
} { } ifelse |
|
|
ans [opt i get opt i 1 add get ] join /ans set |
ans [opt i get opt i 1 add get ] join /ans set |
exit |
exit |
} loop |
} loop |
|
|
$ [ [(Dx) 1 (Dy) 1] [(x) -1 (y) -1 (Dx) 1 (Dy) 1] ] $ |
$ [ [(Dx) 1 (Dy) 1] [(x) -1 (y) -1 (Dx) 1 (Dy) 1] ] $ |
$ [(degreeShift) [[0 1] [-3 1]]] ] ecart.gb pmat ; $ |
$ [(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, ) |
(cf. gb, groebner, ecarth.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 ) |
|
|
/hdShift 0 def |
/hdShift 0 def |
/opt [(weightedHomogenization) 1] def |
/opt [(weightedHomogenization) 1] def |
/ecart.useSugar 0 def |
/ecart.useSugar 0 def |
|
ecart.setOpt.init |
aa { tag } map /typev set |
aa { tag } map /typev set |
typev [ ArrayP ] eq |
typev [ ArrayP ] eq |
{ /f aa 0 get def |
{ /f aa 0 get def |
|
|
} { } ifelse |
} { } ifelse |
|
|
%%BUG: case of v is integer |
%%BUG: case of v is integer |
v ecart.checkOrder |
[v ecart.partialEcartGlobalVarX] ecart.checkOrder |
|
|
ecart.begin |
ecart.begin |
|
|
|
|
/wv 0 def |
/wv 0 def |
/degreeShift 0 def |
/degreeShift 0 def |
/opt [(weightedHomogenization) 1] def |
/opt [(weightedHomogenization) 1] def |
|
ecart.setOpt.init |
aa { tag } map /typev set |
aa { tag } map /typev set |
typev [ ArrayP ] eq |
typev [ ArrayP ] eq |
{ /f aa 0 get def |
{ /f aa 0 get def |
|
|
} { } ifelse |
} { } ifelse |
|
|
%%BUG: case of v is integer |
%%BUG: case of v is integer |
v ecart.checkOrder |
[v ecart.partialEcartGlobalVarX] ecart.checkOrder |
|
|
ecartn.begin |
ecartn.begin |
|
|
|
|
/hdShift 0 def |
/hdShift 0 def |
/ecart.useSugar 0 def |
/ecart.useSugar 0 def |
/opt [(weightedHomogenization) 1] def |
/opt [(weightedHomogenization) 1] def |
|
ecart.setOpt.init |
aa { tag } map /typev set |
aa { tag } map /typev set |
typev [ ArrayP ] eq |
typev [ ArrayP ] eq |
{ /f aa 0 get def |
{ /f aa 0 get def |
|
|
} { } ifelse |
} { } ifelse |
|
|
%%BUG: case of v is integer |
%%BUG: case of v is integer |
v ecart.checkOrder |
[v ecart.partialEcartGlobalVarX] ecart.checkOrder |
|
|
|
|
ecartd.begin |
ecartd.begin |
|
|
ecart.gb.verbose { (gb.options = ) ecart.messagen gb.options ecart.message } { } ifelse |
ecart.gb.verbose { (gb.options = ) ecart.messagen gb.options ecart.message } { } ifelse |
|
|
|
|
/ecart.checkOrder { |
/ecart.checkOrder { |
/arg1 set |
/arg1 set |
[/in-ecart.checkOrder /vv /tt /dd /n /i] pushVariables |
[/vv] pushVariables |
[ |
[ |
/vv arg1 def |
/vv arg1 def |
|
vv length 1 eq { |
|
vv 0 get ecart.checkOrder.noGlobal /arg1 set |
|
}{ |
|
vv ecart.checkOrder.global /arg1 set |
|
} ifelse |
|
] pop |
|
popVariables |
|
/arg1 |
|
} def |
|
/ecart.checkOrder.noglobal { |
|
/arg1 set |
|
[/vv /tt /dd /n /i] pushVariables |
|
[ |
|
/vv arg1 def |
vv isArray |
vv isArray |
{ } { [vv to_records pop] /vv set } ifelse |
{ } { [vv to_records pop] /vv set } ifelse |
vv {toString} map /vv set |
vv {toString} map /vv set |
|
|
popVariables |
popVariables |
arg1 |
arg1 |
} def |
} def |
|
|
|
/ecart.checkOrder.global { |
|
/arg1 set |
|
[/vv /vvGlobal /tt /dd /n /i] pushVariables |
|
[ |
|
/vv arg1 def |
|
/vvGlobal vv 1 get def |
|
vv 0 get /vv set |
|
vv isArray |
|
{ } { [vv to_records pop] /vv set } ifelse |
|
vv {toString} map /vv set |
|
vvGlobal isArray |
|
{ } { [vvGlobal to_records pop] /vvGlobal set } ifelse |
|
vvGlobal {toString} map /vv set |
|
|
|
vv vvGlobal setMinus /vv set |
|
vv { /tt set [@@@.Dsymbol tt] cat } map /dd set |
|
% Starting the checks. Check for local variables. |
|
0 1 vv length 1 sub { |
|
/i set |
|
vv i get . dd i get . mul /tt set |
|
tt @@@.hsymbol . add init tt eq { } |
|
{ [@@@.hsymbol ( is larger than ) vv i get ( ) dd i get] cat error} ifelse |
|
} for |
|
|
|
0 1 vv length 1 sub { |
|
/i set |
|
vv i get . /tt set |
|
tt (1). add init (1). eq { } |
|
{ [vv i get ( is larger than 1 ) ] cat error} ifelse |
|
} for |
|
|
|
% check for global variables. |
|
0 1 vvGlobal length 1 sub { |
|
/i set |
|
vvGlobal i get . /tt set |
|
tt (1). add init (1). eq { [vvGlobal i get ( is smaller than 1 ) ] cat error } |
|
{ } ifelse |
|
} for |
|
|
|
|
|
/arg1 1 def |
|
] pop |
|
popVariables |
|
arg1 |
|
} def |
[(ecart.checkOrder) |
[(ecart.checkOrder) |
[(v ecart.checkOrder bool checks if the given order is relevant) |
[([v vGlobal] ecart.checkOrder bool checks if the given order is relevant) |
(for the ecart division.) |
(for the ecart division.) |
(cf. ecartd.gb, ecart.gb, ecartn.gb) |
(cf. ecartd.gb, ecart.gb, ecartn.gb) |
] |
] |