Set the directory so that Mathematica knows where to get  the code .  
        For example:

SetDirectory["d:\\demoinvariantssymmetries\\webtest"]

Load the package. The command below will generate two messages.

Get["InvariantsSymmetries.m"]

IMPORTANT NOTE :  
        August 5, 2009

The user does not have to install the package Integrability to be able to use it .  The core code is
in the file InvariantsSymmetries . m .  Therefore,  
    the  Sections (below) on Loading the Package and Palettes can be skipped,  
    provided  the two Mathematica commands for setting the Directory and loading the file InvariantsSymmetries . 
        m via the Set command (at the top of this notebook) have been executed .  
So,  
    go directly to the section with Examples and execute the commands one by one.

© Copyright Notice

Copyright © by Unal Goktas and Willy Hereman (Department of Mathematical and Computer Sciences, Colorado School of Mines, Golden, Colorado, USA). No part of the Integrability package can be sold or reproduced without written consent of the authors. Wolfram Research, Inc. (Champaign, Illinois, USA) is the holder of the copyright to the Mathematica software system.

About the Package: Integrability

Nonlinear partial differential equations (PDEs) and differential difference equations (DDEs) possess a number of remarkable properties reflecting their rich mathematical structure. Such properties include the Painleve property, nontrivial prolongation and bi-Hamiltonian structures, soliton solutions, Lax pairs, Backlund transformations, symmetries and conservation laws (which we call invariants). They reveal the adequacy of PDEs and DDEs as models for physical relevant phenomena. The search for these intrinsic properties becomes more attractive due to the availability of CAS such as Mathematica. Indeed, Mathematica is well suited and often necessary tool to perform the computations inherent in the investigation of integrability.

Integrability is a collection of Mathematica functions addressing computations of invariants and symmetries in analyzing nonlinear PDEs and DDEs. The main topics covered in the Integrability package are as follows:
▪ Computations of invariants (that is conservation laws) for systems of nonlinear PDEs and DDEs,
▪ Computations of symmetries for systems of nonlinear PDEs and DDEs.

A complete set of mathematical definitions and the concepts used in the package and this manual are beyond the scope of this document. For the formal definitions of the concepts and the theory behind the functions in the Integrability package, consult the references given in the References section. In this manual, a basic knowledge of Mathematica is assumed. For further information on Mathematica, consult the standard Mathematica reference: The Mathematica Book,  Stephen Wolfram, Third Edition, Wolfram Media and Cambridge University Press, 1996.

Organization of the Package and Functionality

The package Integrability consists of the following  Mathematica packages.

InvariantsSymmetries.m 	       Computations of invariants and symmetries of PDEs and DDEs
init.m	                                           Function declarations

Packages and file names in Integrability

PDEInvariants[eqn, u, {x, t}, R, opts] finds the invariant with rank R of a partial differential equation for the function u.
PDEInvariants[{eqn1, eqn2, ...}, {u1, u2, ...}, {x, t}, R, opts] finds the invariant of a system of partial differential equations.
PDEInvariants[{eqn1, eqn2, ...}, {u1, u2, ...}, {x, t}, {Rmax}, opts] finds the invariants with rank 0 through Rmax.
PDEInvariants[{eqn1, eqn2, ...}, {u1, u2, ...}, {x, t}, {Rmin, Rmax}, opts] finds the invariants with rank Rmin through Rmax.
PDESymmetries[eqn, u, {x, t}, R, opts] finds the symmetry with rank R of a partial differential equation for the function u.
PDESymmetries[{eqn1, eqn2, ...}, {u1, u2, ...}, {x, t}, R, opts] finds the symmetry of a system of partial differential equations, where R is the rank of the first equation in the desired symmetry.
PDESymmetries[{eqn1, eqn2, ...}, {u1, u2, ...}, {x, t}, {Rmax}, opts] finds the symmetries with rank 0 through Rmax.
PDESymmetries[{eqn1, eqn2, ...}, {u1, u2, ...}, {x, t}, {Rmin, Rmax}, opts] finds the symmetries with rank Rmin through Rmax.
x is understood as the space variable and t as the time variable.

Functions for the analysis of PDEs in Integrability

