\documentstyle[12pt,a4]{report}
\begin{document}

%\setcounter{chapter}{5}
%\setcounter{page}{104}

\chapter{Desolv Documentation}

The {\bf Desolv} package is implemented in the symbolic software, 
Maple. {\bf Desolv} is simply a solver which attempts to find the
solutions of a linear or nonlinear system of overdetermined
differential equations of polynomial type. The implementation of 
{\bf Desolv} is based on a heuristic procedure, which does not always
promise to produce complete solutions of a system. If the heuristic
procedure fails to simplify a system completely, it will transform the
system of unsolved equations into a standard form. The heuristics is
made up of seven modules which are the one-term module, the direct
separation module, the solving unknown module, the indirect separation
module, the integration module, the solving ODE module and the
decoupling module; these have been described in Chapter Three.

The development of {\bf Desolv} is based on the symbolic package
{\bf LIE} written by Alan Head \cite{hea} in MuMATH; {\bf LIE} is a
solver for systems of linear PDEs. {\bf Desolv} has a simpler
structure than {\bf LIE}. {\bf Desolv} partly adopts the methods of
separation and integration in {\bf CRACK} \cite{wolbra2} (Thomas Wolf
and Andre Brand) written in REDUCE and the method of decoupling in
both {\bf standard form} \cite{reiwit} (Gregory Reid and Allan
Wittkopf) and {\bf diffgrob2} \cite{man0} (Elizabeth Mansfield), which
are both written in Maple. {\bf Desolv} is designed to handle large
systems efficiently without running into memory problems.

{\bf Desolv} includes other algorithms which help to analyse Lie point
symmetries, non-classical symmetries and potential symmetries.

The {\bf Desolv} package runs on Maple Version V, Release 3 or later
releases.

The descriptions of main functions in {\bf Desolv} are given in this
chapter. The global parameters of {\bf Desolv} which can be controlled
by users are also described in details. Examples are used to
demonstrate how to find point symmetries, non-classical symmetries
and potential factors. A classification problem of point symmetries is
illustrated in section (6.6). Section (6.7) shows that the function
{\em decouple}() can work differently with and without changing the
global parameters.


\section{The Main Function pdesolv()}

The function {\em pdesolv}() solves a system of overdetermined
differential equations. It requires three arguments and outputs a list
of four elements. The input and output of
\begin{center}
{\em pdesolv}({\it leqns,lfn,lvar}) \\
\end{center}
are as follows:
\begin{quote}
\underline{INPUT:} \\
\qquad - {\it leqns} is a list of differential expressions \\
\qquad - {\it lfn} is a list of unknown functions \\
\qquad - {\it lvar} is a list of variables \\
\underline{OUTPUT:} a list of 4 elements [{\it reqns,linq,lsol,lunk}] \\
\qquad - {\it reqns} is a list of differential expressions \\
\qquad - {\it linq} is a list of differential expressions \\
\qquad - {\it lsol} is a list of solutions of functions in {\it lfn} \\
\qquad - {\it lunk} is a list of unknowns occuring in
        {\it reqns, linq} and {\it lsol}
\end{quote}

The equations in the list {\it leqns} are in linear homogeneous form.
The functions and the constants in {\it lfn} are the unknowns in
{\it leqns}. The variables in {\it lvar} are the variables on which
the differential equations {\it leqns} depend. In the cases that
{\bf pdesolv}() does not solve the system {\it leqns} completely, a
list of unsolved equations is returned as {\it reqns}. During any
calculation, {\bf pdesolv}() normally makes the assumptions that some
expressions are non-zero. These expression are called inequations. If
these inequations contain any unknown functions/constants, they are
stored in the list {\it linq}. If the input list {\it leqns} is a
linear system of differential equations, then {\it linq} is an empty
list. The list {\it lsol} contains the solutions to the unknowns in
{\it lfn}. The list {\it lunk} consists of unknown functions or
constants appearing in {\it reqns}, {\it linq} and {\it lsol}. Any
unknowns arising during the simplification process are denoted as
{\bf F\_i} for functions and {\bf C\_k} for constants, where $i$ and
$k$ are integers. The highest values of $i$ and $k$ are stored in the
global variables {\em desolv\_function} and {\it desolv\_constant}
respectively.


\section{The Parameters in Desolv}

{\bf Desolv} has some parameters that allows the user to have control 
of the simplification process.

\begin{description}
\item[desolv\_module] - The number of modules used in the
        simplification process. The function {\em pdesolv}() consists
        of seven modules which are in the following order: the solving
        one-term module, the direct separating module, the solving
        unknown module, the indirect separating module, the
        integrating module, the solving ordinary DE module and the
        decoupling module. By default, desolv\_module is set to be 7.
        For example, if desolv\_module is set to be 4, then only the
        first four modules are used to simplify a system of
        differential equations.
\item[desolv\_modstat] - A list of integers which tells how many times
        each module is successfully applied.
\item[desolv\_Nterm] - The number of terms in an equation. There are
	two different ways of scanning a system of differential 
        equations through the modules. One way is to take the whole
        system and scan it through each module. This is called
        {\em horizontal scan}. The other way is take one equation at a
        time and scan it through each module. This is called
        {\em vertical scan}. {\em pdesolv}() splits a system into two
        lists, one list {\bf S} contains equations having
        {\bf desolv\_Nterm} terms or less and one list {\bf L} contains
        equation having more than desolv\_Nterm terms. {\em pdesolv}()
        uses {\em vertical scan} for the list {\bf S} and
        {\em horizontal scan} for the list {\bf L}. The default value
        is 1.
\item[desolv\_function] - The number of new unknown functions which are
	introduced into the system during the call of {\em pdesolv}.
	{\bf desolv\_function} is set to be 1 each time the function
        {\em pdesolv}() is called.
\item[desolv\_constant] - The number of new unknown constants which
        are introduced into the system during the call of
        {\em pdesolv}(). {\bf desolv\_constant} is set to be 1 each
        time the function {\em pdesolv}() is called.
\item[desolv\_reduce] - The default value is {\em true}. When an
        integrability condition has been computed, it is immediately 
	reduced with respect to the current system. If
        {\bf desolv\_reduce} is set to be {\em false}, no reduction is
        done at this stage.
\item[desolv\_sublimit] - The default value is $10^5$. During the 
        calculation of the decoupling module, the coefficient of the
        highest derivative of an equation may get very large. If the
        length of the coefficient is greater than
        {\bf desolv\_sublimit}, the coefficient is replaced by an
	arbitrary function which has the same dependencies as the
	coefficient. The arbitrary function replacement of the
	coefficient prevents the system from large expansion.
