1
2% Extra macros
3
4%\newcommand\implies{\Rightarrow}
5\newcommand{\optional}[1]{$\,[$#1$]\,$}
6\newenvironment{edssyntax}
7   {\begin{list}{}{\tt}\item[]}
8   {\end{list}}
9
10%% For MathJax, must be part of a paragraph to avoid extra space:
11\ifdefined\VerbMath
12\(
13\newcommand{\deriv}{\mathrm{d}}
14\newcommand{\union}{\cup}
15\newcommand{\R}{\mathbf{R}}
16\newcommand{\del}{\partial}
17\)%
18\else
19\newcommand{\deriv}{\mathrm{d}}
20\newcommand{\union}{\cup}
21\def\R{\hbox{\bf R}}
22\newcommand{\del}{\partial}
23\fi
24%
25%\begin{abstract}
26EDS is a REDUCE package for symbolic analysis of partial differential
27equations using the geometrical approach of exterior differential
28systems. The package implements much of exterior differential systems
29theory, including prolongation and involution analysis, and has been
30optimised for large, non-linear problems.
31%\end{abstract}
32
33%\newpage
34%\tableofcontents
35
36%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
37
38%\newpage
39\subsection{Introduction}
40
41Exterior differential systems give a geometrical framework for partial
42differential equations and more general differential geometric problems.
43The geometrical formulation has several advantages stemming from its
44coordinate-independence, including superior treatment of nonlinear and
45global problems. There is not sufficient space in this manual for an
46introduction to exterior differential systems beyond the scant details
47given in section \ref{EDS data structures and concepts}, but there are a
48number of up-to-date texts on the subject (eg \cite{Bryant:1991,Spivak:1979}).
49
50EDS provides a number of tools for setting up and manipulating exterior
51differential systems and implements many features of the theory. Its main
52strengths are the ability to use anholonomic or moving frames and the care
53taken with nonlinear problems.
54
55There has long been interest in implementing the theory of exterior
56differential systems in a computer algebra system (eg
57\cite{Arais:1974,Ganzha:1981,Hartley:91}). The EDS package owes much to these
58earlier efforts, and also to related packages for PDE analysis (eg
59\cite{Mansfield:1993,reid_1991,Seiler:1995}), as well as to earlier versions of
60EDS produced at Lancaster university with R~W~Tucker and
61P~A~Tuckey. Finally, EDS uses the exterior calculus package EXCALC of
62E~Schr{\"u}fer \ref{package:EXCALC} and the exterior ideals package XIDEAL
63\ref{package:XIDEAL}. XIDEAL and EXCALC are loaded automatically with EDS.
64
65This work has been supported by the Graduate College on Scientific
66Computing, University of Cologne and GMD St Augustin, funded by the DFG (Deutsche
67Forschungsgemeinschaft). I would like to express my thanks to R~W~Tucker,
68E~Schr{\"u}fer, P~A~Tuckey, F~W~Hehl and R~B~Gardner for helpful and
69encouraging discussions.
70
71
72
73%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
74
75\subsection{EDS data structures and concepts}
76\label{EDS data structures and concepts}
77
78This section presents the various structures used for expressing exterior
79systems quantities in EDS. In addition, some the concepts used in EDS to
80aid computation are described.
81
82\subsubsection{Coframings}
83\label{Coframings}
84
85Within the context of EDS, a {\it coframing} means a real
86finite-dimensional differentiable manifold with a given global cobasis.
87The information about a coframing required by EDS is kept in a
88\meta{coframing} object. The cobasis is the identifying element of an
89EDS \meta{coframing}: distinct cobases for the same differentiable
90manifold are treated as distinct \meta{coframing} objects in EDS. The
91cobasis may be either holonomic or anholonomic, allowing some manifolds
92with non-trivial topology (eg.  group manifolds) to be treated.
93
94In addition to the cobasis, an EDS \meta{coframing} can be given {\it
95coordinates}, {\it structure equations} and {\it restrictions}. The
96coordinates may be an incomplete or overcomplete set. The structure
97equations express the exterior derivative of the coordinates and cobasis
98elements as needed.  All coordinate differentials must be expressed in
99terms of the given cobasis, but not all cobasis differentials need be
100known. The restrictions are a set of inequalities (at present using just
101$\neq$) describing point sets not in the manifold.
102
103The \meta{coframing} object is, of course, by no means a full
104description of a differentiable manifold. For example, there is no
105topology and there are no charts. However, the \meta{coframing} object
106carries sufficient information about the underlying manifold to allow a
107range of exterior systems calculations to be carried out. As such, it is
108convenient to accept an abuse of language and think of the
109\meta{coframing} object as a manifold.
110
111A \meta{coframing} is constructed or selected using the \f{coframing}
112operator.
113
114\paragraph{\it Examples:}
115\begin{itemize}
116\item $\R^3$ with cobasis $\{\deriv x,\deriv y,\deriv z\}$ and coordinates $\{x,y,z\}$.
117\item $\R^2\backslash\{0\}$ with cobasis $\{e^1,e^2\}$, a single
118	coordinate $\{r\}$, ``structure equations'' $\{\deriv r = e^1$,
119	$\deriv e^1=0$,$\deriv e^2=e^1\wedge e^2/r\}$ and restrictions $\{r\neq0\}$.
120\item $\R^2\backslash\{0\}$ with cobasis $\{\deriv x,\deriv y\}$,
121	coordinates $\{x,y\}$ and restrictions $\{x^2+y^2\neq0\}$.
122\item $S^1$ with cobasis $\{\omega\}$ and structure equations
123	$\{\deriv\omega = 0\}$.
124\item $S^2$ cannot be encapsulated by an EDS \meta{coframing} since there
125        is no global cobasis.
126\end{itemize}
127
128\subsection{Exterior differential systems}
129\label{Exterior differential systems}
130
131A simple \meta{EDS}, or exterior differential system, is a triple
132$(S,\Omega,M)$, where $M$ is a \meta{coframing} (section
133\ref{Coframings}), $S$ is a \meta{system} (section \ref{Systems}) on
134$M$, and $\Omega$ is an independence condition: either a decomposable
135\meta{p-form} or a \meta{system} of 1-forms on $M$ (exterior
136differential systems without independence condition are not treated by
137EDS).
138
139More generally, an \meta{EDS} is a list of simple \meta{EDS} objects
140where the various coframings are all disjoint. This last requirement in
141not enforced within EDS unless the \f{edsdisjoint} switch is \f{on}
142(section \ref{edsdisjoint}). These more general \meta{EDS} objects are
143represented as a list of simple \meta{EDS} objects. All operators which
144take an \meta{EDS} argument accept both simple and compound types.
145
146The trivial \meta{EDS}, describing an inconsistent problem with no
147solutions, is defined to be (\{1\},\{\},\{\}).
148
149An \meta{EDS} is represented by the \f{eds} operator (section \ref{eds}),
150and can additionally be generated using the \f{contact} and \f{pde2eds}
151operators (sections \ref{contact}, \ref{pde2eds}).
152
153The solutions of $(S,\Omega,M)$ are integral manifolds, or immersions (cf
154section \ref{Maps}) on which $S$ vanishes and the rank of $\Omega$ is
155preserved. Solutions at a single point are described by integral elements
156(section \ref{Integral elements}).
157
158\subsubsection{Systems}
159\label{Systems}
160
161In EDS, the label \meta{system} refers to a list
162\begin{edssyntax}
163	\{\meta{p-form expr},$\cdots$\}
164\end{edssyntax}
165of differential forms. This is distinct from an \meta{EDS} (section
166\ref{Exterior differential systems}), which has additional structure.
167However, many EDS operators will accept either an \meta{EDS} or a
168\meta{system} as arguments. In the latter case, any extra information
169which is required is taken from the background coframing (section
170\ref{Background coframing}).
171
172The \meta{system} of an \meta{EDS} can be obtained with the \f{system}
173operator (section \ref{system}).
174
175\subsubsection{Background coframing}
176\label{Background coframing}
177
178The information encapsulated in a \f{coframing} operator is usually
179inactive. However, when operations are performed on a \meta{coframing} or an
180\meta{EDS} object (sections \ref{Coframings}, \ref{Exterior differential
181systems}), this information is activated for the duration of those
182operations. It is possible to activate the rules and orderings of a
183\f{coframing} operator globally, by making it the {\em background
184coframing}. All subsequent EXCALC operations will be governed by those
185rules. Operations on \meta{EDS} objects are unaffected, since their
186coframings are still activated locally. The background coframing can be set
187and changed with the \f{set\_coframing} command, and inspected using
188\f{coframing}.
189
190\subsubsection{Integral elements}
191\label{Integral elements}
192
193An {\it integral element} of an exterior system $(S,\Omega,M)$ is a
194subspace $P\subset T_pM$ of the tangent space at some point $p\in M$
195such that all forms in $S$ vanish when evaluated on vectors from $P$. In
196addition, no non-zero vector in $P$ may annul every form in $\Omega$.
197
198Alternatively, an integral element $P\subset T_pM$ can be represented
199by its annihilator $P^\perp\subset T^*_pM$, comprising those 1-forms
200at $p$ which annul every vector in $P$. This can also be understood as a
201maximal set of 1-forms at $p$ such that $S \simeq 0 \pmod{P^\perp}$ and
202the rank of $\Omega$ is preserved modulo $P^\perp$.  This is the
203representation used by EDS. Further, the reference to the point $p$ is
204omitted, so an \meta{integral element} in EDS is a distribution of
2051-forms on $M$, specified as a \meta{system} of 1-forms.
206
207In specifying an integral element for a particular \meta{EDS}, it is
208possible to omit the Pfaffian component of the \meta{EDS}, since these
2091-forms must be part of any integral element.
210
211\paragraph{\it Examples:}
212\begin{itemize}
213\item With $M = \R^3 = \{(x,y,z)\}$, $S = \{\deriv x\wedge \deriv z\}$ and
214      $\Omega = \{\deriv x,\deriv y\}$, the integral element $P =
215       \{\partial_x + \partial_z,\partial_y\}$ is equally determined by its
216      annihilator $P^\perp = \{\deriv z - \deriv x\}$.
217\item For $S = \{\deriv z - y\deriv x\}$ and $\Omega = \{\deriv x\}$, the integral
218      element $P = \{\partial_x + y\partial_z\}$ can be specified
219      simply as $\{\deriv y\}$.
220\end{itemize}
221
222\subsubsection{Properties}
223\label{Properties}
224
225For large problems, it can require a great deal of computation to establish
226whether, for example, a system is closed or not. In order to save
227recomputing such properties, an \meta{EDS} object carries a list of
228\meta{properties} of the form
229\begin{edssyntax}
230	\{\meta{keyword} = \meta{value},$\cdots$\}
231\end{edssyntax}
232where \meta{keyword} is one of \f{closed}, \f{quasilinear}, \f{pfaffian} or
233\f{involutive}, and \meta{value} is either \f{0} (false) or \f{1}
234(true). These properties are suppressed when an \meta{EDS} is printed,
235unless the \f{nat} switch is \f{off}. They can be examined using the
236\f{properties} operator (section \ref{properties}).
237
238Properties are usually generated automatically by EDS as required, but may
239be explicitly checked using the operators in section \ref{Testing exterior
240systems}. If a property is not yet present on the list, it is not yet
241known, and must be checked explicitly if required.
242
243In addition to the properties just described, an \meta{EDS} object carries
244a number of hidden properties which record the results of previous
245calculations, such as the closure or information about the prolongation of
246the system. These hidden properties speed up many operations which
247contain common sub-calculations. The hidden properties are stored using
248internal LISP data structures and so are not available for inspection.
249
250Properties can be asserted when an \meta{EDS} is constructed with the
251\f{eds} operator (section \ref{eds}). Care is needed since such assertions
252are never checked. Properties can be erased using the \f{cleanup} operator
253(section \ref{cleanup}).
254
255\subsubsection{Maps}
256\label{Maps}
257
258Within EDS, a map $f:M\to N$ is given as a \meta{map} object, a list
259\begin{edssyntax}
260\{\meta{coordinate} = \meta{expr},$\cdots$,\meta{expr} neq \meta{expr},$\cdots$\}
261\end{edssyntax}
262of substitutions and restrictions. The substitutions express coordinates on
263the target manifold $N$ in terms of those on the source manifold $M$. The
264restrictions describe point sets not contained in the source manifold
265$M$. The ordering of substitutions and restrictions in the list is
266unimportant. It is not necessary that the restrictions and right-hand sides
267of the substitutions be written entirely in $M$ coordinates, but it must be
268possible by repeated substitution to produce expressions on $M$ (see the
269examples below). Any denominators in the substitutions are automatically
270added to the list of restrictions. It is not necessary to include trivial
271equations for coordinates which are present on both $M$ and $N$. Note that
272projections cannot be represented in this fashion (but see the \f{cross}
273operator, section \ref{cross}).
274
275Maps are applied using the \f{pullback} and \f{restrict} operators
276(sections \ref{pullback}, \ref{restrict}).
277
278\paragraph{\it Examples:}
279\begin{itemize}
280\item The map $\R^2\backslash\{0\}\to\R^3$, $(x,y)\mapsto (x,y,z=x^2+y^2)$
281      is represented $\{z = x^2+y^2,z\neq 0\}$.
282\item $\{x=u+v,y=u-v\}$ might represent the coordinate change
283      $\R^3\to\R^3$, $(u,v,z)\mapsto(x=u+v,y=u-v,z)$.
284\item $\{x=u+v,y=2u-x\}$ is the same map again.
285\item $\{x=2v+y,y=2u-x\}$ is unacceptable since $x$ and $y$ cannot be
286      eliminated from the right-hand sides by repeated substitution.
287\end{itemize}
288
289\subsubsection{Cobasis transformations}
290\label{Cobasis transformations}
291
292A cobasis transformation is given in EDS by a \meta{transform}, a list
293\begin{edssyntax}
294	\{\meta{cobasis element} = \meta{1-form expr},$\cdots$\}
295\end{edssyntax}
296of substitutions. When applying a transformation to a \meta{p-form} or
297\meta{system}, it is necessary to specify the {\it forward}
298transformation just as for a \f{sub} substitution. For \meta{EDS} and
299\meta{coframing} objects, it is also possible to specify the inverse of
300the desired substition: EDS will automatically invert the transformation
301as required. For a partial change of cobasis, it is not necessary to
302include trivial equalities. Cobasis transformations are applied by the
303\f{transform} operator (section \ref{transform}).
304
305\paragraph{\it Examples:}
306\begin{itemize}
307\item $\{\omega^1 = x\deriv y - y\deriv x, \omega^2 = x\deriv x + y\deriv y\}$ gives a
308transformation between Cartesian and polar cobases on
309$\R^2\backslash\{0\}$.
310\item On $J^1(\R^2,\R)$ with cobasis $\{\deriv u,\deriv p,\deriv q,\deriv r,\deriv s,\deriv t,\deriv
311x,\deriv y\}$, the list $\{\theta^1=\deriv u - p\deriv x - q\deriv y, \theta^2=\deriv p -
312r\deriv x - s\deriv y, \theta^3=\deriv q - s\deriv x - t\deriv y\}$ specifies a new cobasis in
313which the contact system is simply $\{\theta^1,\theta^2,\theta^3\}$.
314\end{itemize}
315
316\subsubsection{Tableaux}
317\label{Tableaux}
318
319For a quasilinear Pfaffian exterior differential system
320$(\{\theta^a\},\{\omega^i\},M)$, the tableau $A=[\pi^a_i]$
321is a matrix of 1-forms such that
322\[	\deriv \theta^a + \pi^a_i\wedge\omega^i \simeq 0
323		\pmod{\{\theta^a,\omega^i\wedge\omega^j\}}
324\]
325The $\pi^a_i$ are not unique: if $\{\theta^a,\pi^\rho,\omega^i\}$ is a
326standard cobasis for the system (section \ref{Standard cobasis}), the EDS
327\meta{tableau} is a matrix containing linear combinations of the $\pi^\rho$
328only. Zero rows are omitted.
329
330The tableau of an \meta{EDS} is generated by the \f{tableau} operator
331(section \ref{tableau}), or can be entered using the \f{mat} operator. The
332Cartan characters of a tableau are found using \f{characters} (section
333\ref{characters}).
334
335\subsubsection{Normal form}
336\label{Normal form}
337
338Parts of the theory of exterior differential systems apply only at points
339on the underlying manifold where the system is in some sense
340non-singular. To ensure the theory applies, EDS automatically works all
341exterior systems $(S,\Omega,M)$ into a {\em normal form} in which
342
343\begin{enumerate}
344\item The Pfaffian (degree 1) component of $S$ is in {\em solved} form,
345      where each expression has a distinguished term with coefficient 1,
346      unique to that expression.
347\item The independence condition $\Omega$ is also in solved form.
348\item The distinguished terms from the 1-forms in $S$ have been eliminated
349      from the rest of $S$ and from $\Omega$.
350\item Any 1-forms in $S$ which vanish modulo the independence condition are
351      removed from the system and their coefficients are appended as
352      0-forms.
353\end{enumerate}
354
355Conditions 1 and 2 ensure the 1-forms have constant rank, while 3 is
356convenient for many tests and calculations. In bringing the system into
357solved form, divisions will be made only by coefficients which are
358constants, parameters or functions which are nowhere zero on the
359manifold. The test for nowhere-zero functions uses the restrictions
360component of the \meta{coframing} structure (cf section \ref{Coframings}) and
361is still primitive: facts such as $x^2+1\neq0$ on a real manifold are
362overlooked. See also the switch \f{edssloppy} (section \ref{edssloppy}).
363
364This ``normal form'' has, of course, nothing to do with the various normal
365forms (eg Goursat) into which some exterior systems may be brought by
366cobasis transformations and choices of generators.
367
368\paragraph{\it Examples:}
369\begin{itemize}
370\item On $M=\{(u,v,w)\in\R^3\mid u\neq v\}$, the Pfaffian system
371      \[\{u\deriv u + v\deriv v + \deriv w,\>(u^2 + u - v^2)\deriv u + u\deriv v + \deriv w\}\] has
372      the solved form
373      \[\{\deriv v + (u + v)\deriv u,\>\deriv w + ( - uv + u - v )\deriv u\}.\]
374\item Since the independence condition is defined only modulo the system,
375      the system
376      \[S=\{\deriv u - \deriv x - u_y\deriv y\},\quad \Omega=\deriv x\wedge\deriv y\] has an
377      equivalent normal form
378      \[S=\{\deriv x - \deriv u + u_y\deriv y\},\quad \Omega=\deriv u\wedge\deriv y.\]
379\end{itemize}
380
381\subsubsection{Standard cobasis}
382\label{Standard cobasis}
383
384Given an \meta{EDS} $(S,\Omega,M)$ in normal form (section \ref{Normal
385form}), the cobasis of the \meta{coframing} $M$ can be decomposed into three
386sets: $\{\theta^a\}$, the distinguished terms from the 1-forms in $S$,
387$\{\omega^i\}$, the distinguished terms from the 1-forms in $\Omega$, and
388the remainder $\{\pi^\rho\}$. Within EDS, $\{\theta^a,\pi^\rho,\omega^i\}$
389is called the {\em standard cobasis}, and all expressions are ordered so
390that $\theta^a > \pi^\rho > \omega^i$. The ordering within the three sets
391is determined by the REDUCE \meta{kernel} ordering.
392
393\paragraph{\it Examples:}
394\begin{itemize}
395\item For the system $S=\{\deriv u - \deriv x - u_y\deriv y\}$, $\Omega=\deriv x\wedge\deriv y$,
396      the decomposed standard cobasis is $\{\deriv u\}\cup\{\deriv u_y\}\cup\{\deriv
397      x,\deriv y\}$.
398\item For the contact system
399  \[S=\begin{cases}
400                \deriv u - u_x\deriv x - u_y\deriv y\\
401                \deriv u_x - u_{xx}\deriv x - u_{xy}\deriv y\\
402                \deriv u_y - u_{xy}\deriv x - u_{yy}\deriv y
403       \end{cases}\]
404      the standard cobasis is $\{\deriv u,\deriv u_x,\deriv u_y\}\cup\{\deriv
405      u_{xx},\deriv u_{xy},\deriv u_{yy}\}\cup\{\deriv x,\deriv y\}$.
406
407\end{itemize}
408
409
410%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
411
412\subsection{Constructing EDS objects}
413\label{Constructing EDS objects}
414
415Before analysing an exterior system, it is necessary to enter it into EDS
416somehow. Several means are provided for this purpose, and are described in
417this section.
418
419\subsubsection{\tt coframing}
420\label{coframing}
421
422An EDS \meta{coframing} is constructed using the \f{coframing}
423operator. There are several ways in which it can be used.
424
425The simplest syntax
426\begin{edssyntax}
427	coframing(\{\meta{expr},$\cdots$\})
428\end{edssyntax}
429examines the argument for 0-form and 1-form variables and deduces a full
430\meta{coframing} object capable of supporting the given expressions. This
431includes recursively examining the exterior derivatives of the variables
432appearing explicitly in the argument, taking into account prevailing
433\f{let} rules. In this form, the ordering of the final cobasis elements
434follows the prevailing REDUCE ordering. Free indices in indexed expressions
435are expanded to a list of explicit indices using \f{index\_expand} (section
436\ref{index_expand}).
437
438A more basic syntax is
439\begin{edssyntax}
440	coframing(\meta{cobasis}\optional{,\meta{coordinates}}
441	\optional{,\meta{restrictions}}
442	\\\phantom \qquad\qquad\quad
443	\optional{,\meta{structure equations}})
444\end{edssyntax}
445where \meta{cobasis} is a list of \meta{kernel} 1-forms,
446\meta{coordinates} is a list of \meta{kernel} 0-forms,
447\meta{restrictions} is a list of inequalities (using only $\neq$ at
448present), and \meta{structure equations} is a list of rules giving the
449exterior derivatives of the coordinates and cobasis elements. All
450arguments except the cobasis are optional, and the order of arguments is
451unimportant. As in the first syntax, missing parts are deduced. The
452ordering of the final cobasis elements follows the ordering specified,
453rather than the prevailing REDUCE ordering.
454
455Finally,
456\begin{edssyntax}
457	coframing(\meta{EDS})
458\end{edssyntax}
459returns the coframing argument of an \meta{EDS}, and
460\begin{edssyntax}
461	coframing()
462\end{edssyntax}
463returns the current background coframing (section \ref{Background
464coframing}).
465
466\paragraph{\it Examples:}
467\begin{verbatim}
468coframing {x,y,z};
469
470   coframing({d x,d y,d z},{x,y,z},{},{})
471
472coframing({e 1,e 2},{r},{r neq 0},
473          {d r=>e 1,d e 1=>0,d e 2=>e 1^e 2/r});
474
475                                            1  2
476               1  2          1        2    e ^e           1
477   coframing({e ,e },{r},{d e => 0,d e => -------,d r => e },
478                                             r
479             {r neq 0})
480
481coframing({e 2}) where {d r=e 1,d e 1=0,d e 2=e 1^e 2/r};
482
483                                            1  2
484               1  2          1        2    e ^e           1
485   coframing({e ,e },{r},{d e => 0,d e => -------,d r => e },
486                                             r
487             {r neq 0})
488\end{verbatim}
489
490\subsubsection{\tt eds}
491\label{eds}
492
493A simple \meta{EDS} is constructed using the \f{eds} operator.
494\begin{edssyntax}
495	eds(\meta{system},\meta{indep. condition}\ignorespaces
496	\optional{,\meta{coframing}}\optional{,\meta{properties}})
497\end{edssyntax}
498(cf sections \ref{Systems}, \ref{Coframings}, \ref{Properties}). The
499\meta{indep. condition} can be either a decomposable \meta{p-form} or a
500\meta{system} of 1-forms. Free indices in indexed expressions are expanded
501to a list of explicit indices using \f{index\_expand} (section
502\ref{index_expand}).
503
504The \meta{coframing} argument can be omitted, in which case the expressions
505from the \meta{system} and \meta{indep. condition} are fed to the
506\f{coframing} operator (section \ref{coframing}) to construct a suitable
507working space.
508
509The \meta{properties} argument is optional, allowing the given properties
510to be asserted. This can save considerable time for large systems, but care
511is needed since the assertions are never checked.
512
513The \meta{EDS} is put into normal form (section \ref{Normal form}) before
514being returned.
515
516On output, only the \meta{system} and \meta{indep. condition} are
517displayed, unless the \f{nat} switch is off, in which case the
518\meta{coframing} and \meta{properties} are shown too. This is so that an
519\meta{EDS} can be written out to a file and read back in.
520
521The parts of an \meta{EDS} are obtained with the operators \f{system},
522\f{cobasis}, \f{independence} and \f{properties} (sections \ref{system},
523\ref{cobasis}, \ref{independence} and \ref{properties}).
524
525\paragraph{\it Examples:}
526\begin{verbatim}
527pform {x,y,z,p,q}=0,{e(i),w(i,j)}=1;
528
529indexrange {i,j,k}={1,2},{a,b,c}={3};
530
531eds({d z - p*d x - q*d y, d p^d q},{d x,d y});
532
533   EDS({d z - p*d x - q*d y,d p^d q},{d x,d y})
534
535OMrules :=
536   index_expand {d e(i)=>-w(i,-j)^e(j),w(i,-j)+w(j,-i)=>0}$
537
538eds({e(a)},{e(i)}) where OMrules;
539
540         3    1  2
541   EDS({e },{e ,e })
542
543coframing ws;
544               3  2    1  2         1        2  2
545   coframing({e ,w   ,e ,e },{},{d e  =>  - e ^w   ,
546                    1                             1
547                  2     1  2
548               d e  => e ^w   },{})
549                             1
550\end{verbatim}
551
552\subsubsection{\tt contact}
553\label{contact}
554
555Many PDE problems are formulated as exterior systems using a jet bundle
556contact system. To facilitate construction of these systems, the
557\f{contact} operator is provided. The syntax is
558\begin{edssyntax}
559	contact(\meta{order},\meta{source manifold},\meta{target manifold})
560\end{edssyntax}
561where \meta{order} is a non-negative integer, and the two remaining
562arguments are either \meta{coframing} objects or lists of \meta{p-form}
563expressions. In the latter case, the expressions are fed to the
564\f{coframing} operator (section \ref{coframing}). The contact system for the
565bundle $J^r(M,N)$ of $r$-jets of maps $M\to N$ is thus returned by
566\f{contact(r,M,N)}. Source and target spaces may have anholonomic
567cobases. Indexed names for the jet bundle fibre coordinates are constructed
568using the identifiers in the source and target cobases.
569
570\paragraph{\it Examples:}
571\begin{verbatim}
572pform {x,y,z,u,v}=0,{e i,w a}=1;
573indexrange {i}={1,2},{a}=1;
574contact(1,{x,y,z},{u,v});
575
576   EDS({d u - u *d x - u *d y - u *d z,
577               x        y        z
578        d v - v *d x - v *d y - v *d z},{d x,d y,d z})
579               x        y        z
580
581OMrules := index_expand{d e(1)=>e(1)^e(2),d e(2)=>0,d w(a)=>0};
582contact(2,{e(i)},{w(a)}) where OMrules;
583
584         1    1    1    1    2
585   EDS({w  - w   *e  - w   *e ,
586                1         2
587           1      1      1    1      2
588        d w    - w     *e  - w     *e ,
589             1      1 1         1 2
590           1          1        1     1    1      2    1  2
591        d w    + ( - w      + w   )*e  - w     *e },{e ,e })
592             2          1 2      1          2 2
593\end{verbatim}
594
595\subsubsection{\tt pde2eds}
596\label{pde2eds}
597
598A PDE system can be encoded into an \meta{EDS} using \f{pde2eds}. The
599syntax is
600\begin{edssyntax}
601	pde2eds(\meta{pde}\optional{,\meta{dependent},\meta{independent}})
602\end{edssyntax}
603where \meta{pde} is a list of equations or expressions (implicitly assumed
604to vanish) specifying the PDE system using either
605the standard REDUCE \f{df} operator, or the EXCALC \f{@} operator. If the
606optional variable lists \meta{dependent} and \meta{independent} are not
607given, \f{pde2eds} infers them from the expressions in \meta{pde}. The
608order of each dependent variable is determined automatically.
609
610The result returned by \f{pde2eds} is an \meta{EDS} based on the contact
611system of the relevant mixed-order jet bundle. Any of the \meta{pde}
612members which is in solved form is used to pull back this contact
613system. Any remaining expressions or unresolved equations are simply
614appended as 0-forms: before many of the analysis tools (section
615\ref{Analysing exterior systems}) can be applied, it is necessary to
616convert this to a system generated in positive degree using the \f{lift}
617operator (section \ref{lift}).
618
619The automatic inference of dependent and independent variables is governed
620by the following rules. The independent variables are all those with
621respect to which derivatives appear. The dependent variables are those
622for which explicit derivatives appear, as well as any which have
623dependencies (as declared by \f{depend} or \f{fdomain}) or which are 0-forms.
624To exclude a variable from the dependent variable list (for example,
625because it is regarded as given) or to include extra independent variables,
626use the optional arguments to \f{pde2eds}.
627
628One of the awkward points about \f{pde2eds} is that implicit dependence
629is changed globally. In order for the \f{df} and \f{@} operators to be used
630to express the PDE, the \meta{dependent} variables must depend (via
631\f{depend} or \f{fdomain}) on the \meta{independent} variables. On the
632other hand, in the \meta{EDS}, these variables are all completely
633independent coordinates. The \f{pde2eds} operator thus removes the implicit
634dependence so that the \meta{EDS} is correct upon return. This means that
635the \meta{pde} will no longer evaluate properly until such time as the
636dependence is manually restored, whereupon the \meta{EDS} will no longer be
637correct, and so on.
638
639To assist with this difficulty, \f{pde2eds} saves a record of the
640dependencies it has removed in the shared variable \f{dependencies}. The
641operator \f{mkdepend} can be used to restore the initial state.
642
643See also the operators \f{pde2jet} (section \ref{pde2jet}) and \f{mkdepend}
644(section \ref{mkdepend}).
645
646\paragraph{\it Example:}
647\begin{verbatim}
648depend u,x,y; depend v,x,y;
649pde2eds({df(u,y,y)=df(v,x),df(v,y)=y*df(v,x)});
650
651   EDS({d u - u *d x - u *d y,
652               x        y
653
654        d u  - u   *d x - u   *d y,
655           x    x x        y x
656
657        d u  - u   *d x - v *d y,
658           y    y x        x
659
660        d v - v *d x - v *y*d y},d x^d y)
661               x        x
662
663dependencies;
664
665   {{u,y,x},{v,y,x}}
666\end{verbatim}
667
668\subsubsection{\tt set\_coframing}
669\label{set_coframing}
670
671The background coframing (section \ref{Background coframing}) is set with
672\f{set\_coframing}. The syntax is
673\begin{edssyntax}
674   set\_coframing \meta{arg}
675\end{edssyntax}
676where \meta{arg} is a \meta{coframing} or an \meta{EDS} and the previous
677background coframing is returned. All rules, orderings etc pertaining to the
678previous background coframing are removed and replaced by those for the new
679\meta{coframing}. The special form
680\begin{edssyntax}
681   set\_coframing()
682\end{edssyntax}
683clears the background coframing entirely and returns the previous one.
684
685
686%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
687
688\subsection{Inspecting EDS objects}
689\label{Inspecting EDS objects}
690
691Given an \meta{EDS} or some other EDS structure, it is often desirable to
692inspect or extract some part of it. The operators described in this section
693do just that. Many of them accept various types of arguments and return the
694relevant information in each case.
695
696\subsubsection{\tt cobasis}
697\label{cobasis}
698
699\begin{edssyntax}
700	cobasis \meta{arg}
701\end{edssyntax}
702returns the cobasis for \meta{arg}, which may be either a \meta{coframing}
703or an \meta{EDS} (sections \ref{Coframings}, \ref{Exterior differential
704systems}). The order of the items in the list gives the \meta{kernel}
705ordering which applies when the \meta{coframing} in \meta{arg} is active.
706
707\subsubsection{\tt coordinates}
708\label{coordinates}
709
710\begin{edssyntax}
711	coordinates \meta{arg}
712\end{edssyntax}
713returns the coordinates for \meta{arg}, which may be either a
714\meta{coframing}, an \meta{EDS}, or a list of \meta{expr} (sections
715\ref{Coframings}, \ref{Exterior differential systems}). The coordinates in a
716list of \meta{expr} are defined to be those 0-form \meta{kernels} with no
717implicit dependencies.
718
719\paragraph{\it Examples:}
720\begin{verbatim}
721coordinates contact(3,{x},{u});
722
723   {x,u,u ,u   ,u     }
724         x  x x  x x x
725
726fdomain u=u(x);
727coordinates {d u+d y};
728
729   {x,y}
730\end{verbatim}
731
732\subsubsection{\tt structure\_equations}
733\label{structure_equations}
734
735\begin{edssyntax}
736	structure\_equations \meta{arg}
737\end{edssyntax}
738returns the structure equations (cf section \ref{Coframings}) for
739\meta{arg}, which may be either a \meta{coframing}, an \meta{EDS}, or a
740\meta{transform} (sections \ref{Coframings}, \ref{Exterior differential
741systems}, \ref{Cobasis transformations}). In the case of a
742\meta{transform}, it is assumed the exterior derivatives of the right-hand
743sides are known, and a list giving the exterior derivatives of the
744left-hand sides is returned. This requires inverting the transformation. In
745case this has already been done, and was time consuming, an alternative
746syntax
747\begin{edssyntax}
748	structure\_equations(\meta{transform},\meta{inverse transform})
749\end{edssyntax}
750avoids recomputing the inverse.
751
752\paragraph{\it Example:}
753\begin{verbatim}
754structure_equations{e 1=d x/x,e 2=x*d y};
755
756       1         2     1  2
757   {d e  => 0,d e  => e ^e }
758\end{verbatim}
759
760\subsubsection{\tt restrictions}
761\label{restrictions}
762
763\begin{edssyntax}
764	restrictions \meta{arg}
765\end{edssyntax}
766returns the restrictions for \meta{arg}, which may be either a
767\meta{coframing} or an \meta{EDS} (sections \ref{Coframings}, \ref{Exterior
768differential systems}). The result is a list of inequalities.
769
770\subsubsection{\tt system}
771\label{system}
772
773\begin{edssyntax}
774	system \meta{EDS}
775\end{edssyntax}
776returns the system component of an \meta{EDS} (sections \ref{Exterior
777differential systems}, \ref{Systems}) as a list of \meta{p-form}
778expressions. (The PSL-based REDUCE command \f{system} operates as before:
779the syntax
780\begin{edssyntax}
781	system "\meta{command}"
782\end{edssyntax}
783executes an operating system (eg UNIX) command.)
784
785\subsubsection{\tt independence}
786\label{independence}
787
788\begin{edssyntax}
789	independence \meta{EDS}
790\end{edssyntax}
791returns the independence condition of an \meta{EDS} (section \ref{Exterior
792differential systems}) as a list of \meta{1-form} expressions.
793
794
795\subsubsection{\tt properties}
796\label{properties}
797
798\begin{edssyntax}
799	properties \meta{EDS}
800\end{edssyntax}
801returns the currently known properties of an \meta{EDS} (sections
802\ref{Exterior differential systems}, \ref{Properties}) as a list of
803equations of the form {\tt\meta{keyword} = \meta{value}}.
804
805\paragraph{\it Example:}
806\begin{verbatim}
807properties closure contact(1,{x},{u});
808
809   {closed=1,pfaffian=1,quasilinear=1}
810\end{verbatim}
811
812
813\subsubsection{\tt one\_forms}
814\label{one_forms}
815
816\begin{edssyntax}
817	one\_forms \meta{arg}
818\end{edssyntax}
819returns the 1-forms in \meta{arg}, which may be either an \meta{EDS} or a
820list of \meta{expr} (sections \ref{Exterior differential systems},
821\ref{Systems}).
822
823\paragraph{\it Example:}
824\begin{verbatim}
825one_forms {5,x*y - u,d u - x*d y,d u^d x- x*d y^d x};
826
827   {d u - d y*x}
828\end{verbatim}
829
830\subsubsection{\tt zero\_forms, nought\_forms}
831\label{zero_forms}
832
833\begin{edssyntax}
834	zero\_forms \meta{arg}
835\end{edssyntax}
836returns the 0-forms in \meta{arg}, which may be either an \meta{EDS} or a
837list of \meta{expr} (sections \ref{Exterior differential systems},
838\ref{Systems}). The alternative syntax \f{nought\_forms} does the same thing.
839
840\paragraph{\it Example:}
841\begin{verbatim}
842zero_forms {5,x*y - u,d u - x*d y,d u^d x- x*d y^d x};
843
844   {5, - u + x*y}
845\end{verbatim}
846
847%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
848
849\subsection{Manipulating EDS objects}
850\label{Manipulating EDS objects}
851
852The abililty to change coordinates or cobasis, or to modify the system or
853coframing can make the difference between an intractible problem and a
854solvable one. The facilities described in this section form the low-level
855core of EDS functions.
856
857Most of the operators in this section can be applied to both \meta{EDS} and
858\meta{coframing} objects. Where it makes sense (eg \f{pullback},
859\f{restrict} and \f{transform}), they can be applied to a \meta{system}, or
860list of differential forms as well.
861
862\subsubsection{\tt augment}
863\label{augment}
864
865\begin{edssyntax}
866	augment(\meta{EDS},\meta{system})
867\end{edssyntax}
868appends the extra forms in the second argument to the system part of the
869first. If the forms in the \meta{system} do not live on the coframing of the
870\meta{EDS}, an error results. The original \meta{EDS} is unchanged.
871
872\paragraph{\it Example:}
873\begin{verbatim}
874% Non-Pfaffian system for a Monge-Ampere equation
875S := contact(1,{x,y},{z})$
876S := augment(S,{d z(-x)^d z(-y)});
877
878   s := EDS({d z - z *d x - z *d y,
879                    x        y
880
881             d z ^d z },{d x,d y})
882                x    y
883\end{verbatim}
884
885\subsubsection{\tt cross}
886\label{cross}
887
888The infix operator \f{cross} gives the direct product of
889\meta{coframing} objects. The syntax is
890\begin{edssyntax}
891	\meta{arg1} cross \meta{arg2} \optional{cross $\cdots$}
892\end{edssyntax}
893The first argument may be either a \meta{coframing} (section
894\ref{Coframings}) or an \meta{EDS} (section \ref{Exterior differential
895systems}). The remaining arguments may be either \meta{coframing}
896objects or any valid argument to the \f{coframing} operator (section
897\ref{coframing}), in which case the corresponding \meta{coframing} is
898automatically inferred. The arguments may not contain any common
899coordinates or cobasis elements.
900
901If the first argument is an \meta{EDS}, the result is the \meta{EDS}
902lifted to the direct product space. In this way, it is possible to
903execute a pullback under a projection.
904
905\paragraph{\it Example:}
906\begin{verbatim}
907coordinates(contact(1,{x,y},{u}) cross {v});
908
909   {x,y,u,u ,u ,v}
910           x  y
911\end{verbatim}
912
913\subsubsection{\tt pullback}
914\label{pullback}
915
916Pullbacks with respect to an EDS \meta{map} (section \ref{Maps}) have the
917syntax
918\begin{edssyntax}
919	pullback(\meta{arg},\meta{map})
920\end{edssyntax}
921where \meta{arg} can be any one of \meta{EDS}, \meta{coframing},
922\meta{system} or \meta{p-form} expression (sections \ref{Exterior
923differential systems}, \ref{Coframings}, \ref{Systems}). The result is of
924the same type as \meta{arg}.
925
926For an \meta{EDS} or \meta{coframing} with anholonomic cobasis, \f{pullback}
927calculates the pullbacks of the cobasis elements and chooses a cobasis for
928the source coframing itself. For a \meta{system}, any zeroes in the result
929are dropped from the list.
930
931\paragraph{\it Examples:}
932\begin{verbatim}
933pullback(contact(1,{x,y},{u}),{u(-y) = u*u(-x)});
934
935   EDS({d u - u *d x - u *u*d y},{d x,d y})
936               x        x
937
938M := coframing({e 1,e 2},{r},{r neq 0},
939               {d r=>e 1,d e 1=>0,d e 2=>e 1^e 2/r})$
940
941pullback(M,{r=1/x});
942                                     2
943               2              2     e ^d x
944   coframing({e ,d x},{x},{d e  => --------},{x neq 0})
945                                      x
946
947pullback(ws,{x=0});
948
949   ***** Map image not within target coframing in pullback
950
951pullback({y*d y,d y - d x},{y=x});
952
953   {d x*x}
954\end{verbatim}
955
956\subsubsection{\tt restrict}
957\label{restrict}
958
959Restrictions with respect to an EDS \meta{map} (section \ref{Maps}) have the
960syntax
961\begin{edssyntax}
962	restrict(\meta{arg},\meta{map})
963\end{edssyntax}
964where \meta{arg} can be any one of \meta{EDS}, \meta{coframing},
965\meta{system} or \meta{p-form} expression (sections \ref{Exterior
966differential systems}, \ref{Coframings}, \ref{Systems}). The result is of
967the same type as \meta{arg}. The action of \f{restrict} is similar to that
968of \f{pullback}, except that only scalar coefficients are affected: 1-form
969variables are unchanged.
970
971\paragraph{\it Examples:}
972\begin{verbatim}
973% Bring a system into normal form by restricting the coframing
974
975S := eds({u*d v - v*d u},{d x});
976
977   s := EDS({v*d u - u*d v},{d x})
978
979restrict(S,{u neq 0});
980
981               v
982   EDS({d v - ---*d u},{d x})
983               u
984
985% Difference between restrict and pullback
986
987pullback({x*d x - y*d y},{x=y,y=1});
988
989   {}
990
991restrict({x*d x - y*d y},{x=y,y=1});
992
993   {d x - d y}
994\end{verbatim}
995
996\subsubsection{\tt transform}
997\label{transform}
998
999A change of cobasis is made using the \f{transform} operator
1000\begin{edssyntax}
1001	transform(\meta{arg},\meta{transform})
1002\end{edssyntax}
1003where \meta{arg} can be any one of \meta{EDS}, \meta{coframing},
1004\meta{system} or \meta{p-form} expression (sections \ref{Exterior
1005differential systems}, \ref{Coframings}, \ref{Systems}) and \meta{transform}
1006is a list of substitutions (cf section \ref{Cobasis transformations}). The
1007result is of the same type as \meta{arg}.
1008
1009For an \meta{EDS} or \meta{coframing}, \f{transform} can detect whether the
1010tranformation is given in the forward or reverse direction and invert
1011accordingly. Structure equations are updated correctly. If an exact cobasis
1012element is eliminated, its expression in terms of the new cobasis is added
1013to the list of structure equations, since the corresponding coordinate may
1014still be present elsewhere in the structure.
1015
1016\paragraph{\it Example:}
1017\begin{verbatim}
1018S := contact(1,{x},{u});
1019
1020   s := EDS({d u - u *d x},{d x})
1021                    x
1022
1023new := {e(1) = first system S,w(1) = d x};
1024
1025            1               1
1026   new := {e =d u - d x*u ,w =d x}
1027                         x
1028
1029S := transform(S,new);
1030
1031              1    1
1032   s := EDS({e },{w })
1033
1034structure_equations s;
1035
1036       1             1
1037   {d e  =>  - d u ^w ,
1038                  x
1039       1
1040    d w  => 0,
1041
1042            1       1
1043    d u => e  + u *w ,
1044                 x
1045            1
1046    d x => w }
1047\end{verbatim}
1048
1049\subsubsection{\tt lift}
1050\label{lift}
1051
1052Many of the analysis tools (section \ref{Analysing exterior systems})
1053cannot treat systems containing 0-forms. The \f{lift} operator
1054\begin{edssyntax}
1055	lift \meta{EDS}
1056\end{edssyntax}
1057solves the 0-forms in the system and uses the solution to pull back to a
1058smaller manifold. This may generate new 0-form conditions (in the course of
1059bringing the pulled-back system into normal form), in which case the
1060process is repeated until the system is generated in positive degree. In
1061non-linear problems, the solution space of the 0-forms may be a variety, in
1062which case a compound \meta{EDS} (section \ref{Exterior differential
1063systems}) will result. If \f{edsverbose} is on (section \ref{edsverbose}),
1064the solutions are displayed as they are generated.
1065
1066\paragraph{\it Example:}
1067\begin{verbatim}
1068S := augment(contact(2,{x,y},{u}),{u(-y,-y)-u(-x,-x)})$
1069on edsverbose;
1070lift S;
1071   Solving 0-forms
1072   New equations:
1073   u   =u
1074    y y  x x
1075
1076   EDS({d u - u *d x - u *d y,
1077               x        y
1078
1079        d u  - u   *d x - u   *d y,
1080           x    x x        x y
1081
1082        d u  - u   *d x - u   *d y},{d x,d y})
1083           y    x y        x x
1084\end{verbatim}
1085
1086
1087%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1088
1089\subsection{Analysing exterior systems}
1090\label{Analysing exterior systems}
1091
1092This section describes higher level operators for extracting information
1093about exterior systems. Many of them require a \meta{EDS} in normal form
1094(section \ref{Normal form}) generated in positive degree as input, but some
1095can also analyse a \meta{system} (section \ref{Systems}) or a single
1096\meta{p-form}. Only trivial examples are provided in this section, but many
1097of these operators are used in the longer examples in the test file which
1098accompanies this package.
1099
1100
1101\subsubsection{\tt cartan\_system}
1102\label{cartan_system}
1103
1104The {\em Cartan system} of a form or system $S$ is the smallest Pfaffian
1105system $C$ such that $\Lambda(C)$ contains a set $I$ of forms algebraically
1106equivalent to $S$. The Cartan system is also known as the {\em associated
1107Pfaff system} or {\em retracting space}. An alternative characterisation is
1108to note that the annihilator $C^\perp$ comprises all vectors $V$ satisfying
1109$i_V S \simeq 0 \pmod{S}$.  Note this is a purely algebraic concept: $S$
1110need not be closed under differentiation. See also \f{cauchy\_system}
1111(section \ref{cauchy_system}).
1112
1113The operator
1114\begin{edssyntax}
1115	cartan\_system \meta{arg}
1116\end{edssyntax}
1117returns the Cartan system of \meta{arg}, which may be an \meta{EDS}, a
1118\meta{system} or a single \meta{p-form} expression (sections \ref{Exterior
1119differential systems}, \ref{Systems}). For an \meta{EDS}, the result is a
1120Pfaffian \meta{EDS} on the same manifold, otherwise it is a
1121\meta{system}. The argument must be generated in positive degree.
1122
1123\paragraph{\it Example:}
1124\begin{verbatim}
1125cartan_system{d u^d v + d v^d w + d x^d y};
1126
1127   {d u - d w,d v,d x,d y}
1128\end{verbatim}
1129
1130\subsubsection{\tt cauchy\_system}
1131\label{cauchy_system}
1132
1133The {\em Cauchy system} $C$ of a form or system $S$ is the Cartan system or
1134retracting space of its closure under exterior differentiation (section
1135\ref{cartan_system}). The annihilator $C^\perp$ consists of the Cauchy
1136vectors for the $S$.
1137
1138The operator
1139\begin{edssyntax}
1140	cauchy\_system \meta{arg}
1141\end{edssyntax}
1142returns the Cauchy system of \meta{arg}, which may be an \meta{EDS}, a
1143\meta{system} or a single \meta{p-form} expression (sections \ref{Exterior
1144differential systems}, \ref{Systems}). For an \meta{EDS}, the result is a
1145Pfaffian \meta{EDS} on the same manifold, otherwise it is a
1146\meta{system}. The argument must be generated in positive degree.
1147
1148\paragraph{\it Example:}
1149\begin{verbatim}
1150cauchy_system{u*d v + v*d w + x*d y};
1151
1152   {d u,d v,d w,d x,d y}
1153\end{verbatim}
1154
1155\subsubsection{\tt characters}
1156\label{characters}
1157
1158The Cartan characters $\{s_1,...,s_n\}$ of an \meta{EDS} or \meta{tableau}
1159(sections \ref{Exterior differential systems}, \ref{Tableaux}) are obtained
1160with
1161\begin{edssyntax}
1162	characters \meta{EDS} \qquad{\em or}\qquad characters \meta{tableau}
1163\end{edssyntax}
1164The zeroth character $s_0$ is not returned, it is simply the number of
11651-forms in the \meta{EDS} (cf \f{one\_forms}, section \ref{one_forms}). The
1166definition used for the last character: $s_n = (d - n) - (s_0 + s_1 + ... +
1167s_{n-1})$, where $d$ is the manifold dimension, allows Cartan's test to be
1168used even when Cauchy characteristics are present.
1169
1170For a nonlinear \meta{EDS}, the Cartan characters can vary from stratum to
1171stratum of the Grassmann bundle variety of ordinary integral elements (cf
1172\f{grassmann\_variety} in section \ref{grassmann_variety}). Nonetheless,
1173they are constant on each stratum, so it suffices to calculate them at one
1174point (ie at one integral element). This is done using the syntax
1175\begin{edssyntax}
1176	characters(\meta{EDS},\meta{integral element})
1177\end{edssyntax}
1178where \meta{integral element} is a list of 1-forms (cf section
1179\ref{Integral elements}).
1180
1181The Cartan characters are calculated from the reduced characters for a
1182fixed flag of integral elements based on the 1-forms in the independence
1183condition of an \meta{EDS}. This can lead to incorrect results if the flag
1184is somehow singular, so two switches are provided to overcome this (section
1185\ref{ranpos}). First, \f{genpos} looks at a generic flag by using a general
1186linear transformation to put the system in {\em general position}. This
1187guarantees correct results, but can be too slow for practical
1188purposes. Secondly, \f{ranpos} performs a linear transformation using a
1189sparse matrix of random integers. In most cases, this is much faster than
1190using general position, and a few repetitions give some confidence in the
1191results.
1192
1193\paragraph{\it Example:}
1194\begin{verbatim}
1195S := pullback(contact(2,{x,y},{u}),{u(-x,-y)=0});
1196
1197   s := EDS({d u - u *d x - u *d y,
1198                    x        y
1199
1200             d u  - u   *d x,
1201                x    x x
1202
1203             d u  - u   *d y},{d x,d y})
1204                y    y y
1205
1206characters S;
1207
1208   {1,1}
1209
1210on ranpos; characters S;
1211
1212   {2,0}
1213\end{verbatim}
1214
1215\subsubsection{\tt closure}
1216\label{closure}
1217
1218\begin{edssyntax}
1219	closure \meta{EDS}
1220\end{edssyntax}
1221returns the closure of the \meta{EDS} under exterior differentiation.
1222
1223Owing to conflicts with the requirements of a normal form (section
1224\ref{Normal form}), \f{closure} cannot guarantee that the resulting system
1225is closed if the \meta{EDS} contains 0-forms.
1226
1227\subsubsection{\tt derived\_system}
1228\label{derived_system}
1229
1230\begin{edssyntax}
1231	derived\_system \meta{arg}
1232\end{edssyntax}
1233returns the first derived system of \meta{arg}, which must be a Pfaffian
1234\meta{EDS} or \meta{system}. Repeated use gives the derived flag leading to
1235the maximal integrable subsystem.
1236
1237\paragraph{\it Example:}
1238\begin{verbatim}
1239pform {p,r,x,y,z}=0; korder z;
1240derived_system eds({d z - q*d y,d p - e**z*d y,
1241                    d r - e**z*p*d y,d x},{d y});
1242
1243               z            z
1244   EDS({d p - e *d y,d r - e *p*d y,d x},{d y})
1245
1246derived_system ws;
1247
1248               1
1249   EDS({d p - ---*d r,d x},{d y})
1250               p
1251
1252derived_system ws;
1253
1254               1
1255   EDS({d p - ---*d r,d x},{d y})
1256               p
1257\end{verbatim}
1258
1259\subsubsection{\tt dim\_grassmann\_variety}
1260\label{dim_grassmann_variety}
1261
1262\begin{edssyntax}
1263	dim\_grassmann\_variety \meta{EDS}
1264\end{edssyntax}
1265returns the dimension of the Grassmann bundle variety of ordinary integral
1266elements for an \meta{EDS} (cf \f{grassmann\_variety}, section
1267\ref{grassmann_variety}). This number is useful, for example, in Cartan's
1268test. For a nonlinear \meta{EDS}, this can vary from stratum to stratum of
1269the variety, so
1270\begin{edssyntax}
1271	dim\_grassmann\_variety(\meta{EDS},\meta{integral element})
1272\end{edssyntax}
1273returns the dimension of the stratum containing the \meta{integral element}
1274(cf section \ref{Integral elements}).
1275
1276\subsubsection{\tt dim}
1277\label{dim}
1278
1279\begin{edssyntax}
1280	dim \meta{arg}
1281\end{edssyntax}
1282returns the dimension of the manifold underlying \meta{arg},
1283which can be either an \meta{EDS} or a \meta{coframing} (sections \ref{Exterior
1284differential systems}, \ref{Coframings}).
1285
1286\subsubsection{\tt involution}
1287\label{involution}
1288
1289\begin{edssyntax}
1290	involution \meta{EDS}
1291\end{edssyntax}
1292repeatedly prolongs an \meta{EDS} until it reaches involution or
1293inconsistency (cf \f{prolong}, section \ref{prolong}). The system must be
1294in normal form (section \ref{Normal form}) and generated in positive
1295degree. For nonlinear problems, all branches of the prolongation tree are
1296followed. The result is an \meta{EDS} (usually a compound one for
1297nonlinear problems, see section \ref{Exterior differential systems})
1298giving the involutive prolongation. In case some variety couldn't be
1299resolved during the process, the relevant branch is truncated at that point
1300and represented by a system with 0-forms, as with \f{grassmann\_variety}
1301(section \ref{grassmann_variety}). The result of \f{involution} might then
1302{\em not} be in involution.
1303
1304If the \f{edsverbose} switch is on (section \ref{edsverbose}), a trace of
1305the prolongations is produced. See the Janet problem in the test file for
1306an example.
1307
1308\subsubsection{\tt linearise, linearize}
1309\label{linearise}
1310
1311A nonlinear exterior system can be linearised at some point on the
1312manifold with respect to any integral element, yielding a constant
1313coefficient exterior system with the same Cartan characters. In EDS,
1314reference to the point is omitted, so the result is an exterior system
1315linearised with respect to a distribution of integral elements. The syntax
1316is
1317\begin{edssyntax}
1318	linearise(\meta{EDS},\meta{integral element})
1319\end{edssyntax}
1320but \f{linearize} will work just as well. See the isometric embeddings
1321example in the test file.
1322
1323For a quasilinear \meta{EDS} (cf section \ref{quasilinear}),
1324\begin{edssyntax}
1325	linearise \meta{EDS}
1326\end{edssyntax}
1327returns an equivalent exterior system containing only linear generators.
1328
1329\paragraph{\it Example:}
1330\begin{verbatim}
1331f := d u^d x + d v^d y$
1332S := eds({f,d v^f},{d x,d y});
1333
1334   s := EDS({d u^d x + d v^d y,d u^d v^d x},{d x,d y})
1335
1336linearise S;
1337
1338   EDS({d u^d x + d v^d y},{d x,d y})
1339\end{verbatim}
1340
1341\subsubsection{\tt integral\_element}
1342\label{integral_element}
1343
1344\begin{edssyntax}
1345	integral\_element \meta{EDS}
1346\end{edssyntax}
1347returns a random \meta{integral element} of the \meta{EDS} (section
1348\ref{Integral elements}). The system must be in normal form (section
1349\ref{Normal form}) and generated in positive degree. This integral element
1350is found using the method described by Wahlquist \cite{Wahlquist:1993}
1351(essentially the Cartan-K{\"a}hler construction filling in the free variables
1352from each polar system with random integer values). This method can fail on
1353non-involutive systems, or \meta{EDS} objects whose independence conditions
1354indicate a singular flag of integral elements (cf the discussion about
1355Cartan characters, section \ref{characters}).
1356
1357See the isometric embedding problem in the test file for an example.
1358
1359\subsubsection{\tt prolong}
1360\label{prolong}
1361
1362\begin{edssyntax}
1363	prolong \meta{EDS}
1364\end{edssyntax}
1365calculates the prolongation of the \meta{EDS} to the Grassmann bundle
1366variety of integral elements. The system must be in normal form (section
1367\ref{Normal form}) and generated in positive degree. The variety is
1368decomposed using essentially the REDUCE \f{solve} operator. If no solutions
1369can be found, the variety is empty, and the prolongation is the
1370inconsistent \meta{EDS} (section \ref{Exterior differential
1371systems}). Otherwise, the result is a list of variety components, which
1372fall into three classes:
1373\begin{enumerate}
1374\item a submanifold of the Grassmann bundle which surjects onto the base
1375      manifold. The result in this case is the pullback of the Grassmann
1376      bundle contact \meta{EDS} to this submanifold.
1377\item a submanifold of the Grassmann bundle which does not surject onto the
1378      base manifold (ie cannot be presented by solving for Grassmann
1379      bundle fibre coordinates). The result in this case is the pullback of
1380      the original \meta{EDS} to the projection onto the base manifold. If
1381      0-forms arise in bringing the pullback to normal form, these are
1382      solved recursively and the system pulled back again until the result
1383      is generated in positive degree (cf \f{lift}, section \ref{lift}).
1384\item a component of the variety which \f{solve} was not able to resolve
1385      explicitly. The result in this case is the Grassmann bundle contact
1386      \meta{EDS} augmented with the 0-forms which \f{solve} couldn't
1387      treat. This can be extracted from the result of \f{prolong} and
1388      manipulated further ``by hand'',
1389\end{enumerate}
1390The result returned by \f{prolong} will, in general, be a compound
1391\meta{EDS} (section \ref{Exterior differential systems}). If the switch
1392\f{edsverbose} (section \ref{edsverbose}) is on, a trace of the
1393prolongation is printed.
1394
1395The \meta{map}s which are generated in a \f{prolong} call are available
1396subsequently in the global variable \f{pullback\_maps}. This facility is
1397still very primitive and unstructured. It should be extended to the
1398\f{involution} operator as well...
1399
1400\paragraph{\it Example:}
1401\begin{verbatim}
1402pde := {u(-y,-y)=u(-x,-x)**2/2,u(-x,-y)=u(-x,-x)};
1403
1404                       2
1405                 (u   )
1406                   x x
1407   pde := {u   =---------,u   =u   }
1408            y y     2      x y  x x
1409
1410S := pullback(contact(2,{x,y},{u}),pde)$
1411on edsverbose;
1412prolong S;
1413   Reduction using new equations:
1414   u   =1
1415    x x
1416   Prolongation using new equations:
1417   u     =0
1418    x x x
1419   u     =0
1420    x x y
1421
1422   {EDS({d u - u *d x - u *d y,
1423                x        y
1424
1425         d u  - d x - d y,
1426            x
1427                       1
1428         d u  - d x - ---*d y},{d x,d y}),
1429            y          2
1430
1431    EDS({d u - u *d x - u *d y,
1432                x        y
1433
1434         d u  - u   *d x - u   *d y,
1435            x    x x        x x
1436                                  2
1437                            (u   )
1438                              x x
1439         d u  - u   *d x - ---------*d y,
1440            y    x x           2
1441
1442         d u   },{d x,d y})}
1443            x x
1444\end{verbatim}
1445
1446\subsubsection{\tt tableau}
1447\label{tableau}
1448
1449\begin{edssyntax}
1450	tableau \meta{EDS}
1451\end{edssyntax}
1452returns the \meta{tableau} (section \ref{Tableaux}) of a quasilinear
1453Pfaffian \meta{EDS}, which must be in normal form and generated in positive
1454degree.
1455
1456\paragraph{\it Example:}
1457\begin{verbatim}
1458tableau contact(2,{x,y},{u});
1459
1460   [d u     d u   ]
1461   [   x x     x y]
1462   [              ]
1463   [d u     d u   ]
1464   [   x y     y y]
1465\end{verbatim}
1466
1467\subsubsection{\tt torsion}
1468\label{torsion}
1469
1470For a semilinear Pfaffian exterior differential system, the torsion
1471corresponds to first-order integrability conditions for the
1472system. Specifically,
1473\begin{edssyntax}
1474	torsion \meta{EDS}
1475\end{edssyntax}
1476returns a list of 0-forms describing the projection of the Grassmann bundle
1477variety of integral elements onto the base manifold. If the switch
1478\f{edssloppy} (section \ref{edssloppy}) is on, quasilinear systems are
1479treated as semilinear. A semilinear system is involutive if both the
1480torsion is empty, and Cartan's test for the reduced characters is
1481satisfied.
1482
1483\paragraph{\it Example:}
1484\begin{verbatim}
1485S := pullback(contact(2,{x,y},{u}),
1486              {u(-y,-y)=u(-x),u(-x,-y)=u});
1487
1488   s := EDS({d u - u *d x - u *d y,
1489                    x        y
1490
1491             d u  - u   *d x - u*d y,
1492                x    x x
1493
1494             d u  - u*d x - u *d y},{d x,d y})
1495                y            x
1496torsion s;
1497
1498   {u    - u }
1499     x x    y
1500\end{verbatim}
1501
1502\subsubsection{\tt grassmann\_variety}
1503\label{grassmann_variety}
1504
1505Given an exterior system $(S,\Omega,M)$ with independence condition of
1506rank $n$, the Grassmann bundle of $n$-planes over $M$ contains a
1507submanifold characterised by those $n$-planes compatible with the
1508independence condition. All integral elements must lie in this
1509submanifold. The operator
1510\begin{edssyntax}
1511	grassmann\_variety \meta{EDS}
1512\end{edssyntax}
1513returns the contact system for this part of the Grassmann bundle augmented
1514by the 0-forms specifying the variety of integral elements of $S$. In cases
1515where \f{prolong} (section \ref{prolong}) is unable to decompose the
1516variety automatically, \f{grassmann\_variety} can be used in combination
1517with \f{zero\_forms} (section \ref{zero_forms}) to calculate the variety
1518conditions. Any solutions found ``by hand'' can be incorporated using
1519\f{pullback} (section \ref{pullback}).
1520
1521\paragraph{\it Example:}
1522Using the system from the example in section \ref{prolong}:
1523\begin{verbatim}
1524zero_forms grassmann_variety S;
1525
1526   { - u     *u    + u     ,
1527        x x x  x x    x x y
1528
1529     - u      + u     }
1530        x x x    x x y
1531
1532solve ws;
1533
1534   Unknowns: {u     ,u     ,u   }
1535               x x x  x x y  x x
1536
1537   {{u     =0,u     =0},
1538      x x y    x x x
1539
1540    {u   =1,u     =u     }}
1541      x x    x x x  x x y
1542\end{verbatim}
1543The second solution contains an integrability condition.
1544
1545
1546%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1547
1548\subsection{Testing exterior systems}
1549\label{Testing exterior systems}
1550
1551The operators in this section allow various properties of an \meta{EDS} to
1552be checked. These checks are done automatically when required on entry to
1553the routines in sections \ref{Manipulating EDS objects} and \ref{Analysing
1554exterior systems}, but sometimes it is useful to know explicitly. The
1555result is either a \f{1} (true) or a \f{0} (false), so the operators can be
1556used in boolean expressions within \f{if} statements etc.  Since checking
1557these properties can be very time-consuming, the result of the first test
1558is stored on the \meta{properties} record of an \meta{EDS} to avoid
1559re-checking. This memory can be cleared using the \f{cleanup} operator.
1560
1561\subsubsection{\tt closed}
1562\label{closed}
1563
1564\begin{edssyntax}
1565	closed \meta{arg}
1566\end{edssyntax}
1567checks whether \meta{arg}, which may be an \meta{EDS}, a \meta{system} or a
1568single \meta{p-form} is closed under exterior differentiation.
1569
1570\paragraph{\it Examples:}
1571\begin{verbatim}
1572closed(x*d x);
1573
1574   1
1575
1576closed {d u - p*d x,d p - p/y*d x};
1577
1578   0
1579\end{verbatim}
1580
1581\subsubsection{\tt involutive}
1582\label{involutive}
1583
1584\begin{edssyntax}
1585	involutive \meta{EDS}
1586\end{edssyntax}
1587checks whether \meta{EDS} is involutive, using Cartan's test. See the test
1588file for examples.
1589
1590\subsubsection{\tt pfaffian}
1591\label{pfaffian}
1592
1593\begin{edssyntax}
1594	pfaffian \meta{EDS}
1595\end{edssyntax}
1596checks whether \meta{EDS} is a Pfaffian system: generated by a set of
15971-forms and their exterior derivatives. The \meta{EDS} must be in normal
1598form (section \ref{Normal form}) for this to succeed. Systems with 0-forms
1599are non-Pfaffian by definition in EDS.
1600
1601\paragraph{\it Examples:}
1602\begin{verbatim}
1603pfaffian eds({d u - p*d x - q*d y,d p^d x+d q^d y},{d x,d y});
1604
1605   1
1606
1607pfaffian eds({d u - p*d x - q*d y,d p^d q},{d x,d y});
1608
1609   0
1610\end{verbatim}
1611
1612\subsubsection{\tt quasilinear}
1613\label{quasilinear}
1614
1615An exterior system $(S,\Omega,M)$ is said to be {\em quasilinear} if, when
1616written in the standard cobasis $\{\theta^a,\pi^\rho,\omega^i\}$ (section
1617\ref{Standard cobasis}), its {\em closure} can be generated by a set of
1618forms which are of combined total degree 1 in $\{\theta^a,\pi^\rho\}$. The
1619operation
1620\begin{edssyntax}
1621	quasilinear \meta{EDS}
1622\end{edssyntax}
1623checks whether the {\em closure} of \meta{EDS} is a quasilinear system. The
1624\meta{EDS} must be in normal form (section \ref{Normal form}) for this to
1625succeed. Systems with 0-forms are not quasilinear by definition in EDS.
1626
1627\paragraph{\it Examples:}
1628\begin{verbatim}
1629% A system where pi(rho)={d p,d q}, and which looks non-linear
1630
1631S := eds({d u - p*d x - q*d y,d p^d q^d y},{d x,d y})$
1632
1633quasilinear S;
1634
1635   1
1636
1637linearise closure S;
1638
1639   EDS({d u - p*d x - q*d y,
1640         - d p^d x - d q^d y},{d x,d y})
1641
1642% One which is really non-linear
1643
1644quasilinear eds({d u - p*d x - q*d y,d p^d q},{d x,d y});
1645
1646   0
1647\end{verbatim}
1648
1649\subsubsection{\tt semilinear}
1650\label{semilinear}
1651
1652Let $(S,\Omega,M)$ be such that, written in the standard cobasis
1653$\{\theta^a,\pi^\rho,\omega^i\}$ (section \ref{Standard cobasis}), its
1654closure is explicitly quasilinear. If the coefficients of $\{\pi^\rho\}$
1655depend only on the independent variables, then the system is said to be
1656{\em semilinear}.  The operation
1657\begin{edssyntax}
1658	semilinear \meta{EDS}
1659\end{edssyntax}
1660checks whether {\em closure} of \meta{EDS} is a semilinear system. The
1661\meta{EDS} must be in normal form (section \ref{Normal form}) for this to
1662succeed. Systems with 0-forms are not semilinear by definition in EDS.
1663
1664For semilinear systems, the expressions determining the Grassmann bundle
1665variety of integral elements will be linear in the Grassmann bundle fibre
1666coordinates, with coefficients which depend only upon the independent
1667variables. This allows alternative, faster algorithms to be used in
1668analysis.
1669
1670If the switch \f{edssloppy} is on (section \ref{edssloppy}), all
1671quasilinear systems are treated as if they are semilinear.
1672
1673\paragraph{\it Examples:}
1674\begin{verbatim}
1675% A semilinear system: @(u,y) = y*@(u,x)
1676S := eds({d u - p*d x - p*y*d y},{d x,d y})$
1677semilinear S;
1678
1679   1
1680% A quasilinear system: @(u,y) = u*@(u,x)
1681S := eds({d u - p*d x - p*u*d y},{d x,d y})$
1682quasilinear S;
1683
1684   1
1685semilinear S;
1686
1687   0
1688on edssloppy;
1689semilinear S;
1690
1691   1
1692\end{verbatim}
1693
1694\subsubsection{\tt frobenius}
1695\label{frobenius}
1696
1697\begin{edssyntax}
1698	frobenius \meta{arg}
1699\end{edssyntax}
1700checks whether \meta{arg}, which may be an \meta{EDS} or a \meta{system},
1701is a completely integrable Pfaffian system.
1702
1703\paragraph{\it Examples:}
1704\begin{verbatim}
1705if frobenius eds({d u -p*(d x+d y)},d x^d y) then yes else no;
1706
1707   no
1708
1709if frobenius eds({d u -u*(d x+d y)},d x^d y) then yes else no;
1710
1711   yes
1712\end{verbatim}
1713
1714\subsubsection{\tt equiv}
1715\label{equiv}
1716
1717\begin{edssyntax}
1718	\meta{EDS1} equiv \meta{EDS2}
1719\end{edssyntax}
1720checks whether \meta{EDS1} and \meta{EDS2} are algebraically equivalent as
1721exterior systems (ie generate the same algebraic ideal).
1722
1723\paragraph{\it Examples:}
1724\begin{verbatim}
1725S1 := contact(2,{x,y},{u})$
1726S2 := augment(S1,foreach f in system S1 join {d f,d x^d f})$
1727if S1 equiv S2 then yes else no;
1728
1729   no
1730
1731if closure S1 equiv S2 then yes else no;
1732
1733   yes
1734\end{verbatim}
1735
1736
1737
1738%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1739
1740\subsection{Switches}
1741\label{Switches}
1742
1743EDS provides several switches to govern the display of information and
1744speed or reliability of the results.
1745
1746\subsubsection{\tt edsverbose}
1747\label{edsverbose}
1748
1749If \f{edsverbose} is \f{on}, a number of operators (eg \f{prolong},
1750\f{involution}) will display additional information as the calculation
1751progresses. For large problems, this can produce too much output to be
1752useful, so \f{edsverbose} is \f{off} by default. This allows only warning
1753(\f{***}) and error (\f{*****}) messages to be printed.
1754
1755\subsection{\tt edsdebug}
1756\label{edsdebug}
1757
1758If \f{edsdebug} is \f{on}, EDS produces copious quantities of information,
1759in addition to that produced with \f{edsverbose} on. This information is
1760for debugging purposes, and may not make much sense without knowledge of
1761the inner workings of EDS. \f{edsdebug} is \f{off} by default.
1762
1763\subsection{\tt edssloppy}
1764\label{edssloppy}
1765
1766Normally, EDS will not divide by any expressions it does not know to be
1767nowhere zero. If an \meta{EDS} can be brought into normal form only by
1768restricting away from the zeroes of some coefficients, then these
1769restrictions should be made using the \f{restrict} operator (section
1770\ref{restrict}). However, if \f{edssloppy} is \f{on}, then EDS will, as a
1771last resort, divide by whatever is necessary to bring an \meta{EDS} into
1772normal form, invert a transformation, and so on. The relevant restrictions
1773will be made automatically, so no inconsistency should arise. In addition,
1774with \f{edssloppy} \f{on}, all quasilinear systems are treated as if they
1775were semilinear (cf section \ref{semilinear}). \f{edssloppy} is \f{off} by
1776default.
1777
1778
1779\subsection{\tt edsdisjoint}
1780\label{edsdisjoint}
1781
1782When decomposing a variety into (something like) smooth components, EDS
1783normally pays no attention to whether the components are disjoint. Turning
1784\f{on} the switch \f{edsdisjoint} forces EDS to ensure the decomposition is
1785a disjoint union (cf \f{disjoin}, section \ref{disjoin}). For large
1786problems this can lead to a proliferation of singular pieces. If some of
1787these turn out to be uninteresting, EDS cannot re-join the remaining pieces
1788into a smaller decomposition. \f{edsdisjoint} is \f{off} by default.
1789
1790\subsection{\tt ranpos, genpos}
1791\label{ranpos}
1792
1793When calculating Cartan characters (eg to check involution), EDS uses the
1794independence condition of an \meta{EDS} {\em as presented} to define a flag
1795of integral elements. Depending on the cobasis and ordering, this flag may
1796be singular, leading to incorrect Cartan characters. To overcome this
1797problem, the switches \f{ranpos} and \f{genpos} provide a means to select
1798other flags. With \f{ranpos} \f{on}, a flag defined by taking a random
1799linear transformation of the 1-forms in the independence condition will be
1800used. The results may still be incorrect, but the likelihood is much lower.
1801With \f{genpos} on, a generic (upper triangular) transformation is
1802used. this guarantees the correct Cartan characters, but reduces
1803performance too much to be useful for large problems. Both switches are
1804\f{off} by default, and switching one \f{on} automatically switches the other
1805\f{off}. See section \ref{characters} for an example.
1806
1807
1808%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1809
1810\subsection{Auxiliary functions}
1811\label{Auxiliary functions}
1812
1813This section describes various operators designed to ease working with
1814exterior forms and exterior systems in REDUCE.
1815
1816\subsubsection{\tt invert}
1817\label{invert}
1818
1819\begin{edssyntax}
1820	invert \meta{transform}
1821\end{edssyntax}
1822returns a \meta{transform} which is inverse to the given one (section
1823\ref{transform}). If the \meta{transform} given is only partial, the
18241-form \meta{kernel}s to eliminate are chosen based on the prevailing
1825kernel ordering. If a background coframing (section \ref{Background
1826coframing}) is active, and \f{edssloppy} (section \ref{edssloppy}) is
1827\f{off}, \f{invert} will divide by nowhere-zero expressions only.
1828
1829\paragraph{\it Examples:}
1830\begin{verbatim}
1831set_coframing coframing{u,v,w,x,y,z}$
1832invert {d u = 3*d x - d y + 5*d z, d v = d x + 2*d z};
1833
1834   {d x=d v - 2*d z,d y= - d u + 3*d v - d z}
1835
1836% A y coefficient forces a different choice of inverse
1837
1838invert {d u = 3*d x - y*d y + 5*d z, d v = d x + 2*d z};
1839
1840   {d x=2*d u - 5*d v + 2*d y*y,d z= - d u + 3*d v - d y*y}
1841\end{verbatim}
1842
1843
1844% \subsubsection{\tt exact}
1845% \label{exact}
1846
1847% \begin{edssyntax}
1848% 	exact \meta{expr}
1849% \end{edssyntax}
1850% is a boolean operator which tests if the given expression is an exact
1851% \meta{kernel} (ie $\deriv x$ for some variable $x$). More general exact
1852% expressions are not recognised
1853
1854% \paragraph{\it Examples:}
1855% \begin{verbatim}
1856% if exact d x then yes;
1857
1858%    yes
1859
1860% if exact d(x+y) then yes else no;
1861
1862%    no
1863% \end{verbatim}
1864
1865\subsubsection{\tt linear\_divisors}
1866\label{linear_divisors}
1867
1868\begin{edssyntax}
1869	linear\_divisors \meta{pform}
1870\end{edssyntax}
1871returns a basis for the space of linear divisors (1-form factors) of a
1872\meta{p-form}.
1873
1874\paragraph{\it Example:}
1875\begin{verbatim}
1876f := d p^d q^d u - d p^d q^d x*x + d p^d q^d z*y
1877     - d u^d v^d x*x + d u^d v^d z*y + d u^d x^d y
1878     + d x^d y^d z*y$
1879linear_divisors f;
1880
1881   {d u - d x*x + d z*y}
1882\end{verbatim}
1883
1884\subsubsection{\tt exfactors}
1885\label{exfactors}
1886\begin{edssyntax}
1887	exfactors \meta{pform}
1888\end{edssyntax}
1889returns a list of factors for a \meta{p-form}, consisting of the linear
1890divisors plus one more factor. The list is ordered such that the original
1891expression is a product of the factors in this order.
1892
1893\paragraph{\it Example:}
1894\begin{verbatim}
1895f := d p^d q^d u - d p^d q^d x*x + d p^d q^d z*y
1896     - d u^d v^d x*x + d u^d v^d z*y + d u^d x^d y
1897     + d x^d y^d z*y$
1898exfactors f;
1899
1900   {d p^d q - d v^d x*x + d v^d z*y + d x^d y,
1901    d u - d x*x + d z*y}
1902
1903f - (part(ws,0) := ^);
1904
1905   0
1906\end{verbatim}
1907
1908\subsubsection{\tt index\_expand}
1909\label{index_expand}
1910
1911EXCALC caters for indexed variables in which various index names have been
1912assigned a specific set of values. Any expression with {\em paired} indices
1913is expanded automatically to an explicit sum over the index set (provided
1914the EXCALC command \f{nosum} has not been applied). The EDS operator
1915\f{index\_expand} is designed to expand an expression with {\em free}
1916indices to an explicit list over the index set, taking some limited account
1917of the possible index symmetries.
1918
1919The syntax is
1920\begin{edssyntax}
1921	index\_expand \meta{arg}
1922\end{edssyntax}
1923where \meta{arg} can be an expression, a rule or equation or a boolean
1924expression, or an arbitrarily nested list of these items. The result is a
1925flattened list.
1926
1927\paragraph{\it Examples:}
1928\begin{verbatim}
1929indexrange {i,j,k}={1,2,3},{a,b}={x,y};
1930pform {e(i),o(a,b)}=1;
1931index_expand(e(i)^e(j));
1932
1933     1  2  1  3  2  3
1934   {e ^e ,e ^e ,e ^e }
1935
1936index_expand{o(-a,-b)+o(-b,-a) => 0};
1937
1938   {2*o    => 0,o    + o    => 0, 2*o    => 0}
1939       x x       x y    y x          y y
1940\end{verbatim}
1941
1942
1943\subsubsection{\tt pde2jet}
1944\label{pde2jet}
1945
1946A PDE system can be encoded into EDS jet variable notation using
1947\f{pde2jet}. The syntax is as for \f{pde2eds}:
1948\begin{edssyntax}
1949	pde2jet(\meta{pde}\optional{,\meta{dependent},\meta{independent}})
1950\end{edssyntax}
1951where \meta{pde} is a list of equations or expressions (implicitly assumed
1952to vanish) specifying the PDE system using either the standard REDUCE
1953\f{df} operator, or the EXCALC \f{@} operator. If the optional variable
1954lists \meta{dependent} and \meta{independent} are not given, \f{pde2jet}
1955infers them from the expressions in \meta{pde}, using the same rules as
1956\f{pde2eds} (section \ref{pde2eds}).
1957
1958The result of \f{pde2jet} is the input \meta{pde}, with all derivatives
1959of dependent variables replaced by indexed 0-form variables from the
1960appropriate jet bundle. Unlike \f{pde2eds}, \f{pde2jet} does not disturb
1961the variable dependencies.
1962
1963\paragraph{\it Example:}
1964\begin{verbatim}
1965depend u,x,y; depend v,x,y;
1966pde2jet({df(u,y,y)=df(v,x),df(v,y)=y*df(v,x)});
1967
1968   {u   =v ,
1969     y y  x
1970
1971    v =v *y}
1972     y  x
1973\end{verbatim}
1974
1975
1976\subsubsection{\tt mkdepend}
1977\label{mkdepend}
1978
1979The \f{mkdepend} operator is intended for restoring the dependencies
1980destroyed by a call to \f{pde2eds} (section \ref{pde2eds}). The syntax is
1981\begin{edssyntax}
1982	mkdepend \{\meta{list of variables},$\cdots$\}
1983\end{edssyntax}
1984where the first variable in each list is declared to depend on the
1985remaining ones.
1986
1987
1988\subsubsection{\tt disjoin}
1989\label{disjoin}
1990
1991The \f{disjoin} operator takes a list of \meta{maps} (section \ref{Maps})
1992describing a decomposition of a variety, and returns an equivalent list of
1993\meta{maps} such that the components are all disjoint. The background
1994coframing (section \ref{Background coframing}) should be set appropriately
1995before calling \f{disjoin}. The syntax is
1996\begin{edssyntax}
1997	disjoin \{\meta{map},$\cdots$\}
1998\end{edssyntax}
1999
2000\paragraph{\it Example:}
2001\begin{verbatim}
2002set_coframing coframing {x,y};
2003disjoin {{x=0},{y=0}};
2004
2005   {{y=0,x neq 0},{x=0,y neq 0},{y=0,x=0}}
2006\end{verbatim}
2007
2008\subsubsection{\tt cleanup}
2009\label{cleanup}
2010
2011To avoid lengthy recomputations, EDS stores various properties (section
2012\ref{Properties}) and also many intermediate results in a hidden list
2013attached to each \meta{EDS}. When EDS detects a change in circumstances
2014which could make the information innacurate, it is discarded and
2015recomputed. Unfortunately, this mechanism is not perfect, and occasionally
2016misses something which renders the results incorrect. In such a case, it is
2017possible to discard all the properties and hidden information using the
2018\f{cleanup} operator. The call
2019\begin{edssyntax}
2020	cleanup \meta{arg}
2021\end{edssyntax}
2022returns a copy of \meta{arg}, which may be a \meta{coframing} or an
2023\meta{EDS} which has been stripped of this auxilliary information. Note
2024that the original input (with possible innacuracies) is left undisturbed by
2025this operation: the result of \f{cleanup} must be used.
2026
2027\paragraph{\it Example:}
2028\begin{verbatim}
2029% An erroneous property assertion
2030S := eds({d u - p*d x},{d x,d y},{closed = 1})$
2031closure S;
2032
2033   EDS({d u - p*d x},{d x,d y});
2034
2035S := cleanup S$
2036properties S;
2037
2038   {}
2039
2040closure S;
2041
2042   EDS({d u - p*d x, - d p^d x},{d x,d y});
2043\end{verbatim}
2044
2045\subsubsection{\tt reorder}
2046\label{reorder}
2047
2048All operations with a \meta{coframing} or \meta{EDS} temporarily override
2049the prevailing kernel order with their own. Thus the ordering of the
2050cobasis elements in a \meta{coframing} operator remains fixed, even when a
2051REDUCE \f{korder} statement is issued. To enforce conformity to the
2052prevailing kernel order, the \f{reorder} operator is available. The call
2053\begin{edssyntax}
2054	reorder \meta{arg}
2055\end{edssyntax}
2056returns a copy of \meta{arg}, which may be a \meta{coframing} or an
2057\meta{EDS} which has been reordered. Note that the original input is left
2058undisturbed by this operation: the result of \f{reorder} must be used.
2059
2060\paragraph{\it Example:}
2061\begin{verbatim}
2062M := coframing {x,y,z};
2063
2064   m := coframing({d x,d y,d z},{x,y,z},{},{})
2065
2066korder z,y,x;
2067reorder m;
2068
2069   coframing({d z,d y,d x},{z,y,x},{},{})
2070\end{verbatim}
2071
2072
2073
2074%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2075
2076\subsection{Experimental facilities}
2077\label{Experimental facilities}
2078
2079This section describes various operators in EDS which either not
2080algorithmically well-founded, or whose implementation is very unstable, or
2081which have known bugs.
2082
2083
2084\subsubsection{\tt poincare}
2085\label{poincare}
2086
2087The \f{poincare} operator implements the homotopy integral found in the
2088proof of Poincar{\'e}'s lemma. The expansion point is the origin of the
2089coordinates found in the input. The syntax is
2090\begin{edssyntax}
2091	poincare \meta{p-form}
2092\end{edssyntax}
2093If \f{f} is a $p$-form, then \f{poincare f} is a $(p-1)$-form, and
2094\f{f - poincare d f} is an exact $p$-form.
2095
2096\paragraph{\it Examples:}
2097\begin{verbatim}
2098poincare(3*d x^d y^d z);
2099
2100   d x^d y*z - d x^d z*y + d y^d z*x
2101
2102d ws;
2103
2104   3*d x^d y^d z
2105
21062*x*d y - poincare d(2*x*d y);
2107
2108   d x*y + d y*x
2109\end{verbatim}
2110
2111
2112\subsubsection{\tt invariants}
2113\label{invariants}
2114
2115The \f{invariants} operator implements the algorithm implicit in the
2116inductive proof of the Frobenius theorem. The syntax is
2117\begin{edssyntax}
2118	invariants(\meta{system}\optional{,\meta{list of coordinate}})
2119\end{edssyntax}
2120where \meta{system} is a set of 1-forms satisfying the Frobenius condition.
2121The optional second argument specifies the order in which the coordinates
2122are projected away to get a trivially integrable system.  The CRACK and
2123ODESOLVE packages are used to solve the ODE systems which arise, so the
2124limitations of these packages constrain the scope of this operator as well.
2125
2126\paragraph{\it Examples:}
2127\begin{verbatim}
2128invariants {d x*y + d y*x*z + d z*log(y)*x*y};
2129
2130        z
2131   { - y *x}
2132
2133invariants {d y*z**2 - d y*z + d z*y,d x*(1 - z) + d z*x};
2134
2135       x     y*(z - 1)
2136   {-------,-----------}
2137     z - 1       z
2138\end{verbatim}
2139
2140
2141\subsubsection{\tt symbol\_relations}
2142\label{symbol_relations}
2143
2144The \f{symbol\_relations} operator finds the linear relations between the
2145entries of the tableau matrix for a quasilinear system. The syntax is
2146\begin{syntax}
2147  \f{symbol\_relations}(\meta{EDS},\,\meta{identifier})
2148\end{syntax}
2149where \meta{EDS} is a quasilinear Pfaffian system and \meta{identifier} is
2150used to create a 2-indexed 1-form which will label the tableau entries.
2151
2152\paragraph{\it Example:}
2153\begin{verbatim}
2154S := pde2eds {df(u,y,y) = df(u,x,x)};
2155
2156   s := EDS({d u - u *d x - u *d y,
2157                    x        y
2158
2159             d u  - u   *d x - u   *d y,
2160                x    x x        x y
2161
2162             d u  - u   *d x - u   *d y},d x^d y)
2163                y    x y        x x
2164
2165symbol_relations(S,pi);
2166
2167      1       2
2168   {pi    - pi   ,
2169        x       y
2170      1       2
2171    pi    - pi   }
2172        y       x
2173\end{verbatim}
2174
2175\subsubsection{\tt symbol\_matrix}
2176\label{symbol_matrix}
2177
2178The \f{symbol\_matrix} operator returns the symbol matrix for a quasilinear
2179system in terms of a given variable. The syntax is
2180\begin{syntax}
2181  \f{symbol\_matrix}(\meta{EDS},\,\meta{identifier})
2182\end{syntax}
2183where \meta{EDS} is a quasilinear Pfaffian system and \meta{identifier} is
2184used to create an indexed 0-form which will parameterise the matrix.
2185
2186\paragraph{\it Example:}
2187\begin{verbatim}
2188% With the same system as for symbol_relations:
2189
2190symbol_matrix(S,xi);
2191
2192   [xi    - xi ]
2193   [  x       y]
2194   [           ]
2195   [xi    - xi ]
2196   [  y       x]
2197\end{verbatim}
2198
2199\subsubsection{\tt characteristic\_variety}
2200\label{characteristic_variety}
2201
2202The \f{characteristic\_variety} operator returns the equations specifying
2203the characteristic variety for a quasilinear
2204system in terms of a given variable. The syntax is
2205\begin{syntax}
2206  \f{characteristic\_variety}(\meta{EDS},\,\meta{identifier})
2207\end{syntax}
2208where \meta{EDS} is a quasilinear Pfaffian system and \meta{identifier} is
2209used to create an indexed 0-form variable. The result is a list of two
2210lists: the first being the variety equations and the second the variables
2211involved.
2212
2213\paragraph{\it Example:}
2214\begin{verbatim}
2215% With the same system as for symbol_relations:
2216
2217characteristic_variety(S,xi);
2218
2219          2        2
2220   {{(xi )  - (xi ) },
2221        x        y
2222    {xi ,xi }}
2223       x   y
2224\end{verbatim}
2225
2226
2227%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2228
2229% \subsection{Examples}
2230% \label{Examples}
2231
2232% This section contains some longer examples showing complete calculations
2233% using the facilities of EDS.
2234
2235% \subsubsection{Twisting type-N solutions to Einstein's equations}
2236% \label{Twisting type-N solutions to Einstein's equations}
2237
2238% \subsubsection{Isometric immersions}
2239% \label{Isometric immersions}
2240
2241% \subsubsection{Riemannian submersions}
2242% \label{Riemannian submersions}
2243
2244% \subsubsection{The ``Janet'' problem}
2245% \label{The ``Janet'' problem}\label{janet}
2246
2247%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2248
2249%\newpage
2250%\appendix
2251\subsection{Command tables}\label{tables}
2252
2253
2254\def\literal#1{\hbox{\texttt{#1}}}
2255
2256
2257% Command Table environment
2258
2259\newsavebox{\commandtablecaption}
2260\newenvironment{commandtable}[2]
2261   {%\savebox\commandtablecaption{#1} % save caption for the end
2262    \def\mkcaption{\caption{#1}\label{#2}}
2263    \def\header##1{\rule[-.7\baselineskip]{0pt}{2\baselineskip}\textbf{##1}}
2264    \table[htbp]\small\tabular{|p{.4\hsize}|p{.5\hsize}|}\hline}
2265   {\endtabular%\caption{\usebox\commandtablecaption}
2266    \mkcaption\endtable}
2267\def\nl{\par}             % for use within columns
2268
2269% Text
2270
2271The tables in this appendix summarise the commands available in EDS.
2272More detailed descriptions of the syntax and function of each command
2273are to be found in the earlier sections. In each case, examples of
2274the command are given, whereby the argument variables have the following
2275types (see section \ref{EDS data structures and concepts}):
2276
2277\bigskip
2278\begin{tabular}{ll}
2279$E$, $E'$   &\meta{EDS}\\
2280$S$         &\meta{system}\\
2281$M$, $N$    &\meta{coframing}, or a \meta{system} specifying a \meta{coframing}\\
2282$r$         &\meta{integer}\\
2283$\Omega$    &\meta{p-form}\\
2284$f$         &\meta{map}\\
2285$rsx$       &\meta{list of inequalities}\\
2286$cob$       &\meta{list of 1-form variables}\\
2287$crd$, $dep$, $ind$
2288            &\meta{list of 0-form variables}\\
2289$drv$       &\meta{list of rules for exterior derivatives}\\
2290$pde$       &\meta{list of expressions or equations}\\
2291$X$         &\meta{transform}\\
2292$T$         &\meta{tableau}\\
2293$P$         &\meta{integral element}\\
2294\end{tabular}
2295
2296\begin{commandtable}{Commands for constructing EDS objects}{constructors}
2297\header{Command}
2298    &\header{Function}\\\hline
2299\literal{coframing($cob$,$crd$,$rsx$,$drv$)}
2300    &constructs a \meta{coframing} with the given cobasis $cob$, coordinates $crd$,
2301     restrictions $rsx$ and structure equations $drv$: $crd$, $rsx$ and $drv$
2302     are optional\\\hline
2303\literal{coframing($S$)}
2304    &constructs a \meta{coframing} capable of supporting the given
2305     \meta{system}\\\hline
2306\literal{eds($S$,$\Omega$,$M$)}
2307    &constructs a simple \meta{EDS} object with given system and independence
2308     condition: if $M$ is not supplied, it is deduced from the rest\\\hline
2309\literal{contact($r$,$M$,$N$)}
2310    &constructs the \meta{EDS} for the contact system of the jet bundle
2311     $J^r(M,N)$\\\hline
2312\literal{pde2eds($pde$,$dep$,$ind$)}
2313    &converts a PDE system to an EDS: dependent and independent
2314    variables are deduced if they are not specified (variable dependencies
2315    are removed)\\\hline
2316\literal{set\_coframing($M$)}\nl
2317\literal{set\_coframing($E$)}
2318    &sets background coframing and returns previous one\\\hline
2319\literal{set\_coframing()}
2320    &clears background coframing and returns previous one\\\hline
2321\end{commandtable}
2322
2323
2324\begin{commandtable}{Commands for inspecting EDS objects}{selectors}
2325\header{Command}
2326    &\header{Function}\\\hline
2327\literal{coframing($E$)}
2328    &extracts the underlying \meta{coframing}\\\hline
2329\literal{coframing()}
2330    &returns the current background coframing\\\hline
2331\literal{cobasis($M$)}\nl \literal{cobasis($E$)}
2332    &extracts the underlying cobasis\\\hline
2333\literal{coordinates($M$)}\nl \literal{coordinates($E$)}
2334    &extracts the coordinates\\\hline
2335\literal{structure\_equations($M$)}\nl \literal{structure\_equations($E$)}
2336    &extracts the rules for exterior derivatives for cobasis and
2337     coordinates\\\hline
2338\literal{restrictions($M$)}\nl \literal{restrictions($E$)}
2339    &extracts the inequalities describing the restrictions
2340     in the \meta{coframing}\\\hline
2341\literal{system($E$)}
2342    &extracts the \meta{system} part of $E$\\\hline
2343\literal{independence($E$)}
2344    &extracts the independence condition from $E$ as a Pfaffian
2345     \meta{system}\\\hline
2346\literal{properties($E$)}
2347    &returns the currently known properties of the \meta{EDS} $E$ as a list of
2348     equations \meta{keyword}$ = $\meta{value}\\\hline
2349\literal{one\_forms($E$)}\nl \literal{one\_forms($S$)}
2350    &selects the 1-forms from a system\\\hline
2351\literal{zero\_forms($E$)}\nl \literal{zero\_forms($S$)}
2352    &selects the 0-forms from a system\\\hline
2353\end{commandtable}
2354
2355
2356\begin{commandtable}{Commands for manipulating EDS objects}{manipulators}
2357\header{Command}
2358    &\header{Function}\\\hline
2359\literal{augment($E$,$S$)}
2360    &appends the extra forms in $S$ to the system in $E$\\\hline
2361\literal{$M$ cross $N$}\nl \literal{$E$ cross $N$}
2362    &forms the direct product of two coframings: an \meta{EDS} $E$ is lifted
2363     to the extended space\\\hline
2364\literal{pullback($E$,$f$)}\nl \literal{pullback($S$,$f$)}\nl \literal{pullback($\Omega$,$f$)}
2365    &pulls back the first argument using the \meta{map} $f$\\\hline
2366\literal{pullback($M$,$f$)}
2367    &returns a \meta{coframing} $N$ suitable as the source for $f:N\to M$\\\hline
2368\literal{restrict($E$,$f$)}\nl \literal{restrict($S$,$f$)}\nl \literal{restrict($\Omega$,$f$)}
2369    &restricts the first argument to the points specified by the
2370     \meta{map} $f$\\\hline
2371\literal{restrict($M$,$f$)}
2372    &adds the restrictions in $f$ to $M$\\\hline
2373\literal{transform($M$,$X$)}\nl \literal{transform($E$,$X$)}\nl
2374\literal{transform($S$,$X$)}\nl \literal{transform($\Omega$,$X$)}
2375    &applies the change of cobasis $X$ to the first argument: for a \meta{coframing}
2376     $M$ or an \meta{EDS} $E$, $X$ may be specified in either the forward or
2377     reverse direction\\\hline
2378\literal{lift($E$)}
2379    &eliminates any 0-forms in $E$ by solving and pulling back\\\hline
2380\end{commandtable}
2381
2382
2383\begin{commandtable}{Commands for analysing exterior systems}{analysers}
2384\header{Command}
2385    &\header{Function}\\\hline
2386\literal{cartan\_system($E$)}\nl \literal{cartan\_system($S$)}\nl \literal{cartan\_system($\Omega$)}
2387    &calculates the Cartan system (associated Pfaff system, retracting
2388     space): no differentiations are performed\\\hline
2389\literal{cauchy\_system($E$)}\nl \literal{cauchy\_system($S$)}\nl \literal{cauchy\_system($\Omega$)}
2390    &calculates the Cauchy system: the Cartan system of the closure under
2391     exterior differentiation\\\hline
2392\literal{characters($E$)} \nl \literal{characters($T$)}
2393    &calculates the (reduced) Cartan characters $\{s_1,...,s_n\}$
2394     ($E$ quasilinear)\\\hline
2395\literal{characters($E$,$P$)}
2396    &Cartan characters for a non-linear $E$ at integral element $P$\\\hline
2397\literal{closure($E$)}
2398    &calculates the closure of $E$ under exterior
2399    differentiation\\\hline
2400\literal{derived\_system($E$)}\nl \literal{derived\_system($S$)}
2401    &calculates the first derived system of the Pfaffian system $E$ or
2402    $S$\\\hline
2403\literal{dim\_grassmann\_variety($E$)}\nl \literal{dim\_grassmann\_variety($E$,$P$)}
2404    &dimension of the Grassman bundle variety of integral elements: for
2405    non-linear $E$, the base element $P$ must be given\\\hline
2406\literal{dim($M$)}\nl \literal{dim($E$)}
2407    &returns the manifold dimension\\\hline
2408\literal{involution($E$)}
2409    &repeatedly prolongs $E$ to involution (or inconsistency)\\\hline
2410\literal{linearise($E$,$P$)}
2411    &linearise the (non-linear) EDS $E$ with respect to the integral element
2412     $P$\\\hline
2413\literal{integral\_element($E$)}
2414    &find a random \meta{integral element} of $E$\\\hline
2415\literal{prolong($E$)}
2416    &prolongs $E$, and projects back down to a subvariety of the
2417     original manifold if integrability conditions arise\\\hline
2418\literal{tableau($E$)}
2419    &calculates the \meta{tableau} of the quasilinear Pfaffian \meta{EDS}
2420     $E$\\\hline
2421\literal{torsion($E$)}
2422    &returns a \meta{system} of 0-forms specifying the integrability
2423     conditions for the semilinear or quasilinear Pfaffian \meta{EDS}
2424     $E$\\\hline
2425\literal{grassmann\_variety($E$)}
2426    &returns the contact \meta{EDS} for the Grassmann bundle of $n$-planes
2427     over the manifold of $E$, augmented by the 0-forms specifying the
2428     variety of integral elements of $E$\\\hline
2429\end{commandtable}
2430
2431
2432\begin{commandtable}{Commands for testing exterior systems}{testers}
2433\header{Command}
2434    &\header{Function}\\\hline
2435\literal{closed($E$)}\nl \literal{closed($S$)}\nl \literal{closed($\Omega$)}
2436    &checks for closure under exterior differ\-entiation\\\hline
2437\literal{involutive($E$)}
2438    &applies Cartan's test for involution\\\hline
2439\literal{pfaffian($E$)}
2440    &checks if $E$ is generated by 1-forms and their exterior
2441     derivatives\\\hline
2442\literal{quasilinear($E$)}
2443    &tests if the {\it closure} of $E$ can be generated by forms at
2444     most linear in the complement of the independence condition\\\hline
2445\literal{semilinear($E$)}
2446    &tests if the {\it closure} of $E$ is quasilinear and, in addition, the
2447    coefficients of the linear terms contain only independent variables or
2448    constants\\\hline
2449\literal{$E$ equiv $E'$}
2450    &checks whether $E$ and $E'$ are algebraically equivalent\\\hline
2451\end{commandtable}
2452
2453
2454\begin{commandtable}{Switches (all \literal{off} by default)}{edsswitches}
2455\header{Switch}
2456    &\header{Function}\\\hline
2457\literal{edsverbose}
2458    &if \literal{on}, displays additional information as calculations
2459    progress\\\hline
2460\literal{edsdebug}
2461    &if \literal{on}, produces copious quantities of internal information,
2462    in addition to that produced by \literal{edsverbose}\\\hline
2463\literal{edssloppy}
2464    &if \literal{on}, allows EDS to divide by expressions not known to be non-zero
2465    and treats quasilinear systems as semilinear\\\hline
2466\literal{edsdisjoint}
2467    &if \literal{on}, forces varieties to be decomposed into disjoint
2468    components\\\hline
2469\literal{ranpos}\nl \literal{genpos}
2470    &if \literal{on}, uses a random or generic flag of integral elements when
2471    calculating Cartan characters: otherwise the independence condition as
2472    presented guides the choice of flag\\\hline
2473\end{commandtable}
2474
2475
2476\begin{commandtable}{Auxilliary functions}{auxilliaries}
2477\header{Command}
2478    &\header{Function}\\\hline
2479\nl \literal{coordinates($S$)}
2480    &scans the expressions in $S$ for coordinates\\\hline
2481\literal{invert($X$)}
2482    &returns the inverse \meta{transform} $X^{-1}$\\\hline
2483\literal{structure\_equations($X$)} \nl
2484\literal{structure\_equations($X$,$X^{-1}$)}
2485    &returns exterior derivatives of $\mathop{\hbox{lhs}}(X)$\\\hline
2486\literal{linear\_divisors($\Omega$)}
2487    &calculates a basis for the space of 1-form factors of
2488     $\Omega$\\\hline
2489\literal{exfactors($\Omega$)}
2490    &as for \literal{linear\_divisors}, but with the additional (non-linear) factor\\\hline
2491\literal{index\_expand($any$)}
2492    &returns a list of copies of its argument, with free EXCALC indices
2493     replaced by successive values from the relevant index range\\\hline
2494\literal{pde2jet($pde$,$dep$,$ind$)}
2495    &converts a PDE system into jet bundle notation, replacing derivatives by
2496     jet bundle coordinates (variable dependencies are not affected)\\\hline
2497\literal{mkdepend($list$)}
2498    &restores variable dependencies destroyed by \literal{pde2eds}\\\hline
2499\literal{disjoin($\{f,g,...\}$)}
2500    &decomposes the variety specified by the given \meta{map} variables into
2501     a disjoint union\\\hline
2502\literal{cleanup($E$)}\nl \literal{cleanup($M$)}
2503    &returns a fresh copy of $E$ or $M$ with all properties and stored
2504     results removed\\\hline
2505\literal{reorder($E$)}\nl \literal{reorder($M$)}
2506    &returns a fresh copy of $E$ or $M$, conforming to the prevailing
2507    REDUCE kernel order\\\hline
2508\end{commandtable}
2509
2510
2511\begin{commandtable}{Experimental functions (unstable)}{experiments}
2512\header{Command}
2513    &\header{Function}\\\hline
2514\literal{poincare($\Omega$)}
2515    &calculates the homotopy integral from the proof of Poincar{\'e}'s lemma:
2516    if $\Omega$ is exact, then the result is a form whose exterior derivative
2517    gives back $\Omega$\\\hline
2518\literal{invariants($E$,$crd$)}\nl \literal{invariants($S$,$crd$)}
2519    &calculates the invariants (first integrals) of a completely
2520    integrable Pfaffian system using the inductive proof of the Frobenius
2521    theorem: the optional second argument specifies the
2522    order in which the coordinates are to be projected away\\\hline
2523\literal{symbol\_relations($E$,$\pi$)}
2524    &returns relations between the entries of the tableau
2525    matrix, represented by 2-indexed \meta{1-form} variables $\pi^a{}_i$\\\hline
2526\literal{symbol\_matrix($E$,$\xi$)}
2527    &returns the symbol matrix for a quasilinear \meta{EDS} $E$ as a function
2528    of \meta{0-form} variables $\xi_i$\\\hline
2529\literal{characteristic\_variety($E$,$\xi$)}
2530    &returns equations describing the characteristic variety of
2531    $E$ in terms of \meta{0-form} variables $\xi_i$\\\hline
2532\end{commandtable}
2533
2534%\catcode`\"=12\relax
2535%\catcode`\<=12\relax
2536
2537%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2538
2539\clearpage
2540