axiom-developer
[Top][All Lists]
Advanced

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

Re: [Axiom-developer] BINGO, Curiosities with Axiom mathematical structu


From: Gabriel Dos Reis
Subject: Re: [Axiom-developer] BINGO, Curiosities with Axiom mathematical structures
Date: 14 Mar 2006 01:30:45 +0100

William Sit <address@hidden> writes:

| Martin:
| 
| Good work (I'm impressed :-). I think your solution is in fact the way
| mathematicians build up algebraic structures: first define the underlying set
| and the basic operations, then prove that the axioms of certain algebraic
| structure are satisfied. Here you declare (rather than prove) these using
| Aldor's 'extend' mechanism.

Yes, and remarkable they don't use OO-centric view that hinder
evolution and improvements.

| 
| The beauty of your solution is that the notation (naming of the operations) is
| defined in the domain itself and then the algebraic properties declared by
| extension.
| 
| The slight disadvantage is that these structural operations must be listed 
with
| each domain,

no, only the independent parameters necessary to define the algebraic
structure need to be passed as parameter.  The rest is function of
those and default defined (or just listed) in the interface.

| and there is no default way (yet). So perhaps in MyMonoid, with
| parameters, there can be a default syntax, such as:
| 
|   MyMonoid(T:Type, default{*:(T,T)->T)}):Category
|   MyDualMonoid(T:Type, default{*:(T,T)->T, o:(T,T)->T}):Category ==
|     with{MyMonoid(T); MyMonoid(T, o)};
|   MyAbelianMonoid(T:Type, default{+:(T,T)->T}):Category ==
|     with{commutative(+); MyMonoid(T, +), ...};
|   MyRing(T:Type, default{*:(T,T)->T, +:(T,T)->T}:Category ==
|     with{MyAbelianMonoid(T), MyMonoid(T), ...};
|   MyCommutativeRing(T:Type, default{*:(T,T)->T, +:(T,T)->T}:Category ==
|     with{MyAbelianMonoid(T), MyAbelianMonoid(T,*), ...};
| 
| (the above omits the units for the operations, which could be added easily) so
| that 
| 
|   extend MyInteger: MyRing(MyInteger) == add;
| 
| would make sense.


It suffers from the old OO-centric  view, which is causing the problem
I mentioned in the start of this thread.  The problem here is that
you're focusing on the carrier set (MyInteger), intead of focusing on the
operations that give structure to the set.  

-- Gaby




reply via email to

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