Maple packages for differential forms and Cartan-Kahler
analysis
Updated 11/8/2010
Please send comments,
questions, and ideas to me here.
Forms package
This is a Maple package for doing computations involving
differential forms. It was written by Yunliang Yu of Duke
University and maintained by him through Maple V, Release 4.
It has been revised for Maple V, Release 5 by myself, and for Maple
6 and higher by myself and Tom Ivey.
Changes and improvements as of 10/6/2004 include:
- IMPORTANT BUG FIX: Previously, if the definition of a form or
its exterior derivative changed -- for example, if torsion
coefficients were renamed -- after its exterior derivative had
originally been defined (or computed), subsequent references to
the exterior derivative would sometimes use the original result
rather than recomputing it, resulting in errors in computations
such as d(d(w)) = 0. This has been fixed by eliminating
the remember tables for all commands in this package.
Theoretically, this could result in a slight loss of
computational efficiency, but it seems to me a small price to
pay for accuracy.
- The commands "hook" and "LieDeriv" have been added.
"hook" is a more versatile version of "L", which has been
retained only for backwards compatibility.
- The help page now works and is accessible via "help(Forms);"
This package is posted here with Yunliang Yu's permission;
installation instructions are included with each version.
Cartan package (formerly Cartan_Kahler)
This is a Maple package that I wrote for doing computations for
the Cartan-Kahler analysis of linear Pfaffian systems. It
can compute structure equations, absorb the torsion whenever
possible (and compute unabsorbable torsion when it is not
possible), compute Cartan characters and test for involutivity,
and compute prolongations.
Changes and improvements as of 10/6/2004 include:
- The Forms package is now included as a subpackage of Cartan,
so you don't have to install it separately unless you just want
to (or unless you want to continue to use the old version of
Cartan_Kahler).
- Cartan is now a bona fide package, even in Maple V.5.
- The syntax of the "makebacksub" and "prolong" commands has
changed slightly, from
"makebacksub(sublist, backsublist);" and
"prolong(ideal, etas, pis, inteltspace, theta, p, newideal);"
which assigned the desired result to the last input parameter,
to
"makebacksub(sublist);"
and "prolong(ideal, etas, pis, inteltspace, theta, p);"
so that assignments are made via
"backsublist:=
makebacksub(sublist);" and "newideal:=
prolong(ideal, etas, pis, inteltspace, theta, p);"
I apologize for the fact that this change is not
backwards-compatible for old worksheets, but it seemed like a
much more intuitive choice, and I wonder why I didn't do it that
way the first time!
- The ordering of the unabsorbable torsion list should now be
consistent between runs.
- The results of the CartanKahler command are now formatted so
as to eliminate the superfluous commas that were there before,
and now include statements such as "Solutions depend on 1
function of 2 variables" in the involutive case.
- There is now a help page, accessible via "help(Cartan);"
Changes as of 1/22/2008 (only for Maple 6-14) include:
- I have added some warning messages to make CartanKahler more
idiot-proof. (Count me as idiot-in-chief.)
CartanKahler now generates a warning message to alert the user
when the forms in the ideal contain scalar coefficients whose
exterior derivatives have not been defined. Sometimes this
is perfectly fine - e.g., when the forms in the ideal contain
parameters arising as the result of a prolongation. But if
there are scalars which are intended to be functions of other
variables, e.g.,
theta
= d(z) - f*d(x) - q*d(y)
representing the PDE
z_x
= f(x,y),
then you MUST hardwire their derivatives before running
CartanKahler. In the example above, this could be
accomplished by defining
d(f):=
f_x*d(x) + f_y*d(y);
(In this example, this could be equally well accomplished by
explicitly writing f(x,y) in place of f; however, this only
works if you are using coordinate 1-forms, as opposed to, say,
Maurer-Cartan forms.) It doesn't matter what names you use
for the derivatives; the point is that if f is a dependent
variable, you have to tell Maple which basis 1-forms its
exterior derivative depends on.
Changes as of 11/8/2010 include:
- The default wedge product command "&^" doesn't play nicely
with Maple's Document mode in newer versions of Maple.
(This was only recently pointed out to me by a student; being an
old dog who can't be bothered learning new tricks, I still use
Worksheet mode.) To address this, I have added an
alternative version for Document mode, replacing "&^" with
"&w". (As always, you can choose whatever string you
like using the WedgeProduct command, but strings beginning with
the "&" character have more versatile syntax than strings
that don't, in that you can, e.g., type "omega[1]
&^omega[2]" in lieu of "&^(omega[1], omega[2])." )
So if you still use Worksheet mode, there's nothing new to see
here, but if you like Document mode, download the appropriate
version below.
The Forms package is used here with Yunliang Yu's permission;
installation instructions are included with each version.
WARNING: there appears to be an esoteric bug in the "solve" command
in Maple 7 and 7.01 which sometimes prevents the package from
working. I don't know what to do about this except to use a
different version of Maple.
The development of the Cartan package was partially supported by the
National Science Foundation under Grant No. DMS-0908456. Any
opinions, findings and conclusions or recommendations expressed in
this material are those of the author and do not necessarily reflect
the views of the National Science Foundation (NSF).