\item[desolv\_efactor] - The expansion factor. When the solution of an
        unknown function or constant is found in the simplification
	process, its solution is substituted into equations that 
	contain the function. As a substitution is made to an equation, 
	the function {\em pdesolv}() compares the length of the 
	equation before and after the substitution. If the equation 
	is expanded after the substitution by a factor greater than 
        {\bf desolv\_efactor}, then the substitution will not be done
        to the equation and delay until all the modules have
	unsuccessfully applied to the equation. {\bf desolv\_efactor}
	is set to 1000 by default.
\item[desolv\_nzassume] - A list of expressions that are assumed to be
        non-zero during the simplification process.
\item[desolv\_liassume] - A list of lists of expressions that are
        assumed to be linearly independent of each other during the
        simplification process.
\item[infolevel{\rm [pdesolv]}] - The setting of
        {\bf infolevel}[pdesolv] causes the display of intermediate
        results during the calculation of the function {\em pdesolv}().
        Higher values of {\bf infolevel}[pdesolv] will cause more
	information to be displayed. Other options for {\bf infolevel}
	are provided, such as, infolevel{\rm [gendef]}, 
	infolevel{\rm [genvec]}, infolevel{\rm [comtab]}, 
	infolevel{\rm [separation]}, infolevel{\rm [decouple]}.
\end{description}


\section{Classical symmetries}

As a prototypical example of how to find point symmetry with the help
of the {\bf Desolv} package, the linear heat equation
\begin{equation}
u_{xx} - u_{t} = 0
\end{equation}
is considered. The defining equations of the point symmetry can be 
generated by the function {\em gendef}() which requires three input 
arguments, as follows:
\begin{center}
{\em gendef}({\it deqns, dvar, ivar}) \\
\end{center}
\begin{quote}
\underline{INPUT:} \\
\qquad - {\it deqns} is a list of differential equations \\
\qquad - {\it dvar} is a list of dependent variables \\
\qquad - {\it ivar} is a list of independent variables \\
\underline{OUTPUT:} a list of 3 elements [{\it leqns, lfn, lvar}] \\
\qquad - {\it leqns} is a list of homogeneous differential equations \\
\qquad - {\it lfn} is a list of infinitesimal functions \\
\qquad - {\it lvar} is a list of variables
\end{quote}

The differential equations in {\it deqns} usually have the highest
derivatives on the left hand side (lhs). If the highest derivatives 
are not on the left hand sides of the equations, {\em gendef}() will 
automatically put the equations into the solved form for the highest
derivatives. The system of defining equations {\it leqns} are in the
homogeneous form. The system {\it leqns} has been reduced with respect
to its one-term equations. The list {\it lfn} contains infinitesimal
functions corresponding to the variables in {\it lvar}. The
infinitesimal function of an independent variable $x$ is denoted by
{\bf xi}$[x]$ in maple-syntax whereas the infinitesimal function of a
dependent variable $u$ is denoted by {\bf eta}$[u]$. In the MapleV
Release 3 and later versions, the name {\bf xi[x]} is displayed as
$\xi_x$. The symmetry generator of the heat equation is expressed as
\newcommand{\p}{\partial}
\begin{equation}
v = xi[x]{\p \over \p x} + xi[t]{\p \over \p t} + eta[u]{\p \over \p u}
\end{equation}

\underline{\em Example}: Generation of the defining equations for the 
linear heat equation:

\newcommand{\singlespace}{\vspace*{1pt}}
\singlespace
\begin{verbatim}
> read desolv:
> de := [ diff(u(x,t),x,x) - diff(u(x,t),t) = 0 ];
\end{verbatim}
\[ de := \left[ \left( \frac{\p^2}{\p x^2} u(x,t) \right)
        - \left( \frac{\p}{\p t} u(x,t) \right) = 0 \right] \]
\begin{verbatim}
> le := gendef(de,[u],[x,t]);
\end{verbatim}
\begin{eqnarray*}
\lefteqn{ le := \Bigg[ \Bigg[ \frac{\p}{\p u} \xi_x(x,t,u), 
   \frac{\p}{\p u} \xi_t(x,t,u), \frac{\p}{\p x} \xi_t(x,t,u),
   \frac{\p^2}{\p u^2} \eta_u(x,t,u), } \\
&& - 2 \left( \frac{\p}{\p x} \xi_x(x,t,u) \right)
   + \left( \frac{\p}{\p t} \xi_t(x,t,u) \right),
   - \left( \frac{\p}{\p t} \eta_u(x,t,u) \right)
   + \left( \frac{\p^2}{\p x^2} \eta_u(x,t,u) \right), \\
&& 2 \left( \frac{\p^2}{\p u \p x} \eta_u(x,t,u)\right)
   + \left( \frac{\p}{\p t} \xi_x(x,t,u) \right)
   - \left( \frac{\p^2}{\p x^2} \xi_x(x,t,u) \right)\Bigg],\\
&& \left[ \xi_x(x,t,u), \xi_t(x,t,u), \eta_u(x,t,u) \right],
   \left[ x,t,u \right] \Bigg]
\end{eqnarray*}
\newcommand{\onehalfspace}{\vspace*{0.5in}}
\onehalfspace

This system of overdetermined linear PDEs can be simplified by the 
function {\em pdesolv}(). The function {\em pdesolv}() returns one
unsolved equation. There is no assumption made on any unknown
functions or constants in the solution. The solution contains one
unknown function $F\_4(x,t)$ and six unknown constants, $C\_1$ to
$C_6$.

\underline{\em Example}: (Heat equation)

\singlespace
\begin{verbatim}
> sol := pdesolv(le[1],le[2],le[3]);
\end{verbatim}
\begin{eqnarray*}
\lefteqn{sol := \Bigg[\Bigg[- \left( \frac{\p}{\p t} F\_4(x,t) \right)
        + \left({\p^2 \over \p x^2} F\_4(x,t)\right) \Bigg],[\,], } \\
&& \Bigg[ \xi_x(x,t,u) = \frac{1}{2} x C\_4 + x t C\_5 + \frac{1}{2}
        C\_1 + \frac{1}{2} t C\_2, \\
&& \xi_t(x,t,u) = C\_3 + t C\_4 + t^2 C\_5, \\
&& \eta_u(x,t,u) = F\_4(x,t)-\frac{1}{4}uC\_5 x^2 - \frac{1}{4} u C\_2 x
	- \frac{1}{2} u t C\_5 + \frac{1}{8} u C\_6 \Bigg], \\
&& \left[ F\_4(x,t), C\_1, C\_2, C\_3, C\_4, C\_5, C\_6 \right] \Bigg]
\end{eqnarray*}
\onehalfspace

>From the solutions of the infinitesimal functions, Lie vectors can be
formed by using the function {\em genvec}(). The function
{\em genvec}() has three arguments and returns a list of vectors, as
follows:
\begin{center} 
{\em genvec}({\it lsol, lpar, lvar})
\end{center}
\begin{quote}
\underline{INPUT:} \\
\qquad - {\it lsol} is a list of solutions \\
\qquad - {\it lpar} is a list of parameters \\
\qquad - {\it lvar} is a list of variables \\
\underline{OUTPUT:} \\
\qquad - a list of vectors.
\end{quote}

