ANN: clifford.py 0.6

Issac Trotts trotts at mit.edu
Mon Jan 29 04:09:19 EST 2001


> > Cool, so do you know if anyone is working on a symbolic 
> > package for Clifford/Geometric Algebra (other than me)?
> 
> In anything related to Python, no. There is a package for Maple
> available from the Cambridge GA page. . And I've seen an ad from 
> the (now-defunct?) MACSYMA people about a commercial MACSYMA package.
> 
> So what's your approach? What framework are you working in? PySymbolic?
> I've had a hankering to try to replicate the MACSYMA work in Maxima,
> but I haven't the time or expertise to do so.

I hadn't heard about PySymbolic until now.  Maybe I can work it
in somehow.

My approach is to represent expressions as expression trees.
All computations are based on properties of the operations and
operands, rather than having an explicit notion of an orthonormal 
basis enshrined in the system.  To compute with an ONB, you would make the
expression tree for, say x /\ y and then substitute

x --> x1 e1 + x2 e2 + x3 e3
y --> y1 e1 + y2 e2 + y3 e3

and 

e1 . e2 --> 0
e2 . e3 --> 0
e3 . e1 --> 0

This way, you don't have to look at messy expressions involving
coordinates unless you want to.  

The inner product will be implemented based on the definition
given by M. Riesz, as described in Leo Dorst's paper 
"Honing geometric algebra for its use in the computer sciences."
This definition of the inner product leads to more powerful and 
uniform theorems, which will make the implementation much cleaner.

One other noteworthy thing is that expressions will be able
to return a set of the possible blade grade sets they might
have, e.g. 

{{0,2}, {0}, {1,3,10}}

I'm working on representing the sets as set expression trees.
This way, you can say things like

"x is either a spinor or a vector"

which in set language means that the blade grade set of x is
an element of {{0,2}, {1}}.  Or you can say that 

"x is an arbitrary multivector"

which might be represented by saying that its blade grade set
is a member of Complement(EmptySet()), i.e., the universe of 
discourse.

I'm not aware of any other system that does this, even though
it seems like a very natural thing to do.  If I remember correctly,
the Cambridge people are using explicit computation with basis
elements, which seems contrary to the philosophy
of Geometric Algebra, even though it is much easier to implement.
It makes sense for a numerical system do everything in
terms of basis elements, but not a symbolic system.

If you're interested in collaborating, let me know.  Maybe we 
can make this a SourceForge project.

Issac

> Robert Kern
> kern at caltech.edu
> 
> "In the fields of hell where the grass grows high
>  Are the graves of dreams allowed to die."
>   -- Richard Harter
> -- 
> http://mail.python.org/mailman/listinfo/python-list




More information about the Python-list mailing list