/example1 {
[(x,y,a,b,c,d) %% change here
ring_of_differential_operators
(Dx,Dy) %% change here
elimination_order 0] swap01 define_ring
[[(x*Dx-a). (-b).] [(-c). ((x-1)*Dx-d).] [(Dy). (0).] [(0). (Dy).]] %% give equations
/ff set
ff { { [[$h$. $1$.]] replace } map } map /ff set
/ff ff homogenize def
[ff] groebner /ans set
ans 0 get {[[$h$. $1$.]] replace} map /gg set
(Now, you get the characteristic variety) message
(When your result is given as [I_1 I_2 ...], ) message
(the characteristic variety is V(I_1) \cup V(I_2) \cup ... ) message
gg characteristic-v print ( ) message ( ) message
} def
/characteristic-v {
/arg1 set
[/gb /lps /i /n /ans /maxp /ansp /k] pushVariables
[ /gb arg1 def
/ans [ ] def
/maxp 0 def
/lps gb {lpoint} map def
0 1 << lps length 1 sub >>
{
/i set
lps i get maxp gt
{ /maxp lps i get def }
{ }
ifelse
} for
%%lps print
/ans [
0 1 maxp { pop [ ] } for
] def
gb toVectors /gb set
0 1 << lps length 1 sub >>
{
/i set /k lps i get def
/ansp ans k get def
<< gb i get >> k get principal /f set
/ansp ansp [f] join def
ans k ansp put
} for
/arg1 ans def
] pop
popVariables
arg1
} def
%%%%%%%%%%%%%%%%%%%%%%%%%%
( ) message
(cv0.sm1 11/10, 1994. This program computes characteristic varieties.) message
(Type in example1 ; for a demo.) message