DDEInvariants[eqn, u, {n, t}, R, opts] finds the invariant with rank R of a differential difference equation for the function u.
DDEInvariants[{eqn1, eqn2, ...}, {u1, u2, ...}, {n, t}, R, opts] finds the invariant of a system of differential difference equations. 
DDEInvariants[{eqn1, eqn2, ...}, {u1, u2, ...}, {n, t}, {Rmax}, opts] finds the invariants with rank 0 through Rmax. 
DDEInvariants[{eqn1, eqn2, ...}, {u1, u2, ...}, {n, t}, {Rmin, Rmax}, opts] finds the invariants with rank Rmin through Rmax. 
DDESymmetries[eqn, u, {n, t}, R, opts] finds the symmetry with rank R of a differential difference equation for the function u.
DDESymmetries[{eqn1, eqn2, ...}, {u1, u2, ...}, {n, t}, R, opts] finds the symmetry of a system of differential difference equations, where R is the rank of the first equation in the desired symmetry.
DDESymmetries[{eqn1, eqn2, ...}, {u1, u2, ...}, {n, t}, {Rmax}, opts] finds the symmetries with rank 0 through Rmax.
DDESymmetries[{eqn1, eqn2, ...}, {u1, u2, ...}, {n, t}, {Rmin, Rmax}, opts] finds the symmetries with rank Rmin through Rmax.
n is understood as the discrete space variable and t as the time variable.

Functions for the analysis of DDEs in Integrability

Options[PDEInvariants] = Options[DDEInvariants] = Options[PDESymmetries] = Options[DDESymmetries] =                              {WeightRules->{},WeightedParameters -> {}, MaxExplicitDependency -> 0, UndeterminedCoefficients -> C}	
WeightRules is an option that determines the rules for weights of the variables. If WeightRules ->{Weight[u] -> val, ...}, then scaling properties are determined under these rules. There is a built in checking mechanism to see if the given rules cause inconsistency.
WeightedParameters is an option that determines the parameters with weight. If WeightedParameters -> {p1, p2, ...}, then p1, p2,.... are considered as constant parameters with weight. The default is WeightedParameters -> {}.
MaxExplicitDependency is an option in finding the invariant and generalized symmetries of PDEs and DDEs. If MaxExplicitDependency-> Max_Integer, then program allows explicit dependency of independent variables of maximum degree of Max. The default is MaxExplicitDependency -> 0.
UndeterminedCoefficients is an option that determines the name of the constant coefficients to use. The default is UndeterminedCoefficients ->C.

Options of functions in Integrability

IMPORTANT NOTE :  
        August 5, 2009

The user does not have to install the package Integrability to be able to use it .  The core code is
in the file InvariantsSymmetries . m .  Therefore,  
    the  Sections (below) on Loading the Package and Palettes can be skipped,  
    provided  the two Mathematica commands for setting the Directory and loading the file InvariantsSymmetries . 
        m via the Set command (at the top of this notebook) have been executed .  
So,  
    go directly to the section with Examples and execute the commands one by one.

Loading the Package

To access all of the functions in Integrability, all you need to do is to load the file Integrability`init.m` by typing the following line in a Mathematica 3.0 notebook:

