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