axiom-developer
[Top][All Lists]

## [Axiom-developer] [Axiom-mail] beginner question about sum(...)

 From: Bill Page Subject: [Axiom-developer] [Axiom-mail] beginner question about sum(...) Date: Sun, 23 Jan 2005 13:21:07 -0600

```Kostas,

On Sunday, January 23, 2005 11:08 AM you wrote:
>
> I am trying to make Axiom evaluate sum(1/k^2, k=1..n).  It
> returns the sum unevaluated.  I suspect that I should be
> using the sum functions defined in package SUMRF,
> RationalFunctionSum, but how do I make Axiom use those
> functions?  For example, I tried
>
> (1) -> sum(1/k^2, k=1..n)\$SUMRF
>
>   Although RationalFunctionSum is the name of a constructor,
>   a full type must be specified in the context you have used
>   it. Issue
> (1) ->
>
> I don't understand what I have to do here.

You should follow the instructions that Axiom gives you. :)

)show RationalFunctionSum

says:

(2) -> )show RationalFunctionSum
RationalFunctionSum R: Join(IntegralDomain,OrderedSet,
RetractableTo Integer) is a package constructor
Abbreviation for RationalFunctionSum is SUMRF
This constructor is exposed in this frame.
to see algebra source code for SUMRF

------------------------------- Operations --------------------------------
sum : (Polynomial R,Symbol) -> Fraction Polynomial R
sum : (Fraction Polynomial R,Symbol) ->
Union(Fraction Polynomial R,Expression R)
sum : (Polynomial R,SegmentBinding Polynomial R) ->
Fraction Polynomial R
sum : (Fraction Polynomial R,SegmentBinding Fraction Polynomial R) ->
Union(Fraction Polynomial R,Expression R)

--------

If you look carefully you will see that RationalFunctionSum requires
a paramter R that is one of IntegralDomain, OrderedSet, or at least
RetractableTo Integer

RationalFunctionSum R: Join(IntegralDomain,OrderedSet,
RetractableTo Integer)

So try this:

(1) -> sum(1/k^2, k=1..n)\$SUMRF INT

n
--+    1
(1)  >     --
--+    2
k= 1  k
Type: Union(Expression Integer,...)
(2) ->

>  My understanding of Axiom's types, domains, and packages is
> limited, but shouldn't sum(...) be smart enough by itself to
> invoke the right "sum"?

First, it is important to remember that Axiom types often have
parameters. SUMRF is a "constructor" - that means that it is a
"function" that expects to take as a parameter another type,
e.g. RationalFunctionSum(Integer), and returns a new type.

Second, there are many different "sum" functions in Axiom,
each with a different signature. Sometimes you have to specify
exactly which one you mean.

(2) -> )display op sum

There are 6 exposed functions called sum :
[1] (D1,Symbol) -> D1 from FunctionSpaceSum(D3,D1)
if D3 has Join(IntegralDomain,OrderedSet,RetractableTo
Integer,LinearlyExplicitRingOver Integer) and D1 has Join(
FunctionSpace D3,CombinatorialOpsCategory,
AlgebraicallyClosedField,TranscendentalFunctionCategory)

[2] (D1,SegmentBinding D1) -> D1 from FunctionSpaceSum(D3,D1)
if D1 has Join(FunctionSpace D3,CombinatorialOpsCategory,
AlgebraicallyClosedField,TranscendentalFunctionCategory)
and D3 has Join(IntegralDomain,OrderedSet,RetractableTo
Integer,LinearlyExplicitRingOver Integer)
[3] (Polynomial D4,Symbol) -> Fraction Polynomial D4
from RationalFunctionSum D4
if D4 has Join(IntegralDomain,OrderedSet,RetractableTo
Integer)
[4] (Fraction Polynomial D4,Symbol) -> Union(Fraction Polynomial D4,
Expression D4)
if D4 has Join(IntegralDomain,OrderedSet,RetractableTo
Integer)
[5] (Polynomial D4,SegmentBinding Polynomial D4) -> Fraction
Polynomial D4
from RationalFunctionSum D4
if D4 has Join(IntegralDomain,OrderedSet,RetractableTo
Integer)
[6] (Fraction Polynomial D4,SegmentBinding Fraction Polynomial D4)
-> Union(Fraction Polynomial D4,Expression D4)
from RationalFunctionSum D4
if D4 has Join(IntegralDomain,OrderedSet,RetractableTo
Integer)

There are 5 unexposed functions called sum :
[1] (D2,D3,Segment D2) -> Record(num: D2,den: Integer)
from InnerPolySum(D5,D3,D6,D2)
if D2 has POLYCAT(D6,D5,D3) and D5 has OAMONS and D3 has
ORDSET and D6 has INTDOM
[2] (D2,D3) -> Record(num: D2,den: Integer) from InnerPolySum(D4,D3,
D5,D2)
if D4 has OAMONS and D3 has ORDSET and D5 has INTDOM and D2
has POLYCAT(D5,D4,D3)
[3] (OutputForm,OutputForm,OutputForm) -> OutputForm from OutputForm

[4] (OutputForm,OutputForm) -> OutputForm from OutputForm
[5] OutputForm -> OutputForm from OutputForm
(2) ->

----------

But if you don't need to specify which one, Axiom can often make
a reasonable choice based on default assumptions about types.

(2) -> sum(1/k^2, k=1..n)

n
--+    1
(2)  >     --
--+    2
k= 1  k
Type: Union(Expression
Integer,...)
(3) ->

-----------

Regards,
Bill Page.

_______________________________________________
Axiom-mail mailing list