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