[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RNG vs. RING was: Re: [Axiom-developer] sbcl and Axiom

From: Ralf Hemmecke
Subject: RNG vs. RING was: Re: [Axiom-developer] sbcl and Axiom
Date: Thu, 27 Jul 2006 10:29:45 +0200
User-agent: Thunderbird (X11/20060516)

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.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]