Axiom Computer Algebra System
started 6/5/2004; 12:27:35 AM  last post 6/11/2004; 4:40:53 PM


Mark Evans  Axiom Computer Algebra System
6/5/2004; 12:27:35 AM (reads: 10961, responses: 11)


Axiom Computer Algebra System 
Axiom...defines a strongly typed, mathematically correct type hierarchy. It has a programming language and a builtin compiler....In its current state it represents about 30 years and 300 manyears of research work.
This one is a gift for Frank!
Posted to DSL by Mark Evans on 6/5/04; 12:27:46 AM




Mark Evans  Re: Axiom Computer Algebra System
6/5/2004; 2:03:11 PM (reads: 660, responses: 1)



Ehud Lamm  Re: Axiom Computer Algebra System
6/6/2004; 12:58:13 AM (reads: 614, responses: 0)


What's the implementation language?


Paul Snively  Re: Axiom Computer Algebra System
6/6/2004; 3:42:17 PM (reads: 574, responses: 0)


I vaguely recall reading something about Aldor, the language that Axiom implements (vs. the language it's implemented in, which IIRC is C++) a while back. Let's see... ah, of course! <http://www.aldor.org>. That was easy.
What I wonder now is how Axiom and Aldor compare to, say, David McAllester's Ontic.


Peter William Lount  Re: Axiom Computer Algebra System
6/6/2004; 5:30:16 PM (reads: 578, responses: 0)


"This one is a gift for Frank."
;)


Carl Witty  Re: Axiom Computer Algebra System
6/7/2004; 1:11:46 PM (reads: 448, responses: 0)


I would guess that Axiom/Aldor are very different from Ontic. I know almost nothing about Axiom or Aldor, but I do know quite a bit about Ontic, having been a graduate student in David McAllester's group working on Ontic (although this was 9 years ago, so I may be rusty).
The Ontic language in its latest incarnation is basically a new syntax for ZFC. As such, it is an untyped languagethere is nothing to prevent you from attempting to treat a function as a natural number, except that it will be difficult to prove facts about such a construct. The Ontic system is a proof verification system, rather than a computer algebra system.
If people have questions about Ontic, I'll try to answer them.


Bill Page  Re: Axiom Computer Algebra System
6/7/2004; 3:05:24 PM (reads: 404, responses: 0)



Mark Evans  Re: Axiom Computer Algebra System
6/7/2004; 3:11:07 PM (reads: 400, responses: 0)


Aldor's online documentation is pretty good; see orientation and
types. Frank will appreciate that only minimal types are builtins. The Axiom documentation is sparse, and I am not clear on the relation between the two.


Mark Evans  Re: Axiom Computer Algebra System
6/7/2004; 4:04:30 PM (reads: 394, responses: 0)


From that nice portal site, an excerpt from A First Report on the A# Compiler (no, it's not .NET):
From a compiler implementation perspective, the most interesting aspects of the A# compiler are:

type inference in the context of overloaded identifiers and type constructors, with types being first class values,

the combination of crossfile inlining and data structure elimination to reduce overhead,

the use of dataflow analysis to reduce flow graphs
produced by constructs such as generators,

efficient implementation of types as runtime values,

storage management performed through a runtime
conservative garbage collector, and

portability across many hardware platforms and
operating systems.
As far as we are aware, the first three of these items are new. The remaining items have novel aspects....
A major part of the A# compiler is concerned with producing optimized intermediate code, or Foam code. "Foam" is an acronym for "First Order Abstract Machine." The abstract machine is first order in the sense that it does not treat its types as values. Foam is designed to contain only those concepts which can have an efficient realization in both Lisp and C [although]...Foam is not restricted to the precise intersection of C and Lisp....Presently, only C and Lisp code are generated directly from Foam.
Wonderful as all this sounds, it is also ten years old. Are there any more recent papers on the whole Axiom world? These folks were ahead of their time. Maybe with the code now opensourced, the future is even brighter.
On a more personal note I would be interested to hear comparisons with Mathematica (v5) from both philosophical and user standpoints. Mathematica also puts symbolic computation on an equal footing with numeric computation. Not all systems do that.


Mark Evans  Re: Axiom Computer Algebra System
6/9/2004; 12:51:23 PM (reads: 173, responses: 0)


I have exchanged email with Tim Daly and invited him to post here, in his own words. Failing that he has given me permission to post his comments on the development of Axiom, which I will do if he doesn't arrive here in a few days or so.


Mark Evans  Re: Axiom Computer Algebra System
6/11/2004; 4:40:53 PM (reads: 84, responses: 0)


With Tim Daly's permission I will quote him:
Axiom is a full general purpose programming language with the property that type selection is based both on the function signature and the return type. So you can write:
Integer foo(x:Integer)
Float foo(x:Integer)
etc
The strength of Axiom lies in the library. It is about as close as you can get to the mathematics you want to write. The strong typing appears to be "in the way" until you realize that, since you are forced to think thru the type issues, you write code that is likely correct when it finally runs.
Aldor == A# == AxiomXL (these were various names that the language used at various times but were changed for historical reasons).
Axiom is written in common lisp. There is a programming language for Axiom called Spad. At one point we (I'm one of the original axiom authors) decided to "clean up the compiler and the language". Stephen Watt decided to implement the "new6 compiler" in C as an external program. So parallel development and improvements were made to the Spad language in common lisp and C. The two compilers accept the same language modulo a bunch of "stand alone" issues like libraries, I/O, etc. So they are the same language.
Axiom can use Aldor programs easily but Aldor because Axiom is a whole environment and the Aldor programs just get loaded and linked. Aldor standalone programs cannot use the Axiom library because the require common lisp.
Axiom has lived in about 8 different lisps, including MacLisp and VMLisp/370, Symbolics Common Lisp, etc. A scheme port could be done but you'd end up writing a lot of common lisp functions, which are really reimplementation of missing VMLisp functions, which are really reimplementations of missing MacLisp functions. See the source code where I've commented on the rewrites I did while porting. I could move it to scheme, but really, why?
Haskell doesn't add anything to Axiom as all of the concepts are already available so the Haskell port would just be another reimplementation (albeit quite harder because of the semantic distance).
Tim



