1% Test file for XIDEAL package (Groebner bases for exterior algebra)
2
3% Declare EXCALC variables
4
5pform {x,y,z,t}=0,f(i)=1,{u,u(i),u(i,j)}=0;
6
7
8% Reductions with xmodideal (all should be zero)
9
10d x^d y      xmodideal {d x - d y};
11d x^d y^d z  xmodideal {d x^d y - d z^d t};
12d x^d z^d t  xmodideal {d x^d y - d z^d t};
13f(2)^d x^d y xmodideal {d t^f(1) - f(2)^f(3),
14                         f(3)^f(1) - d x^d y};
15d t^f(1)^d z xmodideal {d t^f(1) - f(2)^f(3),
16                         f(1)^d z - d x^d y,
17                         d t^d y - d x^f(2)};
18f(3)^f(4)^f(5)^f(6)
19             xmodideal {f(1)^f(2) + f(3)^f(4) + f(5)^f(6)};
20f(1)^f(4)^f(5)^f(6)
21             xmodideal {f(1)^f(2) + f(2)^f(3) + f(3)^f(4)
22                        + f(4)^f(5) + f(5)^f(6)};
23d x^d y^d z  xmodideal {x**2+y**2+z**2-1,x*d x+y*d y+z*d z};
24
25
26% Changing the division between exterior variables and parameters
27
28xideal {a*d x+y*d y};
29xvars {a};
30xideal {a*d x+y*d y};
31xideal({a*d x+y*d y},{a,y});
32xvars {};       % all 0-forms are coefficients
33excoeffs(d u - (a*p - q)*d y);
34exvars(d u - (a*p - q)*d y);
35xvars {p,q};    % p,q are no longer coefficients
36excoeffs(d u - (a*p - q)*d y);
37exvars(d u - (a*p - q)*d y);
38xvars nil;
39
40
41% Exterior system for heat equation on 1st jet bundle
42
43S := {d u - u(-t)*d t - u(-x)*d x,
44      d u(-t)^d t + d u(-x)^d x,
45      d u(-x)^d t - u(-t)*d x^d t};
46
47% Check that it's closed.
48
49dS := d S xmodideal S;
50
51
52% Exterior system for a Monge-Ampere equation
53
54korder d u(-y,-y),d u(-x,-y),d u(-x,-x),d u(-y),d u(-x),d u;
55M := {u(-x,-x)*u(-y,-y) - u(-x,-y)**2,
56      d u       -  u(-x)*d x   -  u(-y)*d y,
57      d u(-x) - u(-x,-x)*d x - u(-x,-y)*d y,
58      d u(-y) - u(-x,-y)*d x - u(-y,-y)*d y}$
59
60% Get the full Groebner basis
61
62gbdeg := xideal M;
63
64% Changing the term ordering can be dramatic
65
66xorder gradlex;
67gbgrad := xideal M;
68
69% But the bases are equivalent
70
71gbdeg xmod gbgrad;
72xorder deglex;
73gbgrad xmod gbdeg;
74
75
76% Some Groebner bases
77
78gb := xideal {f(1)^f(2) + f(3)^f(4)};
79gb := xideal {f(1)^f(2), f(1)^f(3)+f(2)^f(4)+f(5)^f(6)};
80
81
82% Non-graded ideals
83
84% Left and right ideals are not the same
85
86d t^(d z+d x^d y) xmodideal {d z+d x^d y};
87(d z+d x^d y)^d t xmodideal {d z+d x^d y};
88
89% Higher order forms can now reduce lower order ones
90
91d x xmodideal {d y^d z + d x,d x^d y + d z};
92
93% Anything whose even part is a parameter generates the trivial ideal!!
94
95gb := xideal({x + d y},{});
96gb := xideal {1 + f(1) + f(1)^f(2) + f(2)^f(3)^f(4) + f(3)^f(4)^f(5)^f(6)};
97xvars nil;
98
99
100% Tracing Groebner basis calculations
101
102on trxideal;
103gb := xideal {x-y+y*d x-x*d y};
104off trxideal;
105
106
107% Same thing in lexicographic order, without full reduction
108
109xorder lex;
110off xfullreduce;
111gblex := xideal {x-y+y*d x-x*d y};
112
113% Manual autoreduction
114
115gblex := xauto gblex;
116
117
118% Tracing reduction
119
120on trxmod;
121first gb xmod gblex;
122
123
124% Restore defaults
125
126on xfullreduce;
127off trxideal,trxmod;
128xvars nil;
129xorder deglex;
130
131
132end;
133