MathGroup Archive 2005

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Algebra in Mathematica

  • To: mathgroup at
  • Subject: [mg56088] Re: Algebra in Mathematica
  • From: David Bailey <dave at>
  • Date: Fri, 15 Apr 2005 04:47:28 -0400 (EDT)
  • References: <d3ibcu$9qt$>
  • Sender: owner-wri-mathgroup at

jamievicary at wrote:
> Dear all,
>     I am trying to implement an algebra in mathematica, but I don't
> want to use a matrix representation for it. So, I've got elements like
> A, B and C, and I want to tell Mathematica, for example, that A.B==-C,
> along with other identities. I then want to put some complicated
> expression in, like A.B.B.C.B-B.C.A+A.B.C.B.A and have Mathematica
> simplify it using the rules of the algebra. What's the best easiest way
> to implement this? The elements of my algebra form a group; are there
> group-theory capabilities in Mathematica that I can use to do what I
> want? What if I change my algebra so that it stops being a group (for
> example, make it nonassociative) --- would this then make things much
> harder?
>             Thanks very much!
>                 Jamie.
Don't use Plus and Times - use one of the undefined Mathematica 
operators - such as \[CirclePlus] and \[CircleTimes]. These already have 
suitable precedences, but are not, by default, commutative. Tou can make 
them commutative, if you wish, by setting the Orderless attribute on 
CircleTimes and CirclePlus. (See the FullForm of a\[CircleTimes]b, to 
understand this).

Once you have all this in place, you can either write definitions for 
thinks like CircleTimes[a_,b_]:= ..... or you can operate on expressions 
using collections of transformation rules. I think the latter approach 
is more flexible because you can decide which if any transformations to 
apply at any point.

David Bailey

  • Prev by Date: Re: Position different in 5.0 and 5.1?
  • Next by Date: Re: Re: Mathematica graphs in WORD
  • Previous by thread: Re: Algebra in Mathematica
  • Next by thread: confusion about Thread[]