axiom-developer
[Top][All Lists]

## Re: [Axiom-developer] Curiosities with Axiom mathematical structures

 From: Gabriel Dos Reis Subject: Re: [Axiom-developer] Curiosities with Axiom mathematical structures Date: 27 Feb 2006 05:08:42 +0100

```"Bill Page" <address@hidden> writes:

[...]

| >    1.  "+" or "*" are *syntax*, not algebraic properties.
| >        Whether a monoid is Abelian or not does stop it from
| >        being a monoid.  The mathematical definition of an
| >        Abelian monoid is that it is a monoid, whose operation
|
| I don't think there is any essential reason why SemiGroup and
| Monoid could not be implemented in the way you suggest. For
| example:
|
| )abbrev category SGROUP SemiGroup
| SemiGroup(m:Symbol): Category == SetCategory with
|       m: (%,%) -> %    ++ returns the product of x and y.
|       associative(m)
|
| )abbrev category ABELSQ AbelianSemiGroup
| AbelianSemiGroup(m:Symbol): Category == SemiGroup(m) with
|       abelian(m)
|
| ------
|
| The symbol for product can be passed as a parameter.

Indeed.
The reason I asked is that that design was carried over in the more
"modern" version of libalgebra.

| )show SemiGroup(*)
|
| I think the reasons are only historical. The changes to the
| Axiom library to implement this would be quite extensive.

I can understand the extent of the change, but I believe that to some
extent it is essential.

| One thing to remember about Axiom is that it does not actually
| implement "axioms" in a constructive manner.

that is understood.

| The properties
| 'associative' and 'abelian' are simply declarative.

yes, most computer algebra systems I know work that way -- just
define some tag and have system understand it and have people agree on
it.

| It is up
| to the SPAD programmer to include appropriate code such as
|
|   if D has associate("*"::Symbol) then ...
|

-- Gaby

```