[Top][All Lists]

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

Re: [Axiom-developer] Axiom/Aldor

From: Martin Rubey
Subject: Re: [Axiom-developer] Axiom/Aldor
Date: Tue, 11 Jan 2005 15:43:53 +0100

Dear Peter,

I just tried another example, which is in fact the reason why I would love to
have Aldor working. I did not expect it to work, and it does not, but it works
*almost*. The code is as follows:

#include "axiom"

Test: with { f: (n: PositiveInteger) -> PrimeField(n) } 
   == add { f(n: PositiveInteger): PrimeField(n) == 
              10::Integer::PrimeField(n) }

Note that such a construction -- the resulting domain depending on the function
parameter -- is currently illegal in Axiom. In Aldor it is fine.

I compiled it with Aldor as usual, and then loaded it into Axiom. As signature
I got the slightly unusual

(1) -> )di op f

There is one unexposed function called f :
   [1] PositiveInteger -> PrimeField n from Test

and trying it out I obtained

(1) -> f(5)$Test
   Loading /home/rubey/axiom/mnt/linux/algebra/PF.o for domain 
   Loading /home/rubey/axiom/mnt/linux/algebra/IPF.o for domain 
   Loading /home/rubey/axiom/mnt/linux/algebra/TABLE.o for domain Table
   Loading /home/rubey/axiom/mnt/linux/algebra/HASHTBL.o for domain 
   Loading /home/rubey/axiom/mnt/linux/algebra/INTABL.o for domain 
   Loading /home/rubey/axiom/mnt/linux/algebra/ZMOD.o for domain 

   >> System error:
   |n| is not of type NUMBER.

protected-symbol-warn called with (NIL)

which is roughly what I expected. However, to my great surprise, if you turn on
the debugger (beforehand. You always have to start a fresh axiom because of the
error I told you about in my previous message) with

)lisp (setq |$monitorNewWorld| t)

and thus trace

(1) -> f(1783)$Test

the final bit reads

protected-symbol-warn called with (NIL)..IntegerMod 1783 wants
   positiveRemainder : (%,%) -> % from  Integer
---->Integer----> searching op table for:
   positiveRemainder : (%,%) -> % from  Integer
<----#<compiled-function |INT;positiveRemainder;3$;28|> Integer
goget stuffing slot 47 of IntegerMod 1783
<------#<compiled-function |INT;positiveRemainder;3$;28|> Integer

PrimeField n activating lazy slot 8: Integer
PrimeField n activating lazy slot 9: IntegerPrimesPackage Integer

..PrimeField n wants
   prime? : Integer -> Boolean from  IntegerPrimesPackage Integer
---->IntegerPrimesPackage Integer----> searching op table for:
   prime? : Integer -> Boolean from  IntegerPrimesPackage Integer
<----#<compiled-function |PRIMES;prime?;IB;4|>(IntegerPrimesPackage,Integer)
goget stuffing slot 10 of PrimeField n
<------#<compiled-function |PRIMES;prime?;IB;4|>(IntegerPrimesPackage,Integer)

which clearly tells you, that the calculation is done alright, only the
signature interferes with success.

Any ideas?


reply via email to

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