The left hand side of a solution in {\it lsol} must be a function.
Each function on the left hand side in {\it lsol} corresponds to a
variable in {\it lvar}. The corresponding pair of function and
variable must have the same position in {\it lsol} and {\it lvar}. 
For example,
\begin{eqnarray*}
leqns &=& [xi[x](\cdots)=\cdots,xi[t](\cdots)=\cdots,
	eta[u](\cdots)=\cdots] \\
lvar &=& [x,t,u]
\end{eqnarray*}
A vector is expressed in the form of a sum of a list of a coefficient
and a list of variables. As an example, 
\[ x {\p \over \p t} + sin(u) {\p \over \p x} - t^2 {\p \over \p u} 
\longrightarrow [x,[t]] + [sin(u),[x]] + [-t^2,[u]]  \]

\singlespace
\begin{verbatim}
> lv := genvec(sol[3],sol[4],le[3]);
\end{verbatim}
\begin{eqnarray*}
\lefteqn{ lv := \Bigg[ \left[ F\_4(x,t), [u] \right],
    \left[ 1, [x] \right],
    \left[\frac{1}{2} t,[x]\right] + \left[-\frac{1}{4}ux,[u] \right],}\\
&& \left[ 1, [t] \right], \left[ 1, [u] \right], 
    \left[ \frac{1}{2} x, [x] \right] + \left[ t, [t] \right], \\
&& \left[ xt, [x] \right] + \left[ t^2, [t] \right]
    + \left[ - \frac{1}{4} u x^2 - \frac{1}{2} u t, [u] \right] \Bigg]
\end{eqnarray*}
\onehalfspace

Thus in our example the Lie-vectors of the heat equation are
\[ \begin{array}{c} \ds
{\p \over \p x}\,, \quad {\p \over \p t}\,, \quad
    {\p \over \p u}\,, \quad \\ [1.5ex]
\ds \frac{t}{2} {\p \over \p x} 
    - \frac{xu}{4} {\p \over \p u} \\ [1.5ex]
\ds \frac{x}{2} {\p \over \p x} + t {\p \over \p t}\,, \\ [1.5ex]
\ds xt {\p \over \p x} + t^2 {\p \over \p t} 
    - \frac{u}{4} (x^2 + 2t) {\p \over \p u}\,, \quad 
    F\_4(x,t) {\p \over \p u} \\
\end{array} \]

The function {\em comtab}() calculates the table of commutators of a
list of vectors in the form that generates from {\em genvec}(). The
function {\em comtab}() requires two arguments and returns a square
matrix or a square matrix with a list of equations, as follows:

\begin{center} 
{\em comtab}({\it lvec,lvar})
\end{center}
\begin{quote}
\underline{INPUT:} \\
\qquad  - {\it lvec} is a list of vectors \\
\qquad  - {\it lvar} is a list of variables \\
\underline{OUTPUT:} \\
\qquad  - a square matrix or a square matrix and a list of equations.
\end{quote}
Each element of the output matrix is expressed linearly in terms of 
{\bf psi}[i] which denotes the $i^{th}$-vector in {\it lvec}. The 
following Maple session shows the calculation of the commutator table 
of the vectors {\em lv} without the vector, $[F\_4(x,t),[u]]$, because
it contains the unknown function $F\_4(x,t)$.

\underline{\em Example}: (Heat equation)
\begin{verbatim}
> comtab(subsop(1=NULL,lv),le[3]);
\end{verbatim}
\[ \left[ \begin{array}{cccccc}
0 & - \frac{1}{4} \psi_6 & 0 & \frac{1}{2} \psi_1 & 2 \psi_2 & 0 \\
\frac{1}{4} \psi_6 & 0 & - \frac{1}{2} \psi_1 & -\frac{1}{2}\psi_2 & 0 & 0 \\
0 & \frac{1}{2} \psi_1 & 0 & \psi_3 & 2 \psi_4 - \frac{1}{2} \psi_6 & 0 \\
- \frac{1}{2} \psi_1 & \frac{1}{2} \psi_2 & \psi_3 & 0 & \psi_5 & 0 \\
-2 \psi_2 & 0 & -2 \psi_4 + \frac{1}{2} \psi_6 & - \psi_5 & 0 & 0 \\
0 & 0 & 0 & 0 & 0 & 0 \end{array} \right]
\]
When a commutator of two vectors cannot be expressed as a linear
combination of {\bf psi}[$i$], it is replaced by a variable, called
{\bf gamma}[$k$] ($\gamma_k$) in the commutator table where $k$ is an 
integer. For this case, {\bf comtab}() outputs is a matrix of 
commutator and a list of expressions of {\bf gamma}[$k$].

\underline{\em Example}: (Heat equation)

\singlespace
\begin{verbatim}
> ct := comtab(subsop(1=NULL,lv),le[3]):
> print(ct[1]);
\end{verbatim}
\[ \left[ \begin{array}{ccccccc}
0 & \gamma_1 & \gamma_2 & \gamma_3& \gamma_4 & \gamma_5 & \psi_1 \\
- \gamma_1 & 0 & - \frac{1}{4} \psi_6 & 0 & \frac{1}{2} \psi_1 & 
	2 \psi_2 & 0 \\
- \gamma_2 & \frac{1}{4} \psi_6 & 0 & - \frac{1}{2} \psi_1 & 
	-\frac{1}{2}\psi_2 & 0 & 0 \\
- \gamma_3 & 0 & \frac{1}{2} \psi_1 & 0 & \psi_3 & 
	2 \psi_4 - \frac{1}{2} \psi_6 & 0 \\
- \gamma_4 & - \frac{1}{2} \psi_1 & \frac{1}{2} \psi_2 & \psi_3 & 0 & 
	\psi_5 & 0 \\
- \gamma_5 & -2 \psi_2 & 0 & -2 \psi_4 + \frac{1}{2} \psi_6 & 
	- \psi_5 & 0 & 0 \\
- \psi_1 & 0 & 0 & 0 & 0 & 0 & 0 \end{array} \right]
\]
\begin{verbatim}
> ct[2];
\end{verbatim}
\begin{eqnarray*}
& & \Bigg[ \gamma_1 = \left[-\left({\p \over \p x} F\_4(x,t) \right),
	[u] \right], \gamma_2 = \left[ - \frac{1}{4} F\_4(x,t) x
        - \frac{1}{2} t \left({\p \over \p x} F\_4(x,t) \right),
	[u] \right], \\
& & \gamma_3 = \left[-\left( {\p \over \p t} F\_4(x,t) \right),
	[u] \right], \gamma_4 = \left[ -\frac{1}{2} x 
        \left( {\p \over \p x} F\_4(x,t) \right)
        - t \left({\p \over \p t} F\_4(x,t) \right),
	[u] \right], \\
& & \gamma_5 = \left[ - \frac{1}{4} F\_4(x,t) x^2
        - \frac{1}{2} F\_4(x,t) t
        - x t \left({\p \over \p x} F\_4(x,t) \right)
        - t^2  \left({\p \over \p t} F\_4(x,t) \right),
	[u] \right] \Bigg]
