
Calling Sequence


casesplit(sys, optional_1, optional_2,...)


Parameters


sys



single DE, or list or set of DEs; any system of differential equations

optional_1, optional_2, ...



(optional) arguments can be given in any order and are described as follows

ranking



list or set of solving variables represented by names or functions, or list or set of them

caseplot



indicates that in addition to the splitting into cases a graphical representation of the splitting is to be plotted

ivars={y1, y2, ...}



indicates that {y1, y2,...} are independent variables regardless of whether they appear in the unknowns of the system

ivars=[y1, y2, ...]



the righthand side is a list; indicates the ranking ordering for the independent variables

lex



useful to produce ODEs from PDEs, indicates the use of an elimination ranking for the independent variables instead of the default orderly one

lex(f(y1, y2...)



indicates the elimination ranking ordering of the independent variables to be as in f

parameters=P



P is a list or set of names or functions that are solving variables with lower priority than any other variable

fast=boolean



if boolean = true then run only one round of computations; if false run always two, otherwise let casesplit decide

singsol=false



avoid the computation of the singular cases when the system is nonlinear

arbitrary=A



avoid splitting into cases with respect to elements of A, where A is a list or set of names or functions

ctl=N



compute with a timelimit of N seconds per case

mindim=N



discard cases with solution space of dimension less than N

rankingused = ...



the righthand side is a name that will be assigned the ranking used for the unknowns of the system

ivarsused = ...



the righthand side is a name that will be assigned the independent variables of the system with the ordering they were ranked

rif



default, force splitting by using the Rif subpackage of DEtools

diffalg



force splitting by using the DifferentialAlgebra package





Description


•

The casesplit function receives one DE, or a set or a list of DEs (it is also possible to include inequations and nondifferential equations) and splits the system into regular systems associated with different cases. The union of the nonsingular solutions of these regular systems returned is equal to the full set of solutions, including the singular ones, of the original input system. Each regular system automatically satisfies all the integrability conditions. The splitting into cases is performed by using the Rif subpackage of DEtools (default), or using the DifferentialAlgebra package when the keyword 'diffalg' is given as an optional argument. casesplit also works with anticommutative variables set using the Physics package using the approach explained in PerformOnAnticommutativeSystem.

•

The casesplit command is useful for studying the different cases of a given DE system, uncoupling the system in different ways using different orderings for the solving variables (rankings), and determining whether the system is inconsistent. The casesplit command can also be used to remove redundancies and to make the system complete, including simplifying it by using all its integrability conditions. All these tasks are automatically performed each time casesplit is invoked.

•

Ranking is a fundamental concept related to the splitting process performed through casesplit. A ranking is basically an ordering of the variables of the problem (herein called solving variables) in the form of a list of functions or symbol variables, as in $\left[f\left(x\right)\,g\left(x\right)\,h\left(x\right)\,a\right]$ (one can also specify functions by using only their names as in $\left[f\,g\,h\,a\right]$). Different rankings imply different uncoupling orderings and, hence, different manners of splitting and uncoupling the DE system (see checkrank, DifferentialAlgebra[Tools][Display], and the examples below).

•

In the case of a system of ordinary differential equations (ODEs), provided the system is not subdetermined, the default output of casesplit consists of a sequence of uncoupled ODE systems, where the uncoupling ordering used is that of the solving variables in the ranking. The ranking is provided by the user as a list or automatically set by casesplit. That means, for instance, that if a system depending on the functions $\left[f\left(x\right)\,g\left(x\right)\,h\left(x\right)\right]$ is given with this list as ranking, the equations in each returned system are of the form $\[\mathrm{..}f\left(x\right)\mathrm{..}=\mathrm{..}\left(f\left(x\right),g\left(x\right),h\left(x\right)\right)\mathrm{..},\mathrm{..}g\left(x\right)=\mathrm{..}\left(g\left(x\right),h\left(x\right)\right)\mathrm{..},\mathrm{..}h\left(x\right)\mathrm{..}=\mathrm{..}\left(h\left(x\right)\right)\]$. So, the last equation involves only $h\left(x\right)$, the next to the last equation involves $g\left(x\right)$ and $h\left(x\right)$, and the first equation involves the three functions. This is called sequential uncoupling.

•

In the case of a system of partial differential equations (PDEs), the situation is the same as with ODEs but the concept of sequential uncoupling requires clarification. Concretely, instead of one equation related to each function, one could receive many equations. For instance, if a system depending on the functions $\left[f\left(x\,y\,z\right)\,g\left(x\,y\,z\right)\,h\left(x\,y\,z\right)\right]$ is given and with this list as ranking, the equations in each returned system are of the form $\[\mathrm{eqs}\left(f=\mathrm{..}\left(f,g,h\right)\mathrm{..}\right),\mathrm{eqs}\left(g=\mathrm{..}\left(g,h\right)\mathrm{..}\right),\mathrm{eqs}\left(h=\mathrm{..}\left(h\right)\mathrm{..}\right)\]$, where $\mathrm{eqs}\left(h=\mathrm{..}\left(h\right)\mathrm{..}\right)$ means equations (possibly PDEs) only depending on 'h' and so on.


Input and Output


•

The first argument sys can be one DE, or a set or a list of DEs, possibly including inequations and nondifferential equations (such as algebraic constraints). Equations are entered by using $\mathrm{expr1}\=\mathrm{expr2}$, or expr1. In this case it is assumed that expr1 = 0. Inequations are entered by using $\mathrm{expr1}\ne \mathrm{expr2}$.

•

The output of casesplit is a sequence of expressions representing the different cases (possibly only one) and corresponding equations and inequations (these are the ones returned by the corresponding Equations and Inequations commands of DifferentialAlgebra). Each case is returned as a function of two operands and displayed as $\[\mathrm{eq1},\mathrm{eq2},...\]\&\mathrm{where}\[\mathrm{ineq1}\ne 0,\mathrm{ineq2}\ne 0,...\]$. Both operands are lists. This printing is obtained, however, by using a print/foo mechanism, and the true structure of each returned case is a function `casesplit/ans`( [ eq1, eq2, ...], [ ineq1 <> 0, ineq2 <> 0, ...] ).

•

The actual splitting of a system obtained when calling casesplit is basically computed through various calls to different commands of the DifferentialAlgebra package, or optionally the DEtools[Rif] package. These are the two Maple differential elimination packages.

•

Apart from simplifying the steps required by a direct use of DifferentialAlgebra, casesplit radically extends the domain of computation of DifferentialAlgebra or DEtools[Rif]. Concretely, casesplit can split a system into regular cases even when this system contains nonpolynomial objects, such as fractional or abstract powers, most Maple known functions (for example, exponentials, logarithms, trigonometric, and special functions) and also any arbitrary composition of these nonpolynomial objects, for example, $\mathrm{exp}\left(\mathrm{sqrt}\left(\mathrm{BesselJ}\left(...\right)\right)\right)$.

•

This extension of the domain of computation is performed by rewriting all nonpolynomial objects by using auxiliary functions of the form $\mathrm{\_Fn}$ (n being an integer) and adding to the input system the polynomial (algebraic and differential) equations these $\mathrm{\_Fn}$ functions satisfy (see dpolyform). For example, ${\ⅇ}^{x}$ is replaced by $\mathrm{\_F1}\left(x\right)$, and the auxiliary ODE $\frac{{\ⅆ}^{2}}{\ⅆ{x}^{2}}\mathrm{\_F1}\left(x\right)\=\mathrm{\_F1}\left(x\right)$ is added to the system. These auxiliary functions, the equations they satisfy, and their consequences are removed before returning the output.



Optional arguments


•

All arguments after the first one are optional and can be included in any order.

•

When the solving variables are not specified, casesplit takes all unknown functions found in the DE system as solving variables, and uses its own heuristic methods to determine what could be the best uncoupling ordering for the given system. However, it is possible to specify a ranking, which indicates the solving variables and their order. When the ranking to be specified involves only one variable, it can be given as this variable, or its name, for example, $f$ for $f\left(x\,y\,z\right)$. In all cases the ranking can be specified as a list or a set of solving variables, functions can be indicated by only their names, and this set or list can include 'symbol' solving variables (equivalent to functions with all derivatives equal to zero).

•

When the ranking is given as a set or list, each of its elements can, in turn, also be a set or list of names or functions. For example, $\left[\left\{f\,g\right\}\,h\,\left[j\,k\right]\right]$, $\left[\left\{f\,g\right\}\,h\,\left\{j\,k\right\}\right]$, and $\left\{h\,\left[f\,g\right]\,\left\{j\,k\right\}\right\}$ are valid rankings. In such cases, the solving ordering for the elements inside each set $\{...\}$ is decided by casesplit. Only one level of nested list or sets is allowed.

•

Using standard terminology, a ranking as in $\left[f\,g\,h\right]$  also called lexicographic or elimination ranking  leads to a splitting using a lexicographic ordering. When a ranking is given as a nested list, for example $\left[\left[f\,g\,h\right]\right]$, the splitting is performed by using a total degree ordering. These rankings are also called total degree or orderly rankings. Total degree rankings, however, generally do not result in the uncoupling of the given system. They simplify the system by using integrability conditions, and so check for inconsistencies as well as lead to a version of the system with the lowest differential order. This usually leads to faster computations than when using lexicographic ordering. To understand the meaning associated with a given ranking, use the checkrank or DifferentialAlgebra[Tools][Display] commands. Input rankings in casesplit have exactly the same meaning they have in calls to commands of the DifferentialAlgebra package.

•

When the ranking is not specified, you can see the ranking used by setting infolevel[casesplit] := 2. Setting this variable to $3$ causes the display of the input sent to RosenfeldGroebner or DEtools[rifsimp], as well.

•

The independent variables of a given system are determined by default as the variables on which the unknown functions of the system depend. However, there may be cases in which other variables, not present in the unknown functions of the system, are also independent variables of the problem. These extra independent variables can be indicated using the ivars = {...} optional argument. In such a case, these variables are added to those determined as the independent variables of the problem. This is useful, for example, when the unknowns of the system depend  say  on x, y, but the equations involve  say  z, and you are not interested in solutions depending on z.

   