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: 14 Mar 2006 01:49:00 +0100

```Ralf Hemmecke <address@hidden> writes:

| hi Martin,
|
| On 03/13/2006 01:15 PM, Martin Rubey wrote:
| > Ralf Hemmecke <address@hidden> writes:
| >
| >> Hi Martin,
| >>
| >> a quick response to the following...
| >>
| >>> There is a simple practical reason why I dislike the idea of asking just
| >>> "Integer has Monoid".
| >>> Imagine I'm programming a package, and I need that a parameter domain M
is a
| >>> monoid, so that I can use the monoidal structure, for example for
| >>> multiplying. Well, then simply asking M has Monoid doesn't buy me
anything,
| >>> since I won't be sure that M really is a Monoid with respect to "+".
| >> Imagine you could ask "if M has Monoid(+)..." or "if M has
| >> Monoid(*)...". According to which returns true, you would then go on and
call
| >> (m1 +\$M m2) or (m1 *\$M m2). Well, but M might have a monoid structure with
| >> respect to the operation ".". Do you really also want to ask "if M has
| >> Monoid(.)..."? That soon becomes impractical.
| > No, this is not an issue about practicality.
| > Look at it this way: Suppose "M has Monoid" returns "true". How do
| > you know
| > then with respect to which operation M is a monoid? What can you do with the
| > information that M is a monoid with respect to some operation?
|
| If
|    Monodid: Category == with{ 1:%; *:(%,%)->%; }
| then "M has Monoid" means that M has a 1 and *.

I note the predicate.  Notice that what you say does not contradict
what Martin said.  You're showing a non-parameterez structure --
where the exported constants are not parameterized.  Martin is
interested in case the structure is parameterized.  Consequently the
proper course of action is that the question is asked for specific
arguments.

-- Gaby

```