\end{eqnarray*}
\onehalfspace

\subsection{Arbitrary Functions of Derivatives}

In classification problems, some equations may contain arbitrary 
functions of derivatives of dependent variables. When the defining 
equations are calculated, these arbitrary functions must be treated
carefully. In most of the available symbolic packages, defining 
equation generators have problems in dealing with such equations, but
it is not the case for the function {\em gendef}(). A demonstration of
{\bf Desolv} calculating the point symmetry of such an equation is
shown. The quasilinear hyperbolic equation of the general form is
\begin{equation}
v_{tt} = f(x,v_x)\, v_{xx} + g(x,v_x)
\end{equation}
This equation admits a symmetry group of 3 parameters.
\[ {\p \over \p t} \,,\, {\p \over \p v} \,,\, t {\p \over \p v} \]

\underline{\em Example}: the PDE $v_{tt} = f(x,v_x)\,v_{xx}+g(x,v_x)$

\singlespace
\begin{verbatim}
> V := v(x,t):
> de := [ diff(V,t,t) = f(x,diff(V,x))*diff(V,x,x) + g(x,diff(V,x)) ];
\end{verbatim}
\[ de := \left[ \left( \frac{\p^2}{\p t^2} v(x,t) \right) =
        f\left(x,\frac{\p}{\p x} v(x,t) \right)
        \left( \frac{\p^2}{\p x^2} v(x,t) \right) 
        + g\left(x,\frac{\p}{\p x} v(x,t) \right) \right] \]
\begin{verbatim}
> le := gendef(de,[v],[x,t]);
\end{verbatim}
\begin{eqnarray*}
\lefteqn{ le := \Bigg[ \Bigg[ \xi_x(x,t,v),\, 
    \frac{\p}{\p t} \xi_t(x,t,v),\, \frac{\p}{\p v} \eta_v(x,t,v),\,
    \frac{\p}{\p x} \eta_v(x,t,v), } \\
&& \frac{\p}{\p v} \xi_t(x,t,v),\, \frac{\p}{\p x} \xi_t(x,t,v),\,
    \frac{\p^2}{\p t^2} \eta_v(x,t,v) \Bigg], \\
&& \left[ \xi_x(x,t,v), \xi_t(x,t,v), \eta_v(x,t,v) \right],\,
    [x,t,v]\Bigg]
