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
9
10% Reductions with xmodideal (all should be zero)
11
12d x^d y      xmodideal {d x - d y};
13
14
150
16
17d x^d y^d z  xmodideal {d x^d y - d z^d t};
18
19
200
21
22d x^d z^d t  xmodideal {d x^d y - d z^d t};
23
24
250
26
27f(2)^d x^d y xmodideal {d t^f(1) - f(2)^f(3),
28                         f(3)^f(1) - d x^d y};
29
30
310
32
33d t^f(1)^d z xmodideal {d t^f(1) - f(2)^f(3),
34                         f(1)^d z - d x^d y,
35                         d t^d y - d x^f(2)};
36
37
380
39
40f(3)^f(4)^f(5)^f(6)
41             xmodideal {f(1)^f(2) + f(3)^f(4) + f(5)^f(6)};
42
43
440
45
46f(1)^f(4)^f(5)^f(6)
47             xmodideal {f(1)^f(2) + f(2)^f(3) + f(3)^f(4)
48                        + f(4)^f(5) + f(5)^f(6)};
49
50
510
52
53d x^d y^d z  xmodideal {x**2+y**2+z**2-1,x*d x+y*d y+z*d z};
54
55
560
57
58
59
60% Changing the division between exterior variables and parameters
61
62xideal {a*d x+y*d y};
63
64
65  d x*a + d y*y
66{---------------}
67        a
68
69xvars {a};
70
71
72xideal {a*d x+y*d y};
73
74
75{d x*a + d y*y,d x^d y}
76
77xideal({a*d x+y*d y},{a,y});
78
79
80{d x*a + d y*y,
81
82 d x^d y*y}
83
84xvars {};
85
86       % all 0-forms are coefficients
87excoeffs(d u - (a*p - q)*d y);
88
89
90{1, - a*p + q}
91
92exvars(d u - (a*p - q)*d y);
93
94
95{d u,d y}
96
97xvars {p,q};
98
99    % p,q are no longer coefficients
100excoeffs(d u - (a*p - q)*d y);
101
102
103{ - a,1,1}
104
105exvars(d u - (a*p - q)*d y);
106
107
108{d y*p,d y*q,d u}
109
110xvars nil;
111
112
113
114
115% Exterior system for heat equation on 1st jet bundle
116
117S := {d u - u(-t)*d t - u(-x)*d x,
118      d u(-t)^d t + d u(-x)^d x,
119      d u(-x)^d t - u(-t)*d x^d t};
120
121
122s := { - d t*u  + d u - d x*u ,
123              t              x
124
125       - (d t^d u  + d x^d u ),
126                 t          x
127
128      u *d t^d x - d t^d u }
129       t                  x
130
131
132% Check that it's closed.
133
134dS := d S xmodideal S;
135
136
137ds := {}
138
139
140
141% Exterior system for a Monge-Ampere equation
142
143korder d u(-y,-y),d u(-x,-y),d u(-x,-x),d u(-y),d u(-x),d u;
144
145
146M := {u(-x,-x)*u(-y,-y) - u(-x,-y)**2,
147      d u       -  u(-x)*d x   -  u(-y)*d y,
148      d u(-x) - u(-x,-x)*d x - u(-x,-y)*d y,
149      d u(-y) - u(-x,-y)*d x - u(-y,-y)*d y}$
150
151
152
153% Get the full Groebner basis
154
155gbdeg := xideal M;
156
157
158                            2
159gbdeg := {u   *u    - (u   ) ,
160           x x  y y     x y
161
162          d u - d x*u  - d y*u ,
163                     x        y
164
165          d u  - d x*u    - d y*u   ,
166             x        x x        x y
167
168          d u  - d x*u    - d y*u   }
169             y        x y        y y
170
171
172% Changing the term ordering can be dramatic
173
174xorder gradlex;
175
176
177gradlex
178
179gbgrad := xideal M;
180
181
182                             2
183gbgrad := {u   *u    - (u   ) ,
184            x x  y y     x y
185
186            - d u + d x*u  + d y*u ,
187                         x        y
188
189            - d u  + d x*u    + d y*u   ,
190                 y        x y        y y
191
192            - d u  + d x*u    + d y*u   ,
193                 x        x x        x y
194
195           d u ^d x + d u ^d y,
196              x          y
197
198            - d u *u    + d u *u   ,
199                 x  y y      y  x y
200
201            - d u *u    + d u *u   ,
202                 x  x y      y  x x
203
204           d u ^d u ,
205              y    x
206
207           d u *u  - d u*u    + d y*u   *u  - d y*u *u   ,
208              y  x        x y        x y  y        x  y y
209
210           d u *u  - d u*u    + d y*u   *u  - d y*u   *u ,
211              x  x        x x        x x  y        x y  x
212
213           u *d x^d y + d u^d x,
214            y
215
216           u   *d x^d y + d u ^d x,
217            y y              y
218
219           d u^d x^d y,
220
221            - u   *d u^d y + u *d u ^d y - d u ^d u,
222               x y            y    x          x
223
224            - u   *d u^d y + u *d u ^d y,
225               x x            x    x
226
227           u   *d u^d y + u *d u ^d x + d u ^d u,
228            y y            y    x          y
229
230           d u ^d x^d y,
231              x
232
233           d u ^d u^d y,
234              x
235
236           d u ^d u^d x,
237              x
238
239            - u   *d u^d x + u *d u ^d x,
240               y y            y    y
241
242           d u ^d u^d x}
243              y
244
245
246% But the bases are equivalent
247
248gbdeg xmod gbgrad;
249
250
251{}
252
253xorder deglex;
254
255
256deglex
257
258gbgrad xmod gbdeg;
259
260
261{}
262
263
264
265% Some Groebner bases
266
267gb := xideal {f(1)^f(2) + f(3)^f(4)};
268
269
270        1  2    3  4
271gb := {f ^f  + f ^f ,
272
273        2  3  4
274       f ^f ^f ,
275
276        1  3  4
277       f ^f ^f }
278
279gb := xideal {f(1)^f(2), f(1)^f(3)+f(2)^f(4)+f(5)^f(6)};
280
281
282        1  3    2  4    5  6
283gb := {f ^f  + f ^f  + f ^f ,
284
285        1  2
286       f ^f ,
287
288        2  5  6
289       f ^f ^f ,
290
291        2  3  4    3  5  6
292       f ^f ^f  - f ^f ^f ,
293
294        1  5  6
295       f ^f ^f ,
296
297        3  4  5  6
298       f ^f ^f ^f }
299
300
301
302% Non-graded ideals
303
304% Left and right ideals are not the same
305
306d t^(d z+d x^d y) xmodideal {d z+d x^d y};
307
308
3090
310
311(d z+d x^d y)^d t xmodideal {d z+d x^d y};
312
313
314 - 2*d t^d z
315
316
317% Higher order forms can now reduce lower order ones
318
319d x xmodideal {d y^d z + d x,d x^d y + d z};
320
321
3220
323
324
325% Anything whose even part is a parameter generates the trivial ideal!!
326
327gb := xideal({x + d y},{});
328
329
330gb := {1}
331
332gb := xideal {1 + f(1) + f(1)^f(2) + f(2)^f(3)^f(4) + f(3)^f(4)^f(5)^f(6)};
333
334
335gb := {1}
336
337xvars nil;
338
339
340
341
342% Tracing Groebner basis calculations
343
344on trxideal;
345
346
347gb := xideal {x-y+y*d x-x*d y};
348
349
350Input Basis
351
352xpoly(1)= - x^d y + d x^y + x - y
353
354
355New Basis
356
357xpoly(1)=x^d y - d x^y - x + y
358
359
360wedge_pair{d y,1} -> xpoly(2)=d x^y^d y - x^d y + y^d y
361
362spoly_pair{2,1} -> xpoly(3)=x^x - 2*x^y + y^y
363
364spoly_pair{1,3} -> xpoly(4)=x^d x^y - 2*x^y^d y + y^y^d y + x^x - x^y
365
366spoly_pair{4,3} -> 0
367
368spoly_pair{4,1} -> 0
369
370spoly_pair{2,4} -> criterion 1 hit
371
372wedge_pair{d x,4} -> 0
373
374wedge_pair{d x,2} -> xpoly(5)=x^d x - x^d y - d x^y + y^d y
375
376New Basis
377
378xpoly(1)=x^d y - d x^y - x + y
379
380
381xpoly(2)=d x^y^d y - x^d y + y^d y
382
383
384xpoly(3)=x^x - 2*x^y + y^y
385
386
387xpoly(4)=x^d x - x^d y - d x^y + y^d y
388
389
390spoly_pair{4,3} -> 0
391
392spoly_pair{4,1} -> 0
393
394spoly_pair{2,4} -> criterion 1 hit
395
396wedge_pair{d x,4} -> 0
397
398        2            2
399gb := {x  - 2*x*y + y ,
400
401        - d x*y + d y*x - x + y,
402
403       d x*x - 2*d x*y + d y*y - x + y,
404
405        - d x*y + d y*y + d x^d y*y - x + y}
406
407off trxideal;
408
409
410
411
412% Same thing in lexicographic order, without full reduction
413
414xorder lex;
415
416
417lex
418
419off xfullreduce;
420
421
422gblex := xideal {x-y+y*d x-x*d y};
423
424
425gblex := {d x*y - d y*y - d x^d y*y + x - y,
426
427          d x*y - d y*x + x - y}
428
429
430% Manual autoreduction
431
432gblex := xauto gblex;
433
434
435gblex := {d x*y - d y*y - d x^d y*y + x - y}
436
437
438
439% Tracing reduction
440
441on trxmod;
442
443
444first gb xmod gblex;
445
446x^x - 2*x^y + y^y =
447
448   x^(x - d x^y^d y + d x^y - y^d y - y) +
449
450   (d x^y^d y)^(x - d x^y^d y + d x^y - y^d y - y) +
451
452   ( - d x^y)^(x - d x^y^d y + d x^y - y^d y - y) +
453
454   (y^d y)^(x - d x^y^d y + d x^y - y^d y - y) +
455
456   ( - y)^(x - d x^y^d y + d x^y - y^d y - y) +
457
458   0
459
4600
461
462
463
464% Restore defaults
465
466on xfullreduce;
467
468
469off trxideal,trxmod;
470
471
472xvars nil;
473
474
475xorder deglex;
476
477
478deglex
479
480
481
482end;
483
484Tested on x86_64-pc-windows CSL
485Time (counter 1): 16 ms
486
487End of Lisp run after 0.01+0.06 seconds
488real 0.21
489user 0.01
490sys 0.04
491