vector times vector; vector^-1?



> >  One way out would be to have long descriptive names for
> >  operations but have local definitions for operators symbols.
> >  I guess "+", "*" and "^" are out of discussion, but you could do
> >  something like declare_operator(".", inner_product) without messing
> >  with non-commutative multiplication on a global level like vect does
> >  now.
> >
> >  I believe this could be done mostly backwards compatible and be much
> >  more in the spirit of maxima then inventing new objects for everything.
> 
> Harald, I'm not sure I understand what you mean here.
> Can you explain in more detail? How does it relate to vector operations?

Ok, I'll try to explain it more abstractly, to make it clearer:

Symbolic computations are different from math and there is no canonical
mapping between them two. I can imagine various ways how to give a
mathematical meaning to some symbolic computation.

One way is to invent a new data type for each mathematical object and
let each data type have its own operations which represent the mathematical
properties of the objects. That's called operator overloading. This
also means that you need to give each symbol a data type, because
all the math is represented by this data type. I think
that's essentially what axiom is doing.

An other way is to give specific properties (commutative, assoziative, 
distributes_over_foo, ... ) to operators and not care much about the
operands. This means that whenever you need a new combination of
properties, you need to invent a new operator. - I think that's mostly
how maxima used to work (Yes, maxima has declare(foo, scalar) etc.,
but that has always been half baked stuff).

It seems that people turn away from the operator centric model in
favour of the data type centric model. I wonder what is the reason:
 * Easier to write nice display code
 * It's just superior
 * Maxima ran out of nice symbols for operators
 * Something else?

At least the "running out of nice symbols" issue could be addressed by
having non nice symbols - something like nc_mult(a,b,c) - and some
syntax like block([".":nc_mult], ...) 

I guess my point is that the data type centric approach is already
covered well by axiom. Maxima OTOH has traditionally followed more
the operator centric model, perhaps it would be useful to keep this.

Anyway: I think this "local redefinition of operators" stuff, would
be very nice to have and might separate maxima from other CAS as
being convenient but still consistent.


What all this has to do with vectors? - Nothing special, but how many
different operations on vectors do you know, that all are called
multiplication or product? After all there is a reason, why the vect
package is messing with "." 


I hope this is clearer now.
Harald