Also of interest is that computational math is not quite the same
as math. Axiom has some categories, such as RNG, which don't seem
to match those of regular math. One question is whether this is
just a design flaw or does it expose a new computational object
that we need to examine theoretically.
I like this example! Let's look to the sources in catdef.spad
Rng(): Category == Join(AbelianGroup,SemiGroup)
Ring(): Category == Join(Rng,Monoid,LeftModule(%)) with ...
So Ring has a multiplicative identity, Rng hasn't.
There is surely a difference between mathematics and computational
mathematics. As a mathematician I would like to tell my computer
"Ring is a ring with identity" if this is appropriate for my context.
And in another context I would like to use Ring to denote a ring without
identiy. That is what mathematicians do all the time. But if you use a
computer, then Ring is predefined by the programmer and if you don't
like it you have to use another name for what you like to be called
"Ring". As long as the contexts never meet there is no problem with two
different "Ring"s. But how can one map this into a CAS?
In Axiom/Aldor you cannot have both, because
Ring: Category == with { -- ring with identity }
Ring: Category == with { -- ring withoug identity }
are both of the same type (Category) and one cannot have two constants
with the same name and type and different values.
But maybe all identifiers within the library should come with a uniqe
prefix (for example, "Abc" and one would have an additional macro file
that provides the standard names. So one would for example provide
macro Ring == AbcRing;
macro Rng == AbcRng;
as standard and if a user is not happy with this naming scheme, s/he can
simple modify the macro and all is fine.
Ralf
_______________________________________________
Axiom-developer mailing list
Axiom-developer@nongnu.org
http://lists.nongnu.org/mailman/listinfo/axiom-developer