axiom-developer
[Top][All Lists]

## 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 1.5.0.4 (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.
```
Ralf

```