http://wiki.axiom-developer.org/public/TheUnknownInComputerAlgebra.pdf
Ah, by the way, I've read the paper and did not find it particularly
useful. What they do is a bit too complicated in my eyes.
> \begin{spad}
> )abbrev domain PUNINT PureUnknownInteger
> PureUnknownInteger (D,BasicUnknown):Ring == Implementation where
> D:IntegerNumberSystem
> BasicUnknown:List Symbol
> Implementation ==> LocalAlgebra (Polynomial D,D,D) with
> "/" : ($,D) -> $
> ++ a/n computes the expression whose value is a/n if it
> ++ is actually an unknown integer
> \end{spad}
It is certainly a wrong design to implement indefinite integers as
polynomials.
Why?
Suppose you have a nice algebra library and you want the system to
understand indefinite objects, then you are certainly not going to add
any function to existing domains or wrap one (and actually ALL) domains
with a domain constructor "Indefinite". No. It should be completely
transparent. The goal is to type
n: Integer;
and not
n: Indefinite(Integer);
Either the interpreter or some layer between interpreter and library
code should take care about indefinite objects.
I very much believe that this requires reflection from SPAD/Aldor.
Ralf
_______________________________________________
Axiom-developer mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/axiom-developer