Perform a Maple command originally programmed to work only with commutative variables, in a system of equations with anticommutative variables - Maple Programming Help

Online Help

All Products    Maple    MapleSim

Home : Support : Online Help : Physics : Physics/PerformOnAnticommutativeSystem

Physics[PerformOnAnticommutativeSystem] - Perform a Maple command originally programmed to work only with commutative variables, in a system of equations with anticommutative variables

Calling Sequence

PerformOnAnticommutativeSystem(command, list_of_arguments, other_arguments)





a Maple command (not part of the Physics package) that is programmed to work only with commutative variables



a list with one or many algebraic expressions or relations, possibly including sets or lists of them, involving anticommutative variables, these are the arguments that command cannot handle directly



the rest of the arguments to be sent to command and that command can handle regardless of the presence of anticommutative variables in list_of_arguments



The PerformOnAnticommutativeSystem command performs, in a system of of expressions/relations involving anticommutative variables, an operation (Maple command) originally programmed to work only with commutative variables.


For Maple 16, only commands having a syntax similar to the Maple differential equation solvers dsolve or pdsolve are handled properly, although PerformOnAnticommutativeSystem will accept any other command and operation, and attempt to perform the operation as described below.


The first argument is the command that will perform the operation. The second argument is a list of arguments that will be sent to command after being pre-processed as explained in the itemization below. The remaining arguments will also be sent to command but are not supposed to require any pre-processing; command is expected to handle them regardless of the presence of anticommutative variables within them or in list_of_arguments.


The output of PerformOnAnticommutativeSystem is then what would be the output of command if it were capable of handling anticommutative variables. In this sense PerformOnAnticommutativeSystem extends the ability of existing Maple commands, originally programmed only to work on commutative domains, to handle extended domains involving anticommutative variables. The strategy used in PerformOnAnticommutativeSystem is as follows:


The list_of_arguments involving anticommutative variables is viewed as a system of relations (equations would be a special case of them) where each relation is expanded as a polynomial in its anticommutative variables (see ToFieldComponents).


Each polynomial is split into the Coefficients of the anticommutative variables transforming each relation into a system of relations, now involving only commutative variables. At this point the given problem got mapped into one that command is expected to handle.


The resulting system in step 2 is sent to command that performs the operation.


The result of step 3 is processed to reconstruct the original functions of anticommutative variables departing from its commutative components (see ToSuperfields), and the result returned.


PerformOnAnticommutativeSystem was written as an experimental command by the research team at Maplesoft, aiming at bridging the gap between thousands of programs originally written for commutative domains, and the computational needs of noncommutative geometry and its applications in Mathematics and Physics. There is a great deal of scope for changing and improving things in PerformOnAnticommutativeSystem. You are welcome to contribute your ideas by email to



Setup(mathematicalnotation = true);



Set first θ and Q as prefixes for variables of type/anticommutative (see Setup)

Setup(anticommutativepre = {theta, Q});

* Partial match of 'anticommutativepre' against keyword 'anticommutativeprefix'




Consider this partial differential equation for the anticommutative function Q of commutative and anticommutative variables x,θ

diff(Q(x, y,theta), x, theta) = 0;



Its solution using pdsolve, originally written to handle problems in a commutative domain

PerformOnAnticommutativeSystem(pdsolve, [(3)]);



Note the presence of the anticommutative arbitrary constant _lambda2, introduced by dsolve when solving intermediate ordinary differential equations. In fact both dsolve and pdsolve in Maple 16 have this approach calling PerformOnAnticommutativeSystem coded within them so they can tackle the problem directly:




To avoid redundant typing in the input that follows and redundant display of information on the screen let's use PDEtools:-diff_table PDEtools:-declare

PDEtools:-declare(Q(x, y, theta[1], theta[2]));

Qx,y,θ1,θ2will now be displayed asQ


q := PDEtools:-diff_table(Q(x, y, theta[1], theta[2])):

Now you can enter derivatives directly as the function's name indexed by the differentiation variables and see the display the same way; two PDEs

pde[1] := q[x, y, theta[1]] + q[x, y, theta[2]] - q[y, theta[1], theta[2]] = 0;



pde[2] := q[theta[1]] = 0;



Reduce pde[1] using pde[2] (see PDEtools:-ReducedForm)

PerformOnAnticommutativeSystem(PDEtools:-ReducedForm, [pde[1], pde[2]]);



Set ϒ and Κ to also be prefixes for anticommutative names

Setup(anticommutativepre = {Upsilon, Kappa}, additionally);

* Partial match of 'anticommutativepre' against keyword 'anticommutativeprefix'




Declare the anticommutative functions ϒx,y,θ1,θ2 and Κx,y,θ1,θ2 as well as the commutative function Ξx,y,θ1,θ2 and Τx,y,θ1,θ2, and use corresponding diff_table for all of them

PDEtools:-declare((Upsilon, Kappa, Xi, Tau)(x, y, theta[1], theta[2]));

