axiom-developer
[Top][All Lists]

## Re: [Axiom-developer] Re: musings on notation

 From: Martin Rubey Subject: Re: [Axiom-developer] Re: musings on notation Date: Wed, 11 Aug 2004 12:54:36 +0000

```root writes:
> The problem that needs to be attacked, however, is that there doesn't
> appear to be a notation that I could write by hand for a "thing" that
> has the properties of a program (including the notion of process) as
> well as the properties of a mathematical object. (Or the "thing" that
> has the properties of a closure as well as a mathematical object).

Sorry, but I still do not understand. In fact, I don't see the need for such a
notation. I'd say that "programs" are just "mathematical objects"... After all,
a polynomial for example, or better, the cosine is definitely a mathematical
object, but it's also a "program".

> Let me try an example. Consider the simple case of trying to raise a
> square matrix to an integer power:
>
>  P = 3
>  M:SquareMatrix(2) = matrix([[1,2],[3,4]])
>  M^P
>
> which we know how to do.

OK.

> The harder case is to assume we don't know the actual value of P but
> we know its Category. So if an IndefiniteInteger which have the
> property of integers but we don't say which one. IndefiniteInteger is
> a type we understand so we can say:
>
>  P = IndefiniteInteger()
>  M = SquareMatrix(2)
>  M^P

Well, we do not yet have reached a conclusion what an IndefiniteInteger should
be, do we? There is the possibility described by Davenport and Faure, and
certainly there are others. In the above I also have trouble determining the
type of M^P. I don't think you meant to have an exponentiation of domains? So

P : IndefiniteInteger()
M : SquareMatrix(2) = matrix([[1,2],[3,4]])
M^P

or

P : IndefiniteInteger()
M : IndefiniteSquareMatrix(2)
M^P

or something like that. I'm not sure whether we want to modify the domain
SquareMatrix to allow for exponentiation with an IndefiniteInteger, but on the
other hand, why not? The result would be an IndefiniteSquareMatrix (or the zero
matrix or the identity -- oops, bug report on the way), that's for sure...

> The notational case is even harder. So I'd like to be able
> to say:
>
>  P = Program(foo)
>  M:SquareMatrix(2) = matrix([[1,2],[3,4]])
>  M^P

What do you mean by that? Is M^P a program, that evaluates to a
SquareMatrix(2)? I don't think that there is a notational problem here.
I don't really know whether an operator that delays execution of a program
would be useful. Its consequences for the type-system are -- I admit -- not
easy to foresee. However, I have the feeling that we do not have the userbase
yet to explore these fields. I have the feeling, that it disperses our "energy"
a little, however.

I think it would be good to continue the discussion on indefinite things, but
one such topic is enough -- for me at least. One suggestion: could we have a
wishlist on the savannah website? Maybe registered users could even vote for
priorities there?

All the best,

Martin

```