(* <<Integrability` *)

or simply, click at the following button "Load Integrability" in the help browser entry for the package. Note that this button can be copy-and-pasted in a notebook without losing its function.

(*    Load Integrability *)

Once Integrability`init.m` is loaded, the package will be automatically loaded when a function in the package is called from the Mathematica environment. So, in addition to the execution time of a function, some delay will occur when a package is first loaded.

If the directory in which the package is located is not on the Mathematica $Path, a warning message will be generated. To solve this problem, the directory containing the package should be included on the path $Path. The following Mathematica command puts the directory dir on your path.

(* AppendTo[$Path,"dir"] *)

It is customary to place the packages in a subdirectory called Applications (APPS under MS-DOS or Microsoft Windows), found under the Mathematica root directory. In Mathematica 3.0, the canonical location for applications packages is the directory AddOns/Applications. Since the path to this directory is included in $Path, the user need not to set a path for the packages placed in AddOns/Applications.

Palettes

Use the above hyperlink to get the designed palettes for the Integrability package.

Examples

If you haven't allready loaded the package, load it now by clicking at the following  button.

(*     Load Integrability *)

Korteweg-de Vries (KdV) Equation

\(kdveq := ∂\_t u[x, t] + 
          u[x, t]\ ∂\_x u[x, t] + ∂\_{x, 3}u[x, t] == 
        0\)

kdveq

TableForm[PDEInvariants[kdveq, u, {x, t}, {1, 8}], 
      TableHeadings -> {None, {"Rank", "Invariant"}}]

PDEInvariants[kdveq,u,{x,t},1,MaxExplicitDependency -> 1] //TableForm

PDESymmetries[kdveq, u, {x, t}, {7}]

TableForm[PDESymmetries[kdveq,u,{x,t},{9}],TableHeadings->{None,{"Rank","Symmetry"}}]

PDESymmetries[kdveq,u,{x, t},2,MaxExplicitDependency -> 1]

PDESymmetries[kdveq,u,{x, t},0,MaxExplicitDependency -> 1]

Boussinesq Equation

boussinesqpde1 := (∂_t) u[x, t] + (∂_x) v[x, t] == 
          0;
\(\(boussinesqpde2 := ∂\_t v[x, t] + ∂\_x u[x, t] - 
            3\ u[x, t]\ ∂\_x u[x, 
                  t] - α\ ∂\_{x, 3}u[x, t] == 
          0;\)\)

PDEInvariants[{boussinesqpde1, boussinesqpde2}, {u, v}, {x, t}, {2, 
        6}]

Nonlinear Schrodinger (NLS) Equation

\(\(nlspde1 := ∂\_t q[x, t] - ∂\_{x, 2}q[x, t] + 
            2\ q[x, t]\^2\ r[x, t] == 0;\)\)
\(\(nlspde2 := ∂\_t r[x, t] + ∂\_{x, 2}r[x, t] - 
            2\ r[x, t]\^2\ q[x, t] == 0;\)\)

PDEInvariants[{nlspde1,nlspde2},{q,r},{x,t},{2,5}]

PDEInvariants[{nlspde1,nlspde2},{q,r},{x,t},{2,5},
WeightRules -> {Weight[q] -> Weight[r]}]

Non-dispersive Long Wave System

longwavepde1 := (∂_t) u[x, t] + 
            u[x, t] (∂_x) v[x, t] + 
            v[x, t] (∂_x) u[x, t] == 0;
longwavepde2 := (∂_t) v[x, t] + (∂_x) u[x, t] + 
            v[x, t] (∂_x) v[x, t] == 0;

PDEInvariants[{longwavepde1,longwavepde2},{u,v},{x,t},{1,5}]

PDEInvariants[{longwavepde1,longwavepde2},{u,v},{x,t},{1,5},
WeightRules -> {Weight[u] -> 2}]

Ibragimov-Shabat System

\(\(ibragimovshabatpde1 := ∂\_t u[x, t] - ∂\_{x, 2}u[
                x, t] - 1\/2\ v[x, t]\^2 == 0;\)\)
\(\(ibragimovshabatpde2 := ∂\_t v[x, t] - 
            2\ ∂\_{x, 2}v[x, t] == 0;\)\)

PDEInvariants[{ibragimovshabatpde1,ibragimovshabatpde2},{u,v},{x,t},{6}]

PDEInvariants[{ibragimovshabatpde1,ibragimovshabatpde2},{u,v},{x,t},{6},
WeightRules -> {Weight[v] -> 2}]

PDESymmetries[{ibragimovshabatpde1,ibragimovshabatpde2},{u,v},{x,t},{5,7},
WeightRules -> {Weight[v] -> 2}]//TableForm

Burgers Equation

\(\(burgerseq := ∂\_t u[x, t] - 
            2\ u[x, t]\ ∂\_x u[x, t] - ∂\_{x, 2}u[x, t] == 
          0;\)\)

PDEInvariants[burgerseq,u,{x,t},{1,4}]

PDESymmetries[burgerseq,u,{x,t},{4,6}] // TableForm

\(KKfifthorderpde := \(\(∂\_t u[x, t] + 
          20*\ u[x, t]\^2\ ∂\_x u[x, t] + 
          25*\ ∂\_x u[x, t]\ ∂\_{x, 2}u[x, t] + 
          10*\ u[x, t]\ ∂\_{x, 3}u[x, t] + ∂\_{x, 5}u[x, 
              t]\)\(==\)\(0\)\(\ \)\)\)

KKfifthorderpde

PDEInvariants[KKfifthorderpde, u, {x, t}, {2, 6}]

Family of Fifth-order KdV Equations

\(\(fifthorderpde := ∂\_t u[x, 
                t] + α\ u[x, t]\^2\ ∂\_x u[x, 
                  t] + β\ ∂\_x u[x, t]\ ∂\_{x, 2}u[
                  x, t] + γ\ u[x, 
                t]\ ∂\_{x, 3}u[x, t] + ∂\_{x, 5}u[x, t] == 
          0;\)\)

resultinvariants = PDEInvariants[fifthorderpde,u,{x,t},{2,10}]

TableForm[resultinvariants,TableHeadings->{None,{"Rank","Condition - Density"}}]

resultsymmetries = PDESymmetries[fifthorderpde,u,{x,t},9]

TableForm[resultsymmetries,TableHeadings->{None,{"Rank","Condition-Symmetry"}}]

Hirota-Satsuma System

\(\(hirotasatsumapde1 := ∂\_t u[x, t] - 
            6\ α\ u[x, t]\ ∂\_x u[x, t] + 
            6\ v[x, t]\ ∂\_x v[x, 
                  t] - α\ ∂\_{x, 3}u[x, t] == 0;\)\)
\(\(hirotasatsumapde2 := ∂\_t v[x, t] + 
            3\ u[x, t]\ ∂\_x v[x, t] + ∂\_{x, 3}v[x, t] == 
          0;\)\)

PDEInvariants[{hirotasatsumapde1,hirotasatsumapde2},{u,v},{x,t},{2,8}]//TableForm

PDESymmetries[{hirotasatsumapde1, hirotasatsumapde2}, {u, v}, {x, t}, 
        7]  // TableForm

Toda lattice

todadde1 := (∂_t) u[n, t] - v[n - 1, t] + v[n, t] == 
          0;
todadde2 := (∂_t) v[n, t] - 
            v[n, t] (u[n, t] - u[n + 1, t]) == 0;

DDEInvariants[{todadde1, todadde2}, {u, v}, {n, t}, {1, 5}] // 
      TableForm

DDESymmetries[{todadde1,todadde2},{u,v},{n, t},{0,3}]//TableForm

The Volterra equation

volterradde := (∂_t) u[n, t] - 
            u[n, t] (u[n + 1, t] - u[n - 1, t]) == 0;

DDEInvariants[volterradde, u, {n, t}, {1, 5}] // TableForm

DDESymmetries[volterradde,u,{n,t},3]//TableForm

DDESymmetries[volterradde,u,{n,t},1,MaxExplicitDependency->1]

Ablowitz-Ladik discretization of the NLS equation

ablowitzladikdde1 := (∂_t) u[n, t] - (u[n + 1, t] - 
                2 u[n, t] + u[n - 1, t]) - 
            u[n, t] v[n, t] (u[n + 1, t] + u[n - 1, t]) == 
          0;
ablowitzladikdde2 := (∂_t) v[n, t] + (v[n + 1, t] - 
                2 v[n, t] + v[n - 1, t]) + 
            u[n, t] v[n, t] (v[n + 1, t] + v[n - 1, t]) == 
          0;

DDEInvariants[{ablowitzladikdde1,ablowitzladikdde2},{u,v},{n,t},2]

DDEInvariants[{ablowitzladikdde1, ablowitzladikdde2}, {u, v}, {n, t}, 
      2, WeightRules -> {Weight[u] -> Weight[v]}]

Parameterized Toda lattice

partodadde1 := (∂_t) u[n, t] - α v[n - 1, t] + 
            v[n, t] == 0;
partodadde2 := (∂_t) v[n, t] - 
            v[n, t] (β u[n, t] - u[n + 1, t]) == 0;

DDEInvariants[{partodadde1, partodadde2}, {u, v}, {n, t}, {1, 3}] // 
      TableForm

DDESymmetries[{partodadde1,partodadde2},{u,v},{n,t},3] //TableForm

Scope and Limitations

Integrability can handle systems of evolution equations and first order DDEs that are polynomial in the dependent variables. One space variable and one time variable are allowed.

Theoretically, there is no limit on the number of equations. In practice, for large systems, the computations may take a long time or require a lot of memory. Computational speed depends primarily on the amount of memory.

Only polynomial invariants and symmetries are computed. By design, Integrability constructs only invariants and symmetries that are uniform in rank. The uniform rank assumption allows one to compute independent invariants and symmetries piece by piece, without having to split linear combinations. Due to the superposition principle, a linear combination of invariants of unequal rank is still an invariant. This situation arises frequently when parameters with weights are introduced.

The systems may have parameters, which are assumed to be nonzero. If a system has parameters, the program will compute the conditions for these parameters so that invariants or symmetries of a given rank might exist. The assumption that parameters are nonzero is necessary. As a result of setting parameters to zero in an equation, the weights and therefore the ranks might change.

The assumption that the systems are uniform in rank is not very restrictive. If the uniform rank condition is violated, users can introduce parameters with weights. This also allows some flexibility in the form of the invariants and symmetries such that invariants and symmetries may not be uniform in rank. In cases where it is not clear whether or not parameters with weights should be introduced, one should start without introducing any. If this causes incompatibilities in the assignment of weights, program tries to cure the incompatibility by introducing parameters with weights. In cases of  persistent incompatibility, corresponding diagnostic messages are printed.

Negative weights on the dependent variables are not permitted. Zero weights are allowed, but at least one of the dependent variables must have positive weight. Fractional weights and ranks are permitted. In the case of existence of free weights function calls are returned unevaluated.

Acknowledgements

Thanks to R. Setinkaya, M. Ito, D. Lichtblau, J. Sanders, M. Trott, F. Verheest, J.P. Wang, P. Winternitz, S. Wolfram for many valuable comments and suggestions. National Science Foundation (USA) and Wolfram Research, Inc. are thanked for the support in development of this package.

References

M.J. Ablowitz and P.A. Clarkson, Nonlinear Evolution Equations and Inverse Scattering, Cambridge University Press, Cambridge, 1991.
U. Goktas and  W. Hereman, Symbolic Computation of Conserved Densities for Systems of Nonlinear Evolution Equations,  J. Symbolic Computation 24(5), 591-621, 1997.
U. Goktas and  W. Hereman, Computation of Conservation Laws for Nonlinear Lattices,  Physica D 123(1-4) , 425-436 , 1998.
U. Goktas and  W. Hereman, Computation of Higher-order Symmetries for Nonlinear Evolution and Lattice Equations,  Adv. Comput. Math. 11 , 55-80 , 1999.
U. Goktas, W. Hereman and G. Erdmann, Symbolic Computation of Conserved Densities for Systems of Nonlinear Differential-Difference Equations, Phys. Lett. A 236(1-2),  30-38, 1997.
W. Hereman, U. Goktas, M. Colagrosso and A. Miller, Algorithmic Integrability Tests for Nonlinear Differential and Lattice Equations, Comput. Phys. Commun. 115(2-3),  428-446, 1998.
M. Hickman and W. Hereman, Computation of Densities and Fluxes of Nonlinear Differential-difference Equations,  Proc. Roy. Soc. London A 459 , 2705-2729, 2003.
M. Ito, Comput. Phys. Commun. 79 , 547-554, 1994.
A.V. Mikhailov, A.B. Shabat and V.V. Sokolov, Russian Math. Surveys 42, 1-63, 1987.
P.J. Olver, Applications of  Lie Groups to Differential Equations, Springer-Verlag, Berlin, 1986.
S. Wolfram, The Mathematica Book, Fifth Edition, Wolfram Media-Cambridge University Press, 2003.

Contact Information

For information about the features of Integrability, or in case of trouble, contact Willy Hereman by email: whereman@mines.edu or mail to: Colorado School of Mines, Department of Mathematical and Computer Sciences, Golden, Colorado 80401-1887, U.S.A. You can also reach me by fax @ + 1-303-273-3875 (mention for Prof. Hereman) or by phone @ + 1-303-273-3881. Authors will greatly appreciate hearing your comments about any of the material in the Integrability package.