\end{eqnarray*}
\begin{verbatim}
> sol := pdesolv(op(le));
\end{verbatim}
\begin{eqnarray*}
&& sol := [ [\,], [\,], \left[ \xi_x(x,t,v)=0,\,
        \xi_t(x,t,v)=C\_1,\,\eta_v(x,t,v)=C\_2+tC\_3 \right], \\
&& \left[ C\_1,C\_2,C\_3
        \right] 
\end{eqnarray*}
\begin{verbatim}
> genvec(sol[3],sol[4],le[3]);
\end{verbatim}
\[ [[1,[t]],\,[1,[v]],\,[t,[v]]] \]
\onehalfspace


\section{Nonclassical Symmetries}

For the Burgers' equation \cite{claman4}
\begin{equation}
u_{t} = u_{xx} + 2uu_{x}
\end{equation}
the infinitesimal generator is
\begin{equation}
{\bf v} = xi[x]{\p \over \p x} + xi[t]{\p \over \p t}
        + eta[u] {\p \over \p u}
\end{equation}
The invariant surface condition (ISC) is
\begin{equation}
eta[u] = xi[t] u_t + xi[x] u_x
\end{equation}
For the case 1 with $xi[t]=1$, the ISC becomes
\begin{equation}
eta[u] = u_t + xi[x] u_x
\end{equation}
and for the case 2 with $xi[x]=1,xi[t]=0$, the ISC is
\begin{equation}
eta[u] = u_x
\end{equation}
The function {\em gennc}() generates the defining equations of the
nonclassical symmetry. {\em gennc}() requires four arguments with the
fourth argument to be optional and returns a list of elements, as
follows:

\begin{center} 
{\em gennc}({\it deqns, dvar, ivar, lcase})
\end{center}
\begin{quote}
\underline{INPUT:} \\
\qquad  - {\it deqns} is a list of differential equations \\
\qquad  - {\it dvar} is a list of dependent variables \\
\qquad  - {\it ivar} is a list of independent variables \\
\qquad  - {\it lcase} is a list of case-number (Optional) \\
\underline{OUTPUT:} a list of 3 elements [{\it leqns,lfn,lvar}] \\
\qquad  - {\it leqns} is a list of lists of differential expressions \\
\qquad  - {\it lfn} is a list of infinitesimal functions \\
\qquad  - {\it lvar} is a list of variables
\end{quote}
{\em gennc}() will generate all the cases for the nonclassical method 
when the argument {\it lcase} is omitted. The case-numbers in
{\it lcase} represent the cases that the function {\em gennc}() will
output. The following Maple session shows the calculation of defining
equations of nonclassical symmetry for the Burgers' equation with the
case 1.

\underline{\em Example:} Burger's equation

\singlespace
\begin{verbatim}
> read desolv:
> U := u(x,t):
> de := [ diff(U,t) = diff(U,x,x) + 2*U*diff(U,x) ];
\end{verbatim}
\[ de := \left[ {\p \over \p t} u(x,t) =
                {\p^2 \over \p x^2} u(x,t)
                + 2 u(x,t) {\p \over \p x} u(x,t)
	\right] \]
\begin{verbatim}
> le := gennc(de,[u],[x,t],[1]):
> le[1][1];
\end{verbatim}
\begin{eqnarray*}
\lefteqn{ \Bigg[ {\p^2 \over \p u^2} \xi_x(x,t,u) \,,\, 
    \xi_t(x,t,u)-1, -2 \left( {\p \over \p x} \xi_x(x,t,u) 
    \right) \eta_u(x,t,u) + \left( {\p^2 \over \p x^2} 
    \eta_u(x,t,u) \right) } \\
&& - \left( {\p \over \p t} \eta_u(x,t,u) \right)
    + 2 u \left( {\p \over \p x} \eta_u(x,t,u) \right)
    4 u \left( {\p \over \p u} \xi_x(x,t,u) \right)
    + \left({\p^2 \over \p u^2} \eta_u(x,t,u)\right) \\
&& + 2 \xi_x(x,t,u) \left( {\p \over \p u} \xi_x(x,t,u) \right)
    -2 \left({\p^2 \over \p u \p x} xi_x(x,t,u)\right),
    2 u \left( {\p \over \p x} \xi_x(x,t,u) \right) \\
&& + 2 \left({\p^2 \over \p u \p x}\eta_u(x,t,u)\right)
    - \left( {\p^2 \over \p x^2} \xi_x(x,t,u) \right)
    + 2 \xi_x(x,t,u) \left({\p \over \p x} \xi_x(x,t,u)\right) \\
&& - 2 \eta_u(x,t,u) \left({\p \over \p u}\xi_x(x,t,u)\right)
    + 2 \eta_u(x,t,u) + \left( {\p \over \p t} \xi_x(x,t,u) 
    \right) \Bigg]
\end{eqnarray*}
\onehalfspace

This system of defining equations is nonlinear in $xi[x],xi[t]$ and
$eta[u]$. When the function {\em pdesolv}() is used to simplify an
system of nonlinear differential equations, it is better to exclude
the decoupling module from the simplification process. The decoupling
module very often runs out of memory space when dealing with nonlinear
systems because of the complexity and expansion. The global parameter
{\bf desolv\_module} which is set to 6, will force the function 
{\em pdesolv}() to use the first 6 modules, without the decoupling 
module.

\underline{\em Example}: Burger's equation

\singlespace
\begin{verbatim}
> desolv_module := 6:
> sol := pdesolv(le[1][1],le[2],le[3]):
\end{verbatim}
\onehalfspace

This Maple session yields three sets of solutions for the nonclassical
symmetry of the Burgers' equation with the case 1. The first solution
contains 2 unsolved equations.

\[ 4 F\_5(t)^3 + \left( {\p^2 \over \p t^2} F\_5(t) \right)
    + 6 F\_5(t) \left( {\p \over \p t} F\_5(t) \right) = 0 \]
\[ - \left( {\p^2 \over \p t^2} F\_6(t) \right)
    - 4 F\_5(t)^2 F\_6(t) - 4 F\_5(t)
    \left( {\p \over \p t} F\_6(t) \right)
    - 2 F\_6(t) \left( {\p \over \p t} F\_5(t) \right) = 0 \]
\begin{eqnarray*}
\xi_t(x,t,u) &=& 1 \\
\xi_x(x,t,u) &=& F\_5(t) x - F\_6(t) \\
\eta_u(x,t,u) &=& - \frac{1}{2} x 
        \left( {\p \over \p t} F\_5(t) \right) 
        + \frac{1}{2} \left( {\p \over \p t} F\_6(t) \right) \\
	&& - F\_5(t)^2 x + F\_5(t) F\_6(t) - u F\_5(t) 
\end{eqnarray*}
subject to $F\_5(t) x - F\_6(t) \neq 0$.

The second solution is 
\begin{eqnarray*}
\xi_t(x,t,u) &=& 1 \\
\xi_x(x,t,u) &=& - 2 u \\
\eta_u(x,t,u) &=& 0 
\end{eqnarray*}

The third solution contains three unsolved equations subject to one
condition, $F\_1(x,t) \neq 0$.

\[ \begin{array}{c}
- \left( {\p^2 \over \p x^2} F\_3(x,t) \right)
        + \left( {\p \over \p t} F\_3(x,t) \right)
        + 2 \left( {\p \over \p x} F\_1(x,t) \right) F\_3(x,t) = 0 \\
\left( {\p \over \p t} F\_4(x,t) \right)
        - \left( {\p^2 \over \p x^2} F\_4(x,t) \right)
        - 2 \left( {\p \over \p x} F\_3(x,t) \right)
        + 2 \left( {\p \over \p x} F\_1(x,t) \right) F\_4(x,t) = 0 \\
\left( {\p \over \p t} F\_1(x,t) \right)
        - 2 \left( {\p \over \p x} F\_4(x,t) \right)
        - \left( {\p^2 \over \p x^2} F\_1(x,t) \right)
        + 2 F\_1(x,t) \left( {\p \over \p x} F\_1(x,t) \right) = 0 
\end{array} \]
\begin{eqnarray*}
\xi_t(x,t,u) &=& 1 \\
\xi_x(x,t,u) &=& F\_1(x,t) + u \\
\eta_u(x,t,u) &=& - u^3 - F\_1(x,t) u^2 - F\_3(x,t) - u F\_4(x,t)
\end{eqnarray*}


\section{Potential symmetries}

An important calculation in the case of potential symmetry is to find
{\em potential factors}. Potential factors are needed to put an
equation into a potential form, from which a potential system can be
derived. In this section, an example of calculating potential factors
using {\bf Desolv} is demonstrated.

\underline{\em Example}: Consider the nonlinear diffusion equation 
$S_0\{u\}$ \cite{blu3} given by
\begin{equation}
u_t = (K(u)u_x)_x
\end{equation}
The Fr\'{e}chet derivative of $S_0$ can be computed by the function
{\em frechet}():

\begin{center} 
{\em frechet}({\it leqns, dvar, ivar})
\end{center}
\begin{quote}
\underline{INPUT:} \\
\qquad  - {\it leqns} is a list of differential equations \\
\qquad  - {\it dvar} is a list of dependent variables \\
\qquad  - {\it ivar} is a list of independent variables \\
\underline{OUTPUT:} \\
\qquad  - a square matrix
\end{quote}
The output is a matrix of vectors which are expressed in the form of a
sum of lists.

\singlespace
\begin{verbatim}
> de := [ diff(u(x,t),t) = diff( K(u(x,t))*diff(u(x,t),x),x ) ];
\end{verbatim}
\[ de := \left[ \frac{\p}{\p t}u(x,t) = 
        D(K)(u(x,t)) \left( \frac{\p}{\p x}u(x,t) \right)^2
        K(u(x,t)) \left( \frac{\p^2}{\p x^2}u(x,t) \right) 
		\right] \]
\begin{verbatim}
> F := frechet(de,[u],[x,t]);
\end{verbatim}
\begin{eqnarray*}
F &:=& \Bigg[ [-K(u(x,t)),[x,x]] + \left[ -2D(K)(u(x,t)) 
\left(\frac{\p}{\p x}u(x,t) \right), [x] \right] + [1,[t]] \\
  &  & + \Bigg[ -D^{(2)}(K)(u(x,t))\left(\frac{\p}{\p x}u(x,t) 
		\right)^2
        - D(K)(u(x,t))\left( \frac{\p^2}{\p x^2}u(x,t) 
		\right),1 \Bigg] \Bigg]
\end{eqnarray*}
\onehalfspace

The adjoint of the Fr\'{e}chet derivative {\it F} can be calculated by
calling the function {\em adjointD}():
 
\begin{center} 
{\em adjointD}({\it M, lvar})
\end{center}
\begin{quote}
\underline{INPUT:} \\
\qquad  - {\it M} is a square matrix of vectors \\
\qquad  - {\it lvar} is a list of variables \\
\underline{OUTPUT:} \\
\qquad  - a square matrix
\end{quote}

\singlespace
\begin{verbatim}
> adjointD(F,[x,t]);
\end{verbatim}
\[ \left[ [-K(u(x,t)),[x,x]]+[-1,[t]] \right] \]
\onehalfspace

The function {\em genfac}() generates the system of defining equations
for potential factors of a system of differential equations. The
function {\em genfac}() requires three arguments, a list of equations,
a list of dependent variables and a list of independent variables:

\begin{center} 
{\em genfac}({\it deqns, dvar, ivar})
\end{center}
\begin{quote}
\underline{INPUT:} \\
\qquad  - {\it deqns} is a list of differential equations \\
\qquad  - {\it dvar} is a list of dependent variables \\
\qquad  - {\it ivar} is a list of independent variables \\
\underline{OUTPUT:} a list of 3 elements [{\it leqns,lfn,lvar}] \\
\qquad  - {\it leqns} is a list of differential expressions \\
\qquad  - {\it lfn} is a list of potential factor-functions \\
\qquad  - {\it lvar} is a list of variables
\end{quote}
The potential factor-functions are denoted as {\bf lambda[i]} by
default where $i$ are integers.
 
\singlespace
\begin{verbatim}
> le := genfac(de,[u],[x,t]);
\end{verbatim}
\[ le := \left[ \left[ \frac{\p}{\p u} \lambda_1(x,t,u),
        -K(u) \left( \frac{\p^2}{\p x^2} \lambda_1(x,t,u) \right)
        - \left( \frac{\p}{\p t} \lambda_1(x,t,u) \right) \right],
        \left[\lambda_1(x,t,u)\right], \left[x,t,u \right] \right] \]
\begin{verbatim}
> sol := pdesolv(op(le));
\end{verbatim}
\[ sol := \left[[\,], [\,], \left[\lambda_1(x,t,u) = C\_1 + x C\_2
        \right], [C\_1,C\_2] \right] \]
\onehalfspace

Therefore the potential factors of the system $S_0$ are $\{ 1,x\}$.
%(refers to the paper of Bluman and Doran-Wu). 
The potential factor $\lambda_1 = x$ yields the potential system 
{\bf $S_1$\{u,v\}},
\begin{eqnarray}
v_x &=& xu \\
v_t &=& x(L(u))_x - L(u)
\end{eqnarray}
where $K(u) = L'(u)$. By repeating the above steps, we find that the
solutions for the potential factors of {\bf $S_1$\{u,v\}} are
$(\lambda_1,\lambda_2) = (0,x^{-2})$.

\singlespace
\begin{verbatim}
> U := u(x,t): V := v(x,t):
> de := [ diff(V,x) = x*U, diff(V,t) = x*diff( L(U),x) - L(U) ];
\end{verbatim}
\[ de := \left[ \frac{\p}{\p x}v(x,t) = xu(x,t),
        \frac{\p}{\p t} v(x,t) = x D(L)(u(x,t))
        \left(\frac{\p}{\p x} u(x,t)\right) - L(u(x,t)) \right] \]
\begin{verbatim}
> F := frechet(de,u,v],[x,t]);
\end{verbatim}
\begin{eqnarray*}
F &:=& [[-x,1], [1,[x]]] \\
  &  & \Bigg[ [-x D(L)(u(x,t)),[x]] + \left[ -xD^{(2)}(L)(u(x,t))
        \left(\frac{\p}{\p x} u(x,t) \right)+D(L)(u(x,t)),1 \right], \\
  &  & [1,[t]] \Bigg]
