Dear Martin,

I am surely not the person to aks for general AXIOM(TM) designs, since I am
a novice on that either

> The current implementation seems to calculate the product of terms every time
> it is required when a multiplication is called. From a performance point of
> view it would seem much more efficient to calculate a multiplication table

This will work for very small diemnions. In my maple Clifford package
(with Rafal Ablamowicz) we tried to do that, and we were not able to
compute the multiplication
tables for dim V > 8, since they become _very_ huge. A partial solution is
to cache the results of such multiplications and to read results from the cache
if present. There si currently a discussion going of on teh FriCAS
(AXIOM(TM) fork)
developers list how to do this properly. It seems that only certain
data structures
can be cached and that one has to translate user data structure
possibyl into a Lisp expression which can be hashed. This is surely
nothing a novce user (as I feel to be)
would like to crank.

> -- The ei*ej products could instead be precomputed in
> -- a (2**n)**2 multiplication table.

In principle yes, but if you have different bases, tha means also to store the
multipication table for each basis, which might soon become a problem.
Anyhow the first step is to _have_ a valid function which produces such a table,
then one can think of hashing.

> The entries in such a table (in the general Grassman case) would be quite
> complicated. Not just a single type but perhaps a sum of types with algebraic
> number multipliers.

That seems actually not to be a big issue, If we hash the product of two basis
elements, (Vector Integer, Vector Integer) the rsult is alway of type

CLQ  := Type: CliffordAlgebra(2,Fraction(Integer),[[1,0],[0,1]])
           <<CliffordAlgebra(dimension:Integer, Field, QuadraticForm)>>

so a table (Index,Index) -> CLQ would do the trick, I guess.

> oriented program then, I would create a class for the multiplication table and
> also a class for individual table entries. I don't know if that's how things
> are done in Axiom?

The table entries are from the domain CLQ, and there is a type Table(key,value)
in AXIOM.

> I don't know enough about the mathematics but is seems to me that classes
> (domains) such as mutiplicationTable and multipicationTableEntry might have
> wider application for implementing other algebras?

What one would need from the outset is a graedFreeModule(Ring,Basis) V
to model the Grassmann algebra. The Clifford algebra is (a sub alegbra of)
the endormiphism algebra of that, hence lives in the tensor product V (x) V^*

A general clifford elment is hence representet (inefficiently) by a sum of such
tensors.

> could these things link back to more fundamental structures, for example could
> there be an inheritance hierarchy like:
>
> ring
> field
> field which is a compound type
> compound type which can be defined by a multiplication table.
> clifford (Grassman) algebra

Indeed such hierarchies exist in AXIOM. However, one possibly needs
even modules over skew fields and I do not know if such things are implemented.

Complex Clifford algebra: CL(n)  has two cases n even and n odd
Real Clifford algebra. CL(p,q) has 8 cases where the base ring of the
representation
is in IL whre
IL={ reals, complex, quaternions, reals(+)reals, quaternios(+)quaternions}

If you would allow Clifford algebras to be build over, say finite
fields, or the integers,
I am not even sure there is a general classification result available.
Quadratic forms
(dim 2) with integral coefficients are classified by automorphic forms.....

> Is there someone who defines the overall structure of Axiom at this level?

Tim has sent you the link to the graph of AXIOM types, sacry isn't it?
But a grep on the sources sometimes points you to peices of code where
you can just see how other people made use of that.

> What do you think would be the best approach to this?

The first step would be to implement a solid version of the Grassmann
Hopf algebra.
(Hopf is automatic, i.e. in a mathematical sense 'universal'). After
one can define a
GrassmannH Hopf algebra (even better and very much desirable Grassmann
super Hopf algebra, i.e a Grassmann algebra over a Z_2 graded module)
one is ready to implement the Clifford product (either using the Rota
Stein Hopf algebra method, used in Clifford
with great effect) or the Chevalley recursive definition (which is
much slower for symbolic quadratic forms, which I want to be able to
use either).

So one would need to design an AXIOM(TM) category of the type

GrassmanSuperHopfAlegbra == ??
 where ?? has to be a gradedSuperModule(withBasis)(Ring,OrderedSet)

or such.... but I am not a category/domain specialist....

I am currently porting my SchurFkt package to AXIOM(TM) (FriCAS style)
and hope to improve my knowledge thereby to be able to implement such a
GrassmannSuperHopfAlgebraWithBasis after that enterprise...

Sorry for being unspecific, but that's due to my limited knowledge

Ciao
BF.


-- 
% PD Dr Bertfried Fauser
%       Research Fellow, School of Computer Science, Univ. of Birmingham
%       Honorary Associate, University of Tasmania
%       Privat Docent: University of Konstanz, Physics Dept
<http://www.uni-konstanz.de>
% contact |->    URL : http://clifford.physik.uni-konstanz.de/~fauser/
%              Phone : +49 1520 9874517


_______________________________________________
Axiom-developer mailing list
Axiom-developer@nongnu.org
http://lists.nongnu.org/mailman/listinfo/axiom-developer

Reply via email to