Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

commuting and non-commuting symbols

195 views
Skip to first unread message

Ian Swanson

unread,
Oct 30, 2001, 4:53:53 AM10/30/01
to

Hi

My research group is trying to use Mathematica to simplify and verify some
complicated expressions that combine various parameters living in
different spaces. Basically, we need to be able to label certain symbols
as commuting and certain others as non-commuting (ie. Grassman numbers).
We then need to perform standard matrx multiplication with this mixture of
commuting and non-commuting variables -- and have Mathematica simplify the
resulting expressions as much as possible. Can anyone help??

Thank you,
Ian

______________________________
| Ian J Swanson |
| Theoretical Physics |
| 253 Lauritsen |
| swa...@theory.caltech.edu |
| office: 626.395.2615 |
| cell: 626.230.1882 |
|____________________________|


Andrzej Kozlowski

unread,
Oct 31, 2001, 3:34:37 AM10/31/01
to
Try <http://www.math.ucsd.edu/~ncalg/>. You may well find what you want,
particularly if you are using one of the operating systems they support.
In fact their non-commutative algebra package needs only Mathematica 2.2
on any platform, but the non-commutative Groebner basis (which for me is
much more interesting) is a compiled C++ code.

The alternative is to develop everything yourself. I have developed my
own non-commutative package for doing computations in mod p cohomology
rings of spaces. In this case when p is odd odd dimensional cohomology
classes anti-commute. This works quite well, but I have not tried to do
anything with matrices.

Andrzej Kozlowski
Toyama International University
JAPAN
http://platon.c.u-tokyo.ac.jp/andrzej/

Daniel Lichtblau

unread,
Oct 31, 2001, 3:49:13 AM10/31/01
to
Ian Swanson wrote:
>
> Hi
>
> My research group is trying to use Mathematica to simplify and verify some
> complicated expressions that combine various parameters living in
> different spaces. Basically, we need to be able to label certain symbols
> as commuting and certain others as non-commuting (ie. Grassman numbers).
> We then need to perform standard matrx multiplication with this mixture of
> commuting and non-commuting variables -- and have Mathematica simplify the
> resulting expressions as much as possible. Can anyone help??
>
> Thank you,
> Ian
>
> ______________________________
> | Ian J Swanson |
> | Theoretical Physics |
> | 253 Lauritsen |
> | swa...@theory.caltech.edu |
> | office: 626.395.2615 |
> | cell: 626.230.1882 |
> |____________________________|

You will probably want to use Inner, which generalizes Dot, to handle
the matrix products. You will need to write your own myTimes or some
such to handle a mix of scalars and variables. If they satisfy something
along the lines of anticommuting relations, all the better in that one
can easily canonicalize. Some related ideas, with code, have appeared on
MathGroup and are at the below location in the archives.

http://library.wolfram.com/mathgroup/archive/1999/Dec/msg00105.html
with some corrections in:
http://library.wolfram.com/mathgroup/archive/1999/Dec/msg00167.html
(I've been told even the corrected version had a flaw or two).

Here are two other URLs that may be relevant.

http://library.wolfram.com/mathgroup/archive/2000/Nov/msg00299.html
http://library.wolfram.com/mathgroup/archive/1999/Mar/msg00510.html

Several others have also contributed posts regarding various aspects of
implementation of noncommutative algebra, so you may want to search
MathGroup archives. Moreover there are packages on MathSource that may
have functionality of use here, for example NCAlgebra.


Daniel Lichtblau
Wolfram Research

David Park

unread,
Oct 31, 2001, 3:50:13 AM10/31/01
to
Ian,

You should be able to do it. Here is a little toy system which labels
numbers and symbols as to whether they are to be used for multiplication or
as powers. 3[t] means 3 is to be used for multiplication and 3[p] means that
3 is to be used as a power. Then we can write our products using
CircleTimes. CircleTimes can be used as an infix operator and has no
attributes. CircleTimes can be entered as esc c * esc, or by \[CircleTimes].
You can make a palette if you are going to use these symbols a lot. We can
then write definitions for CircleTimes which implement the specific
operations depending on the type of quantity, t or p. In this set of
definitions, an expression is evaluated from left to right.

Clear[CircleTimes];
CircleTimes[a_[t], b_[t], c___] := CircleTimes[(a b)[t], c];
CircleTimes[a_[t], b_[p], c___] := CircleTimes[(a^b)[t], c]
CircleTimes[a_[b : (p | t)]] := a[b]


3[t]\[CircleTimes]4[t]
12[t]

3[t]\[CircleTimes]4[p]
81[t]

If there is no definition, you just get the expression back.

4[p]\[CircleTimes]3[t]
4[p]\[CircleTimes]3[t]

3[t]\[CircleTimes]x[t]\[CircleTimes]y[p]
3^y*x^y

3[t]\[CircleTimes](x[t]\[CircleTimes]y[p])
(3*x^y)[t]

This would be one approach. All the definitions on how to handle different
combinations of element types have to be specified. You will probably get
other useful answers.

David Park
dj...@earthlink.net
http://home.earthlink.net/~djmp/

Rolf Mertig

unread,
Nov 3, 2001, 5:45:08 AM11/3/01
to
Hi,
check out FeynCalc. See, e.g.:

http://www.feyncalc.org/DotSimplify/
http://www.feyncalc.org/DeclareNonCommutative/

You may need to write your own noncummative matrix multiplication
function though. In FeynCalc "." is used as noncommutative
multiplication operator, not as matrix operator.

Rolf Mertig

P.s.: If you need speed, use FORM. It is much faster than
FeynCalc/Mathematica for noncommutative polynomial manipulation.
But it is a bit more cumbersome to use and program.

See
http://www.nikhef.nl/~form/
--
Mertig Consulting
Berlin
http://www.mertig.com

0 new messages