\end{eqnarray*}
\begin{verbatim}
> adjointD(F,[x,t]);
\end{verbatim}
\[ \left[ \begin{array}{cc}
[- x,1] & [xD(L)(u(x,t)),[x]]+[2D(L)(u(x,t)),1]  \\
\left[ -1,[x] \right] & [-1,[t]]
\end{array} \right] \]
\begin{verbatim}
> le := genfac(de,[u,v],[x,t]);
\end{verbatim}
\begin{eqnarray*}
\lefteqn{ le := \Bigg[ \Bigg[ \frac{\p}{\p u} \lambda_2(x,t,u,v),
        - \left( \frac{\p}{\p u} \lambda_1(x,t,u,v) \right)
        - \left( \frac{\p}{\p v} \lambda_2(x,t,u,v) \right)
        x \left(\frac{\p}{\p u} L(u) \right), } \\
&& - x\lambda_1(x,t,u,v) + x \left(\frac{\p}{\p u} L(u) \right)
        \left( \frac{\p}{\p x} \lambda_2(x,t,u,v) \right)
        + x^2 \left(\frac{\p}{\p u} L(u) \right) \\
&& \left({\p\over\p v} \lambda_2(x,t,u,v) \right) u
        + 2 \left({\p\over\p u} L(u)\right) \lambda_2(x,t,u,v),\\
&& - \left( \frac{\p}{\p x} \lambda_1(x,t,u,v) \right)
        - \left( \frac{\p}{\p v} \lambda_1(x,t,u,v) \right) xu
        - \left( \frac{\p}{\p t} \lambda_2(x,t,u,v) \right) \\
&& + \left(\frac{\p}{\p v} \lambda_2(x,t,u,v)\right)L(u)\Bigg],
	\left[ \lambda_1(x,t,u,v), \lambda_2(x,t,u,v) \right],
        [x,t,u,v] \Bigg]
\end{eqnarray*}
\begin{verbatim}
> sol := pdesolv(op(le));
\end{verbatim}
\[ sol := \left[ [\,], [\,], \left[ \lambda_1(x,t,u) = 0,
	\lambda_2(x,t,u) = \frac{C\_1}{x^2} \right],[C\_1] \right] \]
\onehalfspace

\section{Classification}

