Physics[PerformOnAnticommutativeSystem] - Perform a Maple command originally programmed to work only with commutative variables, in a system of equations with anticommutative variables
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 firstname.lastname@example.org.
Set first θ and Q as prefixes for variables of type/anticommutative (see Setup)
* Partial match of '⁢anticommutativepre⁢' against keyword '⁢anticommutativeprefix⁢'
Consider this partial differential equation for the anticommutative function Q of commutative and anticommutative variables x,θ
Its solution using pdsolve, originally written to handle problems in a commutative domain
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
Q⁡x,y,θ1,θ2⁢will now be displayed as⁢Q
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
Reduce pde using pde (see PDEtools:-ReducedForm)
Set ϒ and Κ to also be prefixes for anticommutative names
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
ϒ⁡x,y,θ1,θ2⁢will now be displayed as⁢ϒ
Κ⁡x,y,θ1,θ2⁢will now be displayed as⁢Κ
Ξ⁡x,y,θ1,θ2⁢will now be displayed as⁢Ξ
Τ⁡x,y,θ1,θ2⁢will now be displayed as⁢Τ
A large PDE system involving these four anticommutative and commutative functions ϒ,Κ,Ξ,Τ