axiom-math
[Top][All Lists]
Advanced

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

[Axiom-math] sets and functions / interpreter bug when redefining *


From: Martin Rubey
Subject: [Axiom-math] sets and functions / interpreter bug when redefining *
Date: 29 Oct 2007 14:39:13 +0100
User-agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.4

Francois Maltey <address@hidden> writes:

> Dear Martin, 
> 
> > what does a looping construct have to do with a Cartesian product?
> 
> The construct arround reduce/concat isn't so usual in order to 
> built several overlapped loops.
> cartesian product and repeat keyword are two possibilities.
> 
> > > The * isn't the better operator because this locks
> > >     {1,2,3} * {1,2,3} = {1,2,3,4,6,9} 
> > > and {1,2,3} + {1,2,3} = {2,3,4,5,6}
> > 
> > I actually wondered already once, why "+" is not union$Set, "-" not
> > difference$Set.  

I was thinking of Boolean algebra.  Now, I looked a little closer to find the
Category "Logic", which exports /\ and \/, which would in fact be a lot better
than + and *.

> I think that operator for sets are missing. 
> union (union (E, F), G) is less clever than E union F union G.

(1) -> \/(a: Set INT, b: Set INT): Set INT == union(a, b)
   Function declaration ?\/? : (Set Integer,Set Integer) -> Set Integer
      has been added to workspace.

(2) -> set [1,2,3] \/ set [2,3,4]
   Compiling function \/ with type (Set Integer,Set Integer) -> Set 
      Integer 

   (2)  {1,2,3,4}
                                                            Type: Set Integer

> But why do you want a +. It might be possible to have more operators 
> than only +, -, *, /, ^, ::, $, # and @.

yes, but I want to be use the "right" operators.  As we know already (see
Monoid / AbelianMonoid discussion), currently this is not always possible in
Aldor or Axiom.  But when it is, we should use them.

Just to make sure, I did not say that your definition of * and + for sets is
bad per se.  I only found it unusual.  And I do not want "unusual" things in
the axiom library.  The user should make this definitions himself.
Unfortunately, there is a bug in the interpreter:

(1) -> _*(A: Set INT, B: Set INT): Set INT == set concat [[(a*b)$Integer for a 
in members A] for b in members B]
   Function declaration ?*? : (Set Integer,Set Integer) -> Set Integer 
      has been added to workspace.
                                                                   Type: Void
(2) -> 2*3
   Compiling function * with type (Set Integer,Set Integer) -> Set 
      Integer 
   Conversion failed in the compiled user function * .
 
   Cannot convert from type Integer to Set Integer for value
   2

> axiom doesn't understand that sin+cos is the function x +-> (sin x + cos x)

I do not see the connection to the topic above.  But still, you can quite
easily build a domain that has, for example, univariate functions as objects.
That might indeed be useful.


Martin





reply via email to

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