\underline{\em Example}: The nonhomogenous Monge-Amp\`{e}re equation
contains an arbitrary function $a(x,y)$,
\begin{equation}
u_{xx} u_{yy} - u^2_{xy} + a^2 = 0
\end{equation}
Different values of the arbitrary function give different symmetry 
groups (see, e.g., the section 9.4 in the handbook of Lie group 
analysis of differential equations Vol.1, N.H.Ibragimov \cite{ibr2}).
The case where $a = x^\beta y^\gamma$ is examined:

\singlespace
\begin{verbatim}
> U := u(x,y):
> de := [diff(U,x,x)*diff(U,y,y)-diff(U,x,y)^2+(x^beta*y^gamma)^2=0];
\end{verbatim}
\[ de := \left[ \left( \frac{\p^2}{\p x^2} u(x,y) \right)
        \left( \frac{\p^2}{\p y^2} u(x,y) \right)
        - \left( \frac{\p^2}{\p y \p x } u(x,y) \right)^2
	+ \left( x^\beta \right)^2 \left( y^\gamma \right)^2 = 0
        \right] \]
\begin{verbatim}
> le := gendef(de,[u],[x,y]);
\end{verbatim}
\begin{eqnarray*}
\lefteqn{ le :=  \Bigg[ \Bigg[ \frac{\p}{\p u} \xi_y(x,y,u),\,
        \frac{\p}{\p u} \xi_x(x,y,u),\,
        \frac{\p^2}{\p x^2} \xi_y(x,y,u),\,
        \frac{\p^2}{\p y \p x} \eta_u(x,y,u), }\\
&& \frac{\p^2}{\p y^2} \eta_u(x,y,u), \,
        \frac{\p^2}{\p u^2} \eta_u(x,y,u), \,
        \frac{\p^2}{\p x^2} \eta_u(x,y,u), \,
        \frac{\p^2}{\p y^2} \xi_x(x,y,u), \\
&& 2 \left( \frac{\p^2}{\p u \p y} \eta_u(x,y,u) \right)
   - \left( \frac{\p^2}{\p y^2} \xi_y(x,y,u) \right), \,
   - \left( \frac{\p^2}{\p u \p x} \eta_u(x,y,u) \right) \\
&& + \left( \frac{\p^2}{\p y \p x} \xi_y(x,y,u) \right), \,
   \left( \frac{\p^2}{\p u \p y} \eta_u(x,y,u) \right)
   + \left( \frac{\p^2}{\p y \p x} \xi_x(x,y,u) \right), \\
&& 2 \left( \frac{\p^2}{\p u \p x} \eta_u(x,y,u) \right)
   - \left( \frac{\p^2}{\p x^2} \xi_x(x,y,u) \right),\,
   - \left( \frac{\p}{\p y} \xi_y(x,y,u) \right)yx \\
&& - \left( \frac{\p}{\p x} \xi_x(x,y,u) \right)yx 
   + \left( \frac{\p}{\p u} \eta_u(x,y,u) \right)yx
   - \xi_y(x,y,u) \gamma x - \xi_x(x,y,u) \beta y \Bigg], \\
&& \left[\xi_x(x,y,u),\xi_y(x,y,u),\eta_u(x,y,u)\right],[x,y,u] \Bigg]
\end{eqnarray*}
\begin{verbatim}
> sol := pdesolv(op(le));
\end{verbatim}
\begin{eqnarray*}
\lefteqn{ sol := \Bigg[ [\,], [\,], \Bigg[ \xi_x(x,y,u)=x C\_\,10, }\\ 
    && \xi_y(x,y,u) = - \frac{y( C\_\,14 + C\_\,10 + C\_\,10 \beta )}
	{\gamma+1}, \\
    && \eta_u(x,y,u) = -C\_\,13 - u C\_\,14 + y C\_\,1 + x C\_\,3 \Bigg], \\
    && [ C\_\,1, C\_\,3, C\_\,10, C\_\,13, C\_\,14 ] \Bigg] 
\end{eqnarray*}
\begin{verbatim}
> lv := genvec(sol[3],sol[4],le[3]);
\end{verbatim}
\[ lv := [ [y,[u]], [x,[u]], [x+x\gamma,[x]] + [-y-y\beta,[y]], [1,[u]],
	[x,[x]] + [u+u\beta,[u]] ] \]
\onehalfspace

%\begin{verbatim}
%> comtab(lv,le[3]);
%\end{verbatim}
%\[ \left[ \begin{array}{ccccc}
%0 & 0 & (1+\beta)\psi_1 & 0 & (1+\beta)\psi_1 \\
%0 & 0 & (-\gamma-1)\psi_2 & 0 & \beta \psi_2 \\
%-(1+\beta)\psi_1 & -(-\gamma-1)\psi_2 & 0 & 0 & 0 \\
%0 & 0 & 0 & 0  & (1+\beta)\psi_4 \\
%-(1+\beta)\psi_1 & \beta \psi_2 & 0 & -(1+\beta)\psi_4 & 0 
%\end{array} \right]
%\]

The equation admits 5 symmetries,
\[ y {\p \over \p u} \,,\, x {\p \over \p u} \,,\,
        {\p \over \p u} \,,\, \]
\[ (1+\gamma) x {\p \over \p x} - (1+\beta) y {\p \over \p y} \,,\, 
        x {\p \over \p x} + (1+\beta) u {\p \over \p u} \]

During the simplification process, the function {\bf pdesolv}()
assumes some expressions to be non-zero such as denominators and
coefficients of the leading derivatives. When {\bf pdesolv}() applies
the method of direct separation to an equation, the expressions which
depend on the separating variable are assumed to be linearly
independent of each other. The function {\bf classify}() displays
non-zero assumptions and linearly independent assumptions. The
arguments of the function {\bf classify}(), which are optional, are
names of arbitrary functions or constants.

\singlespace
\begin{verbatim}
> classify(gamma,beta);
\end{verbatim}
\[ \begin{array}{c}
\mbox{ {\em non-zero assumptions}} \
\gamma \\
\beta \\
\gamma + 1 \\
\beta + 1 \\
\beta + 2 + \gamma \\
\mbox{ {\em linearly independent assumptions}} 
\end{array} \]
\onehalfspace

If these expressions of $ \beta$ and $\gamma$ are equal to zero, the
equation may admit different sets of symmetries. These expressions are
stored in the global variable, {\bf desolv\_nzassume} and
{\bf desolv\_liassume}. For $\gamma = \beta = -1$, the equation
becomes
\begin{equation}
u_{xx} u_{yy} - u^2_{xy} + x^{-2} y^{-2} = 0
\end{equation}
This equation admits 7 symmetries instead of 5 in the general case.

\singlespace
\begin{verbatim}
> U := u(x,y):
> de := [ diff(U,x,x)*diff(U,y,y) - diff(U,x,y)^2 + 1/(x*y)^2 = 0];
> le := gendef(de,[u],[x,y]);
> sol := pdesolv(op(le));
\end{verbatim}
\begin{eqnarray*}
\lefteqn{ sol := \Bigg[ [\,], [\,], \Bigg[ 
	\xi_x(x,y,u)= - x^2 C\_\,12 - x C\_\,17 + x y C\_\,2, } \\
    &  & \xi_y(x,y,u) = y^2 C\_\,2 + y C\_\,15 - x y C\_\,12, \\
    &  & \eta_u(x,y,u) = C\_\,5 + y C\_\,9 + y u C\_\,2 
	+ x C\_\,7 - x u C\_\,12 \Bigg], \\
    &  & [ C\_\,2, C\_\,5, C\_\,7, C\_\,9, C\_\,12, C\_\,15,
	 C\_\,17] \Bigg] 
\end{eqnarray*}
\begin{verbatim}
> lv := genvec(sol[3],sol[4],le[3]);
\end{verbatim}
\begin{eqnarray*}
\lefteqn{ lv := [ [x,[u]], [1,[u]], [xy,[x]] + [y^2,y] + [yu,[u]] ,
	[y,[u]], [y,[y]], } \\
	& & [x^2,[x]] + [xy,[y]] + [xu,[u]], [x,[u]] ]
\end{eqnarray*}
\onehalfspace


\section{Decoupling}

A system of differential equations which contain arbitrary functions 
(or classified functions) often cause difficulties for simplification.
A system of nonlinear telegraph equations \cite{reiwit} which contains
two arbitrary functions $f$ and $g$ is
\begin{eqnarray}
v_t &=& u_x \\
v_x &=& f(u) u_t + g(u) 
\end{eqnarray}
The 8 defining equations for point symmetries are
\begin{eqnarray*}
- {\p \xi_x \over \p u} + {\p \xi_t \over \p v} = 0 \\
- {\p \xi_t \over \p u} + f {\p \xi_x \over \p v}=0 \\
{\p \eta_u \over \p u} + {\p \xi_t \over \p t}
    - {\p \eta_v \over \p v} + {\p \xi_x \over \p x} = 0 \\
{\p \eta_u \over \p x} - {\p \eta_v \over \p t}
    + g {\p \xi_x \over \p t} + g {\p \eta_u \over \p u} = 0 \\
- {\p \xi_t \over \p x} - g {\p \xi_t \over \p v}
    - {\p \eta_v \over \p u} + f {\p \xi_x \over \p t}
    + g {\p \xi_x \over \p u} + f {\p \eta_u \over \p v} = 0 \\
- g {\p \xi_x \over \p u } - g {\p \xi_t \over \p v}
    - f {\p \eta_u \over \p v} + {\p \eta_v \over \p u}
    + f {\p \xi_x \over \p t} - {\p \xi_t \over \p x} = 0 \\
g {\p \eta_v \over \p v} - g^2 {\p \xi_x \over \p v}
    + {\p \eta_v \over \p x} - g' \eta_v - f {\p \eta_u \over \p t}
    - g {\p \xi_x \over \p x} = 0
\end{eqnarray*}

None of these equations can be simplified by the first six modules of
the function {\bf pdesolv}(). Thus the defining system needs to be
transformed into the standard form by the decoupling module. The
function {\bf decouple}() takes in three arguments, a list of
equations, a list of unknowns and a list of variables, as follows,

\begin{center}
  {\bf decouple}({\em leqns,\,lfn,\,lvar})
\end{center}
\begin{quote}
\underline{INPUT:} \\
\qquad  - {\it leqns} is a list of differential equations \\
\qquad  - {\it lfn} is a list of unknown functions \\
\qquad  - {\it lvar} is a list of variables \\
\underline{OUTPUT:} \\
\qquad  - a list of differential equations
\end{quote}

As the function {\bf decouple}() simplifies the above system, the
calculation does not get very far before the computer is hung up due
to a great expansion of the system. The parameter 
{\bf infolevel}[decouple] can be set to be 3 to display intermediate 
computation of the function {\bf decouple}().

\singlespace
\begin{verbatim}
> U := u(x,t): V := v(x,t):
> de := [ diff(V,t) = diff(U,x), diff(V,x) = f(U)*diff(U,t) + g(U)]:
> le := gendef(de,[u,v],[x,t]):
> infolevel[decouple] := 3:
> s  := decouple(le[1],le[2],le[3]):
\end{verbatim}
\onehalfspace

The large expansion is caused by equations whose coefficients of 
highest derivatives depend on arbitrary functions $f(u)$ and $g(u)$. 
When these equations reduce another equation, they may be
differentiated with respect to $u$ a number of times. One of the
techniques used by the function {\bf decouple}() to overcome the
expansion problem is to replace large coefficients of the highest
derivatives with arbitrary functions, namely {\em AAA\_k} where $k$
are integers. The functions {\em AAA\_k} have the same dependencies as
the coefficients. A replacement is done depending on how large the
coefficient is. The global variable {\em desolv\_sublimit} allows the
user to control such replacements. If the length of a coefficient is
larger than the value of {\bf desolv\_sublimit}, a replacement will
take place. By default, {\bf desolv\_sublimit} is set to be at $10^5$. 

Another technique of avoiding the expansion is to delay the reduction
of integrability conditions. When an integrability condition is
computed, immediately it is reduced with respect to the current
system. The reduction can be delayed until all integrability
conditions are calculated by setting the parameter
{\bf desolv\_reduce} to be {\it false}. By default, the parameter
{\bf desolv\_reduce} is set to be {\it true}. The following Maple
session shows how the function {\em decouple}() simplifies the above
defining equations by setting {\bf desolv\_reduce} = {\it false} and 
{\bf desolv\_sublimit} = 100.

\vspace{5mm}
\underline{\em Example}:
\singlespace
\begin{verbatim}
> read desolv:
> de := [ diff(v(x,t),t) = diff(u(x,t),x), 
diff(v(x,t),x) = f(u(x,t))*diff(u(x,t),t) + g(u(x,t)) ]:
> le := gendef(de,[u,v],[x,t]):
> desolv_reduce := false:
> desolv_sublimit := 100:
> s1 := decouple(le[1],le[2],le[3]);
\end{verbatim}
\begin{eqnarray*}
\lefteqn{ s1 := \Bigg[ \eta_u(x,t,u,v),\,
    {\p \over \p v} \xi_x(x,t,u,v),\,
    {\p \over \p v} \xi_t(x,t,u,v),\,
    {\p \over \p v} \eta_v(x,t,u,v), }\\
&& {\p \over \p u} \xi_x(x,t,u,v),\, 
    {\p \over \p u} \xi_t(x,t,u,v),\, 
    {\p \over \p t} \xi_x(x,t,u,v),\,
    {\p \over \p u} \eta_v(x,t,u,v), \\
&& {\p \over \p t} \xi_t(x,t,u,v),\,
    {\p \over \p t} \eta_v(x,t,u,v),\,
    {\p \over \p x} \xi_t(x,t,u,v), \\
&& {\p \over \p x} \xi_t(x,t,u,v),\,
    {\p \over \p x} \eta_v(x,t,u,v) \Bigg]
\end{eqnarray*}
\begin{verbatim}
> sol := pdesolv(s1,le[2],le[3]);
\end{verbatim}
\begin{eqnarray*}
\lefteqn{ sol := [ [\,],\,[\,],\,[ \xi_x(x,t,u,v) = C\_3, }\\
&&  \xi_t(x,t,u,v) = C\_1, \, \eta_u(x,t,u,v) = 0,\,
    \eta_v(x,t,u,v) = C\_2 ], \\
&&  [ C\_1,\, C\_2,\, C\_3 ] ]
\end{eqnarray*}
\begin{verbatim}
bytes used=82878192, alloc=2489912, time=547.67
\end{verbatim}
\onehalfspace

This Maple session took 547 seconds of CPU time to complete. The
intermediated calculation of the function {\em decouple}() can be
displayed by setting the variable {\bf infolevel[decouple]}. The
higher the value of {\bf infolevel[decouple]}, the more calculation
is displayed.

\end{document}