Upsilonx,y,θ1,θ2will now be displayed asϒ

Kappax,y,θ1,θ2will now be displayed asΚ

Xix,y,θ1,θ2will now be displayed asΞ

Taux,y,θ1,θ2will now be displayed asΤ


U := PDEtools:-diff_table(Upsilon(x, y, theta[1], theta[2])):

K := PDEtools:-diff_table(Kappa(x, y, theta[1], theta[2])):

X := PDEtools:-diff_table(Xi(x, y, theta[1], theta[2])):

T := PDEtools:-diff_table(Tau(x, y, theta[1], theta[2])):

A large PDE system involving these four anticommutative and commutative functions ϒ,Κ,Ξ,Τ

sys := [U[x, x, x] - U[y] + a*theta[2]*theta[1]*U[x, x] + a*U[x, theta[1]]*theta[2] = 0,  - T[x, x, x] - 3*X[x] + T[y] - a*theta[2]*T[x, theta[1]] - a*T[x, x]*theta[2]*theta[1] = 0,  - K[x, x, x] + K[y] + 6*U[x] - 3*a*U[x] + a*K[x, theta[1]]*theta[2] - a*theta[2]*theta[1]*K[x, x] + a*U[x, theta[2]]*theta[2] = 0,  - 6*T[x] + 3*a*T[x] - a*theta[2]*T[x, theta[2]] = 0,  - 6*K[x] + a*K[x, theta[2]]*theta[2] + 3*a*K[x] = 0,  - X[x, x, x] + 3*U[x, x, theta[2]] + X[y] + 6*U[theta[1]] + a*theta[2]*U[theta[2], theta[1]] - 3*a*U[theta[1]] - a*theta[2]*X[x, theta[1]] - a*X[x, x]*theta[2]*theta[1] + 2*a*U[x, theta[2]]*theta[2]*theta[1] = 0,  - 3*T[x, x, theta[2]] - 3*X[theta[2]] - a*T[theta[2], theta[1]]*theta[2] - 6*T[theta[1]] + 3*a*T[theta[1]] - 2*a*theta[2]*theta[1]*T[x, theta[2]] = 0,  - 3*K[x, x, theta[2]] + 6*U[theta[2]] + 12*X[x] - 6*K[theta[1]] - 3*a*U[theta[2]] - 6*a*X[x] + 3*a*K[theta[1]] + a*theta[2]*K[theta[2], theta[1]] - 2*a*K[x, theta[2]]*theta[2]*theta[1] - a*theta[2]*X[x, theta[2]] = 0,  - 6*T[theta[2]] + 3*a*T[theta[2]] = 0,  - 6*K[theta[2]] + 3*a*K[theta[2]] = 0,  - a*T[x]*theta[2] = 0, a*theta[2]*T[theta[2]] = 0,  - 3*T[x, x] - 2*a*T[x]*theta[2]*theta[1] - a*theta[2]*T[theta[1]] = 0,  - a*theta[2]*T[theta[2]] = 0, 6*T[x, theta[2]] + 2*a*theta[2]*theta[1]*T[theta[2]] = 0,  - 3*K[x, x] - 2*a*theta[2]*theta[1]*K[x] + a*K[theta[1]]*theta[2] + a*U[] + 2*a*X[x]*theta[2] = 0, a*K[theta[2]]*theta[2] = 0,  - 6*K[x, theta[2]] - 2*a*theta[2]*X[theta[2]] - 2*a*K[theta[2]]*theta[2]*theta[1] = 0,  - a*theta[2]*K[] + 3*U[x, theta[2]] - 3*X[x, x] - a*theta[2]*X[theta[1]] - a*theta[1]*U[] + a*X[x]*theta[2]*theta[1] = 0,  - 3*T[x, theta[2]] = 0,  - 3*K[x, theta[2]] - a*theta[2]*X[theta[2]] = 0, 3*X[x, theta[2]] - a*theta[2]*theta[1]*X[theta[2]] = 0,  - 3*T[theta[2]] = 0,  - 3*K[theta[2]] = 0,  - 3*T[x] = 0, 3*T[theta[2]] = 0];


Note that the notation used in this display is compact, but the actual contents is there. For example, for the first equation in sys




Show the contents:


]),x),theta[1]),theta[2]) = 0

The simplification of sys taking into account its integrability conditions (see PDEtools:-casesplit)

PerformOnAnticommutativeSystem(PDEtools:-casesplit, [sys]);




See Also

anticommutative, casesplit, Coefficients, commutative, dsolve, Gtaylor, pdsolve, Physics, Physics conventions, Physics examples, Physics Updates, Tensors - a complete guide, Mini-Course Computer Algebra for Physicists, ReducedForm, Setup, solve, ToFieldComponents, ToSuperfields



The Physics[PerformOnAnticommutativeSystem] command was introduced in Maple 16.


For more information on Maple 16 changes, see Updates in Maple 16.