[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Axiom-developer] op.spad
From: |
Martin Rubey |
Subject: |
[Axiom-developer] op.spad |
Date: |
30 Mar 2006 17:39:59 +0200 |
User-agent: |
Gnus/5.09 (Gnus v5.9.0) Emacs/21.4 |
"Antoine Hersen" <address@hidden> writes:
> > > Also do someone know the intedent of the operator package
> > > op.spad ? I have a lot of difficulty understanding Manuel
> > > Bronstein works.
> > >
> >
> > Check out section 9.58 of the Axiom book:
> >
> > 9.58 Operator
> > Given any ring R, the ring of the Integer-linear operators
> > over R is called Operator(R). To create an operator over R,
> > first create a basic operator using the operation operator,
> > and then convert it to Operator(R) for the R you want.
>
> Yes I had read that, I just do not see the big picture.
The idea is the following: There is a wide variety of mathematical operations
one cannot always completely "evaluate", or "simplify", but nevertheless, one
needs them in a domain like Expression Integer. These are called
"CommonOperators" in axiom and are listed in the file op.spad, in the package
CommonOperators. Some examples are rootOf, sin, pi, BesselJ, sum, product,
factorial, ...
Note that they do not share much structure, they even take a different number
of arguments.
Still, as much structure they have is described in the domain BasicOperator.
Of course, you can create your own operators. For example, suppose that you
have a recurrence together with the initial values. In some cases you will be
able to find a "closed form" for the n-th term of the recurrence. Then it is
easy to use it in Expression Integer.
However, more often than not, you won't know a closed form, but still you want
to use your recurrence as an expression. Maybe you want to state
Take the n-th term of the recurrence and square it.
To be able to do so, you introduce a new operator, for example, like I did on
http://wiki.axiom-developer.org/RecurrenceRelationOperator
In short (more documentation if you follow the link), you say
oprecur := operator("rootOfRec"::Symbol)$BasicOperator
to create a new operator called "rootOfRec". Then
setProperty(oprecur, "%specialDisp",
ddrec@(List F -> OutputForm) pretend None)
to tell axiom how it should be displayed -- ddrec is the operation that does
the display given the arguments of the operator. Finally,
evaluate(oprecur, irecur)$BasicOperatorFunctions1(F)
tells axiom which function to invoke when the operator should be
"evaluated". Here, the function invoked is "irecur".
I hope this helps, at least a little.
Martin