version 1.11, 2003/06/26 08:14:45 |
version 1.14, 2004/05/04 07:48:47 |
|
|
% $OpenXM: OpenXM/src/kan96xx/Doc/hol.sm1,v 1.10 2001/01/04 12:29:33 takayama Exp $ |
% $OpenXM: OpenXM/src/kan96xx/Doc/hol.sm1,v 1.13 2003/07/29 08:36:39 takayama Exp $ |
%% hol.sm1, 1998, 11/8, 11/10, 11/14, 11/25, 1999, 5/18, 6/5. 2000, 6/8 |
%% hol.sm1, 1998, 11/8, 11/10, 11/14, 11/25, 1999, 5/18, 6/5. 2000, 6/8 |
%% rank, rrank, characteristic |
%% rank, rrank, characteristic |
%% This file is error clean. |
%% This file is error clean. |
|
|
/gb.v 1 def |
/gb.v 1 def |
/gb.verbose 0 def |
/gb.verbose 0 def |
/gb.options [ ] def |
/gb.options [ ] def |
|
/gb.characteristic 0 def |
|
/gb.homogenized 0 def |
|
/gb.autoHomogenize 1 def |
/gb { |
/gb { |
/arg1 set |
/arg1 set |
[/in-gb /aa /typev /setarg /f /v |
[/in-gb /aa /typev /setarg /f /v |
/gg /wv /termorder /vec /ans /rr /mm |
/gg /wv /termorder /vec /ans /rr /mm |
/degreeShift |
/degreeShift /env2 |
] pushVariables |
] pushVariables |
[(CurrentRingp) (KanGBmessage)] pushEnv |
[(CurrentRingp) (KanGBmessage)] pushEnv |
[ |
[ |
|
|
/setarg 1 def |
/setarg 1 def |
} { } ifelse |
} { } ifelse |
|
|
|
/env1 getOptions def |
|
|
setarg { } { (gb : Argument mismatch) error } ifelse |
setarg { } { (gb : Argument mismatch) error } ifelse |
|
|
[(KanGBmessage) gb.verbose ] system_variable |
[(KanGBmessage) gb.verbose ] system_variable |
|
|
f gb.toMatrixOfString /f set |
f gb.toMatrixOfString /f set |
/mm gb.itWasMatrix def |
/mm gb.itWasMatrix def |
|
|
rr tag 0 eq { |
rr tag 0 eq |
|
v isInteger not |
|
or { |
%% Define our own ring |
%% Define our own ring |
v isInteger { |
v isInteger { |
(Error in gb: Specify variables) error |
(Error in gb: Specify variables) error |
} { } ifelse |
} { } ifelse |
wv isInteger { |
wv isInteger { |
[v ring_of_differential_operators |
[v ring_of_differential_operators |
0] define_ring |
gb.characteristic] define_ring |
/termorder 1 def |
/termorder 1 def |
}{ |
}{ |
degreeShift isInteger { |
degreeShift isInteger { |
[v ring_of_differential_operators |
[v ring_of_differential_operators |
wv weight_vector |
wv weight_vector |
0] define_ring |
gb.characteristic] define_ring |
wv gb.isTermOrder /termorder set |
wv gb.isTermOrder /termorder set |
}{ |
}{ |
[v ring_of_differential_operators |
[v ring_of_differential_operators |
wv weight_vector |
wv weight_vector |
0 |
gb.characteristic |
[(degreeShift) degreeShift] |
[(degreeShift) degreeShift] |
] define_ring |
] define_ring |
wv gb.isTermOrder /termorder set |
wv gb.isTermOrder /termorder set |
|
|
} ifelse |
} ifelse |
} { |
} { |
%% Use the ring structre given by the input. |
%% Use the ring structre given by the input. |
v isInteger not { |
|
gb.warning { |
|
(Warning : the given ring definition is not used.) message |
|
} { } ifelse |
|
} { } ifelse |
|
rr ring_def |
rr ring_def |
/wv rr gb.getWeight def |
/wv rr gb.getWeight def |
wv gb.isTermOrder /termorder set |
wv gb.isTermOrder /termorder set |
} ifelse |
} ifelse |
%%% Enf of the preprocess |
%%% Enf of the preprocess |
|
|
|
termorder { |
|
/gb.homogenized 0 def |
|
}{ |
|
/gb.homogenized 1 def |
|
} ifelse |
gb.verbose { (gb.options = ) messagen gb.options message } { } ifelse |
gb.verbose { (gb.options = ) messagen gb.options message } { } ifelse |
termorder { |
termorder { |
f { {. dehomogenize} map } map /f set |
f { {,,, dehomogenize} map } map /f set |
[f gb.options] groebner_sugar 0 get /gg set |
[f gb.options] groebner_sugar 0 get /gg set |
}{ |
}{ |
f { {. dehomogenize} map} map /f set |
f { {,,, dehomogenize} map} map /f set |
f fromVectors { homogenize } map /f set |
gb.autoHomogenize { |
|
f fromVectors { homogenize } map /f set |
|
} { } ifelse |
[f gb.options] groebner 0 get /gg set |
[f gb.options] groebner 0 get /gg set |
}ifelse |
}ifelse |
wv isInteger { |
wv isInteger { |
|
|
}{ } |
}{ } |
ifelse |
ifelse |
%% |
%% |
|
env1 restoreOptions %% degreeShift changes "grade" |
|
|
/arg1 ans def |
/arg1 ans def |
] pop |
] pop |
|
|
} { } ifelse |
} { } ifelse |
wv isInteger { |
wv isInteger { |
[v ring_of_polynomials |
[v ring_of_polynomials |
0] define_ring |
gb.characteristic] define_ring |
/termorder 1 def |
/termorder 1 def |
}{ |
}{ |
[v ring_of_polynomials |
[v ring_of_polynomials |
wv weight_vector |
wv weight_vector |
0] define_ring |
gb.characteristic] define_ring |
wv gb.isTermOrder /termorder set |
wv gb.isTermOrder /termorder set |
} ifelse |
} ifelse |
} { |
} { |
|
|
(a : [f v w ds]; 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 ) |
( array ds; ds is the degree shift ) |
( ) |
( ) |
|
(gb.authoHomogenize 1 [default]) |
|
( ) |
$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 ] ] ] gb pmat ; $ |
$ [ [ (Dx) 1 ] ] ] gb pmat ; $ |
(Example 2: ) |
(Example 2: ) |
|
|
( ) |
( ) |
$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] ] ] gb pmat ; $ |
$ [ [ (x) -1 (y) -1] ] ] gb pmat ; $ |
|
( ) |
|
$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] ] ] gb pmat ; $ |
( ) |
( ) |
(cf. gb, groebner, groebner_sugar, syz. ) |
(cf. gb, groebner, groebner_sugar, syz. ) |
]] putUsages |
]] putUsages |