\documentclass{book}
%\newcommand{\VolumeName}{Volume 2: Axiom Users Guide}
%\input{bookheader.tex}
\pagenumbering{arabic}
\mainmatter
\setcounter{chapter}{0} % Chapter 1

\usepackage{makeidx}
\makeindex
\begin{document}
\begin{verbatim}
\start
Date: Thu, 1 Jul 2004 10:07:33 +0000
From: Martin Rubey
To: David Mentre
Subject: Re: Complex exponentiation and 0

David Mentre writes:
 > Martin Rubey writes:
 > 
 > > If all of this is correct, could somebody who is entitled to do so
 > >
 > > * add a comment to [bugs #9313] 0^0 handled inconsistently that it is not
 > > a bug, (maybe simply include a pointer to this mail) but there are related
 > > bugs described in [bugs #9424] Bug in handling 0^0 in Axiom
 > >
 > > * close it.
 > 
 > Done.

Thank you!
 > 
 > In fact, I created bug #9424 before seeing bug #9313.

Yes, that's what I thought...

 > Martin, if you want to take care of bugs, just create an account on Savannah
 > and I'm pretty sure Tim will aggree to give you admin accesses.

Hmm, not really. The reason for this is, I believe that agreement is very
important with respect to applying patches, closing bug reports and so on. And
I know that I'm very often uncertain whether agreement has been reached or not.
After all, that's why I wrote the summary to the bug report above.

In fact this very issue "0^0" is a wonderful example: Although I'm confident
that it is, it is not obvious, at least, not to me, whether our reasoning is
correct. Maybe time will tell -- in case it is not :-)

So the current setup works well for me: there are very few people with admin
access and I trust them not to take action before agreement has been reached.

On the other hand, I am happy to summarize discussions where I'm able to.

\start
Date: Thu, 1 Jul 2004 14:41:28 +0200
From: Magnus Larsson
To: Camm Maguire
Subject: Axiom cvs 040624 build error

Hello Camm,

I have downloaded cvs 040701 and configured --enable-debug.
The build fails, as before.

The commands
cd lsp/gcl-2.6.2/unixport
gdb saved_gcl, r, (load "../gcl-tk/tkl.o)

did not reproduce the crash.

GNU gdb 6.1.1
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i686-pc-linux-gnu"...Using host libthread_db 
library "/lib/libthread_db.so.1".

(gdb) r
Starting 
program: /home/magnus/usr/source/axiom/cvs-040701/axiom/lsp/gcl-2.6.2/unixport/saved_gcl

>(load "../gcl-tk/tkl.o")

Loading ../gcl-tk/tkl.o
start address -T 0x84a8ba0 Finished loading ../gcl-tk/tkl.o
59684

>

The next set of instructions:
q (from gdb)
cd ../gcl-tk/demos, r, (load "../tkl.o")(TK::GET-AUTOLOADS) (directory 
"*.lisp"))

What would you like to run in gdb? Is the gdb command missing?

\start
Date: 01 Jul 2004 09:17:44 -0400
From: Camm Maguire
To: Magnus Larsson
Subject: Re: Axiom cvs 040624 build error

Greetings!

Magnus Larsson writes:

> Hello Camm,
> 
> I have downloaded cvs 040701 and configured --enable-debug.
> The build fails, as before.
> 
> The commands
> cd lsp/gcl-2.6.2/unixport
> gdb saved_gcl, r, (load "../gcl-tk/tkl.o)
> 
> did not reproduce the crash.
> 
> GNU gdb 6.1.1
> Copyright 2004 Free Software Foundation, Inc.
> GDB is free software, covered by the GNU General Public License, and you are
> welcome to change it and/or distribute copies of it under certain conditions.
> Type "show copying" to see the conditions.
> There is absolutely no warranty for GDB.  Type "show warranty" for details.
> This GDB was configured as "i686-pc-linux-gnu"...Using host libthread_db 
> library "/lib/libthread_db.so.1".
> 
> (gdb) r
> Starting 
> program: /home/magnus/usr/source/axiom/cvs-040701/axiom/lsp/gcl-2.6.2/unixport/saved_gcl
> 
> >(load "../gcl-tk/tkl.o")
> 
> Loading ../gcl-tk/tkl.o
> start address -T 0x84a8ba0 Finished loading ../gcl-tk/tkl.o
> 59684
> 
> >
> 
> The next set of instructions:
> q (from gdb)
> cd ../gcl-tk/demos, r, (load "../tkl.o")(TK::GET-AUTOLOADS) (directory 
> "*.lisp"))
> 
> What would you like to run in gdb? Is the gdb command missing?
> 

Yes, sorry for the omission.

\start
Date: 01 Jul 2004 10:13:22 -0400
From: Camm Maguire
To: Tim Daly
Subject: Re: NX and exec-shield kernel summary

Greetings, and thanks for this.  Gave it a quick once over, and don't
expect this to give us trouble, but of course could be wrong.  The
emphasis in these patches appears to be executable permissions in
various memory areas, but this has never posed a problem to GCL, as we
explicitly mprotect PROT_EXEC anything we need (or should be anyway).
The problem for us is rather in the seldom mentioned companion
'feature' in that the semantics of brk have been changed to return a
randomized address.  We're even ok with this up to the point of
emacs' unexec, which is used in saving a new image.  We now compile
out of the box on machines using this by detecting it at configure
time, and compiling into main the 'i386 personality' setting calls
followed by a reexec.

The danger for us might be that someday people might want to close
this runtime exception possibility which only 'broken legacy apps'
might need anyway and leave us stranded.  Luckily, GNU emacs is our
exact bulwark in this area -- we should be able to follow whatever
procedure allows a gnu emacs build inside of gcl proper.

I'm not sure how important this may be, but I think that a certain
level of sustained noise from gcl/maxima/acl2/axiom users propagating
upstream about our reliance on this might forestall a future
'enhancement' which breaks our build entirely.  Was even dreaming
about firing off an email from within gcl at each i386 personality
set.  Don't worry, just dreaming :-).

If you ever have access to a machine with these new patches and want
help in checking it out, please let me know.

Take care,

Tim Daly writes:

> Camm,
> 
> I follow the Linux Kernel mailing list and this was a summary
> posting of the NX (no execute) and exec-shield status:
>  
> 
> 4. 'NX' Security Features Coming To 2.6
> 
> 2 Jun - 8 Jun (66 posts) Archive Link: "[announce] [patch] NX (No
> eXecute) support for x86, 2.6.7-rc2-bk2"
> 
> Topics: Executable File Format, Microsoft, Security, Spam, Virtual
> Memory People: Ingo Molnar, Linus Torvalds, Doug McNaught, Jakub
> Jelinek, Brian Gerst, Christoph Hellwig, William Lee Irwin III, Andi
> Kleen, Andy Lutomirski, Arjan van de Ven, Gerhard Mack, Jun Nakajima,
> Rusty Russell
> 
> Ingo Molnar said on behalf of Red Hat:
> 
> we'd like to announce the availability of the following kernel patch:
> 
> http://redhat.com/~mingo/nx-patches/nx-2.6.7-rc2-bk2-AE
> 
> which makes use of the 'NX' x86 feature pioneered in AMD64 CPUs and
> for which support has also been announced by Intel. (other x86 CPU
> vendors, Transmeta and VIA announced support as well. Windows support
> for NX has also been announced by Microsoft, for their next service
> pack.) The NX feature is also being marketed as 'Enhanced Virus
> Protection'. This patch makes sure Linux has full support for this
> hardware feature on x86 too.
> 
> What does this patch do? The pagetable format of current x86 CPUs does
> not have an 'execute' bit. This means that even if an application maps
> a memory area without PROT_EXEC, the CPU will still allow code to be
> executed in this memory. This property is often abused by exploits
> when they manage to inject hostile code into this memory, for example
> via a buffer overflow.
> 
> The NX feature changes this and adds a 'dont execute' bit to the PAE
> pagetable format. But since the flag defaults to zero (for
> compatibility reasons), all pages are executable by default and the
> kernel has to be taught to make use of this bit.
> 
> If the NX feature is supported by the CPU then the patched kernel
> turns on NX and it will enforce userspace executability constraints
> such as a no-exec stack and no-exec mmap and data areas. This means
> less chance for stack overflows and buffer-overflows to cause
> exploits.
> 
> furthermore, the patch also implements 'NX protection' for kernelspace
> code: only the kernel code and modules are executable - so even
> kernel-space overflows are harder (in some cases, impossible) to
> exploit. Here is how kernel code that tries to execute off the stack
> is stopped:
> 
>  kernel tried to access NX-protected page - exploit attempt? (uid: 500)
>  Unable to handle kernel paging request at virtual address f78d0f40
>   printing eip:
>  ...
> 
> The patch is based on a prototype NX patch written for 2.4 by Intel -
> special thanks go to Suresh Siddha and Jun Nakajima @ Intel. The
> existing NX support in the 64-bit x86_64 kernels has been written by
> Andi Kleen and this patch is modeled after his code.
> 
> Arjan van de Ven has also provided lots of feedback and he has
> integrated the patch into the Fedora Core 2 kernel. Test rpms are
> available for download at:
> 
> http://redhat.com/~arjanv/2.6/RPMS.kernel/
> 
> the kernel-2.6.6-1.411 rpms have the NX patch applied.
> 
> here's a quickstart to recompile the vanilla kernel from source with
> the NX patch:
> 
> http://redhat.com/~mingo/nx-patches/QuickStart-NX.txt
> 
> There were a lot of technical suggestions and comments from folks like
> Christoph Hellwig, Andi Kleen, Rusty Russell, and Gerhard Mack. Also,
> Linus Torvalds asked:
> 
> Just out of interest - how many legacy apps are broken by this? I
> assume it's a non-zero number, but wouldn't mind to be happily
> surprised.
> 
> And do we have some way of on a per-process basis say "avoid NX
> because this old version of Oracle/flash/whatever-binary-thing doesn't
> run with it"?
> 
> In answer to the first question, Ingo and Arjan van de Ven (also from
> Red Hat) confirmed that the amount of legacy breakage was in fact
> zero. Ingo also explained that just in case, any breakage from this
> would be less than other breakage already introduced by Red Hat. He
> put it, "in the full install of FC1 and FC2 the number is zero - and
> Fedora has exec-shield which does a couple of things more: it makes
> the heap non-executable as well [this broke X], it randomizes the
> address-space layout and has a 4:4 VM [which broke the Sun JVM]." Doug
> McNaught added, close by, "Lisp systems like CMUCL and SBCL (plus
> commercial Lisps) had problems with FC1 due to execshield. They tend
> to do things like compile code on the fly to heap memory and expect to
> be able to run it." And Jakub Jelinek (also from Red Hat) replied,
> "They will still work, as long as you don't recompile them with recent
> toolchain. When you recompile them, they either needs to be taught to
> DTRT (i.e. use mmap with PROT_EXEC for executable stuff), or can be
> linked with -Wl,-z,execstack to mark them as needing executable
> stack. prelink package also contains execstack(8) utility which can be
> used on already linked binaries/shared libraries."
> 
> To Linus' second question, about the possibility of per-process
> avoidance of NX for compatibility reasons, Ingo explained:
> 
> we have three mechanisms for this in Fedora:
> 
>    1.
> 
>       the PT_GNU_STACK flag itself - you can turn executability on/off
>       compile-time or even after the fact via the execstack(8) utility
>       Jakub wrote. This only affects the stack's executability - if an
>       application assumes a non-PROT_EXEC mmap() can be executed it
>       might still break with NX - but based on experience with Fedora
>       Core i'd say there's almost no such application.
> 
>       this method works in 2.6 too, since it supports
>       PT_GNU_STACK. gcc's PT_GNU_STACK mechanism is very conservative
>       - e.g. if an application does an asm() then gcc assumes that it
>       might rely on stack executability and emits the X
>       flag. [applications can then turn this off in the source if
>       stack executability is not required.] Likewise, if gcc emits
>       trampolines then the X flag is emitted too. (glibc knows about
>       PT_GNU_STACK all across - so e.g. if a nonexec stack application
>       dlopen()s a library that needs stack executability then glibc
>       makes the stack executable on the fly via
>       PROT_GROWSDOWN/GROWSUP.)
>    2.
> 
>       via a runtime method: via the i386 personality. So an
>       application can trigger the 'legacy' Linux VM layout by e.g
>       doing 'i386 java ./test.class'.
> 
>       this is a hack in Fedora - we wanted to have a finegrained
>       runtime mechanism just in case. But it would be nice to have
>       this upstream too - e.g. via a PERSONALITY_3G?
> 
>    3.
> 
>       via a kernel boot parameter (exec-shield=0)
> 
>       with the NX patch this becomes noexec=off [the same flag works
>       on x86_64 too]. This method is the most inflexible one, and is a
>       last-resort thing. (Fedora also has a runtime global switch to
>       turn off the VM layout changes.)
> 
> here's a list of applications that we had to fix/work around in Fedora
> when the VM layout changed:
> 
>     * emacs _rebuild_. (it coredumps itself during build ... xemacs is OK.)
> 
>     * some JDKs. Since they generate code and try to be as fast as
>       possible they tend to rely more on VM details than normal
>       applications.
> 
>     * X's module loader assumed that brk was executable. (fixed)
> 
>     * Wine. (it implements another OS so it's by definition very
>       sensitive to layout changes.)
> 
> most of the breakages were unclean x86-only code that would have
> broken if ported over to 64-bit anyway.
> 
> old, legacy applications dont have the PT_GNU_STACK flag so they all
> work fine.
> 
> Regarding Wine's breakage when the Virtual Memory Subsystem changed,
> Brian Gerst disagreed with Ingo's explanation, and remarked, "Wine
> breaks because of the part of exec-shield that relocates shared libs
> to low addresses, where the (stripped) Windows binaries expect to be
> loaded at. NX stack doesn't affect it." Ingo accepted this, adding, "I
> think Wine could get around this by creating a dummy ELF section in
> the Wine binary that covers the first 1GB or so. Wine could still use
> ordinary dynamic libraries - those would go above that 1GB. Then once
> Wine has loaded up it can munmap() that first 1GB. (this would not
> work if Wine has to dlopen() new libraries after this phase - does
> that happen?)" But Christoph Hellwig suggested, "Why can't wine just
> implement it's own binfmt_pecoff? Sounds like the much simpler
> solutuion." And William Lee Irwin III said, "I'd be in favor of this
> also. An executable format with wide enough usage is worth adding
> kernel support for loading it."
> 
> Ingo replied also to his own long post, dealing with his item 2 above,
> the runtime method of triggering the legacy Linux VM subsystem. He
> said:
> 
> i've attached a patch that provides a cleaner solution. It does 3 changes:
> 
>     * it adds a ADDR_SPACE_EXECUTABLE bit to the personality 'bug
>       bits' section. This bit if set will make the stack
>       executable. (if in the future we decide to make the malloc()
>       heap non-exec [which i definitely think we should], that
>       property will also listen to this bit.)
> 
>     * in elf.h, it changes the x86 personality inheritance code to
>       match that of x86_64 - which is a much saner method. This means
>       if a complex app that does exec()s will all run with the
>       personality of the parent(s).
> 
>     * in exec.c, since address-space executability is a
>       security-relevant item, we must clear the personality when we
>       exec a setuid binary. I believe this is also a (small) security
>       robustness fix for current 64-bit architectures.
> 
> (the patch also adds a break to the elf_ex.e_phnum loop - there can
> only be one STACK header in the binary and once we found it we should
> not iterate through the remaining program headers (if any).)
> 
> we didnt want to add a non-standard personality flag to Fedora so we
> abused PER_LINUX32 as the compatibility flag - but this only works on
> x86. With the ADDR_SPACE_EXECUTABLE flag there would be a standard
> method to fall back to 'legacy' executability assumptions Linux
> applications might make.
> 
> Andi replied to the third item in the list above, regarding clearing
> the 'personality' when executing a setuid binary. He said, "This means
> I cannot easily force an i386 uname or 3GB address space on suid
> programs anymore on x86-64. While in theory it could be a small
> security problem I think the utility is much greater. It's hard to see
> how setting NX could cause a security hole. The program may crash, but
> it is unlikely to be exploitable." Andy Lutomirski replied:
> 
> The whole point of NX, though, is that it prevents certain classes of
> exploits. If a setuid binary is vulnerable to one of these, then
> Ingo's patch "fixes" it. Your approach breaks that.
> 
> I don't like Ingo's fix either, though. At least it should check
> CAP_PTRACE or some such. A better fix would be for LSM to pass down a
> flag indicating a change of security context. I'll throw that in to my
> caps/apply_creds cleanup, in case that ever gets applied.
> 
> Andi thought it would be overkill to require an LSM module, but he
> agreed that Andy had a good point, although Andi also objected, "that
> only applies to the NX personality bit. For the uname emulation it is
> not an issue. So maybe the dropping on exec should only zero a few
> selected personality bits, but not all." This made sense to Andy; and
> close by, Ingo said, "ok, how about the attached patch then? There's a
> PERS_DROP_ON_SUID mask that we drop upon setuid - all the other
> personality bits get inherited." Andy replied, "This is wrong on
> SELinux (and presumably with other LSMs). It also does unexpected
> things if you fail to exec a setuid executable." He posted his own
> patch, and Linus Torvalds came in with:
> 
> Let's not do this at all.
> 
> Anything that changes subtle behaviour at suid-execute time is just
> wrong. Imagine an app that has been tested in normal use, and then has
> a subtle bug when executed set-uid, simply because the address space
> layout changes. Or something that mysteriously works when you're root,
> but not when you're anything else. Ouch.
> 
> I think we should just look at the executable itself, not whether it
> is suid. If the executable says it is "NX-approved", then it's
> NX-approved. End of story - just try to make sure that as many
> executables as possible get compiled with the newer compiler suite
> that enables it.
> 
> Add a tool to let people turn on/off the NX bit on an executable if it
> turns out the executable can't work with it (let's say it was compiled
> and tested on a CPU without NX support), and everybody should be
> happy. You can have a trivial script that turns on the NX bit on all
> the legacy apps too, and then if testing shows iot wasn't a good idea,
> you can turn it off again on a per-executable basis.
> 
> Ingo did a bunch more work, posting patches; and Arjan also remarked,
> "the prelink rpm on Fedora has such a tool" [to flip the NX bit on an
> executable] "already fwiw. (it's part of prelink because the elf
> manipulations needed are quite similar to the ones prelink does so
> infrastructure is shared)" Linus replied:
> 
> Just for fun, can somebody that has the required hardware just test
> old apps with NX turned on?
> 
> I know we used to put the signal handler trampoline on the stack, but
> these days that should all be handled with the magic executable
> syscall page, so _normally_ I don't think an old application should
> even really care.
> 
> In fact, it would be interesting to just hear somebody running an
> older distribution with a new CPU and a new kernel, and see just how
> many programs need to be marked non-NX in "normal running".
> 
> Arjan replied, "I know that in a FC1 full install there are less than
> 5 binaries that don't run with NX. (one uses nested functions in C and
> passes function pointers to the inner function around which causes gcc
> to emit a stack trampoline, and gcc then marks the binary as non-NX,
> the others have asm in them that we didn't fix in time to be properly
> marked)." And Linus said:
> 
> If things are really that good, why are we even worrying about this?
> 
> It sounds like we should just have NX on by default even for
> executables that don't have any NX info records, and have some way of
> marking the (very few) executables that don't want it. Maybe have the
> NX fault print a warning when it happens for an executable that
> defaulted to NX on.
> 
> I think most people have seen the security disaster that causes most
> of the emails on the net to be spam. So this should be _trivial_ to
> explain to people when they complain about default behaviour breaking
> their strange legacy app. Especially if there's a trivial tool to add
> an elf section to make it work again.
> 
> So instead of having complex things to try to turn NX on for suid, we
> should aim to turn ot on as widely as possible, _even_if_ that means
> that people who upgrade hardware might have to do some trivial MIS
> stuff.
> 
> Make a kernel bootup option to default to legacy mode if somebody
> literally has trouble booting and fixing their thing due to "init" or
> similar being one of the problematic cases. Together with a printk()
> that says which executable triggered, it should be trivial to clean up
> a system.
> 
>  
> 
> 5. exec-shield Patch Updated For 2.6.7-rc2-bk2
> 
> 2 Jun - 4 Jun (4 posts) Archive Link: "[patch] exec-shield patch for
> 2.6.7-rc2-bk2, integrated with NX" Topics: Big Memory Support People:
> Ingo Molnar, Christoph Hellwig, Joe Korty
> 
> Ingo Molnar said:
> 
> Here's the latest exec-shield patch for 2.6.7-rc2-bk2, integrated with
> the 'NX' feature (see the announcement from earlier today):
> 
> http://redhat.com/~mingo/exec-shield/exec-shield-on-nx-2.6.7-rc2-bk2-A7
> 
> you first have to apply the NX patch, which can be found at:
> 
> http://redhat.com/~mingo/nx-patches/nx-2.6.7-rc2-bk2-AE
> 
> prebuild kernel RPMs for Fedora Core 2, with this latest version of
> exec-shield, are available at:
> 
> http://redhat.com/~arjanv/2.6/RPMS.kernel/
> 
> (kernel-2.6.6-1.411 has this latest, NX-aware exec-shield.)
> 
> if the CPU supports NX (and the kernel has been compiled with
> CONFIG_HIGHMEM64G) then exec-shield will use NX to provide page-level
> finegrained control over execution. On legacy CPUs that dont support
> NX the segment-limit method is used to control execution (in a coarser
> way). In the NX case the segment-limit is turned off altogether.
> 
> e.g. on an Athlon64 box the boot message looks:
> 
> NX (Execute Disable) protection: active
> 
> on a CPU without NX the boot message is:
> 
> NX (Execute Disable) protection: not present!
> Using x86 segment limits to approximate NX protection
> 
> note: the NX patch will also protect against kernel-space code injection.
> 
> all the other components of exec-shield are identical between NX and
> non-NX: the brk area is non-executable, libraries and PIE binaries are
> moved into the ascii-shield as much as possible, and all aspects of
> the address space are randomized.
> 
> Christoph Hellwig thought the patch was too big and included more
> stuff than some folks would want. He asked, "Any chance to split this
> up a bit? Having the pure non-exec stack (and maybe heap) would be
> really nice while the randomization feature are a litte bit too much
> security by obscurity for my taste." Joe Korty disagreed, "It's no
> more security by obscurity than keeping your key secret is security by
> obscurity. (One can think of the randomization as a white-noise key)."
> Nevertheless, Ingo posted a new patch with the randomization code
> removed. But he added, "but i still think randomization is useful as a
> last-resort barrier, against worm-alike mass attacks. There's a huge
> difference between a 1-packet infection and a 2-hour brute-force
> search over broadband, in terms of the 'economy' of worms."

\start
Date: Thu, 1 Jul 2004 09:40:36 -0400
From: Tim Daly
To: Martin Rubey
Subject: Complex exponentiation and 0

Martin,

>So the current setup works well for me: there are very few people with admin
>access and I trust them not to take action before agreement has been reached.

I'm very conservative about changes where the algebra is concerned.
Even for "obvious to the average nosepicker" changes there are 
hard and interesting mathematical questions. In general the updates
I've done have been done by the original authors of the packages
(Sit, Lambe, Rioboo, etc). I don't know enough mathematics to be
considered an authority.

>On the other hand, I am happy to summarize discussions where I'm able to.

I listen carefully to the discussion but unless somebody sends me a
diff -Naur old new
patch file and a test case or two it is unlikely that I'd make a change. 

However, if you author a new math package I'm happy to add it. 
rinterp.spad.pamphlet exists in the current distribution and you
are the authority for it. It isn't "exposed" so people can't see
it unless they explicitly expose it but it is there.

\start
Date: Thu, 1 Jul 2004 11:00:46 -0400
From: Tim Daly
To: William Sit
Subject: coerce to SEX

SEX, SEXOF, and SEXCAT are Axiom cover functions for lisp S-expressions.

Thus if you want to construct something you have to build it up from
the primitives using things like:

-> m:=[1::SEX, 2::SEX]
     [1,2]
                 Type: List SExpression

having this primitive you can "upgrade" it to a list structure with:

-> n:=m::SEX
     (1 2)
                 Type: SExpression

and then you can operate on it:

-> car(n)
     1
                 Type: SExpression

do a ")show SEX" and you can see the ways you can manipulate the SExpression.

SEX is pretty low level stuff. It is essentially lisp list manipulation
at the Axiom level.

\start
Date: Thu, 1 Jul 2004 11:02:45 -0400
From: Tim Daly
To: David Mentre
Subject: bug in SEX

-> m:=[1::SEX, 2::SEX]
     [1,2]
                 Type: List SExpression

-> n:=m::SEX
     (1 2)
                 Type: SExpression

-> car(n)
     1
                 Type: SExpression

-> v:List(INT):=[1,2]
     [1,2]
                 Type: List Integer

-> n.v

  >> Error detected within library code:
  Non-list

\start
Date: Thu, 1 Jul 2004 18:07:38 +0000
From: Martin Rubey
To: Tim Daly
Subject: Re: bug in SEX

Tim Daly writes:
 > -> m:=[1::SEX, 2::SEX]
 >      [1,2]
 >                  Type: List SExpression
 > 
 > -> n:=m::SEX
 >      (1 2)
 >                  Type: SExpression
 > 
 > -> car(n)
 >      1
 >                  Type: SExpression
 > 
 > -> v:List(INT):=[1,2]
 >      [1,2]
 >                  Type: List Integer
 > 
 > -> n.v
 > 
 >   >> Error detected within library code:
 >   Non-list
Are you sure that this is a bug? After all, n is not an Axiom List...

\start
Date: Thu, 1 Jul 2004 18:13:47 +0200
From: Magnus Larsson
To: Camm Maguire
Subject: Re: Axiom cvs 040624 build error

Hello Camm Maguire,

Please find the second test result attached, as per your instruction,

This resulted in a crash. A "bt" backtrace is enclosed.

On Thursday 01 July 2004 15.17, Camm Maguire wrote:
> Greetings!
>
> Magnus Larsson writes:
> > Hello Camm,
> >
> > I have downloaded cvs 040701 and configured --enable-debug.
> > The build fails, as before.
> >
> > The commands
> > cd lsp/gcl-2.6.2/unixport
> > gdb saved_gcl, r, (load "../gcl-tk/tkl.o)
> >
> > did not reproduce the crash.
> >
> > GNU gdb 6.1.1
> > Copyright 2004 Free Software Foundation, Inc.
> > GDB is free software, covered by the GNU General Public License, and you
> > are welcome to change it and/or distribute copies of it under certain
> > conditions. Type "show copying" to see the conditions.
> > There is absolutely no warranty for GDB.  Type "show warranty" for
> > details. This GDB was configured as "i686-pc-linux-gnu"...Using host
> > libthread_db library "/lib/libthread_db.so.1".
> >
> > (gdb) r
> > Starting
> > program:
> > /home/magnus/usr/source/axiom/cvs-040701/axiom/lsp/gcl-2.6.2/unixport/sav
> >ed_gcl
> >
> > >(load "../gcl-tk/tkl.o")
> >
> > Loading ../gcl-tk/tkl.o
> > start address -T 0x84a8ba0 Finished loading ../gcl-tk/tkl.o
> > 59684
> >
> >
> >
> > The next set of instructions:
> > q (from gdb)
> > cd ../gcl-tk/demos, r, (load "../tkl.o")(TK::GET-AUTOLOADS) (directory
> > "*.lisp"))
> >
magnus@lfs:~/usr/source/axiom/cvs-040701/axiom/lsp/gcl-2.6.2/gcl-tk/demos> 
gdb ../../unixport/saved_gcl
GNU gdb 6.1.1
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i686-pc-linux-gnu"...Using host libthread_db 
library "/lib/libthread_db.so.1".

(gdb) r
Starting 
program: /home/magnus/usr/source/axiom/cvs-040701/axiom/lsp/gcl-2.6.2/unixport/saved_gcl

>(load "../tkl.o")(TK::GET-AUTOLOADS (directory "*.lisp"))

Loading ../tkl.o
start address -T 0x84a8ba0 Finished loading ../tkl.o
59684

>Detaching after fork from child process 11550.

Program received signal SIGSEGV, Segmentation fault.
0x00000000 in ?? ()
(gdb) bt
#0  0x00000000 in ?? ()
#1  0x084b4ff2 in ?? ()
#2  0x082d8910 in ?? ()
#3  0x00000012 in ?? ()
#4  0xbfffef48 in ?? ()
#5  0x08054b7b in eval (form=0x8399060) at eval.c:1090
#6  0x08054b7b in eval (form=0x8399060) at eval.c:1090
#7  0x0805507e in fLeval (x0=0x85faf54) at eval.c:1178
#8  0x0805bf69 in c_apply_n (fn=0x8055022 <fLeval>, n=1, x=0x8252108) at 
funlink.c:271
#9  0x0807727e in IapplyVector (fun=0x83b3e4c, nargs=1, base=0x8252108) at 
nfunlink.c:229
#10 0x08052d28 in funcall (fun=0x83b3e4c) at eval.c:190
#11 0x08053cac in symlispcall (sym=0x83b2288, base=0x8252104, narg=1) at 
eval.c:507
#12 0x0813623f in LI1 () at gcl_top.c:140
#13 0x0805206f in quick_call_sfun (fun=0x852ffc8) at eval.c:117
#14 0x08052ca2 in funcall (fun=0x852ffc8) at eval.c:178
#15 0x080773a5 in IapplyVector (fun=0x852ffc8, nargs=0, base=0x82520dc) at 
nfunlink.c:239
#16 0x08054df7 in fLfuncall (fun=0x852ffc8) at eval.c:1140
#17 0x0805bf69 in c_apply_n (fn=0x8054d63 <fLfuncall>, n=1, x=0x82520d8) at 
funlink.c:271
#18 0x0807727e in IapplyVector (fun=0x83b3e74, nargs=1, base=0x82520d8) at 
nfunlink.c:229
#19 0x08052d28 in funcall (fun=0x83b3e74) at eval.c:190
#20 0x08053646 in funcall_no_event (fun=0x83b3e74) at eval.c:381
#21 0x08054b88 in eval (form=0x8399060) at eval.c:1092
#22 0x080533ae in funcall (fun=0x83b4f58) at eval.c:327
---Type <return> to continue, or q <return> to quit---
#23 0x08053646 in funcall_no_event (fun=0x860fe88) at eval.c:381
#24 0x08054b88 in eval (form=0x8399060) at eval.c:1092
#25 0x080533ae in funcall (fun=0x83b4f60) at eval.c:327
#26 0x0805439e in super_funcall (fun=0x8610ff0) at eval.c:743
#27 0x080726c9 in main (argc=1, argv=0xbffff904, envp=0xbffff90c) at 
main.c:327

\start
Date: Thu, 01 Jul 2004 12:14:40 -0400
From: William Sit <William Sit>
To: Tim Daly
Subject: Re: coerce to SEX

Tim: 

I cannot coerce a domain into a SExpression, which is needed to call the
function any from ANY to coerce an object to Any.

SEX::SEX

  Cannot convert the type Domain to SExpression for value SExpression()

William

---

Tim Daly wrote:
> 
> SEX, SEXOF, and SEXCAT are Axiom cover functions for lisp S-expressions.
> 
> Thus if you want to construct something you have to build it up from
> the primitives using things like:
> 
> -> m:=[1::SEX, 2::SEX]
>      [1,2]
>                  Type: List SExpression
> 
> having this primitive you can "upgrade" it to a list structure with:
> 
> -> n:=m::SEX
>      (1 2)
>                  Type: SExpression
> 
> and then you can operate on it:
> 
> -> car(n)
>      1
>                  Type: SExpression
> 
> do a ")show SEX" and you can see the ways you can manipulate the SExpression.
> 
> SEX is pretty low level stuff. It is essentially lisp list manipulation
> at the Axiom level.

\start
Date: 01 Jul 2004 12:59:58 -0400
From: Camm Maguire
To: Magnus Larsson
Subject: Re: Axiom cvs 040624 build error

Greetings, and thanks!

This is due to an old gcl somehow havving gotten its way into axiom.

Just did a cvs axiom checkout on Andrey's machine, and see the
following in the top of lsp/gcl-2.6.2/debian/changelog:

gcl (2.6.1-26) unstable; urgency=low

  * Rework compiler::*ld-libs*, compiler::link, and unixport/makefile to
    accomodate mingw need for firstfile.o and lastfile.o
  * Remove incompatible -fomit-frame-pointer when compiling with -pg
    profiling
  * Load sys-proclaim.lisp files forimproved linking and smaller object
    size across the board, install same for use with compiler::link
  * Use pathnames instead of strings in compiler::link, also in image
    init files, for Windows
  * small mod to unixport/makefile re filtering of firstfile and
    lastfile
  * Backport zero divisor error cnditions from HEAD for
    floor,ceiling,truncate
  * Default to debug mode on hppa to work around gcc compiler
    optimization bugs

 -- Camm Maguire  Fri, 20 Feb 2004 16:20:37 +0000

gcl (2.6.1-25) unstable; urgency=low

This is several versions (about 5 months) behind the 2.6.2 release,
which should look like:

gcl (2.6.2-1) unstable; urgency=high

  * gcc-3.4 support
  * Proper isnormal default courtesy of Magnus Henoch
  * gclclean makefile target and other small makefile changes
  * Proper check for C stack array body address in gbc.c and sgbc.c
  * New upstream release
  * acconfig.h update for isnormal default
  * Fix bug in setting elements (si::aset) of 0 rank arrays uncovered by
    the random tester
  * No -fomit-frame-pointer on mingw
  * Backport minimal ansi-test patches from HEAD to enable running of
    the random tester
  * installed tcl/tk patch for mingw
  * Fix banner license detection code in lsp/gcl_mislib.lsp as
    8features* entries are now keywords
  * o/makefile changes to work around trailing slash -I arguments gcc
    bug on mingw
  * Patch to mingwin.c:fix_filename to close long standing 'maxima
    ignore-errors filename corruption' bug on mingw
  * Check for too large rank supplied to make-array1
  * Fix potential stack overwrite bug in quick_call_sfun/eval.c
  * Add -mprferred-stack-boundary=8 on amd64, as constant integers used
    in a call must be retrievable with va_arg(,fixnum)
  * Revert preferred-stack-boundary option on amd64 as it does not play
    well with external libraries, also eliminate -m64 to allow for user
    settings.  Cast fixnum constant C arguments in gcl_cmploc.lsp
    explicitly to (long) to ensure they can be extracted via
    va_arg(,fixnum)
  * reenable SA_SIGINFO on amd64 to restore SGC there
  * Include elf.h in FreeBSD.h
  * Allow for elf_abi.h in FreeBSD.h
  * Add README.openbsd file
  * readme.mingw updates
  * solaris.h updates for custreloc option
  * Close possibility of malloc failure due to intervening gbc arising
    from the misordering of allocation calls
  * C_GC_OFFSET is 2 on m68k-linux
  * Add release notes, remove gcl document presumably based on dpANS for
    now
  * Fixup bad extern declaration of signals_handled in usig.c

 -- Camm Maguire  Fri, 25 Jun 2004 22:43:52 +0000


I've verified the crash with the axiom patched old gcl version, and
verified that stock gcl-2.6.2 does not show the crash on the same
machine.  I can obviously look further to see if the older version is
to blame or the axiom patches, but its probably most efficient at this
point to get the right source tree in place.  In any case, the
transparent Fedora support was added after this point, so we really
want this in for axiom.

Could not complete the axiom build on Andrey's machine with stock
2.6.2 due to a system misconfiguration:

SYS= linux
LSP= /home/axiom/axiom/lsp
PART= cprogs
SPAD= /home/axiom/axiom/mnt/linux
SRC= /home/axiom/axiom/src
INT= /home/axiom/axiom/int
OBJ= /home/axiom/axiom/obj
MNT= /home/axiom/axiom/mnt
/bin/sh: line 1: /tmp/console: Permission denied
make[3]: *** [/home/axiom/axiom/obj/linux/bin/bootsys] Error 1
make[3]: Leaving directory `/home/axiom/axiom/src/boot'
make[2]: *** [bootdir] Error 2
make[2]: Leaving directory `/home/axiom/axiom/src'
make[1]: *** [srcdir] Error 2
make[1]: Leaving directory `/home/axiom/axiom'
make: *** [all] Error 2


Magnus Larsson writes:

> Hello Camm Maguire,
> 
> Please find the second test result attached, as per your instruction,
> 
> This resulted in a crash. A "bt" backtrace is enclosed.
> 
> On Thursday 01 July 2004 15.17, Camm Maguire wrote:
> > Greetings!
> >
> > Magnus Larsson writes:
> > > Hello Camm,
> > >
> > > I have downloaded cvs 040701 and configured --enable-debug.
> > > The build fails, as before.
> > >
> > > The commands
> > > cd lsp/gcl-2.6.2/unixport
> > > gdb saved_gcl, r, (load "../gcl-tk/tkl.o)
> > >
> > > did not reproduce the crash.
> > >
> > > GNU gdb 6.1.1
> > > Copyright 2004 Free Software Foundation, Inc.
> > > GDB is free software, covered by the GNU General Public License, and you
> > > are welcome to change it and/or distribute copies of it under certain
> > > conditions. Type "show copying" to see the conditions.
> > > There is absolutely no warranty for GDB.  Type "show warranty" for
> > > details. This GDB was configured as "i686-pc-linux-gnu"...Using host
> > > libthread_db library "/lib/libthread_db.so.1".
> > >
> > > (gdb) r
> > > Starting
> > > program:
> > > /home/magnus/usr/source/axiom/cvs-040701/axiom/lsp/gcl-2.6.2/unixport/sav
> > >ed_gcl
> > >
> > > >(load "../gcl-tk/tkl.o")
> > >
> > > Loading ../gcl-tk/tkl.o
> > > start address -T 0x84a8ba0 Finished loading ../gcl-tk/tkl.o
> > > 59684
> > >
> > >
> > >
> > > The next set of instructions:
> > > q (from gdb)
> > > cd ../gcl-tk/demos, r, (load "../tkl.o")(TK::GET-AUTOLOADS) (directory
> > > "*.lisp"))
> > >
> magnus@lfs:~/usr/source/axiom/cvs-040701/axiom/lsp/gcl-2.6.2/gcl-tk/demos> 
> gdb ../../unixport/saved_gcl
> GNU gdb 6.1.1
> Copyright 2004 Free Software Foundation, Inc.
> GDB is free software, covered by the GNU General Public License, and you are
> welcome to change it and/or distribute copies of it under certain conditions.
> Type "show copying" to see the conditions.
> There is absolutely no warranty for GDB.  Type "show warranty" for details.
> This GDB was configured as "i686-pc-linux-gnu"...Using host libthread_db 
> library "/lib/libthread_db.so.1".
> 
> (gdb) r
> Starting 
> program: /home/magnus/usr/source/axiom/cvs-040701/axiom/lsp/gcl-2.6.2/unixport/saved_gcl
> 
> >(load "../tkl.o")(TK::GET-AUTOLOADS (directory "*.lisp"))
> 
> Loading ../tkl.o
> start address -T 0x84a8ba0 Finished loading ../tkl.o
> 59684
> 
> >Detaching after fork from child process 11550.
> 
> Program received signal SIGSEGV, Segmentation fault.
> 0x00000000 in ?? ()
> (gdb) bt
> #0  0x00000000 in ?? ()
> #1  0x084b4ff2 in ?? ()
> #2  0x082d8910 in ?? ()
> #3  0x00000012 in ?? ()
> #4  0xbfffef48 in ?? ()
> #5  0x08054b7b in eval (form=0x8399060) at eval.c:1090
> #6  0x08054b7b in eval (form=0x8399060) at eval.c:1090
> #7  0x0805507e in fLeval (x0=0x85faf54) at eval.c:1178
> #8  0x0805bf69 in c_apply_n (fn=0x8055022 <fLeval>, n=1, x=0x8252108) at 
> funlink.c:271
> #9  0x0807727e in IapplyVector (fun=0x83b3e4c, nargs=1, base=0x8252108) at 
> nfunlink.c:229
> #10 0x08052d28 in funcall (fun=0x83b3e4c) at eval.c:190
> #11 0x08053cac in symlispcall (sym=0x83b2288, base=0x8252104, narg=1) at 
> eval.c:507
> #12 0x0813623f in LI1 () at gcl_top.c:140
> #13 0x0805206f in quick_call_sfun (fun=0x852ffc8) at eval.c:117
> #14 0x08052ca2 in funcall (fun=0x852ffc8) at eval.c:178
> #15 0x080773a5 in IapplyVector (fun=0x852ffc8, nargs=0, base=0x82520dc) at 
> nfunlink.c:239
> #16 0x08054df7 in fLfuncall (fun=0x852ffc8) at eval.c:1140
> #17 0x0805bf69 in c_apply_n (fn=0x8054d63 <fLfuncall>, n=1, x=0x82520d8) at 
> funlink.c:271
> #18 0x0807727e in IapplyVector (fun=0x83b3e74, nargs=1, base=0x82520d8) at 
> nfunlink.c:229
> #19 0x08052d28 in funcall (fun=0x83b3e74) at eval.c:190
> #20 0x08053646 in funcall_no_event (fun=0x83b3e74) at eval.c:381
> #21 0x08054b88 in eval (form=0x8399060) at eval.c:1092
> #22 0x080533ae in funcall (fun=0x83b4f58) at eval.c:327
> ---Type <return> to continue, or q <return> to quit---
> #23 0x08053646 in funcall_no_event (fun=0x860fe88) at eval.c:381
> #24 0x08054b88 in eval (form=0x8399060) at eval.c:1092
> #25 0x080533ae in funcall (fun=0x83b4f60) at eval.c:327
> #26 0x0805439e in super_funcall (fun=0x8610ff0) at eval.c:743
> #27 0x080726c9 in main (argc=1, argv=0xbffff904, envp=0xbffff90c) at 
> main.c:327

\start
Date: Thu, 1 Jul 2004 12:16:30 -0400
From: Tim Daly
To: Camm Maguire
Subject: Re: Axiom cvs 040624 build error

Camm,

I used the CVS checkout line you sent me. 
I clipped it directly from the mail.
How this could have happened is unclear and very troubling
as I updated my tree immediately after our email exchange,
did a complete checkout/rebuild, and then checked in the change.
It is unclear where an old version could have come from.

Please do a CVS checkout of the current Axiom source tree and
see if this is broken. If so, please let me know the exact CVS
checkout string I should use to get the latest GCL and some
way to verify that it is the latest.

Once I've verified that I have the latest I'll do another
checkout/rebuild. 

color me puzzled,

\start
Date: Thu, 1 Jul 2004 12:19:48 -0400
From: Tim Daly
To: Camm Maguire
Subject: Re: Axiom cvs 040624 build error

Camm,

I've GOT it.....

The latest version in the CVS is gcl-2.6.2a, not gcl-2.6.2.
There was a bit of "flutter" because I was tracking your changes
too closely, thus the latest GCL is gcl-2.6.2a.tgz.

Axiom is actually built using gcl-2.6.2a (see the top of the Makefile
in the axiom toplevel directory).

gcl-2.6.2a should be the very latest GCL.

\start
Date: 01 Jul 2004 15:29:16 -0400
From: Camm Maguire
To: Tim Daly
Subject: Re: Axiom cvs 040624 build error

Greetings!

I confirm that zips/gcl-2.6.2a.tgz is the right tarball, but
zips/gcl-2.6.2.tgz is apparently what is being unpacked and built by
default, at least as of a fresh cvs checkout a few minutes ago.

I'd suggest renaming gcl-2.6.2a.tgz -> gcl-2.6.2.tgz.

Take care,

Tim Daly writes:

> Camm,
> 
> I've GOT it.....
> 
> The latest version in the CVS is gcl-2.6.2a, not gcl-2.6.2.
> There was a bit of "flutter" because I was tracking your changes
> too closely, thus the latest GCL is gcl-2.6.2a.tgz.
> 
> Axiom is actually built using gcl-2.6.2a (see the top of the Makefile
> in the axiom toplevel directory).
> 
> gcl-2.6.2a should be the very latest GCL.

\start
Date: Thu, 01 Jul 2004 20:21:39 +0100
From: Mark Murray
To: Tim Daly
Subject: Re: Axiom & internal/external GCL (was: Re: Axiom cvs 040624 build error) 

root writes:
> Mark,
> 
> If there is a FreeBSD box where I could try an Axiom build
> that would be great. I can debug a failing Axiom build faster.
> Be forewarned that an Axiom build can eat a system for several
> days (depending on CPU speed, 3hrs at 2Ghz, 6hrs at 1Ghz, etc).

Hi

You haven't sent me your account stuff like I asked in private mail :-)

\start
Date: Thu, 1 Jul 2004 16:04:04 -0400
From: "Mark E. Fenner" <fenner@cs.pitt.edu>
To: list
Subject: Compilation Methodology Overview and a Specific Problem

A quick question or two which may be followed by harder ones (it is!):

Why does axiom build its own LISP(s) instead of using LISP(s) that I may 
already have on my system?  Is this the different characteristics of 
different LISPs mentioned in the top-level README file?  

Is there any preference of using LISP versions that are 1) the same or 2) 
different from what I have on my machine?  For example, if I have gcl 2.5.2 
installed on my machine, should I necessarily choose GCLVERSION=gcl-2.5.2 in 
my makefile (or from an export GCLVERSION)?

Finally,  I believe the top level Makefile.dvi description states that gcl 
2.4.1 is the default gcl version.  The CVS toplevel Makefile seems to have 
the GCLVERSION=gcl-2.6.2 line uncommented.  Is this as intended or do the 
docs need updated?

A second issue:  I tried compiling just now and I got numerous errors, though 
it continued through them.  There seems to be a number of successful compiles 
and a number of unsuccessful compiles.  Here is an example:

****************************************************************************************
33 making /home/mfenner/tmp/axiom/obj/linux/interp/daase.o 
from /home/mfenner/tmp/axiom/int/interp/daase.lisp

>
Compiling /home/mfenner/tmp/axiom/int/interp/daase.lisp.
; (DEFUN |library| ...) is being compiled.
;; The variable ORIGINAL-DIRECTORY is undefined.
;; The compiler will assume this variable is a global.
; (DEFUN WRITE-COMPRESS ...) is being compiled.
;; The variable *ATTRIBUTES* is undefined.
;; The compiler will assume this variable is a global.
End of Pass 1.
End of Pass 2.
OPTIMIZE levels: Safety=0 (No runtime error checking), Space=0, Speed=3
Finished compiling /home/mfenner/tmp/axiom/obj/linux/interp/daase.o.
420 making /home/mfenner/tmp/axiom/int/interp/undo.clisp 
from /home/mfenner/tmp/axiom/src/interp/undo.boot.pamphlet

>
Error: Caught fatal error [memory may be damaged]
Fast links are on: do (si::use-fast-links nil) for debugging
Error signalled by LET.
Broken at APPLY.  Type :H for Help.
BOOT>>419 making /home/mfenner/tmp/axiom/obj/linux/interp/undo.o 
from /home/mfenner/tmp/axiom/int/interp/undo.clisp

>
The source file /home/mfenner/tmp/axiom/int/interp/undo.clisp is not found.
***************************************************************************************

Another error that seems to appear a few times is like the following:

****************************************************************************************
132 making /home/mfenner/tmp/axiom/obj/linux/interp/util.o 
from /home/mfenner/tmp/axiom/int/interp/util.lisp

>
Compiling /home/mfenner/tmp/axiom/int/interp/util.lisp.
; (DEFUN INITROOT ...) is being compiled.
;; The variable $SPADROOT is undefined.
;; The compiler will assume this variable is a global.
; (DEFUN INTERP-MAKE-DIRECTORY ...) is being compiled.
;; The variable $CURRENT-DIRECTORY is undefined.
;; The compiler will assume this variable is a global.
; (DEFUN TRANSLATE ...) is being compiled.
;; Warning: The variable FN is not used.
; (DEFUN REROOT ...) is being compiled.
;; The variable |$defaultMsgDatabaseName| is undefined.
;; The compiler will assume this variable is a global.
;; The variable |$msgDatabaseName| is undefined.
;; The compiler will assume this variable is a global.
; (DEFUN MAKE-DEPSYS ...) is being compiled.
;; Warning: The variable LSP is not used.
;; Warning: The variable SRC is not used.
;; Warning: The variable INT is not used.
;; Warning: The variable MNT is not used.
; (IN-PACKAGE "BOOTTRAN") is being compiled.
;; Warning: The package operation (IN-PACKAGE "BOOTTRAN") was in a bad place.
; (DEFUN BOOTTOCL ...) is being compiled.
;; Warning: The variable FN is not used.
; (IN-PACKAGE "BOOT") is being compiled.
;; Warning: The package operation (IN-PACKAGE "BOOT") was in a bad place.
; (DEFUN BUILD-INTERPSYS ...) is being compiled.
;; The variable COMP-FUNCTIONS is undefined.
;; The compiler will assume this variable is a global.
;; The variable PARSE-FUNCTIONS is undefined.
;; The compiler will assume this variable is a global.
;; The variable BROWSE-FUNCTIONS is undefined.
;; The compiler will assume this variable is a global.
;; The variable TRANSLATE-FUNCTIONS is undefined.
;; The compiler will assume this variable is a global.
;; The variable NAGBR-FUNCTIONS is undefined.
;; The compiler will assume this variable is a global.
;; The variable ASAUTO-FUNCTIONS is undefined.
;; The compiler will assume this variable is a global.
;; Warning: The variable LSP is not used.
;; Warning: The variable SRC is not used.
;; Warning: The variable INT is not used.
;; Warning: The variable OBJ is not used.
;; Warning: The variable MNT is not used.
;; Warning: The variable SYS is not used.
; (DEFUN SPAD-SAVE ...) is being compiled.
;; The variable |$SpadServer| is undefined.
;; The compiler will assume this variable is a global.
;; The variable |$openServerIfTrue| is undefined.
;; The compiler will assume this variable is a global.
; (IN-PACKAGE "COMPILER") is being compiled.
;; Warning: The package operation (IN-PACKAGE "COMPILER") was in a bad place.
; (IN-PACKAGE "BOOT") is being compiled.
;; Warning: The package operation (IN-PACKAGE "BOOT") was in a bad place.
; (DEFUN MAKELIB ...) is being compiled.
;; Warning: The variable NOOPTIMIZE is not used.
; (DEFUN LIBCHECK ...) is being compiled.
;; The variable ABBREVS is undefined.
;; The compiler will assume this variable is a global.
;; The variable CONSTRUCTORS is undefined.
;; The compiler will assume this variable is a global.
;; The variable SRCABBREVS is undefined.
;; The compiler will assume this variable is a global.
;; The variable SRCCONSTRUCTORS is undefined.
;; The compiler will assume this variable is a global.
;; The variable SPADS is undefined.
;; The compiler will assume this variable is a global.
;; The variable SHORT is undefined.
;; The compiler will assume this variable is a global.
;; The variable LONG is undefined.
;; The compiler will assume this variable is a global.
;; The variable POINT is undefined.
;; The compiler will assume this variable is a global.
;; The variable MARK is undefined.
;; The compiler will assume this variable is a global.
;; Warning: The variable END is not used.
;; Warning: The variable START is not used.
;; Warning: The variable IN is not used.
;; Warning: The variable INTERP is not used.
;; Warning: The variable END is not used.
;; Warning: The variable START is not used.
;; Warning: The variable IN is not used.
;; Warning: The variable INTERP is not used.
End of Pass 1.
End of Pass 2.
OPTIMIZE levels: Safety=0 (No runtime error checking), Space=0, Speed=3
Finished compiling /home/mfenner/tmp/axiom/obj/linux/interp/util.o.
*************************************************************************************************


Do either of these point to something I should (or shouldn't) be doing in my 
compile process.   If you need a more detailed log, I can do make > make.log 
or some such and mail it to you or put it up on a temporary web page.

\start
Date: Thu, 1 Jul 2004 16:55:22 -0400
From: Tim Daly
To: Mark Murray
Subject: Re: Axiom & internal/external GCL (was: Re: Axiom cvs 040624 build error)

Mark,

Soon. I'm heavily lagged at the moment. Mountains to move. -- t

\start
Date: Thu, 1 Jul 2004 16:58:20 -0400
From: Tim Daly
To: Camm Maguire
Subject: Re: Axiom cvs 040624 build error

Camm,

I found the problem. I failed to regenerate the top level Makefile.
Mea Culpa. I'll fix it now.

\start
Date: Thu, 1 Jul 2004 16:16:07 -0400
From: "Mark E. Fenner" <fenner@cs.pitt.edu>
To: list
Subject: Error Using GCLVERSION=2.5.2

In trying to get axiom to compile, I made the top level Makefile read:

****************************************
#GCLVERSION=gcl-2.4.1
#GCLVERSION=gcl-2.5
GCLVERSION=gcl-2.5.2
#GCLVERSION=gcl-2.6.1
#GCLVERSION=gcl-2.6.2
*****************************************

This resulted in the following error:

make[2]: Entering directory `/home/mfenner/tmp/axiom/lsp'
2 building gcl-2.5.2
tar: /home/mfenner/tmp/axiom/zips/gcl-2.5.2.tgz: Cannot open: No such file or 
directory
tar: Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error exit delayed from previous errors
make[2]: *** [gcldir] Error 2
make[2]: Leaving directory `/home/mfenner/tmp/axiom/lsp'
make[1]: *** [lspdir] Error 2
make[1]: Leaving directory `/home/mfenner/tmp/axiom'
make: *** [all] Error 2


There seems to be no gcl-2.5.2.tgz file in the zips/ directory.  There are 
however a number of 2.5.2 related patch files.  Should I ignore this and 
focus on getting the 2.6.2 version to work?  I'm still a bit confused as to 
why there need to be different GCLVERSION(s) if axiom builds it regardless or 
what is on the user's system.

\start
Date: Thu, 1 Jul 2004 17:05:12 -0400
From: Tim Daly
To: Camm Maguire
Subject: Re: Axiom cvs 040624 build error

Camm,

I'm not sure how I mangled that. All of my local copies say 2.6.2a.
Anyway, I'm updating the CVS with the correct value.

Please pull the latest Makefile.pamphlet and Makefile.

\start
Date: Thu, 1 Jul 2004 17:09:41 -0400
From: Tim Daly
To: fenner@cs.pitt.edu
Subject: Re: Error Using GCLVERSION=2.5.2

Mark,

Every version of GCL builds and runs on my system.
Camm has made updates in the last few months that may affect your system.
I've been using gcl-2.6.2a which is the latest version of GCL.
(The trailing 'a' is due to the fact that I was tracking Camm's changes
too closely and ended up being unable to build GCL so I needed to keep
two "current" versions).

You can either pull down the latest Makefile.pamphlet and Makefile or
modify your current top level Makefile to put a trailing 'a' on the version.
It should read:

GCLVERSION=gcl-2.6.2a

I'm sorry for the confusion. Somehow I didn't put the correct copy of
the top level Makefile into the CVS. I never noticed because the 
"round-trip" (checkin-checkout) tests I do would succeed with either
version and all of my other "working" copies have the gcl-2.6.2a version.

\start
Date: 01 Jul 2004 16:40:54 -0400
From: Camm Maguire
To: Tim Daly
Subject: Re: Axiom cvs 040624 build error

Greetings!  And thank you so much for your quick reply!  Not to be a
pest, but now the patches are not applying:

19 making /fix/g/camm/axiom/cvs/axiom/lsp
make[2]: Entering directory `/fix/g/camm/axiom/cvs/axiom/lsp'
2 building gcl-2.6.2a
/bin/sh: line 1: cd: gcl-2.6.2a/h: No such file or directory
3 applying EXTRAS patch to h/linux.defs
can't find file to patch at input line 3
Perhaps you should have used the -p or --strip option?
The text leading up to this was:
--------------------------
|--- linux.defs	2002-09-12 00:38:49.000000000 -0400
|+++ linux.defs.tpd	2003-10-22 23:42:02.000000000 -0400
--------------------------
File to patch: 

I think 2.6.2a unpacked into lsp/gcl.

Tim Daly writes:

> Camm,
> 
> I'm not sure how I mangled that. All of my local copies say 2.6.2a.
> Anyway, I'm updating the CVS with the correct value.
> 
> Please pull the latest Makefile.pamphlet and Makefile.

\start
Date: Thu, 1 Jul 2004 18:14:14 -0400
From: Tim Daly
To: Camm Maguire
Subject: Re: Axiom cvs 040624 build error

re: gcl vs gcl-2.6.2a
yep. fixed that.
then it fails because there is now a newline at the end of unixport/makefile. 
one of the patches could not be applied because the patch added the newline.
fixed that too.

The CVS upload is complete.
I'm in the process of round-trip testing the build.
I spoke to Mark on the phone and he's going to try the build again tomorrow.

\start
Date: Thu, 1 Jul 2004 19:57:25 -0400
From: Tim Daly
To: Camm Maguire
Subject: Re: Axiom cvs 040624 build error

Camm,

The build fails now. 
I'm chasing the failure.

\start
Date: Fri, 02 Jul 2004 00:19:00 +0100
From: Mark Murray
To: Tim Daly
Subject: Re: Axiom & internal/external GCL (was: Re: Axiom cvs 040624 build error) 

root writes:
> Soon. I'm heavily lagged at the moment. Mountains to move. -- t

OK, NP. :-)

\start
Date: Fri, 02 Jul 2004 00:21:05 -0400
From: William Sit
To: Tim Daly
Subject: Re: coerce to SEX

William Sit wrote:
> I cannot coerce a domain into a SExpression, which is needed to call the
> function any from ANY to coerce an object to Any.
> 
> SEX::SEX
> 
>   Cannot convert the type Domain to SExpression for value SExpression()
> 

I found two ways to do this:

d:=devaluate(INT)$Lisp
  (Integer)              Type: SExpression
a:=any(d, 3::None)
  3                      Type: Integer
obj a

  Function Selection for obj
    Arguments: ANY
  [1] signature: ANY -> NONE
      implemented: slot (None)$ from ANY

  NONE                   Type: OutputForm

The second way is simpler:

a:=coerce(3)$ANY1(INT)

What threw me off the track was the very suggestive way to construct an ANY
object using the function any: (SExpression, None)->ANY.

None of the functions exported by SEX, SEXCAT, SEXOF provide any way to input a
SExpression from the interpreter. Typing "(Integer)" (with or without quotes) in
place of the identifier d above will not work.

Is there any documentation for all the Lisp code that can be used in Axiom?
(Lisp is NOT a domain despite the $Lisp notation). Are the commands part of the
Boot language? (this may be a very stupid question).

\start
Date: Fri, 2 Jul 2004 07:01:07 +0200
From: Magnus Larsson
To: list
Subject: Re: Axiom cvs 040624 build error

Hello Tim, Camm,

Axiom builds correctly for me. Starting AXIOMsys results in:

AXIOM Computer Algebra System
                 Version of Friday July 2, 2004 at 00:03:35
=2D------------------------------------------------------------------------=
=2D---
   Issue )copyright to view copyright notices.
   Issue )summary for a summary of useful system commands.
   Issue )quit to leave AXIOM and return to shell.
=2D------------------------------------------------------------------------=
=2D---

   Re-reading compress.daase   Re-reading interp.daase
   Re-reading operation.daase
   Re-reading category.daase
   Re-reading browse.daase
(1) ->

Running the original ./axiom supplied after make install results in:
"Couldn't find a free pty", but I have had that problem before and I work 
around that calling AXIOMsys directly.

History:
The first 
cvs -z3 -d:ext:anoncvs@savannah.nongnu.org:/cvsroot/axiom co axiom
resulted in the fault Camm identified:
=2E..
/bin/sh: line 1: cd: gcl-2.6.2a/h: No such file or directory
3 applying EXTRAS patch to h/linux.defs
can't find file to patch at input line 3
Perhaps you should have used the -p or --strip option?
The text leading up to this was:
=2D-------------------------
|--- linux.defs=A02002-09-12 00:38:49.000000000 -0400
|+++ linux.defs.tpd=A0=A0=A0=A0=A02003-10-22 23:42:02.000000000 -0400
=2E..

Tim, I waited for your "gcl vs gcl-2.6.2a" update and executed another
cvs -z3 -d:ext:anoncvs@savannah.nongnu.org:/cvsroot/axiom co axiom
from inside the same build tree and received some updated files.  This buil=
d 
succeded.

=2E..
22 
making /home/magnus/usr/source/axiom/cvs-040701-3/axiom/int/graph/parabola/=
data 
from /home/magnus/usr/source/axiom/cvs-040701-3/axiom/src/graph/fileformats=
=2Epamphlet
25 
making /home/magnus/usr/source/axiom/cvs-040701-3/axiom/mnt/linux/doc/src/g=
raph/viewports 
from /home/magnus/usr/source/axiom/cvs-040701-3/axiom/src/graph/viewports
24 finished /home/magnus/usr/source/axiom/cvs-040701-3/axiom/src/graph
make[3]: Leaving directory 
`/home/magnus/usr/source/axiom/cvs-040701-3/axiom/src/graph'
49 finished /home/magnus/usr/source/axiom/cvs-040701-3/axiom/src
make[2]: Leaving directory 
`/home/magnus/usr/source/axiom/cvs-040701-3/axiom/src'
45 Makefile.linux called
46 Environment : PLF=LINUXplatform CCF=-O2 -fno-strength-reduce -Wall 
=2DD_GNU_SOURCE -DLINUXplatform -I/usr/X11/include LDF=-L/usr/X11R6/lib C=
C=gcc 
AWK=gawk RANLIB=ranlib TOUCH=touch TAR=tar 
AXIOMXLROOT=/home/magnus/usr/source/axiom/cvs-040701-3/axiom/mnt/linux/co=
mpiler 
O=o BYE=bye LISP=lsp 
DAASE=/home/magnus/usr/source/axiom/cvs-040701-3/axiom/src/share 
XLIB=/usr/X11R6/lib
make[1]: Leaving directory `/home/magnus/usr/source/axiom/cvs-040701-3/axio=
m'

On Friday 02 July 2004 01.57, root wrote:
> Camm,
>
> The build fails now.
> I'm chasing the failure.

\start
Date: Fri, 2 Jul 2004 02:04:28 -0400
From: Tim Daly
To: Camm Maguire
Subject: Re: Axiom cvs 040624 build error

Camm,

I found the build problem.
The luser (me) set the AXIOM variable incorrectly.
The round-trip build succeeded.

\start
Date: Fri, 2 Jul 2004 10:03:37 +0100
From: Mike Dewar
To: William Sit
Subject: Re: coerce to SEX

You can use any Lisp function in the current Lisp package from the Axiom
interpreter using `$Lisp', but you need to bear in mind some slight
syntactic differences.  For instance your example can be done as:
a:=any(['Integer]$Lisp,3::None) -- use [ ... ] as shorthand for list(...)
a:=any(LIST('Integer)$Lisp,3::None) -- apply LIST from Lisp
Note that although the lisp interpreter will upper-case everything,
Axiom doesn't so e.g. list(1)$Lisp won't work.

I thought that you could package-qualify lisp calls in the interpreter
by doing e.g. BOOT_:_:GENVAR()$Lisp, but this doesn't work in my version.

I hope this helps.

Mike.

On Fri, Jul 02, 2004 at 12:21:05AM -0400, William Sit wrote:
> What threw me off the track was the very suggestive way to construct an ANY
> object using the function any: (SExpression, None)->ANY.
> 
> None of the functions exported by SEX, SEXCAT, SEXOF provide any way to input a
> SExpression from the interpreter. Typing "(Integer)" (with or without quotes) in
> place of the identifier d above will not work.
> 
> Is there any documentation for all the Lisp code that can be used in Axiom?
> (Lisp is NOT a domain despite the $Lisp notation). Are the commands part of the
> Boot language? (this may be a very stupid question).

\start
Date: 02 Jul 2004 10:15:47 -0400
From: Camm Maguire
To: Tim Daly
Subject: Re: Axiom cvs 040624 build error

Greetings!  Great!  To the recipents, please let me know if these
latest changes do not resolve your problems.

Take care,

Tim Daly writes:

> Camm,
> 
> I found the build problem.
> The luser (me) set the AXIOM variable incorrectly.
> The round-trip build succeeded.

\start
Date: Fri, 02 Jul 2004 19:00:27 -0400
From: William Sit
To: Mike Dewar
Subject: re: coerce to SEX

Thanks, Mike. The BOOT_:_:GENVAR()$Lisp does not work on my version either. But
I noticed the underlines get deleted. Does the underline need any escape
character preceding it? What does this command do?

William

Mike Dewar wrote:
> 
> You can use any Lisp function in the current Lisp package from the Axiom
> interpreter using `$Lisp', but you need to bear in mind some slight
> syntactic differences.  For instance your example can be done as:
> a:=any(['Integer]$Lisp,3::None) -- use [ ... ] as shorthand for list(...)
> a:=any(LIST('Integer)$Lisp,3::None) -- apply LIST from Lisp
> Note that although the lisp interpreter will upper-case everything,
> Axiom doesn't so e.g. list(1)$Lisp won't work.
> 
> I thought that you could package-qualify lisp calls in the interpreter
> by doing e.g. BOOT_:_:GENVAR()$Lisp, but this doesn't work in my version.
> 
> I hope this helps.
> 
> Mike.
> 
>
> > Is there any documentation for all the Lisp code that can be used in Axiom?
> > (Lisp is NOT a domain despite the $Lisp notation). Are the commands part of the
> > Boot language? (this may be a very stupid question).

\start
Date: Fri, 2 Jul 2004 19:50:13 -0400
From: Tim Daly
To: William Sit
Subject: Re: coerce to SEX
Cc: Mike Dewar

Try:

GENSYM()$Lisp

That should work.

\start
Date: Fri, 2 Jul 2004 21:26:00 -0400
From: Tim Daly
To: William Sit
Subject: Re: coerce to SEX
Cc: Mike Dewar

Also,

(1) -> )lisp (defun foo () (print "it works"))

Value = FOO

(1) -> FOO()$Lisp

"it works"

  (1) it works
                             Type: SExpression

\start
Date: Sat, 3 Jul 2004 15:30:10 +0200
From: Gregory Vanuxem
To: list
Subject: PATCH: src/algebra/Makefile.pamphlet

Hi,

I've just downloaded axiom from (07/02/04) to test RationalInterpolation and
viewAlone.
The rinterp.spad file wasn't generated and here is a patch that changes the
Makefile.

The other problem is that rinterp.spad was badly generated. I think that
martin has to add

 <<package RINTERP RationalInterpolation>>=
 <<package RINTERP RationalInterpolation>>

because the compilation process complains:

 The root module <<package RINTERP RationalInterpolation>> was not defined


I doesn't know this language and  can't help you but I have finally removed
all
the documentation and added the root module.

I have added RINTERP to src/algebra/exposed.lsp.pamphlet (Hidden section)
but I don't know if I had to add it. Does it needed?


Cheers, Greg

PS: the patch was created from src/algebra directory.

\start
Date: Sat, 3 Jul 2004 15:32:56 +0200
From: Gregory Vanuxem
To: list
Subject: RE: PATCH: src/algebra/Makefile.pamphlet

> -----Message d'origine-----
>
> Hi,
>
> I've just downloaded axiom from (07/02/04) to test
> RationalInterpolation and viewAlone.
> The rinterp.spad file wasn't generated and here is a patch that
> changes the Makefile.
>
> The other problem is that rinterp.spad was badly generated. I
> think that martin has to add
>
>  <<package RINTERP RationalInterpolation>>=
>  <<package RINTERP RationalInterpolation>>
>
> because the compilation process complains:
>
>  The root module <<package RINTERP RationalInterpolation>> was not defined
>
>
> I doesn't know this language and  can't help you but I have
> finally removed all
> the documentation and added the root module.
>
> I have added RINTERP to src/algebra/exposed.lsp.pamphlet (Hidden section)
> but I don't know if I had to add it. Does it needed?
>
>
> Cheers, Greg
>
> PS: the patch was created from src/algebra directory.

Sorry, omitted the pacth

------=_NextPart_000_0000_01C46113.03A3B5F0
	name="algebra.make.patch"
	filename="algebra.make.patch"

--- Makefile.pamphlet.old	2004-07-02 16:12:48.000000000 +0200=0A=
+++ Makefile.pamphlet	2004-07-02 16:14:52.000000000 +0200=0A=
@@ -1068,7 +1068,8 @@=0A=
 \subsubsection{User Layer for newly added algebra}=0A=
 Rather than classify newly created algebra into the existing type =
lattice=0A=
 we add it here.=0A=
-<<USERLAYER>>==0A=
+<<userlayer>>==0A=
+USERLAYER=\=0A=
   ${OUT}/RINTERP.o=0A=
 @=0A=
 \subsection{Order}=0A=
@@ -29365,7 +29366,7 @@=0A=
 	@ echo 0 making ${MID}/RINTERP.spad from ${IN}/rinterp.spad.pamphlet=0A=
 	@(cd ${MID} ; \=0A=
 	rm -rf RINTERP.NRLIB ; \=0A=
-	${TANGLE} -R"domain RINTERP DenavitHartenbergMatrix" =
${IN}/rinterp.spad.pamphlet >RINTERP.spad )=0A=
+	${TANGLE} -R"package RINTERP RationalInterpolation" =
${IN}/rinterp.spad.pamphlet >RINTERP.spad )=0A=
 	@ rm -f ${INT}/algebra/dbcomplete=0A=
 =0A=
 @=0A=
@@ -35224,6 +35225,7 @@=0A=
 <<layer21>>=0A=
 <<layer22>>=0A=
 <<layer23>>=0A=
+<<userlayer>>=0A=
 <<order>>=0A=
 =0A=
 all: src ${INT}/algebra/dbcomplete ${DOCFILES}=0A=


\start
Date: Sat, 3 Jul 2004 15:56:18 -0400
From: Tim Daly
To: Gregory Vanuxem, Martin Rubey
Subject: RE: PATCH: src/algebra/Makefile.pamphlet

re: RINTERP. fixed. thanks. 

Martin,

Do you have a simple test case for RINTERP?

\start
Date: Mon, 5 Jul 2004 10:12:52 +0100
From: Mike Dewar
To: William Sit
Subject: Re: coerce to SEX

The "_" is the escape character in the interpreter.  In Lisp you can
call a function by prefixing it with the name of the package in which it
is defined, so in this case (boot::genvar) should call the genvar
function defined in the boot package (actually (boot:genvar) probably
works because genvar is almost certainly defined as an external symbol).

Unfortunately ":" and "::" have special meanings in the interpreter so
cannot be used to prefix a lisp function with its package name.  I
suspect that BOOT_:_:GENVAR()$Lisp is interpreted as a call to the
symbol |BOOT::GENVAR|, hence the error message.

If you are desperate you can go:
  APPLY(FIND_-SYMBOL('GENVAR,'BOOT)$Lisp,[]$Lisp)$Lisp
which looks up the genvar symbol in the boot package and then applies
it.  Of course in this particular case you can call genvar directly since
boot is in fact the current package.

Cheers, Mike.

On Fri, Jul 02, 2004 at 07:00:27PM -0400, William Sit wrote:
> Thanks, Mike. The BOOT_:_:GENVAR()$Lisp does not work on my version either. But
> I noticed the underlines get deleted. Does the underline need any escape
> character preceding it? What does this command do?
> 
> William
> 
> Mike Dewar wrote:
> > 
> > You can use any Lisp function in the current Lisp package from the Axiom
> > interpreter using `$Lisp', but you need to bear in mind some slight
> > syntactic differences.  For instance your example can be done as:
> > a:=any(['Integer]$Lisp,3::None) -- use [ ... ] as shorthand for list(...)
> > a:=any(LIST('Integer)$Lisp,3::None) -- apply LIST from Lisp
> > Note that although the lisp interpreter will upper-case everything,
> > Axiom doesn't so e.g. list(1)$Lisp won't work.
> > 
> > I thought that you could package-qualify lisp calls in the interpreter
> > by doing e.g. BOOT_:_:GENVAR()$Lisp, but this doesn't work in my version.
> > 
> > I hope this helps.
> > 
> > Mike.
> > 
> >
> > > Is there any documentation for all the Lisp code that can be used in Axiom?
> > > (Lisp is NOT a domain despite the $Lisp notation). Are the commands part of the
> > > Boot language? (this may be a very stupid question).

\start
Date: Mon, 5 Jul 2004 10:13:50 +0100
From: Mike Dewar
To: Tim Daly
Subject: Re: coerce to SEX

Well GENVAR()$Lisp actually works.  The point was that package-calling
doesn't work as expected.

Mike.

On Fri, Jul 02, 2004 at 07:50:13PM -0400, Tim Daly wrote:
> Try:
> 
> GENSYM()$Lisp

\start
Date: Mon, 5 Jul 2004 14:33:19 +0000
From: Martin Rubey
To: Tim Daly
Subject: Re: PATCH: src/algebra/Makefile.pamphlet

I'm forwarding this to math because I think some of the issues belong there.

Dear Tim,

Hm, in fact, I thought that it was a little to earlz to release rinterp.spad to
the world, since I expect it to change. I also noticed that you included the
version which does *not* parallel pinterp.spad... in fact, I think that there
should be one package pinterp.spad which includes all sorts of interpolation
algorithms, and a common interface should be worked out, i.e., what kind of
arguments does it take, what's the type of the result and so on. I don't want
to have a bad setup which is difficult to change once its included in the
"official" release because somebody might be using it already.

Here are the questions involved:

1* RINTERP has the following interface:

PolynomialInterpolation(xx, F): Cat == Body   where
    xx: Symbol
    F:  Field
    UP  ==> UnivariatePolynomial
    SUP ==> SparseUnivariatePolynomial
 
    Cat ==> with
        interpolate: (UP(xx,F), List F, List F) -> UP(xx,F)
                ++ interpolate(u,lf,lg) \undocumented
        interpolate: (List F, List F)           -> SUP F
                ++ interpolate(lf,lg) \undocumented

What I do not understand is: although the constructor takes an argument xx,
this argument is *not* used by the exported functions. For example, you have to
say interpolate(x,[1,2,3],[1,4,9])$PINTERP(x,FRAC INT) to get a UP in x. In
fact, this function does nothing more than the second version, followed by an
elt. To be honest, I would remove it.

2* Furthermore, when the xdata contain duplicates, interpolate exits with
  catdef: division by zero, which is correct. However, since it seems
  impossible to catch an error programmatically, it might be sensible to return
  "failed" instead.

3* RationalInterpolation is a tiny bit more subtle, since it may happen that
  some points are "unattainable", i.e., not interpolated correctly, and it may
  even happen that the interpolating function is undefined at certain points
  (because the denominator vanishes).  It might be the case that it is more
  effective to test this during the interpolation and to return a list of these
  points, but I'm not sure about it (as above)

4* rationalinterpolation currently returns a FRAC POLY F, which is not good. I
  did this, because I was unable how to convert a SUP into a POLY at the time,
  and I needed a POLY. This should definitely be changed.

5* What's the proper modeline of Hermite-interpolation (giving derivatives on
  some points) ?

When we have discussed (or I have reached a conclusion regarding) at least
points 3 and 4 its OK for me to include rinterp (or an extension of pinterp,
what I would prefer) into the official release.

Martin

PS: Tim, why did you convert pmatrix into array in the pamphlet file?

root writes:
 > Grigory,
 > 
 > re: RINTERP. fixed. thanks. 
 > 
 > Martin,
 > 
 > Do you have a simple test case for RINTERP?

\start
Date: Mon, 5 Jul 2004 14:07:54 -0400
From: Tim Daly
To: Bill Page
Subject: Re: Running Axiom in LatexWiki on the Axiom portal

Bill,

re:   http://page.axiom-developer.org/zope/Plone/wiki/June32004

I've rebuilt the page using the new \begin{axiom}, \end{axiom}, fixed
a typo or two, added a couple equations.  I love the new Axiom I/O
feature. There are several places that have tried to put computer
algebra systems on the web. This is a huge step forward. Nice work.

\start
Date: Mon, 5 Jul 2004 14:10:50 -0400
From: Tim Daly
To: Martin Rubey
Subject: Re: PATCH: src/algebra/Makefile.pamphlet

Martin,

Oops, you did ask me to wait before release. Sorry about that.
The RINTERP domain is not exposed so unless someone takes explicit
steps to expose it nothing will be available anyway.

I'll look at the rest of your message later. I'm off to a wake.

\start
Date: 05 Jul 2004 15:42:30 -0400
From: Camm Maguire
To: Tim Daly
Subject: 20040705 build broken

....
make[5]: Leaving directory `/fix/g/camm/axiom/cvs/axiom-0.20040705/src/graph/viewAlone'
21 making /fix/g/camm/axiom/cvs/axiom-0.20040705/mnt/linux/doc/src/graph/fileformats.dvi from /fix/g/camm/axiom/cvs/axiom-0.20040705/src/graph/fileformats.pamphlet
22 making /fix/g/camm/axiom/cvs/axiom-0.20040705/int/graph/parabola/data from /fix/g/camm/axiom/cvs/axiom-0.20040705/src/graph/fileformats.pamphlet
25 making /fix/g/camm/axiom/cvs/axiom-0.20040705/mnt/linux/doc/src/graph/viewports from /fix/g/camm/axiom/cvs/axiom-0.20040705/src/graph/viewports
cp: cannot stat `/fix/g/camm/axiom/cvs/axiom-0.20040705/src/graph/viewports': No such file or directory
make[4]: *** [/fix/g/camm/axiom/cvs/axiom-0.20040705/mnt/linux/doc/src/graph/viewports] Error 1
make[4]: Leaving directory `/fix/g/camm/axiom/cvs/axiom-0.20040705/src/graph'
make[3]: *** [graphdir] Error 2
make[3]: Leaving directory `/fix/g/camm/axiom/cvs/axiom-0.20040705/src'
make[2]: *** [srcdir] Error 2
make[2]: Leaving directory `/fix/g/camm/axiom/cvs/axiom-0.20040705'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/fix/g/camm/axiom/cvs/axiom-0.20040705'
make: *** [build-stamp] Error 2

\start
Date: Mon, 5 Jul 2004 22:56:05 -0400
From: Tim Daly
To: Camm Maguire
Subject: Re: 20040705 build broken

Camm,

Try running CVS update.

I've had problems with CVS from savannah recently.
Not all of the files get downloaded. 
It has happened several times but I thought it might just be me.
I'm certain the src/graph subdir is there as David has built it.

Let me know what happens.

\start
Date: Mon, 5 Jul 2004 23:49:32 -0400
From: Tim Daly
To: Alenka Zajka
Subject: Re: [SPAM] Re: MONET Axiom front end
Cc: Stephen Watt

Elema, 

Check out the page:

http://page.axiom-developer.org/zope/Plone/wiki/June32004

This is a wiki user-editable page.
Each Axiom equation can be run by adding these lines into the page:

\begin{axiom}
... (an axiom input line)
\end{axiom}

I'm not sure if this technique would be useful for ORCCA but you
might find it interesting. The axiom environment causes the
equation to be executed in a background axiom and the result
is rendered on the web page. All equations on the same page
are run in one copy of Axiom making it possible to develop
documentation online. Since ORCCA wants to work with several
systems perhaps it could copy the technique and implement

\begin{maple}
\begin{yacas} ... etc


Bill Page, one of the axiom developers, is responsible for this.

\start
Date: Tue, 6 Jul 2004 05:55:16 -0400 
From: Bill Page
To: Tim Daly
Subject: Re: MONET Axiom front end
Cc: Stephen Watt, Alenka Zajka, Bertfried Fauser, Bob McElrath

Tim,

Here are some more example pages

  http://page.axiom-developer.org/zope/Plone/Members/billpage

  http://page.axiom-developer.org/zope/Plone/Members/billpage/AxiomCommands

I have made a few more improvements to the AXIOM web interface.
I think it will now handle all the usual forms of AXIOM input
including multi-line function definitions with standard
indentation for blocks, system commands like )show Integer,
and graceful output in case of syntax errors, etc.

I have also changed the display so that AXIOM commands appear
highlighted and equation numbers appear on the right hand side.
As is the convention in LatexWiki,

  http://mcelrath.org/Notes/StructuredTextRules

the equation numbers are assigned hyperlink names of the form
'eq99' (where 99 is the equation number) that can be referenced
from within the page simply as (99) or from elsewhere by a url
ending in #eq99. For example

 
http://page.axiom-developer.org/zope/Plone/Members/billpage/AxiomCommands#eq
4

I would very much like to get some feedback from other Axiom
developers about how this works. If you haven't done so already,
please take a minute to register for access to the Axiom portal

  http://page.axiom-developer.org/zope/Plone/join_form

Logging on to this site will allow you to edit the pages and
re-run Axiom online. You can also create your own wiki web pages
that include Axiom output and LaTeX mathematics. You can also
subscribe to the Axiom Wiki so that the contents of new pages
and comments on the pages will be sent to you by email.

Yes as you suggest Tim, the same technique could easily be
used with other CAS programs - especially those that can
produce LaTeX output. The interface to Axiom consists of
a Python module of about 100 lines of code that prepares an
input file for Axiom and parses the output. It depends on
Bob McElrath's LatexWiki extension of Zwiki which runs
under Zope and Plone.

  http://mcelrath.org/Notes/LatexWiki

The next major step would be to include the Axiom graphics
output on the web page. Once you have the basic Axiom graphics
functionality up and running and producing postscript format
output, I think adding the web interface should be a fairly
easy job.

Regards,
Bill Page.

> -----Original Message-----
> Elema, 
> 
> Check out the page:
> 
> http://page.axiom-developer.org/zope/Plone/wiki/June32004
> 
> This is a wiki user-editable page.
> Each Axiom equation can be run by adding these lines into the page:
> 
> \begin{axiom}
> ... (an axiom input line)
> \end{axiom}
> 
> I'm not sure if this technique would be useful for ORCCA but you
> might find it interesting. The axiom environment causes the
> equation to be executed in a background axiom and the result
> is rendered on the web page. All equations on the same page
> are run in one copy of Axiom making it possible to develop
> documentation online. Since ORCCA wants to work with several
> systems perhaps it could copy the technique and implement
> 
> \begin{maple}
> \begin{yacas} ... etc
> 
> 
> Bill Page, one of the axiom developers, is responsible for this.

\start
Date: Tue, 6 Jul 2004 09:17:12 -0700
From: Bob McElrath
To: Bill Page
Subject: Re: MONET Axiom front end
Cc: Stephen Watt, Alenka Zajka, Bertfried Fauser

--OXfL5xGRrasGEqWY

Very cool!

I released LatexWiki 0.32 this weekend, and in it are some imporovements
for Plone.  Specifically, the stylesheet works in plone so that in-line
equations have a similar font as the page text.

I do not have a convenient way to adjust fonts in plone but would like
to add this.  Normally there is a page

    http://page.axiom-developer.org/zope/Plone/UserOptions 

which is not plone-specific, but it looks like it is not installed on
your site.

Bill would you be willing to share these patches so I can distribute
them with LatexWiki?  Did you define a new page type?

Page, Bill wrote:
> Tim,
> 
> Here are some more example pages
> 
>   http://page.axiom-developer.org/zope/Plone/Members/billpage
> 
>   http://page.axiom-developer.org/zope/Plone/Members/billpage/AxiomComman=
ds
> 
> I have made a few more improvements to the AXIOM web interface.
> I think it will now handle all the usual forms of AXIOM input
> including multi-line function definitions with standard
> indentation for blocks, system commands like )show Integer,
> and graceful output in case of syntax errors, etc.

\start
Date: Tue, 6 Jul 2004 13:03:44 -0400 
From: Bill Page
To: Bob McElrath
Subject: Re: MONET Axiom front end
Cc: Stephen Watt, Bill Page, Alenka Zajka, Bertfried Fauser

Bob,

On Tuesday, July 06, 2004 12:17 PM you wrote

> ... 
> I released LatexWiki 0.32 this weekend, and in it are some 
> improvements for Plone.  Specifically, the stylesheet works
> in plone so that in-line equations have a similar font as
> the page text.

Yes, I saw your notice and I look forward to implementing 0.32
but since I have only just got AXIOM working with LatexWiki,
I am a little reluctant to make changes to the axiom-developer.org
system until people have had a chance to use it and comment on
it. I tried a while back to change the stylesheet used by Zwiki
in Plone, but it didn't work on first try and I didn't have time
to go back to it.

When I get around to it, I would also like to implement the
Microsoft IE AlphaImageLoader filter stylesheet behaviour that
corrects the problem with image backgrounds (not transparent) on
IE.

  http://webfx.eae.net/dhtml/pngbehavior/pngbehavior.html

Anyway, if someone has additional system resources to spare,
I would be willing to duplicate what I have done so far on
another system with newer versions of Zope, Zwiki, and Plone.
Right now all of these are about 3 months behind current -
not too bad, but things do change quite quickly in this business.

> 
> I do not have a convenient way to adjust fonts in plone but
> would like to add this.  Normally there is a page
> 
>     http://page.axiom-developer.org/zope/Plone/UserOptions 
> 
> which is not plone-specific, but it looks like it is not installed
> on your site.

You can access this page on the Zope-based Zwiki/LatexWiki
site:

  http://page.axiom-developer.org/zope/mathaction/UserOptions

I set up both a "stand alone" LatexWiki at

  http://page.axiom-developer.org/zope/mathaction

and the Plone-based portal

  http://page.axiom-developer.org/zope/Plone

with the publicly accessible LatexWiki at

  http://page.axiom-developer.org/zope/Plone/wiki

These are separate wiki's, one with the vanilla Zwiki Zope
skin and the other with the Plone skin in the portal
environment. I think it would be neat if these could both
contain the same contents with just two different look-and-
feel.

There are also other LatexWiki's created by registered users
on the portal.

Apparently UserOptions is only available in the Zope-based
wiki.

> 
> Bill would you be willing to share these patches so I can
> distribute them with LatexWiki?

Yes, absolutely. I would consider them licensed under the
same terms as LatexWiki. I would be very happy if you could
just incorporate them into your LatexWiki distribution. I
consider what I have right now as more or less at the "0.20"
version level. It's just one Python module that implements
the filter and a one line change to ReplaceInlineLatex.py to
call it before calling renderLatex. I can send you the file
whenever you want. Do you have AXIOM installed on one of
your servers?

> Did you define a new page type?

No, but that might be neat. I don't know enough about Zwiki
yet to do that and I haven't looked closely enough at your
install script. Actually, I think the number of different
page types is rather confusing to most users and if I added
a new type, I would probably want to take other less useful
options away.

Regards,
Bill Page.

> 
> Page, Bill wrote:
> > Tim,
> > 
> > Here are some more example pages
> > 
> >   http://page.axiom-developer.org/zope/Plone/Members/billpage
> > 
> >   
> http://page.axiom-developer.org/zope/Plone/Members/billpage/AxiomCommands
> > 
> > I have made a few more improvements to the AXIOM web interface.
> > I think it will now handle all the usual forms of AXIOM input
> > including multi-line function definitions with standard
> > indentation for blocks, system commands like )show Integer,
> > and graceful output in case of syntax errors, etc.

\start
Date: 06 Jul 2004 16:51:09 -0400
From: Camm Maguire
To: Tim Daly
Subject: New Debian package uploaded 20040705

Greetings!  Just a notification.  New package layout will probably
take about a week to be approved and installed in the archives.

\start
Date: Wed, 7 Jul 2004 12:15:25 +1000
From: Jason White
To: list
Subject: Re: MONET Axiom front end

Page, Bill writes:
 > Tim,
 > 
 > Here are some more example pages
 > 
 >   http://page.axiom-developer.org/zope/Plone/Members/billpage
 > 
 >   http://page.axiom-developer.org/zope/Plone/Members/billpage/AxiomCommands

Would it be possible to place something informative in the ALT
attribute of each image, for example the LaTeX code of the equation,
rather than "LatexWiki image"? People reading these pages with a
braille or speech interface or with a text-only browser would then at
least be able to read the LaTeX.

Of course, the real solution is to offer XHTML+MathML as an output
format, which I am sure is on the development agenda at some point.

\start
Date: Tue, 6 Jul 2004 20:30:27 -0700
From: Bob McElrath
To: Jason White
Subject: Re: MONET Axiom front end

--3Pql8miugIZX0722

Jason White wrote:
> Page, Bill writes:
>  > Tim,
>  > 
>  > Here are some more example pages
>  > 
>  >   http://page.axiom-developer.org/zope/Plone/Members/billpage
>  > 
>  >   http://page.axiom-developer.org/zope/Plone/Members/billpage/AxiomCom=
mands
> 
> Would it be possible to place something informative in the ALT
> attribute of each image, for example the LaTeX code of the equation,
> rather than "LatexWiki image"? People reading these pages with a
> braille or speech interface or with a text-only browser would then at
> least be able to read the LaTeX.

This will require a minor rewrite of how I substitute equations back in
the page.  The code is there but disabled.  In-line equations have an
appropriate alt tag.

> Of course, the real solution is to offer XHTML+MathML as an output
> format, which I am sure is on the development agenda at some point.

Please see:

    http://mcelrath.org/Notes/ITeXTest

Which is a working test-page of exactly that.  Right now browser support
is very poor, and is the limiting factor.  This page uses itex:

    http://golem.ph.utexas.edu/~distler/blog/archives/000374.html

which is a small lex/yacc program to convert a subset of latex to
MathML.  As such it cannot support style files, a latex template, or
some very complex equations.  I then run it through the
LaTeX/ghostscript part to generate images from anything that itex
missed.  More links on this subject can be found on my main LatexWiki
page:

    http://mcelrath.org/Notes/LatexWiki

I am still contemplating an overhaul that would use tex4ht instead, and
thus allow the use of latex style files.  But this is much more
complicated, and slower.

MathML adoption has been glacially slow due to the chicken and egg
problem between browsers and page creators.  I encourage the AXIOM
project to make use of MathML and help push this!  As far as I know,
Distler's blog (above) is the only site to use exclusively MathML on a
"real" site.  (as opposed to sites talking about MathML implementation
itself, or sites which have MathML toys but no mathematical content of
interest to mathematicians, physicists, or engineers)

\start
Date: Wed, 7 Jul 2004 14:09:14 +1000
From: Jason White
To: Bob McElrath
Subject: Re: MONET Axiom front end

Bob McElrath writes:
 > 
 > MathML adoption has been glacially slow due to the chicken and egg
 > problem between browsers and page creators.  I encourage the AXIOM
 > project to make use of MathML and help push this!

Axiom includes support for OpenMath (http://www.openmath.org/) but it
isn't clear from the mailing list discussion whether anyone has
managed to get it to work with any of the open-source axiom releases.

At http://www.openmath.org/ there is an XSLT style sheets intended to
transform OpenMath into presentation MathML. This could perhaps be
used to process output from Axiom in the absence of support for
generating presentation MathML directly.

\start
Date: Wed, 07 Jul 2004 04:51:38 -0400
From: William Sit
To: list
Subject: spool bug?

I am not sure if it is a bug, but I think it would be better if the "feature"
below is modified.

As one knows, it takes quite a few compiles to get a spad file in the right
form, especially when one is learning. I also like to keep a record of the
mistakes I made as well as to document any possible bugs. So what I want to do
is this:

)spool mytest.output
)sys cat mytest.spad
)comp mytest.spad
-- go make some changes
-- repeat the previous two commands
)spool

At the console the file is displayed. However, spool does not capture any output
from the )sys cat command.

I lost all the changes I made to mytest.spad even though eventually, I got it
working.

My request therefore: Is it difficult to modify spool so it will also capture
all the output from a system command like cat? (I don't expect spool to capture
other than "terminal" type output streams.)

\start
Date: Wed, 7 Jul 2004 07:21:46 -0400
From: Tim Daly
To: William Sit
Subject: Re: spool bug?

William,

)spool is working with terminal i/o from lisp.

)sys starts a new shell with its own i/o rather than using the lisp i/o.

So it's not really a bug but a request for a feature change.

In theory it should be possible to capture the i/o stream from the
shell and redirect it thru a lisp i/o stream but that would require a
different system call from the underlying lisp. I'll look at the code
and see what it currently does. If there is a way that lisp will let
me capture the output I'll rewrite )sys.

\start
Date: Wed, 7 Jul 2004 07:35:13 -0400
From: Tim Daly
To: William Sit
Subject: Re: spool bug?

William,

This request is Feature 9581 which has been added to the bug tracking.

\start
Date: Wed, 7 Jul 2004 07:36:58 -0400
From: Tim Daly
To: Jason White, Bob McElrath
Subject: Re: MONET Axiom front end

Jason, Bob,

The MathML XSLT style sheet feature request 9582 has been added.

\start
Date: 02 Jul 2004 12:42:16 -0400
From: Camm Maguire
To: list
Subject: Re: Lisp vs. Java vs. C++ speed comparison time?
Cc: Antonio Menezes Leitao

The following message is a courtesy copy of an article
that has been posted to comp.lang.lisp as well.

Greetings!  Coincidentally, we've been looking at the Boyer benchmark
too in testing the recent GCL 2.6.2 release. Thought it might be of
interest to post some GCL results here too (using the boyer benchmark
version posted in this thread):

All times are reported in real time/gc time.

n   GCL-2.6.2   CMUCL 18e  CLISP 2.33.2

0   0.03/0.00   0.04/0.00     0.17/0.01
1   0.21/0.07   0.25/0.00     1.14/0.05
2   0.46/0.12   0.67/0.02     3.08/0.14
3   1.20/0.26   1.76/0.08     8.15/0.50
4   3.74/0.95   5.30/0.69    23.45/1.46
5  12.32/3.72  15.80/2.11    79.51/7.55


All lisps here are the latest versions in Debian unstable.  GCL was
run in ANSI mode.  The machine was a dual Xeon 2.4Ghz.  We already
know that the relative GCL/CMUCL performance can vary somewhat by
machine, presumably influenced by cache size and cpu/memory bandwidth
ratios.  It is clear for example that CMUCL is doing a better job on
the memory layout/access times which predominate in the gc time
component.  On this particular machine, again presumably, memory
access is not the rate limiting step, and the results are more
governed by in cache cpu performance.

All that one might reasonably conclude from this exercise is that in
some cases, GCL is about as fast as CMUCL.

A few extra notes.  GCL comes with an automatic function proclamation
feature which is useful in optimizing the compile, for both GCL and
CMUCL (at least).  One uses it as follows:

(compiler::emit-fn t)
(compile-file "foo.lisp")
(compiler::make-all-proclaims "foo.fn")
(load "sys-proclaim.lisp")
(compile-file "foo.lisp")

This is not simply bundled into compile-file as it is capable of
generating cross-referencing information across many files that can be
useful in optimizing a real system.  The above tests had the
sys-proclaim.lisp file loaded into each lisp before running
compile-file.  What is interesting is that on my machine at least,
this measurably helped the cmucl compile over a 'vanilla'
compile-file, and the insertion of 

(declaim (optimize (speed 3) (safety 0) (debug 0) (compilation-speed
0)))

at the top of the lisp source file actually degraded cmucl performance
from the vanilla version.  The fastest cmucl numbers are reported
above. 

Take care,


Antonio Menezes Leitao writes:

> (Mark McConnell) writes:
> 
> > To clarify: I'm concerned the test was unfair to Lisp.  Java's
> > compiler tries to optimize for speed, but Lisp won't try [or won't try
> > its hardest] unless you say (proclaim '(optimize speed)).  Antonio, is
> > there a chance you could run the test again with that line included?
> 
> Sure.  I added a 
> 
> (declaim (optimize (speed 3) (safety 0) (debug 0) (compilation-speed 0)))
> 
> at the beginning of the (Common Lisp) file, recompiled it and timed it
> again.  Here are the results of two runs (I also run the Java code
> again):
> 
> N  CMUCL  CLISP Allegro ServerVM
> 0   0.04   0.14   0.02   0.05
> 1   0.12   0.84   0.18   0.13
> 2   0.37   2.40   0.51   0.43
> 3   1.18   6.28   1.46   1.11
> 4   2.94  18.24   5.30   3.68
> 5  11.81  69.04  24.04  15.81
> 
> N  CMUCL  CLISP Allegro ServerVM
> 0   0.02   0.13   0.03   0.02
> 1   0.17   0.84   0.18   0.13
> 2   0.40   2.32   0.51   0.40
> 3   1.02   6.57   1.45   1.08
> 4   3.03  17.99   4.82   3.71
> 5  13.03  70.86  23.35  15.37
> 
> The results are not very different from the previous ones I published
> and that I repeat below:
> 
> N  CMUCL  CLISP Allegro ServerVM
> 0   0.04   0.13   0.04   0.02
> 1   0.13   0.84   0.26   0.18
> 2   0.41   2.31   0.72   0.50
> 3   1.25   6.58   1.99   1.46
> 4   3.22  17.87   6.36   3.89
> 5  12.60  69.65  26.97  19.25
> 
> I guess the Boyer benchmark doesn't show much opportunity for
> optimization.
> 
> One last note:
> 
> I think we shouldn't put too much confidence in these numbers.  My
> test machine is one of those new Centrinos that dynamically adjusts
> the processor speed.  This might cause inconsistent timings.  One
> strange phenomena is the larger variance of the JVM compared with the
> Lisps.  In the same Common Lisp environment I get (more or less)
> consistent timings, but in the JVM I get from 15 s to 25 s for the
> last test case (apparently, depending on the day of the test :-).
> 
> Anyway, given the investment being done in Java compared with the
> investment being done in Common Lisp, I foresee difficult times for
> Common Lisp compilers that want to compete with Java for speed.
> Fortunately, speed is the least of my concerns.  Usually, all my code
> is compiled with (declaim (optimize (speed 0) (safety 3) (debug 3))).

\start
Date: Wed, 7 Jul 2004 23:55:58 -0400
From: Bill Page
To: Bob McElrath
Subject: RE: IE css png behavior

Bob,

I have made some changes to the AxiomWiki code in response to your
suggestions to worry a little about security (I disabled Axiom's )sys
command) and I also added the ability to compile Axiom Library code. =
With
these changes I think I am almost ready to announce the availability of
"Axiom on the Web" more widely to the axiom-users list. I'd like to get =
some
"real" user feedback :). Let me know if you think of anything else I =
should
worry about first.

There is a diff below and the files are at

http://page.axiom-developer.org/zope/Products/LatexWiki/ReplaceInlineAxio=
m.p
y
http://page.axiom-developer.org/zope/Products/LatexWiki/axiomWrapper.py

I also spent far too much time tonight trying to figure out the font
problems with LatexWiki inside Plone 2. I am totally frustrated about it =
and
have decided to wait until I can upgrade to the newer versions of Zwiki =
and
LatexWiki. I even have problems printing from Plone. The font sizes =
change
radically, some text is cut-off on the right margin and so are the LaTeX
images. Have you seen this sort of printing problem before?

Regards,
Bill Page.

diff -Naur AxiomWiki-0.2.0/ReplaceInlineAxiom.py
AxiomWiki-0.2.1/ReplaceInlineAxiom.py
--- AxiomWiki-0.2.0/ReplaceInlineAxiom.py	2004-07-07
11:26:42.359375000 -0400
+++ AxiomWiki-0.2.1/ReplaceInlineAxiom.py	2004-07-07
11:56:48.734375000 -0400
@@ -13,8 +13,8 @@
     Some or all expressions may not have rendered properly,
     because Axiom returned the following =
error:<br/><pre>%s</pre></font>"""
 
-    axiomPattern = r'^[ \t]*\\begin{axiom}(.*?)\\end{axiom}'
     reConsts = re.MULTILINE+re.DOTALL
+    axiomPattern = re.compile(r'^[
\t]*\\begin{axiom}(.*?)\\end{axiom}',reConsts)
 
     def htmlMarkup(code):
         newCode = re.compile(r'&', reConsts).sub(r'&amp;',code)
@@ -26,7 +26,7 @@
         newCode = re.compile(r'_', reConsts).sub('&#95;', newCode)
         return newCode
 
-    axiomCodeList = re.compile(axiomPattern,reConsts).findall(body)
+    axiomCodeList = axiomPattern.findall(body)
 
     (latexCodeList,errors) = renderAxiom(axiomCodeList)
 
@@ -60,7 +60,7 @@
                 newCode = re.compile(r'\n', =
reConsts).sub(r'\r\n',newCode)
                 newCode =
'<pre>\r\n'+htmlMarkup(strip(newCode,'\r\n'))+'\r\n</pre>\r\n'
             newCodeList.append(newCode)
-        body = re.compile(axiomPattern,reConsts).sub(lambda
x:newCodeList.pop(0),body)
+        body = axiomPattern.sub(lambda x:newCodeList.pop(0),body)
     else:
         body = "<pre>" + body + "</pre>" + errorMessage %(errors)
 
diff -Naur AxiomWiki-0.2.0/axiomWrapper.py =
AxiomWiki-0.2.1/axiomWrapper.py
--- AxiomWiki-0.2.0/axiomWrapper.py	2004-07-07 11:27:38.609375000 -0400
+++ AxiomWiki-0.2.1/axiomWrapper.py	2004-07-07 20:05:30.750000000 -0400
@@ -22,15 +22,31 @@
 outputPattern = r'(.*?)\n\(\d+\) -> '
 reConsts = re.MULTILINE+re.DOTALL
 
-def renderAxiom(axiomCodeList):
+def renderAxiom(axiomCodeList):
+    def securityCheck(code):
+      newCode = re.compile(r'^[ \t]*\)sys([^\n]*)',reConsts).sub(r'-- =
not
allowed: )sys\1\n)sys',code)
+      return newCode
+    
     n = 1
     unifiedCode = ''
-    for axiomCode in axiomCodeList:
-        axiomFileName = fileNameFor(axiomCode, 25, '.%3.3d.input'%n)
-        n = n + 1
-        unifiedCode = unifiedCode + ')read %s\n'%axiomFileName
+    for axiomCode in axiomCodeList:
+        newAxiomCode = securityCheck(axiomCode)
+        n = n + 1
+        if re.match(r'^\s*\)abbrev',newAxiomCode):
+            # Starts like a package so compile as library code
+            axiomFileName = fileNameFor(newAxiomCode, 25, =
'.%3.3d.spad'%n)
+            # This is just for appearances
+            newAxiomCode = newAxiomCode +
'------------------------------------------------------------------------=
\n'
+            unifiedCode = unifiedCode + ')set message prompt none\n'
+            unifiedCode = unifiedCode + ')sys cat %s\n'%axiomFileName
+            unifiedCode = unifiedCode + ')compile %s\n'%axiomFileName
+            unifiedCode = unifiedCode + ')set message prompt step\n'
+        else:
+            # otherwise it is just an input file
+            axiomFileName = fileNameFor(newAxiomCode, 25, =
'.%3.3d.input'%n)
+            unifiedCode = unifiedCode + ')read %s\n'%axiomFileName
         axiomFile = open(axiomFileName, 'w')
-        axiomFile.write(axiomCode)
+        axiomFile.write(newAxiomCode)
         axiomFile.close()
     try:
         latexCode=runAxiom(unifiedCode,axiomTemplate)

\start
Date: Thu, 8 Jul 2004 00:01:56 -0400
From: Bill Page
To: Tim Daly
Subject: Axiom on the Web library compiler
Cc: Bob McElrath

I wrote:

> ... and I also added the ability to compile 
> Axiom Library code. With these changes I think I am almost 
> ready to announce the availability of "Axiom on the Web" more 
> widely to the axiom-users list. I'd like to get some "real" 
> user feedback :).

Here's a link

 
http://page.axiom-developer.org/zope/Plone/Members/billpage/AxiomLibrary/=
vie
w

Tim, are there any options that I can specify on the Axiom
)compile command to reduce the amount of compiler output?

\start
Date: Thu, 8 Jul 2004 01:01:48 -0400
From: Tim Daly
To: Bill Page
Subject: Re: Axiom on the Web library compiler
Cc: Bob McElrath

re: compiler quiet options.

These don't exist but we could modify the system to have a )quiet option.
Unless you knew the code would compile, however, you might miss 
informative messages. 

\start
Date: Thu, 08 Jul 2004 00:58:18 -0400
From: William Sit
To: Tim Daly
Subject: Re: spool bug?

Thanks, Tim for putting this as request 9581.  Would it be easier then to
provide a lisp command (maybe there is even already one) that duplicates the
)sys cat function? or some piping mechanism back to lisp? (Is the command )read
working with terminal i/o from lisp or does it also start a new shell?)

Unless, of course, if there are other )sys commands that one wants to capture
... I can think of commands like ls or ps but these seem not to be as critical
for documentation as cat.

William
-----

root wrote:
> 
> William,
> 
> )spool is working with terminal i/o from lisp.
> 
> )sys starts a new shell with its own i/o rather than using the lisp i/o.
> 
> So it's not really a bug but a request for a feature change.
> 
> In theory it should be possible to capture the i/o stream from the
> shell and redirect it thru a lisp i/o stream but that would require a
> different system call from the underlying lisp. I'll look at the code
> and see what it currently does. If there is a way that lisp will let
> me capture the output I'll rewrite )sys.
> 
> Tim

> This request is Feature 9581 which has been added to the bug tracking.


William wrote:

> My request therefore: Is it difficult to modify spool so it will also capture
> all the output from a system command like cat? (I don't expect spool to capture
> other than "terminal" type output streams.)

\start
Date: Thu, 8 Jul 2004 12:31:01 +0200
From: Juergen Weiss
To: William Sit, Tim Daly
Subject: RE: spool bug?

I think there are better ways to achieve the same results (spool
commands 
on unix, X-Term session capture etc.) than to change Axiom. With the
)sys command you can call an editor or a shell which will not work
within a pipe -- at least not as expected.

> -----Original Message-----
> 
> Thanks, Tim for putting this as request 9581.  Would it be 
> easier then to
> provide a lisp command (maybe there is even already one) that 
> duplicates the
> )sys cat function? or some piping mechanism back to lisp? (Is 
> the command )read
> working with terminal i/o from lisp or does it also start a 
> new shell?)
> 
> Unless, of course, if there are other )sys commands that one 
> wants to capture
> ... I can think of commands like ls or ps but these seem not 
> to be as critical
> for documentation as cat.
> 
> William
> -----
> 
> root wrote:
> > 
> > William,
> > 
> > )spool is working with terminal i/o from lisp.
> > 
> > )sys starts a new shell with its own i/o rather than using 
> the lisp i/o.
> > 
> > So it's not really a bug but a request for a feature change.
> > 
> > In theory it should be possible to capture the i/o stream from the
> > shell and redirect it thru a lisp i/o stream but that would 
> require a
> > different system call from the underlying lisp. I'll look 
> at the code
> > and see what it currently does. If there is a way that lisp will let
> > me capture the output I'll rewrite )sys.
> > 
> > Tim
> 
> > This request is Feature 9581 which has been added to the 
> bug tracking.
> 
> 
> William wrote:
> 
> > My request therefore: Is it difficult to modify spool so it 
> will also capture
> > all the output from a system command like cat? (I don't 
> expect spool to capture
> > other than "terminal" type output streams.)

\start
Date: Fri, 9 Jul 2004 01:28:15 -0400
From: Bill Page
To: Tim Daly
Subject: AXIOM book project on Axiom Portal

Tim, Bob,

I have begun converting some of the AXIOM book to "wiki" form on
the portal. For the most part I am able to cut-and-paste the
contents of the book LaTeX file directly into the wiki pages.
Some of the LaTeX coding has to be modified, but it doesn't
take very long - mostly getting rid of the simulated Axiom
output since it is now generated automatically by Axiom itself.
To make the editing a little easier I have made a few more
improvements to the Axiom interface. Now I think it is pretty
solid and I would like to advertise it to the rest of the
Axiom user group and a few other places. Tim, is that ok with
you?

Anyway, take a look at

  http://page.axiom-developer.org/zope/Plone/refs/books/axiombook

and especially the Graphics section at

  http://page.axiom-developer.org/zope/Plone/refs/books/axiombook/Graphics

The Axiom graphics Draw program is actually called in this
worksheet but as you know the part that converts the Axiom
intermediate stuff to postscript is not quite ready yet. So
the graphic is actually generated from the same postscript file
that is used in the book. I was quite pleased by how the graphic
looks on the web!

Bob, because of the printing problems in Plone I was motivated
to upgraded the system to the most recent version of LatexWiki. I
had no problems at all, but unfortunately printing still doesn't
work properly from a Zwiki inside of Plone. Is this a know problem?

If/when you have an updated version of LatexWiki which includes
the Axiom interface, please let me know and I will give it a try
here. Be sure to get the most recent version of the source since
I have been continuing to make small changes to it.

\start
Date: Fri, 9 Jul 2004 02:25:13 -0400
From: Tim Daly
To: Bill Page
Subject: Re: AXIOM book project on Axiom Portal
Cc: Bob McElrath

Bill,

clap, clap, clap, (shuffle, stand), clap, clap, (cheer), clap,...
(words don't suffice)

You're welcome to announce any work you do at any time.

\start
Date: Fri, 9 Jul 2004 02:04:32 -0700
From: Bob McElrath
To: Bill Page
Subject: Re: AXIOM book project on Axiom Portal

Hey that looks great!

Bill Page wrote:
> Tim, Bob,
> 
> I have begun converting some of the AXIOM book to "wiki" form on
> the portal. 
[...]
> Bob, because of the printing problems in Plone I was motivated
> to upgraded the system to the most recent version of LatexWiki. I
> had no problems at all, but unfortunately printing still doesn't
> work properly from a Zwiki inside of Plone. Is this a know problem?

You are not getting the latexwiki stylesheet.  Did you install latexwiki
in the quick installer?

What do you mean "printing doesn't work".  What goes wrong?  (don't have
a printer here at home to test right now...)

Be aware that mozilla has a bug in which it can't print transparent
PNG's...it prints them as solid black instead.  IE prints okay but the
resolution differences mean that the math looks really crappy.  It seems
printing from plone looks ultra crappy anyway.

I envision a true latex backend for Structured Text which will
dynamically create ps or pdf for printing, rather than expecting the web
browser to do everything correctly.

> If/when you have an updated version of LatexWiki which includes
> the Axiom interface, please let me know and I will give it a try
> here. Be sure to get the most recent version of the source since
> I have been continuing to make small changes to it.

If you are up to figuring out darcs, you can create patches against my
darcs repository http://bob.mcelrath.org/darcs/latexwiki.  See
http://zwiki.org/ZWikiDarcs for some info on it.  Otherwise send me
updated patches or put them on the web somewhere.  ;)

\start
Date: 09 Jul 2004 11:53:57 +0200
From: Wolfgang Zocher
To: Tim Daly
Subject: Re: 20040705 build broken
Cc: Camm Maguire

Tim Daly writes:

> I've had problems with CVS from savannah recently.
> Not all of the files get downloaded. 
> It has happened several times but I thought it might just be me.
> I'm certain the src/graph subdir is there as David has built it.
> 
> Let me know what happens.

Tim,

I tried for several times to make an update with "cvs update" but the
"src/graph" directory did not get downloaded... 

\start
Date: Fri, 9 Jul 2004 12:39:16 -0400
From: Tim Daly
To: Wolfgang Zocher
Subject: Re: 20040705 build broken
Cc: Camm Maguire

Wolfgang,

I just tried it again with a clean system. Try the following:

cvs -d:ext:anoncvs@savannah.nongnu.org:/cvsroot/axiom co axiom/src/graph

and let me know if you get the src/graph subdirectory.

\start
Date: Fri, 9 Jul 2004 19:43:05 -0400
From: Tim Daly
To: Bob McElrath
Subject: Re: Axiom wiki
Cc: Luanne Burns Goldrich, Bill Page

Bob,

> I have had some user confusion because people think they can use *any*
> latex in a wiki page, but they cannot.  Adding more latex-like
> constructs makes this worse.  :(  I intended latexwiki to be simple to
> edit (hence, StructuredText) plus minimal equations.  A full latex
> backend would be nice, but is a different direction than I started.  If
> you desire this we should make a new pagetype 'LaTeX' that uses tex4ht.

Since there hasn't been any discussions of the long term goal of
the axiom wiki I guess it's normal to see things move in surprising
directions. Here are some of the thoughts that Bill's work inspire.

Axiom is based entirely on pamphlet files. Pamphlet files are just
standard latex with a couple extras to support "inline" code in
the file. They are the basis of the literate programming style in
Axiom. So every file in Axiom is a pamphlet. I'm not familiar with
the details of "pagetypes" but perhaps a pamphlet pagetype is needed.

If the Axiom wiki effort can support pamphlet <=> webpage translations
it would have two benefits. First it would provide an interesting
front-end to Axiom, especially with Bill's automation of running
Axiom on a wiki web page. This turns out to be nearly as powerful
as Mathematica and Maple notebooks. In fact, with some clever web
page buttons we could probably reproduce their complete functionality.

If web pages could be converted to, or written originally on the wiki as,
pamphlet files then it would be possible to maintain Axiom directly on
the wiki which would practically be a research breakthru. It would
eliminate the hard-to-use CVS mechanism, enable people to use Axiom
directly as a "service" and encourage open math development on the wiki.

I've been struggling with the issue of how to develop a browsing 
structure for Axiom's pamphlet and this wiki has great potential
to solve that problem in a truly novel way.

Axiom uses a fairly limited range of Latex mostly because my Latex
talents are limited. Support for the \begin{array} environment or
the \begin{thebibliography} environment are about the most difficult 
of the parts of the Latex used. (Actually, if the \bibitems in a 
bibliography were automatically turned into hyperlinks that would
be sweet).

In any case the whole Axiom wiki idea opens up a lot of excellent,
creative directions that I think we need to explore further.


\start
Date: Fri, 9 Jul 2004 19:50:04 -0400
From: Tim Daly
To: Bob McElrath
Subject: Re: Axiom wiki
Cc: Luanne Burns Goldrich, Bill Page

*,

Currently, as you know, code is delimited in axiom's pamphlet files
using a special "chunk" syntax:

<<chunk name>>=                             <<== define code here
     code
@

and it gets expanded when the "chunk name" gets referenced:

<<chunk name>>                              <<== expand code here


It occurs to me that we could easily make this more "latex-like" thus:

\begin{chunk}[chunk name]
    code
\end{chunk}

\expand{chunk}[chunk name]


This would be "pseudo-latex" because the only difference between the
current chunk naming method and the latex-like chunk naming method
is syntactic. The pamphlet file would still expand exactly as before.
Only the program that collects and expands chunks (noweb) needs to change.

If we move to the latex syntax then it would be easy to define latex
environment macros which would do something harmless.


\start
Date: Fri, 9 Jul 2004 19:55:06 -0400
From: Tim Daly
To: Bob McElrath
Subject: Re: Axiom wiki
Cc: Luanne Burns Goldrich, Bill Page

*,

Another point of inspiration, at least for me, it that Axiom isn't
the only computer algebra system using pamphlets. Magnus is a
special purpose computer algebra system in infinite group theory
that also is using the pamphlet machinery.

Who knows, with the right advertising, perhaps we could convince
Maxima to do the same. That would make all of these systems useful
in a web environment in the relatively near term.

\start
Date: Fri, 9 Jul 2004 16:50:29 -0700
From: Bob McElrath
To: Tim Daly
Subject: Re: Axiom wiki
Cc: Bill Page, Luanne Burns Goldrich

Latex has a command \write18{SHELL COMMAND} which will directly run
shell commands.  This is disabled by default and must be enabled by
'latex -shell-escape' I don't know about successive inputs to axiom.  I
take it pamphlet files are pre-processed by some tool?

Clever use of \write18 combined with some named pipes or temporary files
to corral output could enable latex itself to run axiom and include its
output in the resultant ps.  This could be done in a style file using
the latex-like syntax you suggest below.  If we were super-clever, we
would make the syntax the same for the web stuff...

\begin{axiom}
  code
\end{axiom}

Obviously, this can be a HUGE security hole, and I would not want people
to be able to edit documents on-line that can run arbitrary commands on
the server.  However it suggests a uniform document format...

root [Tim Daly] wrote:
> *,
> 
> Currently, as you know, code is delimited in axiom's pamphlet files
> using a special "chunk" syntax:
> 
> <<chunk name>>=                             <<== define code here
>      code
> @
> 
> and it gets expanded when the "chunk name" gets referenced:
> 
> <<chunk name>>                              <<== expand code here
> 
> 
> It occurs to me that we could easily make this more "latex-like" thus:
> 
> \begin{chunk}[chunk name]
>     code
> \end{chunk}
> 
> \expand{chunk}[chunk name]
> 
> 
> This would be "pseudo-latex" because the only difference between the
> current chunk naming method and the latex-like chunk naming method
> is syntactic. The pamphlet file would still expand exactly as before.
> Only the program that collects and expands chunks (noweb) needs to change.
> 
> If we move to the latex syntax then it would be easy to define latex
> environment macros which would do something harmless.

\start
Date: Fri, 9 Jul 2004 17:31:14 -0700
From: Bob McElrath
To: Tim Daly
Subject: Re: Axiom wiki
Cc: Bill Page, Luanne Burns Goldrich

root [Tim Daly] wrote:
> Bob,
> 
> Since there hasn't been any discussions of the long term goal of
> the axiom wiki I guess it's normal to see things move in surprising
> directions. Here are some of the thoughts that Bill's work inspire.
> 
> Axiom is based entirely on pamphlet files. Pamphlet files are just
> standard latex with a couple extras to support "inline" code in
> the file. They are the basis of the literate programming style in
> Axiom. So every file in Axiom is a pamphlet. I'm not familiar with
> the details of "pagetypes" but perhaps a pamphlet pagetype is needed.

A PageType is a ZWiki construct that encapsulates an input format such
as StructuredText, HTML, StructuredText + LaTeX, etc.  See
ZWiki/pagetypes.

The format I have been using is StructuredText + LaTeX.  Let me give a
little history on this before you all go converting documents en
masse...  StructuredText (stx) is a big hack of formatting rules piled
on top of one another using regexes.  It is not well-defined as a
structured grammar.  (Though I have been working on this)  For instance
it has no well-defined mechanism to escape markup.  If you play with it
long enough you WILL run into bugs, particularly when mixing escaping
mechanisms (! for stx, \ for latex).  It is nice because it ignores HTML
markup embedded in stx, so you can mix the two.  It is simple enough
that anyone can write it, but really, it is a toy.  I would not want to
base a large project or documentations system around it.  Eventually its
design limitations will become a hinderance.

reStructuredText (rst) is an attempt to more formally define the
grammar.  However its rules differ significantly from StructuredText,
and it uses the backslash as an escape character, meaning mixing latex
with it may be difficult.  However as it is a defined grammar one would
need to add latex syntax (including math) rules.  If someone wants to
investigate further this would be interesting.

This leaves pure latex as an input format.  Now, clearly, pure latex is
an appropriate and powerful input format for documentation.  latex2html
can already generate html (though it is archaic and equations are poorly
aligned -- but we can work on that).  There is also the tex4ht variant
of latex2html which can output mathml.  This is all done using latex
commands and style files, and is rather slow.  Appropriate
web-representation would mean:

    1) separate the Big Book into individual pages (chapters?)
    2) hyperlinking
    3) referencing/footnoting
    4) in-page hyperlinking for equations a la existing latexwiki?

So I see a couple options for all this:

    1) Use a front-end to convert pamphlet files to a web-appropriate
    format (stx + latex or rst + latex)

    2) Use latex all around, defining a new pagetype.  The pagetype does
    not have to be axiom specific, but it could be.

I think the existing stx+latex can co-exist with a pure latex format.
Users can "play" with stx+latex, and more formal documentation can be
written in straight latex and placed on the web (but would not be
user-editable -- this also alleviates the security concern I mentioned
earlier if \write18 is used).

> If the Axiom wiki effort can support pamphlet <=> webpage translations
> it would have two benefits. First it would provide an interesting
> front-end to Axiom, especially with Bill's automation of running
> Axiom on a wiki web page. This turns out to be nearly as powerful
> as Mathematica and Maple notebooks. In fact, with some clever web
> page buttons we could probably reproduce their complete functionality.

Have you looked at Mozilla's XUL?

    http://www.xulplanet.com/

Since Mozilla already knows about MathML, a complete user interface for
a computer algebra system could be implemented in a totally
platform-independent way inside mozilla, running the axiom process
locally or remotely...

> If web pages could be converted to, or written originally on the wiki as,
> pamphlet files then it would be possible to maintain Axiom directly on
> the wiki which would practically be a research breakthru. It would
> eliminate the hard-to-use CVS mechanism, enable people to use Axiom
> directly as a "service" and encourage open math development on the wiki.

Don't underestimate the usefulness of the CVS revision-and-patch
mechanism.  I've been using darcs lately (better-than-cvs replacement)
and it does this very nicely, incorporating things into logical
patchsets which can be exchanged.  Placing files on the wiki and
allowing multiple editors would result in many small edits, and it
becomes difficult to track down (and possibly revert) dangerous changes.

Especially with mathematical content, changes should be encapsulated in
logical units, carefully reviewed by experts, and run through numerous
test cases to ensure mathematical correctness.

> I've been struggling with the issue of how to develop a browsing 
> structure for Axiom's pamphlet and this wiki has great potential
> to solve that problem in a truly novel way.

It also gets indexed by google.

> Axiom uses a fairly limited range of Latex mostly because my Latex
> talents are limited. Support for the \begin{array} environment or
> the \begin{thebibliography} environment are about the most difficult 
> of the parts of the Latex used. (Actually, if the \bibitems in a 
> bibliography were automatically turned into hyperlinks that would
> be sweet).

This is something that has been on my TODO list for LatexWiki for a
while.

\start
Date: Fri, 9 Jul 2004 21:50:47 -0400
From: Tim Daly
To: Bob McElrath
Subject: Re: Axiom wiki
Cc: Luanne Burns Goldrich, Bill Page

Bob,

Axiom uses noweb (http://www.eecs.harvard.edu/~nr/noweb)
as its literate programming tool. Historically Knuth constructed
a program called "Web" for literate programming, to support the
coding of Tex, I believe. He wanted to integrate the explanation
with the code.

Web has two tools, "TANGLE" which takes a literate program and
produces source code and "WEAVE" which takes a literate program
and produces TeX output. Web worked only with Pascal code.

CWeb is the same idea using C.

noweb is the same idea but generalizes Web to be language independent.
noweb uses "NOWEAVE" to generate TeX output and "NOTANGLE" to extract
"chunks". (Chunks are just named blocks that get stuck in a hash table
when they are defined. They get expanded when the name is used).

Axiom was completely rewritten to use a literate programming style
that combines code and documentation in one document we call a pamphlet.
(noweb calls these .nw files). So there are no C, Lisp, Spad, Makefile,
tex, or any other files left. Everything is a pamphlet combining code
and documentation.

So the current process is:

noweave foo.pamphlet >foo.tex
latex foo.tex

notangle foo.pamphlet >foo.c
gcc foo.c

for each and every file that makes up Axiom. 

This means that every source file is also a document. These documents
are automatically generated and live under mnt/linux/doc in the
distribution. 

There are thousands of these documents.

So several interesting issues arise which Bill's work could address.

First, the system is documented by a book (src/doc/book.pamphlet).
Bill is working to put this book online. In particular, he is
automatically recreating the Axiom output which is a very wide
range of test cases. 

Second, chapter 9 of the book is a small selection of the 1100 domains.
All of these domains are documented (poorly) under mnt/linux/doc/algebra
which is where the latex output is placed. If chapter 9 was restructured
carefully we could have all of the domains documented.

Third, since there are several thousand files the need for some
sort of structuring mechanism (search, hierarchy, crosslinks) arises.
Browser technology gives all of this a common front end. And .dvi
files can contain hyperlink information (some of the \bibitem entries
are hyperlink format already). Bill and I, and others, have talked
about forming the lattice of the algebra code. Such a lattice would
make at least one good structuring mechanism for the mathematics.
Javadoc style navigation output is another possibility. Even simple
alphabetic order access to domain documentation would be useful.

Fourth, other systems, such as Mathematica have notebooks which contain
code to demonstrate how to use Mathematica in a new domain such as
control theory. I can see developing web pages to explain control
theory backed by Axiom code. Indeed, the example I'm pursuing at
the moment, learning about Clifford algebra, is a case in point.
(http://page.axiom-developer.org/zope/Plone/wiki/June32004).

Fifth, work is going on in another thread to develop another Axiom
book based on Littlewood's book. Assuming the copyright permission
is given we can release this on the wiki. This would be an experiment
in "open editing" a book related to the mathematics that is essential
to understanding Axiom. 

Sixth, Axiom generates graphics. With some help from Luanne, who
understands how to create Flash files, it should be possible to 
generate Flash graphics so that equations can "evolve in time".
That is, you could run a program to create Flash which shows 
how a function might evolves. This would be useful in many areas
(trivially you could automate a 3D wave function and watch it
undulate).

The range of ideas goes on but from these beginning examples you can
understand why the work Bill and you are doing is really a great
breakthru.


\start
Date: Fri, 9 Jul 2004 22:01:33 -0400
From: Tim Daly
To: Bob McElrath
Subject: Re: Axiom wiki
Cc: Luanne Burns Goldrich, Bill Page

Bob,

> Have you looked at Mozilla's XUL?
> 
>     http://www.xulplanet.com/
> 
> Since Mozilla already knows about MathML, a complete user interface for
> a computer algebra system could be implemented in a totally
> platform-independent way inside mozilla, running the axiom process
> locally or remotely...

I spent a year involved in XML and its cousins. I realize that the
browser world is moving to XML based systems and we need to evolve
with it. That said, I'm not the right person to lead in that direction.
User interface work is a talent (like scheduling software) that I lack.
So I'm willing to help and to understand but I'm incapable of making
anything user-affectionate :-). 

I will look at the XUL site though. Thanks.


\start
Date: Fri, 9 Jul 2004 22:04:07 -0400
From: Tim Daly
To: Bob McElrath
Subject: Re: Axiom wiki
Cc: Luanne Burns Goldrich, Bill Page

Bob,

> Don't underestimate the usefulness of the CVS revision-and-patch
> mechanism.  I've been using darcs lately (better-than-cvs replacement)
> and it does this very nicely, incorporating things into logical
> patchsets which can be exchanged.  Placing files on the wiki and
> allowing multiple editors would result in many small edits, and it
> becomes difficult to track down (and possibly revert) dangerous changes.

Oh, CVS (or arch if I can get it working again) will still be used
for Axiom code. But it would be possible to add new code to Axiom
online and build test cases without damaging anything. And if the
resulting page were (by fortune or design) a near-pamphlet it would
be easy to "promote it into the official Axiom CVS".

\start
Date: 10 Jul 2004 08:28:10 +0200
From: Wolfgang Zocher
To: Tim Daly
Subject: Re: 20040705 build broken
Cc: Camm Maguire, Wolfgang Zocher

Tim Daly writes:

> cvs -d:ext:anoncvs@savannah.nongnu.org:/cvsroot/axiom co axiom/src/graph
> 
> and let me know if you get the src/graph subdirectory.

That works! Thank you. Though, I would like to understand why the "normal" cvs
update doesn't do it ...

\start
Date: Sat, 10 Jul 2004 17:00:33 +1000
From: Jason White
To: Wolfgang Zocher
Subject: Re: 20040705 build broken

Wolfgang Zocher writes:
 > Tim Daly writes:
 > 
 > > cvs -d:ext:anoncvs@savannah.nongnu.org:/cvsroot/axiom co axiom/src/graph
 > > 
 > > and let me know if you get the src/graph subdirectory.
 > 
 > That works! Thank you. Though, I would like to understand why the "normal" cvs
 > update doesn't do it ...

Perhaps because you didn't use the -d option of the update command, as in
cvs update -d

>From cvs(1):

       -d

         Create  any directories that exist in the repository if they're miss-
         ing from the  working  directory.   Normally,  update  acts  only  on
         directories  and  files  that  were  already enrolled in your working
         directory.

         This is useful for updating directories  that  were  created  in  the
         repository since the initial checkout; but it has an unfortunate side
         effect.  If you  deliberately  avoided  certain  directories  in  the
         repository  when  you  created your working directory (either through
         use of a module name or by listing explicitly the files and  directo-
         ries you wanted on the command line), then updating with -d will cre-
         ate those directories, which may not be what you want.

\start
Date: Sat, 10 Jul 2004 04:52:51 -0400
From: Bill Page
To: Bob McElrath
Subject: Re: AXIOM book project on Axiom Portal

Bob,

On Friday, July 09, 2004 1:06 PM you wrote:
>... 
> I think 'StructuredText + Latex' not appearing is due to 
> Simon not merging one of my patches into zwiki.  I'll bug him 
> about it.  Fix it by replacing your zwiki with a darcs repository:
> 
>     darcs get -t release-0-32-0 http://zwiki.org/repos/ZWiki
> 
> Then grab my patch:
> 
>     darcs pull http://bob.mcelrath.org/darcs/zwiki
> 
> The patch you want is:
>     Fri Jun 25 12:32:03 PDT 2004  Bob McElrath
>       * Consolidate ALLOWED_* PageTypes in pagetypes/ classes.
>         No functionality change with this patch.
>

Thanks!

Ok, after a long struggle I now have the AxiomWiki stuff working
with the newest versions of both Zwiki and LatexWiki ... many
long steps mostly related to the images directory relative
path problem (again) which I did not recognize at first and
then some changes in the Axiom interface code to use the
right method to get the full path names. Phew!

After all that, the printing from IE is muct better :) however
it is still cut-off a bit on the right hand side. Any ideas
about what might be causing this? This didn't happen when
printing from Zope/Zwiki with IE in the versions of Zwiki
and LatexWiki. I have attached a sample pdf file created by
IE from

 
http://page.axiom-developer.org:9080/refs/books/axiombook/NumericComputat=
ion

I can send you the patches against your version of LatexWiki
in darcs, if you like. I am not yet familiar enough with
darcs to know how to do it directly.

In the process of debugging, I also setup a fully separate
test environment on axiom-developer.org so as not to
disturb what's working so far and what I am about to
announce more widely. This will make it easier to test new
versions and changes. When I am sure that the test version
is working, then I will migrate it to the "production"
version.

The url for the test version (Plone only so far) is:

  http://axiom-developer.org:9080

> Also, the in-line equations on your pages are a few px below 
> the surrounding text.  Did you set the parameter 
> latex_align_fudge?  (to make it look okay in IE perhaps?)
> 

No I didn't change it. The funny thing is that they appear
just a little too high in IE but a little too low in Mozilla.
For example check this

  http://page.axiom-developer.org:9080/Members/billpage/TestWiki

in both browsers.

Doesn't this happen in the Zope and Plone 1 versions?

\start
Date: 10 Jul 2004 10:42:07 -0400
From: Camm Maguire
To: Wolfgang Zocher
Subject: Re: 20040705 build broken

Greetings!

Wolfgang Zocher writes:

> Tim Daly writes:
> 
> > cvs -d:ext:anoncvs@savannah.nongnu.org:/cvsroot/axiom co axiom/src/graph
> > 
> > and let me know if you get the src/graph subdirectory.
> 
> That works! Thank you. Though, I would like to understand why the "normal" cvs
> update doesn't do it ...
> 

You need update -d.  Check out update -h or --help.

\start
Date: Sat, 10 Jul 2004 12:45:53 -0400
From: Tim Daly
To: Wolfgang Zocher
Subject: Re: 20040705 build broken
Cc: Camm Maguire

I don't understand why normal cvs doesn't do it either.
Perhaps because CVS is working from the list of local directories
and this is a new directory. I'm sure it is a misunderstanding
on my part as this is too large an error not to have been found
before.

In any case, I'm glad it works.

\start
Date: Sat, 10 Jul 2004 12:49:25 -0700
From: Bob McElrath
To: Bill Page
Subject: Re: AXIOM book project on Axiom Portal

Bill Page wrote:
> Bob,
> 
> Thanks!
> 
> Ok, after a long struggle I now have the AxiomWiki stuff working
> with the newest versions of both Zwiki and LatexWiki ... many
> long steps mostly related to the images directory relative
> path problem (again) which I did not recognize at first and
> then some changes in the Axiom interface code to use the
> right method to get the full path names. Phew!

0.32 will use the full path for the LocalFS images/ by default.  Is
there anything I need to fix here?

> After all that, the printing from IE is muct better :) however
> it is still cut-off a bit on the right hand side. Any ideas
> about what might be causing this? This didn't happen when
> printing from Zope/Zwiki with IE in the versions of Zwiki
> and LatexWiki. I have attached a sample pdf file created by
> IE from

I don't know what to tell you about printing.  I note that printing
pages from moz also looks crappy.  In fact, printing pages from the
official plone site in moz looks crappy.  (cut off at right, strange
indenting, embedded URL's)  It might be possible to fix this in
plonePrint.css.  Printing URL's is due to that stylesheet:
    div.document a:visited:after {
           content: " ( " attr(href) " ) ";
    }

I think for a documentation system we should eventualy strive to produce
postscript/pdf from wiki pages, and not depend on the browser.  TeX has
decades of history of producing good-looking output.  It will be a very
long time before browsers catch up.

> http://page.axiom-developer.org:9080/refs/books/axiombook/NumericComputat=
ion
> 
> I can send you the patches against your version of LatexWiki
> in darcs, if you like. I am not yet familiar enough with
> darcs to know how to do it directly.

Use 'darcs send' and give it my email.  The other way to do it is put
your repository on the web and I can pull from it.

> No I didn't change it. The funny thing is that they appear
> just a little too high in IE but a little too low in Mozilla.
> For example check this

IE is bugged.  It implements 'vertical-align: middle' improperly.
Mozilla and Konqueror do it right, it appears that Opera does it wrong.
I started writing some javascript to work around this:
    http://mcelrath.org/imgalignx3.html
If I can get this to work cross-browser I'll include it in the next
release.  (If someone knows javascript -- please play with this -- I'm
shooting in the dark with this)

>   http://page.axiom-developer.org:9080/Members/billpage/TestWiki
> 
> in both browsers.

Your site is generating different images than mine, despite the fact
that the parameters are the same.  What version of ghostscript and PIL
do you have?  Compare:
    http://mcelrath.org:9674/Plone2/UserOptions
    http://axiom-developer.org:9080/Members/mcelrath/UserOptions
as you indicate, your site is making images that are a slightly
different size, and have different amount of space around the letters.
I have ghostscript 7.07 on one computer and 7.07.1 on another (and the
images those two generate are identical).

> Doesn't this happen in the Zope and Plone 1 versions?

This is not a zope or plone problem, as the images we are generating are
different.  It must be one of: latex, dvips, ghostscript, or PIL.

\start
Date: Sat, 10 Jul 2004 22:54:02 -0400
From: Bill Page
To: Bob McElrath
Subject: LatexWiki image path names,

Bob.

On Saturday, July 10, 2004 3:49 PM you wrote:

> I wrote:
> > ... and then some changes in the Axiom interface code
> > to use the right method to get the full path names. 
> > Phew!
> 
> 0.32 will use the full path for the LocalFS images/ by 
> default.  Is there anything I need to fix here?

No, what you wrote in LatexWiki is fine. I just had solved the
path name problem a little differently while getting the
previous version to work and I did not recognize the difference
in my code at first. And I didn't have adequate error checking.

------

While on the subject of image path names, I would like to
propose a change in the way the LocalFS directory is set up
and in the image URLs. What we have now is

  http://computer/path/images/name.png

In the URL what I would like to see is this

  http://computer/images/path/name.png


In other words, we should move the "images" directory *before*
the path rather than after it the way it appears now and the
corresponding file name should include the path. It would be

  workingDir/LatexWiki/path/name.png

Only the LatexWiki directory, and the LocalFS name 'images'
which maps to it, need to be created at installation time
(as it is now). But if the additional directories in
workingDir/LatexWiki/path do not yet exist, then I they
should to be automatically created.  This would mean that
sub-directory structure of workingDir/LatexWiki in the file
system would match the corresponding structure in Zope. PNG
files would be located in the directory corresponding to
the folder where the Zwiki page resides that references them.
In a environment (such as Plone) where there might be many
different folders containing wiki pages, this allows the
images to be grouped into smaller more efficient groups.

But more importantly for Axiom, the images directory is also
where the compiled library files are saved. Having a sub-
directory corresponding to each user or system folder that
contains an wiki page with Axiom library code would insure
that all of these environments saw their own working
environments - allowing different users to create and
maintain different versions of library packages with the
same name.

Another thing related thing that I am planning to do is
to enable the Apache front-end (which currently talks to
Zope by reverse proxy) to access the PNG files in the images
directory directly via a rewrite rule. This is quite easy
and would likely lead to a large improvement in the speed
of delivery of the images. This way we take advantage of
the fact that we actually store the images in the file
system rather than in the ZopeDB.

> ... 
> Your site is generating different images than mine, despite 
> the fact that the parameters are the same.  What version of 
> ghostscript and PIL do you have?  Compare:
>     http://mcelrath.org:9674/Plone2/UserOptions
>     http://axiom-developer.org:9080/Members/mcelrath/UserOptions
> as you indicate, your site is making images that are a 
> slightly different size, and have different amount of space 
> around the letters. I have ghostscript 7.07 on one computer 
> and 7.07.1 on another (and the images those two generate are 
> identical).

Yes, I see the difference. It is especially obvious in Mozilla.

> 
> ...
> This is not a zope or plone problem, as the images we are
> generating are different.  It must be one of: latex, dvips,
> ghostscript, or PIL.

Here are the versions I am using:

[page@axiom-developer page]$ gs -v
GNU Ghostscript 7.05 (2002-04-22)
Copyright (C) 2002 artofcode LLC, Benicia, CA.  All rights reserved.

[page@axiom-developer page]$ latex -v
TeX (Web2C 7.3.1) 3.14159
kpathsea version 3.3.1
Copyright (C) 1999 D.E. Knuth.
Kpathsea is copyright (C) 1999 Free Software Foundation, Inc.
There is NO warranty.  Redistribution of this software is
covered by the terms of both the TeX copyright and
the GNU General Public License.
For more information about these matters, see the files
named COPYING and the TeX source.
Primary author of TeX: D.E. Knuth.
Kpathsea written by Karl Berry and others.

[page@axiom-developer page]$ dvips -v
This is dvips(k) 5.86 Copyright 1999 Radical Eye Software
(www.radicaleye.com)

[page@axiom-developer page]$ /usr/bin/python2.3 -V
Python 2.3.3

[page@axiom-developer page]$ ls -d Im*
Imaging-1.1.4  Imaging-1.1.4.tar.gz

\start
Date: Sat, 10 Jul 2004 23:55:38 -0400
From: Bill Page
To: Tim Daly
Subject: RE: Axiom wiki
Cc: Luanne Burns Goldrich, Bob McElrath

Tim,

On Friday, July 09, 2004 7:43 PM you wrote:
> ... Here are some of the thoughts that Bill's work inspire.
> 
> Axiom is based entirely on pamphlet files. Pamphlet files are
> just standard latex with a couple extras to support "inline"
> code in the file. They are the basis of the literate programming
> style in Axiom. So every file in Axiom is a pamphlet. I'm not
> familiar with the details of "page types" but perhaps a pamphlet
> page type is needed.

We could define a new page type, but right now what I have done
is just extend the functionality of the existing StructuredText+LaTeX
and HTML+LaTeX page types to include the Pamphlet-style "code-chunk"
concept /begin{axiom} ... /end{axiom} and the ability to run Axiom
itself.

> 
> If the Axiom wiki effort can support pamphlet <=> webpage
> translations it would have two benefits. First it would provide
> an interesting front-end to Axiom, especially with Bill's
> automation of running Axiom on a wiki web page. This turns out
> to be nearly as powerful as Mathematica and Maple notebooks.
> In fact, with some clever web page buttons we could probably
> reproduce their complete functionality.

As a user of both of these commercial systems, I would say that
in some ways the Axiom Wiki interface is already superior -
especially when it comes to online web-based collaborative
computer algebra. And since it allows full access to LaTeX,
it's ability to display mathematics is also superior to both
M and M.

> 
> If web pages could be converted to, or written originally on 
> the wiki as, pamphlet files then it would be possible to
> maintain Axiom directly on the wiki which would practically be
> a research breakthru. It would eliminate the hard-to-use CVS
> mechanism, enable people to use Axiom directly as a "service"
> and encourage open math development on the wiki.

In fact this is *already* possible with what has been implemented.
It would be quite easy to load all of the existing Axiom algebra
pamphlet files as Axiom Wiki pages in an "algebra" folder. Editing
these pages would cause the .spad files to be created in the
LatexWiki "images" folder/directory. These spad files could then
be accessed as part of the Axiom build script.

And with a simple extension to the current "images" folder naming
conventions (discussed in a previous email to Bob), this would
also allow people to maintain there own separate variants of the
algebra.

> 
> I've been struggling with the issue of how to develop a browsing 
> structure for Axiom's pamphlet and this wiki has great potential
> to solve that problem in a truly novel way.
> 

I agree completely! For example the Search box at the top right
hand corner of the portal page allows you to search for Axiom
Wiki "pamphlet" files based on their content. One can easily
insert links between these pages using the standard wiki
conventions.

> Axiom uses a fairly limited range of Latex mostly because my
> Latex talents are limited. Support for the \begin{array}
> environment or the \begin{thebibliography} environment are
> about the most difficult of the parts of the Latex used.
> (Actually, if the \bibitems in a bibliography were automatically
> turned into hyperlinks that would be sweet).
>

This shouldn't be too hard (in principle). But I also agree with
Bob's previous point about not necessarily trying to (or maybe
even deliberately not to) reproduce all of the LaTeX functionality.
Some things are more easily done a new way (StructuredText).
 
> In any case the whole Axiom wiki idea opens up a lot of
> excellent, creative directions that I think we need to
> explore further.
> 

Great. Let's do it. :)

\start
Date: Sun, 11 Jul 2004 14:22:23 -0400
From: Bill Page
To: list
Subject: Axiom Wiki as single user interface
Cc: Luanne Burns Goldrich, Bob McElrath

On Saturday, July 10, 2004 11:56 PM I wrote:

> ... 
> Tim wrote:
> > If the Axiom wiki effort can support pamphlet <=> webpage 
> > translations it would have two benefits. First it would
> > provide an interesting front-end to Axiom, especially with
> > Bill's automation of running Axiom on a wiki web page. This
> > turns out to be nearly as powerful as Mathematica and Maple
> > notebooks. In fact, with some clever web page buttons we
> > could probably reproduce their complete functionality.
> 
> As a user of both of these commercial systems, I would say 
> that in some ways the Axiom Wiki interface is already 
> superior - especially when it comes to online web-based 
> collaborative computer algebra. And since it allows full 
> access to LaTeX, it's ability to display mathematics is also 
> superior to both M and M.
> 

I thought that I should also mention that it is quite easy to
install the Zope+ZWiki+LatexWiki+AxiomWiki combination on a
stand alone machine with Axiom. (Plone is optional but some
people might find it useful as a "personal organizer" for
other research materials.) The result is that one can use a
standard web browser to access this locally - no network
required. There is a trend to use the browser interface as
a standard gui instead of writing gui applications in the
traditional way.

The result of this combination is rather similar to but with
greater functionality than the Texmacs interface to Axiom.
And since these same tools are already available on windows
once we have Axiom running on Windows, we will automatically
have a fully compatible gui for Windows.

One of the nice things about using Axiom this way is how
easy it would be to share Axiom worksheets with other users.
Zope has facility for exporting and importing web pages
from one site to another.

\start
Date: 11 Jul 2004 13:51:15 -0400
From: Camm Maguire
To: Tim Daly
Subject: graphics and latest Debian package

Greetings!  I made a small typo in my original 20040705 package which
means I have to do another upload.  Given this opportunity, I'm
wondering what should be done about the new graphics items.  I
understand that they are not yet callable from axiom proper.  So
perhaps we should leave them out of the package for the time being.
If they are to be included, I'm not sure if they logically belong in a
separate package or should be bundled with the main binary.  The
latter option will make axiom require X and any libraries used, etc.,
while the former will relegate such dependency to an optional add on.

If viewAlone is to be regarded a standalone binary, then I need to
either write or generate a manpage for it according to Debian policy. 

src/graph/viewports is an empty directory on CVS checkout, and (I
think therefore) is absent on cvs export.  But
src/graph/Makefile.pamphlet tries to make a doc/viewports directory
from this directory.

While it is uncertain how much time remains before the next Debian
stable release, the signs are that it is approaching rather soon.  The
major obstacle was removed recently by a developer vote.  Once
released, it is likely that two or three years will lapse before the
next Debian stable.  Needless to say, I'd like axiom to be as solid
therein as possible.  This of course is not to rush axiom development
in any way -- rather I'm just seeking advice on how axiom should be
presented in this release that is likely to be with us a long time.

Also, if there is any item that is a reasonably low hanging fruit that
needs picking in axiom within this time frame, perhaps I can help. 

\start
Date: Sun, 11 Jul 2004 15:12:12 -0400
From: Tim Daly
To: Bill Page
Subject: Re: Axiom Wiki as single user interface
Cc: Luanne Burns Goldrich, Bob McElrath, Bill Page

Bill,

Could you tar up an installable package?
I'd like to download it and put it onto one of my standalone machines
so I can get familiar with the details.

\start
Date: Sun, 11 Jul 2004 14:29:01 -0400
From: Bill Page
To: Bob McElrath
Subject: RE: LatexWiki image path names, Axiom library code and 

On Saturday, July 10, 2004 10:54 PM I wrote:
> ... 
> While on the subject of image path names, I would like to
> propose a change in the way the LocalFS directory is set up
> and in the image URLs. What we have now is
> 
>   http://computer/path/images/name.png
> 
> In the URL what I would like to see is this
> 
>   http://computer/images/path/name.png
> 

Actually, I have thought about this a little more and what
I think might be better is something like this

  http://computer/LatexWiki/path/images/name.png

There would be just one LocalFS map to the

  workingDir/LatexWiki

sub-directory. Then Axiom could use names like this

  http://computer/LatexWiki/path/axiom/name.spad

This would have the benefit of keeping the interesting
Axiom code separate from the much less interesting image
files.

\start
Date: Sun, 11 Jul 2004 14:31:47 -0400
From: Bill Page
To: Tim Daly
Subject: RE: Axiom Wiki as single user interface
Cc: Luanne Burns Goldrich, Bob McElrath

Tim,

Look for this in a couple of days. I will also have to
write up the installation steps.

> -----Original Message-----
> 
> Bill,
> 
> Could you tar up an installable package?
> I'd like to download it and put it onto one of my standalone 
> machines so I can get familiar with the details.

\start
Date: Sun, 11 Jul 2004 15:58:22 -0700
From: Bob McElrath
To: Bill Page
Subject: Re: LatexWiki image path names, Axiom library code and

One can create more than one LocalFS repository.  I would suggest a
totally separate 'axiom' LocalFS directory for this.

Having LatexWiki put all its images in one directory allows for caching.
I.e. if two unrelated pages both have $x$, it only gets rendered once.
Your proposals would have it rendered twice if the path was different.

Bill Page [Bill Page] wrote:
> On Saturday, July 10, 2004 10:54 PM I wrote:
> > ... 
> > While on the subject of image path names, I would like to
> > propose a change in the way the LocalFS directory is set up
> > and in the image URLs. What we have now is
> > 
> >   http://computer/path/images/name.png
> > 
> > In the URL what I would like to see is this
> > 
> >   http://computer/images/path/name.png
> > 
> 
> Actually, I have thought about this a little more and what
> I think might be better is something like this
> 
>   http://computer/LatexWiki/path/images/name.png
> 
> There would be just one LocalFS map to the
> 
>   workingDir/LatexWiki
> 
> sub-directory. Then Axiom could use names like this
> 
>   http://computer/LatexWiki/path/axiom/name.spad
> 
> This would have the benefit of keeping the interesting
> Axiom code separate from the much less interesting image
> files.

\start
Date: Sun, 11 Jul 2004 22:52:15 -0400
From: Bill Page
To: Bob McElrath
Subject: RE: LatexWiki image path names, Axiom library code and

Bob,

On Sunday, July 11, 2004 6:58 PM you wrote:
> 
> One can create more than one LocalFS repository.  I would 
> suggest a totally separate 'axiom' LocalFS directory for
> this.
> 
> Having LatexWiki put all its images in one directory allows 
> for caching. I.e. if two unrelated pages both have $x$, it 
> only gets rendered once. Your proposals would have it 
> rendered twice if the path was different.
> 

Yes, I see your point. I hadn't thought about how LatexWiki
caches images based on the LaTeX code that generated them.
I agree that the repository of LaTeX generated images plays a
very different role than the files generated for Axiom. In fact
this sort of caching doesn't make sense for Axiom's output since
the relationship of an Axiom command to the LaTeX output it
generates is not fixed. A separate LocalFS directory and a
separate way of constructing file names makes sense.

\start
Date: Mon, 12 Jul 2004 00:30:09 -0400
From: Tim Daly
To: Camm Maguire
Subject: Re: graphics and latest Debian package

Whether you should include the latest src/graph tree I leave that up to you.
Due to a huge push on Magnus I'm unable to complete the integration of the
graphics in the next couple weeks. If you want to remove the src/graph
tree you can just comment it out in the src/Makefile.pamphlet. It is 
pretty self-contained I believe.

Before graphics is fully integrated I need to recover sman which is another
subtree. That's the next "recovery" push. I have some vacation time coming
up in august so I hope to make a lot of progres then but that will probably
be too late for sarge.

I have a couple local things that are ready to update such as adding
test cases, redoing the document command, further graphics updates,
etc. but none of them are worth worrying about. 

\start
Date: Tue, 13 Jul 2004 08:14:11 -0400
From: Tim Daly
To: Bill Page
Subject: lattice drawing program

Bill,

Remember the problem of drawing the algebra lattice?
I've looked into it a bit more. Take a look at:

http://www.research.att.com/sw/tools/graphviz

\start
Date: Tue, 13 Jul 2004 15:44:24 +0200 (MEST)
From: Bertfried Fauser
To: list
Subject: cvs build error on SuSE9.1

Dear All,

	I have some troubles to build AXIOM after having newly indstalled
a recent linux, SuSE9.1.

	First, I would have been helpfull, if, say ./configure, would tell
one that certain x11 *.h files are needed. I found them finally in
XFree86-devel, since I had this problem earlier.

	Second, some GMP sub configuration of GCL-2.6.2a things went
wrong, which I was not able to resolve, see log attached below.

Any help welcome


fauser@pc8578:~/axiom> make
0 SPAD=/home/fauser/axiom/mnt/linux SYS=linux SPD=/home/fauser/axiom
LSP=/home/fauser/axiom/lsp GCLDIR=/home/fauser/axiom/lsp/gcl-2.6.2a
SRC=/home/fauser/axiom/src INT=/home/fauser/axiom/int
OBJ=/home/fauser/axiom/obj MNT=/home/fauser/axiom/mnt
ZIPS=/home/fauser/axiom/zips TMP=/home/fauser/axiom/obj/tmp
SPADBIN=/home/fauser/axiom/mnt/linux/bin
INC=/home/fauser/axiom/src/include
CCLBASE=/home/fauser/axiom/obj/linux/ccl/ccllisp PART=cprogs
SUBPART=everything NOISE=-o /home/fauser/axiom/obj/tmp/trace
GCLVERSION=gcl-2.6.2a TANGLE=/home/fauser/axiom/mnt/linux/bin/lib/notangle
10 copying /home/fauser/axiom/src/scripts to
/home/fauser/axiom/mnt/linux/bin
1 making a linux system, PART=cprogs SUBPART=everything
2 Environment SPAD=/home/fauser/axiom/mnt/linux SYS=linux
SPD=/home/fauser/axiom LSP=/home/fauser/axiom/lsp
GCLDIR=/home/fauser/axiom/lsp/gcl-2.6.2a SRC=/home/fauser/axiom/src
INT=/home/fauser/axiom/int OBJ=/home/fauser/axiom/obj
MNT=/home/fauser/axiom/mnt ZIPS=/home/fauser/axiom/zips
TMP=/home/fauser/axiom/obj/tmp SPADBIN=/home/fauser/axiom/mnt/linux/bin
INC=/home/fauser/axiom/src/include
CCLBASE=/home/fauser/axiom/obj/linux/ccl/ccllisp PART=cprogs
SUBPART=everything NOISE=-o /home/fauser/axiom/obj/tmp/trace
GCLVERSION=gcl-2.6.2a TANGLE=/home/fauser/axiom/mnt/linux/bin/lib/notangle
make[1]: Entering directory `/home/fauser/axiom'
11 checking directory structure
12 Environment: PLF=LINUXplatform CCF=-O2 -fno-strength-reduce -Wall
-D_GNU_SOURCE -DLINUXplatform -I/usr/X11/include LDF=-L/usr/X11R6/lib
CC=gcc AWK=gawk RANLIB=ranlib TOUCH=touch TAR=tar
AXIOMXLROOT=/home/fauser/axiom/mnt/linux/compiler O=o BYE=bye LISP=lsp
DAASE=/home/fauser/axiom/src/share XLIB=/usr/X11R6/lib
18 making /home/fauser/axiom/src
make[2]: Entering directory `/home/fauser/axiom/src'
1 making /home/fauser/axiom/src/scripts
make[3]: Entering directory `/home/fauser/axiom/src/scripts'
1 making /home/fauser/axiom/src/scripts
make[3]: Leaving directory `/home/fauser/axiom/src/scripts'
17 making /home/fauser/axiom/src/lib
make[3]: Entering directory `/home/fauser/axiom/src/lib'
34 making /home/fauser/axiom/obj/linux/lib/pixmap.o from
/home/fauser/axiom/int/lib/pixmap.c
/home/fauser/axiom/int/lib/pixmap.c: In function `write_pixmap_file':
/home/fauser/axiom/int/lib/pixmap.c:348: warning: unused variable `attr'
/home/fauser/axiom/int/lib/pixmap.c:349: warning: unused variable
`xireturn'
37 making /home/fauser/axiom/int/lib/prt.c from
/home/fauser/axiom/src/lib/prt.c.pamphlet
38 making /home/fauser/axiom/obj/linux/lib/prt.o from
/home/fauser/axiom/int/lib/prt.c
41 making /home/fauser/axiom/int/lib/sockio-c.c from
/home/fauser/axiom/src/lib/sockio-c.c.pamphlet
42 making /home/fauser/axiom/obj/linux/lib/sockio-c.o from
/home/fauser/axiom/int/lib/sockio-c.c
/home/fauser/axiom/int/lib/sockio-c.c: In function
`connect_to_local_server':
/home/fauser/axiom/int/lib/sockio-c.c:933: warning: `code' might be used
uninitialized in this function
45 making /home/fauser/axiom/int/lib/spadcolors.c from
/home/fauser/axiom/src/lib/spadcolors.c.pamphlet
46 making /home/fauser/axiom/obj/linux/lib/spadcolors.o from
/home/fauser/axiom/int/lib/spadcolors.c
49 making /home/fauser/axiom/int/lib/util.c from
/home/fauser/axiom/src/lib/util.c.pamphlet
50 making /home/fauser/axiom/obj/linux/lib/util.o from
/home/fauser/axiom/int/lib/util.c
53 making /home/fauser/axiom/int/lib/wct.c from
/home/fauser/axiom/src/lib/wct.c.pamphlet
54 making /home/fauser/axiom/obj/linux/lib/wct.o from
/home/fauser/axiom/int/lib/wct.c
/home/fauser/axiom/int/lib/wct.c: In function `skim1Wct':
/home/fauser/axiom/int/lib/wct.c:274: warning: int format, off_t arg (arg
3)
57 making /home/fauser/axiom/int/lib/XDither.c from
/home/fauser/axiom/src/lib/XDither.c.pamphlet
58 making /home/fauser/axiom/obj/linux/lib/XDither.o from
/home/fauser/axiom/int/lib/XDither.c
61 making /home/fauser/axiom/int/lib/XShade.c from
/home/fauser/axiom/src/lib/XShade.c.pamphlet
62 making /home/fauser/axiom/obj/linux/lib/XShade.o from
/home/fauser/axiom/int/lib/XShade.c
65 making /home/fauser/axiom/int/lib/XSpadFill.c from
/home/fauser/axiom/src/lib/XSpadFill.c.pamphlet
66 making /home/fauser/axiom/obj/linux/lib/XSpadFill.o from
/home/fauser/axiom/int/lib/XSpadFill.c
73 making /home/fauser/axiom/obj/linux/lib/libspad.a
ar: creating /home/fauser/axiom/obj/linux/lib/libspad.a
5 making /home/fauser/axiom/int/lib/cfuns-c.c from
/home/fauser/axiom/src/lib/cfuns-c.c.pamphlet
6 making /home/fauser/axiom/obj/linux/lib/cfuns-c.o from
/home/fauser/axiom/int/lib/cfuns-c.c
/home/fauser/axiom/int/lib/cfuns-c.c: In function `make_path_from_file':
/home/fauser/axiom/int/lib/cfuns-c.c:113: warning: `pos' might be used
uninitialized in this function
25 making /home/fauser/axiom/int/lib/hash.c from
/home/fauser/axiom/src/lib/hash.c.pamphlet
26 making /home/fauser/axiom/obj/linux/lib/hash.o from
/home/fauser/axiom/int/lib/hash.c
11 making /home/fauser/axiom/int/doc/src/lib/axiom.sty from
/home/fauser/axiom/src/doc/axiom.sty.pamphlet
3 making /home/fauser/axiom/int/doc/src/lib/bsdsignal.c.dvi from
/home/fauser/axiom/src/lib/bsdsignal.c.pamphlet
4 making /home/fauser/axiom/mnt/linux/doc/src/lib/bsdsignal.c.dvi from
/home/fauser/axiom/int/doc/src/lib/bsdsignal.c.dvi
7 making /home/fauser/axiom/int/doc/src/lib/cfuns-c.c.dvi from
/home/fauser/axiom/src/lib/cfuns-c.c.pamphlet
8 making /home/fauser/axiom/mnt/linux/doc/src/lib/cfuns-c.c.dvi from
/home/fauser/axiom/int/doc/src/lib/cfuns-c.c.dvi
11 making /home/fauser/axiom/int/doc/src/lib/cursor.c.dvi from
/home/fauser/axiom/src/lib/cursor.c.pamphlet
12 making /home/fauser/axiom/mnt/linux/doc/src/lib/cursor.c.dvi from
/home/fauser/axiom/int/doc/src/lib/cursor.c.dvi
15 making /home/fauser/axiom/int/doc/src/lib/edin.c.dvi from
/home/fauser/axiom/src/lib/edin.c.pamphlet
16 making /home/fauser/axiom/mnt/linux/doc/src/lib/edin.c.dvi from
/home/fauser/axiom/int/doc/src/lib/edin.c.dvi
19 making /home/fauser/axiom/int/doc/src/lib/fnct_key.c.dvi from
/home/fauser/axiom/src/lib/fnct_key.c.pamphlet
20 making /home/fauser/axiom/mnt/linux/doc/src/lib/fnct_key.c.dvi from
/home/fauser/axiom/int/doc/src/lib/fnct_key.c.dvi
23 making /home/fauser/axiom/int/doc/src/lib/halloc.c.dvi from
/home/fauser/axiom/src/lib/halloc.c.pamphlet
24 making /home/fauser/axiom/mnt/linux/doc/src/lib/halloc.c.dvi from
/home/fauser/axiom/int/doc/src/lib/halloc.c.dvi
27 making /home/fauser/axiom/int/doc/src/lib/hash.c.dvi from
/home/fauser/axiom/src/lib/hash.c.pamphlet
28 making /home/fauser/axiom/mnt/linux/doc/src/lib/hash.c.dvi from
/home/fauser/axiom/int/doc/src/lib/hash.c.dvi
31 making /home/fauser/axiom/int/doc/src/lib/openpty.c.dvi from
/home/fauser/axiom/src/lib/openpty.c.pamphlet
32 making /home/fauser/axiom/mnt/linux/doc/src/lib/openpty.c.dvi from
/home/fauser/axiom/int/doc/src/lib/openpty.c.dvi
35 making /home/fauser/axiom/int/doc/src/lib/pixmap.c.dvi from
/home/fauser/axiom/src/lib/pixmap.c.pamphlet
36 making /home/fauser/axiom/mnt/linux/doc/src/lib/pixmap.c.dvi from
/home/fauser/axiom/int/doc/src/lib/pixmap.c.dvi
39 making /home/fauser/axiom/int/doc/src/lib/prt.c.dvi from
/home/fauser/axiom/src/lib/prt.c.pamphlet
40 making /home/fauser/axiom/mnt/linux/doc/src/lib/prt.c.dvi from
/home/fauser/axiom/int/doc/src/lib/prt.c.dvi
43 making /home/fauser/axiom/int/doc/src/lib/sockio-c.c.dvi from
/home/fauser/axiom/src/lib/sockio-c.c.pamphlet
44 making /home/fauser/axiom/mnt/linux/doc/src/lib/sockio-c.c.dvi from
/home/fauser/axiom/int/doc/src/lib/sockio-c.c.dvi
71 making /home/fauser/axiom/mnt/linux/doc/src/lib/Makefile.dvi from
/home/fauser/axiom/src/lib/Makefile.dvi
47 making /home/fauser/axiom/int/doc/src/lib/spadcolors.c.dvi from
/home/fauser/axiom/src/lib/spadcolors.c.pamphlet
48 making /home/fauser/axiom/mnt/linux/doc/src/lib/spadcolors.c.dvi from
/home/fauser/axiom/int/doc/src/lib/spadcolors.c.dvi
51 making /home/fauser/axiom/int/doc/src/lib/util.c.dvi from
/home/fauser/axiom/src/lib/util.c.pamphlet
52 making /home/fauser/axiom/mnt/linux/doc/src/lib/util.c.dvi from
/home/fauser/axiom/int/doc/src/lib/util.c.dvi
55 making /home/fauser/axiom/int/doc/src/lib/wct.c.dvi from
/home/fauser/axiom/src/lib/wct.c.pamphlet
56 making /home/fauser/axiom/mnt/linux/doc/src/lib/wct.c.dvi from
/home/fauser/axiom/int/doc/src/lib/wct.c.dvi
59 making /home/fauser/axiom/int/doc/src/lib/XDither.c.dvi from
/home/fauser/axiom/src/lib/XDither.c.pamphlet
60 making /home/fauser/axiom/mnt/linux/doc/src/lib/XDither.c.dvi from
/home/fauser/axiom/int/doc/src/lib/XDither.c.dvi
63 making /home/fauser/axiom/int/doc/src/lib/XShade.c.dvi from
/home/fauser/axiom/src/lib/XShade.c.pamphlet
64 making /home/fauser/axiom/mnt/linux/doc/src/lib/XShade.c.dvi from
/home/fauser/axiom/int/doc/src/lib/XShade.c.dvi
67 making /home/fauser/axiom/int/doc/src/lib/XSpadFill.c.dvi from
/home/fauser/axiom/src/lib/XSpadFill.c.pamphlet
68 making /home/fauser/axiom/mnt/linux/doc/src/lib/XSpadFill.c.dvi from
/home/fauser/axiom/int/doc/src/lib/XSpadFill.c.dvi
72 finished making /home/fauser/axiom/src/lib
make[3]: Leaving directory `/home/fauser/axiom/src/lib'
make[2]: Leaving directory `/home/fauser/axiom/src'
0 PLF=LINUXplatform CCF=-O2 -fno-strength-reduce -Wall -D_GNU_SOURCE
-DLINUXplatform -I/usr/X11/include LDF=-L/usr/X11R6/lib CC=gcc AWK=gawk
RANLIB=ranlib TOUCH=touch TAR=tar
AXIOMXLROOT=/home/fauser/axiom/mnt/linux/compiler O=o BYE=bye LISP=lsp
DAASE=/home/fauser/axiom/src/share XLIB=/usr/X11R6/lib
10 copying /home/fauser/axiom/src/scripts to
/home/fauser/axiom/mnt/linux/bin
20 making /home/fauser/axiom/lsp/Makefile from
/home/fauser/axiom/lsp/Makefile.pamphlet
19 making /home/fauser/axiom/lsp
make[2]: Entering directory `/home/fauser/axiom/lsp'
2 building gcl-2.6.2a
27 renaming gcl to gcl-2.6.2a
3 applying EXTRAS patch to h/linux.defs
patching file linux.defs
4 setup ini files for EXTRAS patch
6 applying libspad.a patch to unixport/makefile
patching file makefile
7 applying toploop patch to unixport/init_gcl.lsp
patching file init_gcl.lsp.in
11 applying tail-recursive noise patch
patching file gcl_cmpflet.lsp
12 applying tail-recursive noise patch
patching file gcl_cmpcall.lsp
26 copy gcl_collectfn.lsp to
/home/fauser/axiom/obj/linux/lsp/collectfn.lsp
26a copy sys-proclaim.lisp to
/home/fauser/axiom/obj/linux/lsp/sys-proclaim.lisp
creating cache ./config.cache
checking host system type... i686-pc-linux-gnu
host=i686-pc-linux-gnu
enable_machine=
use=386-linux
checking for gcc... gcc
checking whether the C compiler (gcc    ) works... yes
checking whether the C compiler (gcc    ) is a cross-compiler... no
checking whether we are using GNU C... yes
checking whether gcc accepts -g... yes
checking how to run the C preprocessor... gcc -E
checking for gawk... gawk
checking system version (for dynamic loading)... checking for makeinfo...
makeinfo
Linux-2.6.5-7.95-default
checking use_gmp=yes, doing configure in gmp directory...
#
#
# -------------------
# Subconfigure of GMP
#
#
configure: WARNING: If you wanted to set the --build type, don't use
--host.
    If a cross compiler is detected then cross compile mode will be used.
checking build system type... pentium3-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether to enable maintainer-specific portions of Makefiles... no
checking compiler gcc -g -O2 -fomit-frame-pointer ... yes
checking whether gcc -march=pentiumpro is good... configure: WARNING:
unrecognised gcc version string: gcc (GCC) 3.3.3 (SuSE Linux)
Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.
no
checking compiler gcc -g -O2 -fomit-frame-pointer  -march=i486... yes
checking whether gcc -march=pentiumpro is good... (cached) no
checking compiler gcc -g -O2 -fomit-frame-pointer -march=i486
-march=i486... yes
checking for i686-pc-linux-gnu-gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... none
checking how to run the C preprocessor... gcc -E
using ABI="standard"
      CC="gcc"
      CFLAGS="-g -O2 -fomit-frame-pointer -march=i486 -march=i486"
      CPPFLAGS=""
checking for gcc option to accept ANSI C... none needed
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for function prototypes... yes
checking for ANSI C header files... no
checking for string.h... (cached) yes
checking for i686-pc-linux-gnu-ar... no
checking for ar... ar
checking for BSD-compatible nm... nm
checking for ld used by GCC... /usr/i586-suse-linux/bin/ld
checking if the linker (/usr/i586-suse-linux/bin/ld) is GNU ld... yes
checking for /usr/i586-suse-linux/bin/ld option to reload object files...
-r
checking whether ln -s works... yes
checking how to recognise dependant libraries... pass_all
checking dlfcn.h usability... yes
checking dlfcn.h presence... yes
checking for dlfcn.h... yes
checking the maximum length of command line arguments... 49153
checking command to parse nm output from gcc object... ok
checking for objdir... .libs
checking for i686-pc-linux-gnu-ranlib... ranlib
checking for i686-pc-linux-gnu-strip... no
checking for strip... strip
checking if gcc static flag  works... yes
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC
checking if gcc PIC flag -fPIC works... yes
checking if gcc supports -c -o file.o... yes
checking whether the gcc linker (/usr/i586-suse-linux/bin/ld) supports
shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking dynamic linker characteristics... GNU/Linux ld.so
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
configure: creating libtool
checking for ANSI C header files... (cached) no
checking whether time.h and sys/time.h may both be included... yes
checking locale.h usability... yes
checking locale.h presence... yes
checking for locale.h... yes
checking sys/mman.h usability... yes
checking sys/mman.h presence... yes
checking for sys/mman.h... yes
checking sys/param.h usability... yes
checking sys/param.h presence... yes
checking for sys/param.h... yes
checking sys/processor.h usability... no
checking sys/processor.h presence... no
checking for sys/processor.h... no
checking sys/resource.h usability... yes
checking sys/resource.h presence... yes
checking for sys/resource.h... yes
checking sys/sysctl.h usability... yes
checking sys/sysctl.h presence... yes
checking for sys/sysctl.h... yes
checking sys/systemcfg.h usability... no
checking sys/systemcfg.h presence... no
checking for sys/systemcfg.h... no
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking sys/times.h usability... yes
checking sys/times.h presence... yes
checking for sys/times.h... yes
checking whether fgetc is declared... yes
checking whether fscanf is declared... yes
checking whether optarg is declared... yes
checking whether ungetc is declared... yes
checking whether vfprintf is declared... yes
checking return type of signal handlers... void
checking for intmax_t... yes
checking for long double... yes
checking for long long... yes
checking for ptrdiff_t... no
checking for quad_t... yes
checking for preprocessor stringizing operator... yes
checking whether <stdarg.h> exists and works... yes
checking whether gcc __attribute__ ((const)) works... yes
checking whether gcc __attribute__ ((malloc)) works... yes
checking whether gcc __attribute__ ((mode (XX))) works... yes
checking whether gcc __attribute__ ((noreturn)) works... yes
checking for inline... inline
checking for main in -lm... yes
checking for working alloca.h... yes
checking for alloca (via gmp-impl.h)... yes
checking how to allocate temporary memory... alloca
checking for alarm... yes
checking for getpagesize... yes
checking for getrusage... yes
checking for gettimeofday... yes
checking for localeconv... yes
checking for memset... yes
checking for mmap... yes
checking for mprotect... yes
checking for obstack_vprintf... yes
checking for popen... yes
checking for processor_info... no
checking for read_real_time... no
checking for strchr... yes
checking for strnlen... yes
checking for strtoul... yes
checking for sysconf... yes
checking for sysctl... yes
checking for sysctlbyname... no
checking for times... yes
checking for vsnprintf... yes
checking whether vsnprintf works... yes
checking whether sscanf needs writable input... no
checking for suitable m4... configure: error: No usable m4 in $PATH or
/usr/5bin (see config.log for reasons).
#
#
#
# Subconfigure of GMP done
# ------------------------
#
cp: cannot stat `gmp3/gmp.h': No such file or directory
checking for leading underscore in object symbols... no
checking for GNU ld option -Map... yes
checking for size of gmp limbs... Cannot determine mpsize
make[3]: Entering directory `/home/fauser/axiom/lsp/gcl-2.6.2a'
rm -f bin/gcl xbin/gcl
MGCLDIR=`echo /home/fauser/axiom/lsp/gcl-2.6.2a | sed -e
'sX^\([a-z]\):X/\1Xg'` ; \
GCLDIR=`echo /home/fauser/axiom/lsp/gcl-2.6.2a` ; \
make install-command "INSTALL_LIB_DIR=$GCLDIR" "prefix=$GCLDIR"
"BINDIR=$MGCLDIR/unixport"
make[4]: Entering directory `/home/fauser/axiom/lsp/gcl-2.6.2a'
rm -f /home/fauser/axiom/lsp/gcl-2.6.2a/bin/gcl
(echo '#!/bin/sh' ; \
echo exec /home/fauser/axiom/lsp/gcl-2.6.2a/unixport/ \\ ; \
echo '   -dir' /home/fauser/axiom/lsp/gcl-2.6.2a/unixport/ \\ ; \
echo '   -libdir' /home/fauser/axiom/lsp/gcl-2.6.2a/ \\ ; \
echo '   -eval '\''(setq si::*allow-gzipped-file* t)'\' \\ ;\
! [ -d "" ] || echo '   -eval '\''(setq si::*tk-library* '\"\"')'\' \\;\
echo '     '\"\$@\" ) > /home/fauser/axiom/lsp/gcl-2.6.2a/bin/gcl;
echo '#' other options: -load "/tmp/foo.o" -load "jo.lsp" -eval '"(joe
3)"' >> /home/fauser/axiom/lsp/gcl-2.6.2a/bin/gcl
chmod a+x /home/fauser/axiom/lsp/gcl-2.6.2a/bin/gcl
rm -f /home/fauser/axiom/lsp/gcl-2.6.2a/bin/gclm.bat
if gcc --version | grep mingw >/dev/null 2>&1 ; then (echo '@SET cd='; \
 echo '@SET promp%prompt%'; \
 echo '@PROMPT SET cd'; \
 echo '@CALL>%temp%.\setdir.bat'; \
 echo '@'; \
 echo '% do not delete this line %'; \
 echo '@ECHO off'; \
 echo 'PROMPT %promp'; \
 echo 'FOR %%c IN (CALL DEL) DO %%c %temp%.\setdir.bat'; \
 echo 'set cwd=%cd%'; \
 echo 'set libdir=%cd%\..\lib\gcl-`cat majvers`.`cat minvers`'; \
 echo 'set unixportdir=%libdir%\unixport'; \
 echo 'path %cd%\..\mingw\bin;%PATH%'; \
 echo "start %unixportdir%\.exe -dir %unixportdir% -libdir %libdir% -eval
\"(setq si::*allow-gzipped-file* t)\" %1 %2 %3 %4 %5 %6 %7 %8 %9" ) >
/home/fauser/axiom/lsp/gcl-2.6.2a/bin/gclm.bat ; fi
rm -f /home/fauser/axiom/lsp/gcl-2.6.2a/bin/gclfinal.bat
if gcc --version | grep -i mingw >/dev/null 2>&1 ; then (echo 'ECHO path
%1\mingw\bin;%PATH% > gcli.bat'; \
 echo "ECHO start %1\lib\gcl-`cat majvers`.`cat minvers`\unixport\.exe
-dir %1\lib\gcl-`cat majvers`.`cat minvers`\unixport -libdir
%1\lib\gcl-`cat majvers`.`cat minvers` -eval \"(setq
si::*allow-gzipped-file* t)\" %1 %2 %3 %4 %5 %6 %7 %8 %9 >> gcli.bat" ) >
/home/fauser/axiom/lsp/gcl-2.6.2a/bin/gclfinal.bat ; fi
make[4]: Leaving directory `/home/fauser/axiom/lsp/gcl-2.6.2a'
(cd xbin ; cp ../bin/gcl .)
cd cmpnew && make gcl_collectfn.o
make[4]: Entering directory `/home/fauser/axiom/lsp/gcl-2.6.2a/cmpnew'
../unixport/saved_pre_gcl ../unixport/ -compile gcl_collectfn.lsp
make[4]: ../unixport/saved_pre_gcl: Command not found
make[4]: *** [gcl_collectfn.o] Error 127
make[4]: Leaving directory `/home/fauser/axiom/lsp/gcl-2.6.2a/cmpnew'
make[3]: *** [cmpnew/gcl_collectfn.o] Error 2
make[3]: Leaving directory `/home/fauser/axiom/lsp/gcl-2.6.2a'
/bin/sh: line 1: unixport/saved_gcl: No such file or directory
make[2]: *** [gcldir] Error 127
make[2]: Leaving directory `/home/fauser/axiom/lsp'
make[1]: *** [lspdir] Error 2
make[1]: Leaving directory `/home/fauser/axiom'
make: *** [all] Error 2

\start
Date: Tue, 13 Jul 2004 09:01:32 -0400
From: Tim Daly
To: Bertfried Fauser
Subject: (no subject)

in the README:

FAQ 1: Xlib.h is not found

You need to have Xlib.h to build the graphics. If you are building
on a RedHat 8 system you need to install the following RPM:

  rpm -i XFree86-devel-4.2.0-72.i386.rpm

On Debian GNU/Linux, the package 'xlibs-dev' is needed.

\start
Date: Tue, 13 Jul 2004 09:04:06 -0400
From: Tim Daly
To: Bertfried Fauser
Subject: (no subject)

The second failure you report is more obscure. 

It appears that saved_pre_gcl (a lispish image) did not build
or is not executable. This is a GCL lisp failure.

\start
Date: Tue, 13 Jul 2004 14:51:21 +0200 (CEST)
From: Bertfried Fauser
To: Tim Daly
Subject: Re: (no subject)

On Tue, 13 Jul 2004, Tim Daly wrote:

Hi Tim,

	indeed I found the XFree packge on SuSE also, so this is resolved.

> It appears that saved_pre_gcl (a lispish image) did not build
> or is not executable. This is a GCL lisp failure.

Is there a possibility to go for an older GCL, just uncommenting them in
the makefile?

will try...

\start
Date: Tue, 13 Jul 2004 15:06:26 +0200 (CEST)
From: Bertfried Fauser
To: Tim Daly
Subject: Re: (no subject)

Dear All,

	after failing to build AXIOM on SuSE9.1, I tried to build teh
GCL-2.6.1 and GCL-2.6.2(a) directly from their directory. Actually, I did
a
> ./configure (which worked out)
> make
which stoped with the error

cp: cannot stat `gmp3/gmp.h' : No such file or directory

actually the directory gmp3 does not contain such or similar files

Hence also my attempt to use an older GCL to build AXIOM, changed the
Makefile of AXIOM, failed....

I have no idea what went wrong....

\start
Date: Tue, 13 Jul 2004 09:37:44 -0400
From: Tim Daly
To: Bertfried Fauser
Subject: Re: (no subject)

This makes no sense to me. 

I could be that some config switch is defaulting a different way
based on SUSE. I'll look at the GCL config file and see if there is a 
comment that makes sense. 

\start
Date: Tue, 13 Jul 2004 09:40:35 -0400
From: Tim Daly
To: Bertfried Fauser
Subject: Re: (no subject)

The GCL files are in the zips subdirectory.
If you go to that directory type:

cd zips
tar -ztf gcl-2.6.2a.tgz | fgrep gmp.h

and the file should be there.

\start
Date: Tue, 13 Jul 2004 15:42:16 +0200 (CEST)
From: Bertfried Fauser
To: Tim Daly
Subject: Re: (no subject)

On Tue, 13 Jul 2004, Tim Daly wrote:

Hi,

> cd zips
> tar -ztf gcl-2.6.2a.tgz | fgrep gmp.h

I get
	gcl/h/mgmp.h
hence not the desired file and hence not in the gmp3 directory. This is
however true for GCL 2.6.1, 2.6.2 and 2.6.2a, so this might be the correct
location, so why is the make looking for a different file....

By the way, could the README file of AXIOM be split into two file. The
README and a FQA file. I was scrolling down the README file and stopped
when I saw license busines (not assuming something technical coming below)

\start
Date: Tue, 13 Jul 2004 10:25:41 -0400
From: Tim Daly
To: Bertfried Fauser
Subject: Re: (no subject)

> > cd zips
> > tar -ztf gcl-2.6.2a.tgz | fgrep gmp.h
> 
> I get
> 	gcl/h/mgmp.h
> hence not the desired file and hence not in the gmp3 directory. This is
> however true for GCL 2.6.1, 2.6.2 and 2.6.2a, so this might be the correct
> location, so why is the make looking for a different file....

curious. I've just did a clean checkout and am building it here to see
if it fails on RedHat. 

My system runs config, creates config.m4 which says:
....
config.status: creating gmp.h
...

beyond that it is building normally. So I suspect there is some test
in the config mechanism that is failing in SUSE. I'm trying to read
the config mechanism now.

> By the way, could the README file of AXIOM be split into two file. The
> README and a FQA file. I was scrolling down the README file and stopped
> when I saw license busines (not assuming something technical coming below)

Sure, I can split them out. The license business is at the top because
we're all lawyers first and programmers second :-) You'll also notice
that there is a license at the top of every source file (about like 
putting a license and patent information on every car part). Sorry,
the whole legal thing just sets me off.... all further discussion of
this will be on axiom-legal. 

\start
Date: Tue, 13 Jul 2004 17:56:10 +0200
From: Michael Keyl
To: list
Subject: Re: cvs build error on SuSE9.1

> checking for suitable m4... configure: error: No usable m4 in $PATH or

Maybe the problem is that you haven't installed m4?

\start
Date: Fri, 02 Jul 2004 15:17:31 +0200
From: Gregory Vanuxem
To: list
Subject: patch:RINTERP and algebra/Makefile.pamphlet

Hi,

Here is a patch (diff -Naur) for Makefile.pamphlet (07/01/2004) in
src/algebra:

Change:

RINTERP DenavitHartenbergMatrix

by

RINTERP RationalInterpolation

Question:

Why RINTERP is not added to "exposed.lsp.pamphlet" in Hidden section ?

--=-6pvjqdW5RV6kyhfdfmmX

LS0tIC91c3IvbG9jYWwvZ3JlZy9heGlvbS9zcmMvYWxnZWJyYS9NYWtlZmlsZS5wYW1waGxldAky
MDA0LTA3LTAyIDAyOjU5OjA2LjAwMDAwMDAwMCArMDIwMA0KKysrIE1ha2VmaWxlLnBhbXBobGV0
CTIwMDQtMDctMDIgMTU6MDU6MjMuMDAwMDAwMDAwICswMjAwDQpAQCAtMjk0NTYsNyArMjk0NTYs
NyBAQA0KIAlAIGVjaG8gMCBtYWtpbmcgJHtNSUR9L1JJTlRFUlAuc3BhZCBmcm9tICR7SU59L3Jp
bnRlcnAuc3BhZC5wYW1waGxldA0KIAlAKGNkICR7TUlEfSA7IFwNCiAJcm0gLXJmIFJJTlRFUlAu
TlJMSUIgOyBcDQotCSR7VEFOR0xFfSAtUiJkb21haW4gUklOVEVSUCBEZW5hdml0SGFydGVuYmVy
Z01hdHJpeCIgJHtJTn0vcmludGVycC5zcGFkLnBhbXBobGV0ID5SSU5URVJQLnNwYWQgKQ0KKwkk
e1RBTkdMRX0gLVIiZG9tYWluIFJJTlRFUlAgUmF0aW9uYWxJbnRlcnBvbGF0aW9uIiAke0lOfS9y
aW50ZXJwLnNwYWQucGFtcGhsZXQgPlJJTlRFUlAuc3BhZCApDQogCUAgcm0gLWYgJHtJTlR9L2Fs
Z2VicmEvZGJjb21wbGV0ZQ0KIA0KIEANCg==

--=-6pvjqdW5RV6kyhfdfmmX--

\start
Date: Mon, 28 Jun 2004 18:59:36 +0200
From: Gregory Vanuxem
To: list
Subject: RE: Complex exponentiation and 0

Le lun 28/06/2004 =E0 12:28, Martin Rubey a =E9crit :
> Shouldn't 
> 
> [bugs #9313] 0^0 handled inconsistently
> 
> be closed? David Mentr=E9 has submitted a second bug report,
> 
> [bugs #9424] Bug in handling 0^0 in Axiom
> 
> which subsumes the discussion, I think. To summarize:
> 
> bugs:
> -----------------------------
> 0::CARD ^ 0::CARD gives 
> 
> 0**0 not defined for cardinal numbers.
> 
> but should be 1::CARD (a reference should be included in both the bug rep=
ort
> and eventually in the patch)
> -----------------------------
> complex(0,0)^complex(2,2.0) gives
> 
> log 0 generated
> 
> but should give 0


complex(0,0)^complex(0,0.0)

log 0 generated

but should give  0**0 is undefined


> 
> -----------------------------
> non-bugs:
> -----------------------------
> 
> 0^0
> 1 Type: PositiveInteger
> 
> 0.0^0
> 1.0 Type: Float
> 
> are correct, since there is no limit for Integers and the type of zero in=
 the
> exponent is Integer.
> ------------------------------
> 0^0.0
> 
>  0**0 is undefined
> 
> 0.0^0.0
> 
>  0**0 is undefined
> 
> are correct, since there is a limit for Floats
> ------------------------------ 
> ----------------------------------------------------------------
> 
> If all of this is correct, could somebody who is entitled to do so 
> 
> * add a comment to [bugs #9313] 0^0 handled inconsistently that it is not=
 a
>   bug, (maybe simply include a pointer to this mail) but there are relate=
d bugs
>   described in [bugs #9424] Bug in handling 0^0 in Axiom
> 
> * close it.

\start
Date: Tue, 13 Jul 2004 16:45:29 +0200 (CEST)
From: Bertfried Fauser
To: Michael Keyl
Subject: Re: cvs build error on SuSE9.1

On Tue, 13 Jul 2004, Michael Keyl wrote:

Uppps

> > checking for suitable m4... configure: error: No usable m4 in $PATH or

I missed that one. m4 (what is this?) is not inthe path using "which" but
has a manpage (which explains what it is I guess)

After having installed m4, the make process progresses, thankX a lot!

\start
Date: Tue, 13 Jul 2004 18:12:28 +0200
From: Gregory Vanuxem
To: list
Subject: RE: Complex exponentiation and 0

Sorry, very old mail sent when reinstalling Bind.

Greg

Le lun 28/06/2004 =E0 18:59, Vanuxem Gr=E9gory a =E9crit :
> Le lun 28/06/2004 =E0 12:28, Martin Rubey a =E9crit :
> > Shouldn't 
> > 
> > [bugs #9313] 0^0 handled inconsistently
> > 
> > be closed? David Mentr=E9 has submitted a second bug report,
> > 
> > [bugs #9424] Bug in handling 0^0 in Axiom
> > 
> > which subsumes the discussion, I think. To summarize:
> > 
> > bugs:
> > -----------------------------
> > 0::CARD ^ 0::CARD gives 
> > 
> > 0**0 not defined for cardinal numbers.
> > 
> > but should be 1::CARD (a reference should be included in both the bug r=
eport
> > and eventually in the patch)
> > -----------------------------
> > complex(0,0)^complex(2,2.0) gives
> > 
> > log 0 generated
> > 
> > but should give 0
> 
> 
> complex(0,0)^complex(0,0.0)
> 
> log 0 generated
> 
> but should give  0**0 is undefined
> 
> 
> > 
> > -----------------------------
> > non-bugs:
> > -----------------------------
> > 
> > 0^0
> > 1 Type: PositiveInteger
> > 
> > 0.0^0
> > 1.0 Type: Float
> > 
> > are correct, since there is no limit for Integers and the type of zero =
in the
> > exponent is Integer.
> > ------------------------------
> > 0^0.0
> > 
> >  0**0 is undefined
> > 
> > 0.0^0.0
> > 
> >  0**0 is undefined
> > 
> > are correct, since there is a limit for Floats
> > ------------------------------ 
> > ----------------------------------------------------------------
> > 
> > If all of this is correct, could somebody who is entitled to do so 
> > 
> > * add a comment to [bugs #9313] 0^0 handled inconsistently that it is n=
ot a
> >   bug, (maybe simply include a pointer to this mail) but there are rela=
ted bugs
> >   described in [bugs #9424] Bug in handling 0^0 in Axiom
> > 
> > * close it.

\start
Date: Tue, 13 Jul 2004 18:13:29 +0200
From: Gregory Vanuxem
To: list
Subject: Re: patch:RINTERP and algebra/Makefile.pamphlet

Sorry, very old mail sent hen reinstalling Bind.

Greg

Le ven 02/07/2004 =E0 15:17, Vanuxem Gr=E9gory a =E9crit :
> Hi,
> 
> Here is a patch (diff -Naur) for Makefile.pamphlet (07/01/2004) in
> src/algebra:
> 
> Change:
> 
> RINTERP DenavitHartenbergMatrix
> 
> by
> 
> RINTERP RationalInterpolation
> 
> Question:
> 
> Why RINTERP is not added to "exposed.lsp.pamphlet" in Hidden section ?

\start
Date: Tue, 13 Jul 2004 11:16:48 -0400
From: Tim Daly
To: Bertfried Fauser
Subject: what is m4

BF,

> what is m4?

m4 is a macro language. m4 is usually installed as a side-effect
of installing sendmail.

\start
Date: 13 Jul 2004 12:56:26 -0400
From: Camm Maguire
To: Bertfried Fauser
Subject: Re: cvs build error on SuSE9.1

Greetings!  Here is your problem:

Bertfried Fauser writes:

....

> checking whether vsnprintf works... yes
> checking whether sscanf needs writable input... no
> checking for suitable m4... configure: error: No usable m4 in $PATH or
> /usr/5bin (see config.log for reasons).
> #
> #

In general, the build-dependencies for gcl can be found at the head of
the file debian/control in the gcl source directory.  Currently, they
are:

Build-Depends: debhelper ( >= 4.1.0 ), emacs21 | emacsen, libreadline4-dev, m4, tk8.4-dev, tetex-bin, texinfo, binutils-dev, libgmp3-dev, autotools-dev

You can forget about the debhelper unless you want to make a Debian
package.

Take care,


> #
> # Subconfigure of GMP done
> # ------------------------
> #
> cp: cannot stat `gmp3/gmp.h': No such file or directory

\start
Date: Wed, 14 Jul 2004 00:47:55 -0400
From: Bill Page
To: Tim Daly
Subject: RE: lattice drawing program
Cc: Mathis Heydtmann

Tim,

graphviz looks like it produces really nice graphs.

I have been experimenting with the "TouchGraph" online graphical
interface for the Axiom Wiki. You can start to play with it here.

http://page.axiom-developer.org/zope/mathaction/FrontPage/withNavigator

I don't really have enough example files in this part of the Axiom
Wiki yet to really illustrate this well, but I hope you can get the
idea. 

You might remember that I mentioned this back in April

http://lists.gnu.org/archive/html/axiom-developer/2004-04/msg00015.html

The people to implemented this (Mathis Heydtmann and Alex@floop.org.uk)
provided some fairly detailed documentation on how to set it up here

http://zeck.floop.org.uk/mathis/WikiLiver/InstallingZWikiNavigator

Nice work gentlemen!

It only took me a few hours today to get this to work.

Right now I am working the DHmatrix.spad.pamphlet file as an example.
I intend to gradually put more of the .pamphlet files here so that
we can experiment with this sort of "crystal navigation".

Comments welcome, everyone!

> -----Original Message-----
> 
> Bill,
> 
> Remember the problem of drawing the algebra lattice?
> I've looked into it a bit more. Take a look at:
> 
> http://www.research.att.com/sw/tools/graphviz
> 
> Tim
> 
> 



-----Original Message-----

Bill,

Thanks for your interest in our Wikinavigator. 
(http://mail.gnu.org/archive/html/axiom-developer/2004-04/msg00015.html)
I have to credit mainly Alex@floop.org.uk for developing it with me and we
are hoping to develop it further... We are currently working on packaging it
and go public in some way also with the aim to get more people involved for
testing on different browsers, ... Watch the space.

Mathis

Mathis Heydtmann
The Liver Research Laboratories
Institute for Biomedical Research
Birmingham University
Edgbaston B15 2TH
UK

\start
Date: Wed, 14 Jul 2004 08:39:00 -0400
From: Tim Daly
To: Bill Page
Subject: Re: [Bill Page: RE: lattice drawing	program]

> graphviz looks like it produces really nice graphs.

I'm going to try to revive the effort to define and graph the
axiom algebra lattice. This will make it somewhat easier to 
understand and show where more work is needed. Hopefully an
interesting research direction will fall out that can be 
proposed for the next round of submissions.

\start
Date: Wed, 14 Jul 2004 09:13:56 -0400
From: Tim Daly
To: list
Subject: graphviz

I've looked at your graphics visualization software
(http://www.research.att.com/sw/tools/graphviz)
and read the license. It seems compatible with the
Modified BSD license that we use for Axiom
(http://savannah.nongnu.org/projects/axiom)
although I can't say that I fully understand all
the possible legal ramifications.

One item of note is that changes are supposed to be
sent back to AT&T but it doesn't say where and to whom.

The general mechanism that Axiom uses with software is to
distribute the original tarball unchanged. During the build
process patches are dynamically applied. This is compatible
with your license as I understand it. We need to know, if
we do make changes, where to send copies of these patches.

In addition, we have a wiki website. If we find this software
useful we're likely to extend it to handle hyperlinking to our
source files. This is non-commercial use and does not involve
distribution in any physical sense. Nevertheless, we're willing
to contribute patches back to the original project.

Please send me a contact name and email address for patches.

\start
Date: Wed, 14 Jul 2004 09:19:26 -0400
From: Tim Daly
To: Stephen North
Subject: graphviz

Stephen,

I've looked at your graphics visualization software
(http://www.research.att.com/sw/tools/graphviz)
and read the license. It seems compatible with the
Modified BSD license that we use for Axiom
(http://savannah.nongnu.org/projects/axiom)
although I can't say that I fully understand all
the possible legal ramifications.

I've contacted your licensing dept (licensing@att.com).

The general mechanism that Axiom uses with software is to distribute
the original tarball unchanged. During the build process patches are
dynamically applied. This is compatible with your license as I
understand it.

In addition, we have a wiki website. If we find this software useful
we're likely to extend it to handle hyperlinking to our source
files. This is non-commercial use and does not involve distribution in
any physical sense. Nevertheless, we're willing to contribute patches
back to the original project.

Can I assume that if we make changes you are the person to receive the
patches?

\start
Date: Wed, 14 Jul 2004 16:26:47 +0200
From: Renaud Rioboo
To: list
Subject: efficiency consideration in Axiom

Dear Axiom fans,

I am wanting to produce new versions for my Real Closure package and I am
willing to use Open Axiom while I was mainly using NAG's Axion version.

I am using my RealClosure package which is the same for Open Axiom than the
one I use in NAG's Axiom 2.3 since Tim downloaded the RECLOS version from my
website.

I am however experiencing efficiency problems. Here is an example:

----------------Open Axiom-------------------------------
(6) -> a3 := sqrt(-(5739 - 9473525*a2),3)
 
         +------------------------------------------------------------------+
         |        +-------------------------------------------------+
         |        |         +-------------------------------+
        3|       3|        3|            3+-+
   (6)  \|9473525\|92526953\|316737007504\|2  - 399063623035  - 5539  - 5739
                                           Type: RealClosure Fraction Integer
                        Time: 48.04 (EV) + 0.01 (OT) + 15.60 (GC) = 63.65 sec
(7) -> a4 := sqrt(-(1 - 1283*a3),3)
 
   (7)
   ROOT
          1283
       *
           +------------------------------------------------------------------+
           |        +-------------------------------------------------+
           |        |         +-------------------------------+
          3|       3|        3|            3+-+
          \|9473525\|92526953\|316737007504\|2  - 399063623035  - 5539  - 5739
      +
        - 1
  ,
      3
                                           Type: RealClosure Fraction Integer
                                 Time: 744.11 (EV) + 182.66 (GC) = 926.77 sec
----------------Open Axiom-------------------------------

wheras

----------------NAG Axiom's 2.3-------------------------------
G82322 (5) -> a3 := sqrt(-(5739 - 9473525*a2),3)
 
         +------------------------------------------------------------------+
         |        +-------------------------------------------------+
         |        |         +-------------------------------+
        3|       3|        3|            3+-+
   (5)  \|9473525\|92526953\|316737007504\|2  - 399063623035  - 5539  - 5739
                                           Type: RealClosure Fraction Integer
                                                   Time: 0.07 (EV) = 0.07 sec
G82322 (6) -> a4 := sqrt(-(1 - 1283*a3),3)
 
   (6)
   ROOT
          1283
       *
           +------------------------------------------------------------------+
           |        +-------------------------------------------------+
           |        |         +-------------------------------+
          3|       3|        3|            3+-+
          \|9473525\|92526953\|316737007504\|2  - 399063623035  - 5539  - 5739
      +
        - 1
  ,
      3
                                           Type: RealClosure Fraction Integer
                                       Time: 0.59 (EV) + 0.11 (GC) = 0.70 sec
----------------NAG Axiom's 2.3-------------------------------

Which makes a factor above 1000 ! Anyone has an idea ?

\start
Date: Wed, 14 Jul 2004 09:37:33 -0400
From: Tim Daly
To: Renaud Rioboo
Subject: efficiency

Renaud,

> I am wanting to produce new versions for my Real Closure package and I am
> willing to use Open Axiom while I was mainly using NAG's Axion version.

I have no idea but I'll look into it.

I'll try running the same test here. In particular, I'll recompile
the sources in each image before the tests so I'm sure they are
using the same code.

\start
Date: Wed, 14 Jul 2004 10:45:31 -0400
From: Bill Page
To: Tim Daly
Subject: RE: efficiency

Renaud, Tim,

Has the version of OpenAxiom that you are using been
"compiled twice" in order to optimize function calls?
(Although if not, I doubt that that could explain a
factor of 1000!)

Regards,
Bill Page.

> -----Original Message-----
> 
> Renaud,
> 
> > I am wanting to produce new versions for my Real Closure 
> > package and I am willing to use Open Axiom while I was
> > mainly using NAG's Axion version.
> 
> I have no idea but I'll look into it.
> 
> I'll try running the same test here. In particular, I'll 
> recompile the sources in each image before the tests so I'm 
> sure they are using the same code.

\start
Date: Wed, 14 Jul 2004 16:54:25 +0200
From: Gregory Vanuxem
To: Renaud Rioboo
Subject: Re: efficiency consideration in Axiom

Hi

What is a2 and a1 ?


greg

Le mer 14/07/2004 =E0 16:26, Renaud Rioboo a =E9crit :
> Dear Axiom fans,
> 
> I am wanting to produce new versions for my Real Closure package and I am
> willing to use Open Axiom while I was mainly using NAG's Axion version.
> 
> I am using my RealClosure package which is the same for Open Axiom than t=
he
> one I use in NAG's Axiom 2.3 since Tim downloaded the RECLOS version from=
 my
> website.
> 
> I am however experiencing efficiency problems. Here is an example:
> 
> ----------------Open Axiom-------------------------------
> (6) -> a3 := sqrt(-(5739 - 9473525*a2),3)
>  
>          +---------------------------------------------------------------=
---+
>          |        +-------------------------------------------------+
>          |        |         +-------------------------------+
>         3|       3|        3|            3+-+
>    (6)  \|9473525\|92526953\|316737007504\|2  - 399063623035  - 5539  - 5=
739
>                                            Type: RealClosure Fraction Int=
eger
>                         Time: 48.04 (EV) + 0.01 (OT) + 15.60 (GC) = 63.=
65 sec
> (7) -> a4 := sqrt(-(1 - 1283*a3),3)
>  
>    (7)
>    ROOT
>           1283
>        *
>            +-------------------------------------------------------------=
-----+
>            |        +-------------------------------------------------+
>            |        |         +-------------------------------+
>           3|       3|        3|            3+-+
>           \|9473525\|92526953\|316737007504\|2  - 399063623035  - 5539  -=
 5739
>       +
>         - 1
>   ,
>       3
>                                            Type: RealClosure Fraction Int=
eger
>                                  Time: 744.11 (EV) + 182.66 (GC) = 926.=
77 sec
> ----------------Open Axiom-------------------------------
> 
> wheras
> 
> ----------------NAG Axiom's 2.3-------------------------------
> G82322 (5) -> a3 := sqrt(-(5739 - 9473525*a2),3)
>  
>          +---------------------------------------------------------------=
---+
>          |        +-------------------------------------------------+
>          |        |         +-------------------------------+
>         3|       3|        3|            3+-+
>    (5)  \|9473525\|92526953\|316737007504\|2  - 399063623035  - 5539  - 5=
739
>                                            Type: RealClosure Fraction Int=
eger
>                                                    Time: 0.07 (EV) = 0.=
07 sec
> G82322 (6) -> a4 := sqrt(-(1 - 1283*a3),3)
>  
>    (6)
>    ROOT
>           1283
>        *
>            +-------------------------------------------------------------=
-----+
>            |        +-------------------------------------------------+
>            |        |         +-------------------------------+
>           3|       3|        3|            3+-+
>           \|9473525\|92526953\|316737007504\|2  - 399063623035  - 5539  -=
 5739
>       +
>         - 1
>   ,
>       3
>                                            Type: RealClosure Fraction Int=
eger
>                                        Time: 0.59 (EV) + 0.11 (GC) = 0.=
70 sec
> ----------------NAG Axiom's 2.3-------------------------------
> 
> Which makes a factor above 1000 ! Anyone has an idea ?

\start
Date: Wed, 14 Jul 2004 17:22:15 +0200
From: Renaud Rioboo
To: list
Subject: Re: efficiency

Dear all,

> Has the version of OpenAxiom that you are using been
> "compiled twice" in order to optimize function calls?
> (Although if not, I doubt that that could explain a
> factor of 1000!)

Hum, this is beyond my control. 

The only problem I had when compiling axiom was :

1 finished /usr/local/Install/OpenAxiom/axiom/src/doc
make[3]: Leaving directory `/usr/local/Install/OpenAxiom/axiom/src/doc'
make[2]: *** No rule to make target `/usr/local/Install/OpenAxiom/axiom/src/graph/Makefile.pamphlet', needed by `/usr/local/Install/OpenAxiom/axiom/src/graph/Makefile'.  Stop.
make[2]: Leaving directory `/usr/local/Install/OpenAxiom/axiom/src'
make[1]: *** [srcdir] Error 2
make[1]: Leaving directory `/usr/local/Install/OpenAxiom/axiom'
make: *** [all] Error 2

but axiom seems to run and has the correct build date.

\start
Date: Wed, 14 Jul 2004 10:24:03 -0400
From: Tim Daly
To: Renaud Rioboo
Subject: efficiency

Renaud,

I can't reproduce your example.
Can you post the input file you used?

\start
Date: Wed, 14 Jul 2004 10:26:41 -0400
From: Tim Daly
To: Renaud Rioboo
Subject: efficiency

Renaud,

I can't reproduce your example.
Can you post the input file you used?

\start
Date: Wed, 14 Jul 2004 12:18:59 -0400
From: Tim Daly
To: Stephen North
Subject: documentation

Stephen,

I've started writing a package for Axiom that will allow programs
to generate graphs. 

One thing to know about Axiom programs is that they are "literate
programs" meaning that they are actually TeX documents which contain
the source code as well as the documentation. Axiom no longer contains
C, lisp, spad, makefiles, etc. Everything is a TeX document from which
the programs are extracted at build time.

Rather than rewriting the relevant portions of the docs you provide
I'd rather just quote the text directly. I don't see anything in the
license that prevents that. Unfortunately, I also don't see the
original tex files that make up the documentation.

Several questions:

Is it clear to you that the license allows me to quote the docs?
Are the tex documents available? It would save retyping the parts.
If so, where can I get them?
Will they be made part of the distribution?

\start
Date: Wed, 14 Jul 2004 12:40:16 -0400
From: Tim Daly
To: Stephen North
Subject: documentation

Stephen,

> Aren't they in the doc directory?

The pdf files are there but the tex sources are not.
Pdf is basically a binary, dead-end format.

I want to write an Axiom version of the tex that has axiom source
code spread all over the file. For instance, in the dotguide file
there is an example of how to create a simple digraph. To incorporate
this into axiom I'd rewrite the section to show what the related
axiom functions are (including their implementation), as well as
the output of an axiom session (which would automatically become
a regression test case). That way the documentation covers both
the source (as it is extracted), the testing (also extracted) and
the end user documentation (automatically built). Besides the
existing documentation I'd be writing a discussion of the design
decisions and the implementation details. That way future maintainers
can understand and maintain the code, tests, and docs all in one place.

You can fetch files from the Axiom website to see what I mean:

cvs -d:ext:anoncvs@subversions.gnu.org:/cvsroot/axiom co axiom/src/algebra/dhmatrix.spad.pamphlet

I extract code and docs using a tool called noweb
(http://www.eecs.harvard.edu/~nr/noweb) written by Norman Ramsey at
Harvard. It is a language-agnostic version of Knuth's Web literate
programming tool.

I can write all of this documentation from scratch but it's just
so much easier to start with existing work and slice and dice it.

\start
Date: Wed, 14 Jul 2004 12:51:49 -0400
From: Tim Daly
To: Stephen North
Subject: documentation

Ok. Got it. The CVS does contain the tex but the tarball does not.
I'll tar up the CVS version and use that, per the license.
Thanks.

\start
Date: Wed, 14 Jul 2004 20:13:14 +0200
From: David Mentre
To: Renaud Rioboo
Subject: Re: efficiency

Hello Rebaud,

Renaud Rioboo writes:

> make[2]: *** No rule to make target `/usr/local/Install/OpenAxiom/axiom/src/graph/Makefile.pamphlet', needed by `/usr/local/Install/OpenAxiom/axiom/src/graph/Makefile'.  Stop.

Are you sure you have used -d option to cvs update? A missing
directory/file could explain such an error.

\start
Date: Wed, 14 Jul 2004 14:18:24 -0400
From: Bill Page
To: Tim Daly
Subject: RE: efficiency

Tim, Renaud,

I have tried a simple example on the Axiom Wiki here

  http://page.axiom-developer.org/zope/mathaction/ExperimentHere

It is based on Renaud's email, but I do not have the actual
value that he may have used for the variable a2.

Anyway, it seems that at least in the verion of Axiom on
the Axiom Wiki, the performance is pretty good!

If you have any questions about how to use the Axiom Wiki
and the Axiom Portal, please ask.


> -----Original Message-----
> 
> Renaud,
> 
> I can't reproduce your example.
> Can you post the input file you used?

\start
Date: Wed, 14 Jul 2004 20:31:43 +0200
From: David Mentre
To: Mark E. Fenner
Subject: Re: Compilation Methodology Overview and a Specific Problem

Hello Mark,

I cannot remember if anybody has replied to your questions, so I give
them a try:

"Mark E. Fenner" <Mark E. Fenner> writes:

> Why does axiom build its own LISP(s) instead of using LISP(s) that I may 
> already have on my system?  Is this the different characteristics of 
> different LISPs mentioned in the top-level README file?  

Axiom has its own Lisp to have a known the build environment and because
Axiom needs to patch the lisp core system for its own purpose (socket
extension). This might change in the future but is not in the short term
plan. 

However, it is possible to make Axiom rely on an external Lisp
(GCL). Camm Maguire is doing it for the Debian Axiom package.

> Is there any preference of using LISP versions that are 1) the same or 2) 
> different from what I have on my machine?  For example, if I have gcl 2.5.2 
> installed on my machine, should I necessarily choose GCLVERSION=gcl-2.5.2 in 
> my makefile (or from an export GCLVERSION)?

You should use the default lisp in the current sources of Axiom. 

> Finally,  I believe the top level Makefile.dvi description states that gcl 
> 2.4.1 is the default gcl version.  The CVS toplevel Makefile seems to have 
> the GCLVERSION=gcl-2.6.2 line uncommented.  Is this as intended or do the 
> docs need updated?

The docs need updates. We will gladly accept any diff -Naur of your
patch.

\start
Date: Wed, 14 Jul 2004 13:51:35 -0400
From: Tim Daly
To: David Mentre
Subject: (no subject)
Cc: Stephen North

> I'm not a lawyer but from what I have read, this license makes graphviz,
> albeit open source, not a free software ...[snip]...

"The first thing we do, let's kill all the lawyers."
"Nay, that I mean to do. Is not this a lamentable thing, that of the
skin of an innocent lamb should be made parchment? That parchment,
being scribbled o'er should undo a man? Some say the bee stings; but
I say, 'tis the bee's wax; for I did but seal once to a thing, and I
was never mine own man since" -- Shakespeare Henry VI, part 2

You're right, of course. 

Thus, I need to figure out a way to configure a non-free extension
that is left out of the free distribution. Or wait for AT&T to get a 
clue. For the nonce, I choose path one as path two can never occur
for certainly AT&T can have no love of Modified BSD :-)

"Oh, bother" -- Pooh

BTW, any further discussion on the legal subject should be copied
ONLY to axiom-legal, and NOT axiom-developer, that being the point 
of its creation.

\start
Date: Wed, 14 Jul 2004 13:58:32 -0400
From: Tim Daly
To: David Mentre, Mark E. Fenner
Subject: Compilation Methodology Overview and a Specific Problem

> Axiom has its own lisp to have a known the build environment and because
> Axiom needs to patch ....[snip]...

One of the developers has agreed to look at UFFI (if memory serves)
which is rumored to allow C extensions to all of the Lisp systems.
If I have the cover functions for Axiom's GCL extensions then I can
use a pre-installed lisp if such exists.

The current GCLVERSION should read
GCLVERSION=gcl-2.6.2a

although the patches are still there for the prior versions and they
used to work. 

\start
Date: Wed, 14 Jul 2004 21:59:00 -0400
From: Tim Daly
To: Renaud Rioboo
Subject: computation

I ran both the NAG version and the free version of Axiom on 
reclos.input. These are the two consoles. The first one is
from the NAG version, the second from the free version.

The times compare reasonably.

Please send me the test case you have.

=================================================================
=== NAG version
=================================================================


bash-2.05b# axiom -nox
Axiom Computer Algebra System (Release 2.3)
Linux 2.2 for Intel i386 (AXLUX23NA)
-----------------------------------------------------------------------------
   Issue )copyright to view copyright notices.
   Issue )summary for a summary of useful system commands.
   Issue )quit to leave AXIOM and return to shell.
-----------------------------------------------------------------------------
 
Value = 1
initial (1) -> 
G82322 (1) -> )co reclos.spad
   Compiling AXIOM source code from file /tmp/new/reclos.spad using old
      system compiler.
   POLUTIL abbreviates package RealPolynomialUtilitiesPackage 
   processing macro definition Z ==> Integer 
   processing macro definition N ==> NonNegativeInteger 
   processing macro definition P ==> ThePols 
------------------------------------------------------------------------
   initializing NRLIB POLUTIL for RealPolynomialUtilitiesPackage 
   compiling into NRLIB POLUTIL 
   compiling exported sturmSequence : ThePols -> List ThePols
Time: 0.46 SEC.

   compiling exported sylvesterSequence : (ThePols,ThePols) -> List ThePols
Time: 0.22 SEC.

****** Domain: TheField already in scope
augmenting TheField: (OrderedRing)
augmenting $: (SIGNATURE $ boundOfCauchy (TheField ThePols))
augmenting $: (SIGNATURE $ sturmVariationsOf ((NonNegativeInteger) (List TheField)))
augmenting $: (SIGNATURE $ lazyVariations ((NonNegativeInteger) (List TheField) (Integer) (Integer)))
   compiling exported boundOfCauchy : ThePols -> TheField
Time: 0.04 SEC.

   compiling exported sturmVariationsOf : List TheField -> NonNegativeInteger
Time: 0.06 SEC.

   compiling exported lazyVariations : (List TheField,Integer,Integer) -> NonNegativeInteger
Time: 0.12 SEC.

****** Domain: TheField already in scope
augmenting TheField: (OrderedRing)
augmenting $: (SIGNATURE $ boundOfCauchy (TheField ThePols))
augmenting $: (SIGNATURE $ sturmVariationsOf ((NonNegativeInteger) (List TheField)))
augmenting $: (SIGNATURE $ lazyVariations ((NonNegativeInteger) (List TheField) (Integer) (Integer)))
(time taken in buildFunctor:  10)

;;;     ***       |RealPolynomialUtilitiesPackage| REDEFINED

;;;     ***       |RealPolynomialUtilitiesPackage| REDEFINED
Time: 0.01 SEC.

 
   Warnings: 
      [1] sylvesterSequence:  res has no value
      [2] sturmVariationsOf:  ll has no value
 

   Cumulative Statistics for Constructor RealPolynomialUtilitiesPackage
      Time: 0.91 seconds
 
   finalizing NRLIB POLUTIL 
   Processing RealPolynomialUtilitiesPackage for Browser database:
--------(sylvesterSequence ((List ThePols) ThePols ThePols))---------
--------(sturmSequence ((List ThePols) ThePols))---------
--------(boundOfCauchy (TheField ThePols))---------
--------(sturmVariationsOf (N (List TheField)))---------
--------(lazyVariations (N (List TheField) Z Z))---------
--------constructor---------
;; Compiling file "POLUTIL.NRLIB/code.lsp"
+++ |POLUTIL;sturmSequence;ThePolsL;1| compiled, 21 + 12 bytes
+++ |POLUTIL;sylvesterSequence;2ThePolsL;2| compiled, 139 + 48 bytes
+++ |POLUTIL;boundOfCauchy;ThePolsTheField;3| compiled, 178 + 52 bytes
+++ |POLUTIL;sturmVariationsOf;LNni;4| compiled, 165 + 40 bytes
+++ |POLUTIL;lazyVariations;L2INni;5| compiled, 159 + 52 bytes
+++ |RealPolynomialUtilitiesPackage| compiled, 46 + 44 bytes
+++ |RealPolynomialUtilitiesPackage;| compiled, 117 + 92 bytes
;; Compilation complete
------------------------------------------------------------------------
   RealPolynomialUtilitiesPackage is now explicitly exposed in frame 
      G82322 
   RealPolynomialUtilitiesPackage will be automatically loaded when 
      needed from POLUTIL.NRLIB/code

   RRCC abbreviates category RealRootCharacterizationCategory 
   processing macro definition Z ==> Integer 
   processing macro definition N ==> PositiveInteger 
   processing macro definition PUB ==> -- the constructor capsule 
------------------------------------------------------------------------
   initializing NRLIB RRCC for RealRootCharacterizationCategory 
   compiling into NRLIB RRCC 

;;;     ***       |RealRootCharacterizationCategory| REDEFINED

+++ |RealRootCharacterizationCategory| redefined
Time: 0.02 SEC.

   RRCC- abbreviates domain RealRootCharacterizationCategory& 
------------------------------------------------------------------------
   initializing NRLIB RRCC- for RealRootCharacterizationCategory& 
   compiling into NRLIB RRCC- 
****** Domain: TheField already in scope
   compiling exported zero? : (ThePols,S) -> Boolean
Time: 0.07 SEC.

   compiling exported negative? : (ThePols,S) -> Boolean
Time: 0.03 SEC.

   compiling exported positive? : (ThePols,S) -> Boolean
Time: 0.03 SEC.

   compiling exported rootOf : (ThePols,PositiveInteger) -> Union(S,failed)
Time: 0.08 SEC.

   compiling exported recip : (ThePols,S) -> Union(ThePols,failed)
Time: 0.15 SEC.

(time taken in buildFunctor:  0)

;;;     ***       |RealRootCharacterizationCategory&| REDEFINED
Time: 0.01 SEC.


   Cumulative Statistics for Constructor RealRootCharacterizationCategory&
      Time: 0.37 seconds
 
   finalizing NRLIB RRCC- 
   Processing RealRootCharacterizationCategory& for Browser database:
--------(sign (Z ThePols $))---------
--------(zero? ((Boolean) ThePols $))---------
--------(negative? ((Boolean) ThePols $))---------
--------(positive? ((Boolean) ThePols $))---------
--------(recip ((Union ThePols failed) ThePols $))---------
--------(definingPolynomial (ThePols $))---------
--------(allRootsOf ((List $) ThePols))---------
--------(rootOf ((Union $ failed) ThePols N))---------
--------(approximate (TheField ThePols $ TheField))---------
--------(relativeApprox (TheField ThePols $ TheField))---------
--------constructor---------
;; Compiling file "RRCC-.NRLIB/code.lsp"
+++ |RRCC-;zero?;ThePolsSB;1| compiled, 16 + 12 bytes
+++ |RRCC-;negative?;ThePolsSB;2| compiled, 15 + 8 bytes
+++ |RRCC-;positive?;ThePolsSB;3| compiled, 16 + 12 bytes
+++ |RRCC-;rootOf;ThePolsPiU;4| compiled, 41 + 24 bytes
+++ |RRCC-;recip;ThePolsSU;5| compiled, 200 + 72 bytes
+++ |RealRootCharacterizationCategory&| compiled, 68 + 44 bytes
;; Compilation complete
------------------------------------------------------------------------
   RealRootCharacterizationCategory& is now explicitly exposed in frame
      G82322 
   RealRootCharacterizationCategory& will be automatically loaded when 
      needed from RRCC-.NRLIB/code
   finalizing NRLIB RRCC 
   Processing RealRootCharacterizationCategory for Browser database:
--------(sign (Z ThePols $))---------
--------(zero? ((Boolean) ThePols $))---------
--------(negative? ((Boolean) ThePols $))---------
--------(positive? ((Boolean) ThePols $))---------
--------(recip ((Union ThePols failed) ThePols $))---------
--------(definingPolynomial (ThePols $))---------
--------(allRootsOf ((List $) ThePols))---------
--------(rootOf ((Union $ failed) ThePols N))---------
--------(approximate (TheField ThePols $ TheField))---------
--------(relativeApprox (TheField ThePols $ TheField))---------
--------constructor---------
;; Compiling file "RRCC.NRLIB/code.lsp"
+++ |RealRootCharacterizationCategory;AL| treated as if locally SPECIAL
+++ |RealRootCharacterizationCategory;AL| treated as if locally SPECIAL
+++ |RealRootCharacterizationCategory;AL| treated as if locally SPECIAL
+++ |RealRootCharacterizationCategory| compiled, 29 + 24 bytes
+++ |RealRootCharacterizationCategory;CAT| treated as if locally SPECIAL
+++ |RealRootCharacterizationCategory;CAT| treated as if locally SPECIAL
+++ |RealRootCharacterizationCategory;| compiled, 56 + 60 bytes
;; Compilation complete
------------------------------------------------------------------------
   RealRootCharacterizationCategory is now explicitly exposed in frame 
      G82322 
   RealRootCharacterizationCategory will be automatically loaded when 
      needed from RRCC.NRLIB/code

   RCFIELD abbreviates category RealClosedField 
   processing macro definition E ==> OutputForm 
   processing macro definition SUP ==> SparseUnivariatePolynomial 
   processing macro definition OFIELD ==> -- the constructor category 
   processing macro definition PME ==> SparseUnivariatePolynomial $ 
   processing macro definition N ==> NonNegativeInteger 
   processing macro definition PI ==> PositiveInteger 
   processing macro definition RN ==> Fraction Integer 
   processing macro definition Z ==> Integer 
   processing macro definition POLY ==> Polynomial 
   processing macro definition PACK ==> SparseUnivariatePolynomialFunctions2 
------------------------------------------------------------------------
   initializing NRLIB RCFIELD for RealClosedField 
   compiling into NRLIB RCFIELD 

;;;     ***       |RealClosedField| REDEFINED

+++ |RealClosedField| redefined
Time: 0.20 SEC.

   RCFIELD- abbreviates domain RealClosedField& 
------------------------------------------------------------------------
   initializing NRLIB RCFIELD- for RealClosedField& 
   compiling into NRLIB RCFIELD- 
   compiling exported sqrt : S -> S
Time: 0.11 SEC.

   compiling exported sqrt : Fraction Integer -> S
Time: 0.04 SEC.

   compiling exported sqrt : Integer -> S
Time: 0.02 SEC.

   compiling exported characteristic : () -> NonNegativeInteger
      RCFIELD-;characteristic;Nni;4 is replaced by 0 
Time: 0.01 SEC.

   compiling exported rootOf : (SparseUnivariatePolynomial S,PositiveInteger,OutputForm) -> Union(S,failed)
Time: 0.05 SEC.

   compiling exported rootOf : (SparseUnivariatePolynomial S,PositiveInteger) -> Union(S,failed)
Time: 0.11 SEC.

   compiling exported sqrt : (S,NonNegativeInteger) -> S
Time: 0.07 SEC.

   compiling exported ** : (S,Fraction Integer) -> S
Time: 0.04 SEC.

   compiling exported nthRoot : (S,Integer) -> S
Time: 0.02 SEC.

   compiling exported allRootsOf : SparseUnivariatePolynomial Fraction Integer -> List S
Time: 0.10 SEC.

   compiling exported allRootsOf : SparseUnivariatePolynomial Integer -> List S
Time: 0.07 SEC.

   compiling exported allRootsOf : Polynomial S -> List S
Time: 0.05 SEC.

   compiling exported allRootsOf : Polynomial Fraction Integer -> List S
Time: 0.10 SEC.

   compiling exported allRootsOf : Polynomial Integer -> List S
Time: 0.17 SEC.

(time taken in buildFunctor:  10)

;;;     ***       |RealClosedField&| REDEFINED
Time: 0.01 SEC.

 
   Warnings: 
      [1] rootOf: not known that (Ring) is of mode (CATEGORY domain (SIGNATURE sqrt (S (Integer))) (SIGNATURE sqrt (S (Fraction (Integer)))) (SIGNATURE sqrt (S S (NonNegativeInteger))) (SIGNATURE allRootsOf ((List S) (Polynomial (Integer)))) (SIGNATURE allRootsOf ((List S) (Polynomial (Fraction (Integer))))) (SIGNATURE allRootsOf ((List S) (Polynomial S))) (SIGNATURE allRootsOf ((List S) (SparseUnivariatePolynomial (Integer)))) (SIGNATURE allRootsOf ((List S) (SparseUnivariatePolynomial (Fraction (Integer))))) (SIGNATURE allRootsOf ((List S) (SparseUnivariatePolynomial S))) (SIGNATURE rootOf ((Union S failed) (SparseUnivariatePolynomial S) (PositiveInteger))) (SIGNATURE rootOf ((Union S failed) (SparseUnivariatePolynomial S) (PositiveInteger) (OutputForm))) (SIGNATURE ** (S S (Fraction (Integer)))) (SIGNATURE nthRoot (S S (Integer))) (SIGNATURE sqrt (S S)) (SIGNATURE ** (S S (Integer))) (SIGNATURE characteristic ((NonNegativeInteger))) (SIGNATURE ** (S S (NonNegativeInteger)!
 )) (SIGNATURE ** (S S (PositiveInteger))))
      [2] allRootsOf: not known that (Ring) is of mode (CATEGORY domain (SIGNATURE sqrt (S (Integer))) (SIGNATURE sqrt (S (Fraction (Integer)))) (SIGNATURE sqrt (S S (NonNegativeInteger))) (SIGNATURE allRootsOf ((List S) (Polynomial (Integer)))) (SIGNATURE allRootsOf ((List S) (Polynomial (Fraction (Integer))))) (SIGNATURE allRootsOf ((List S) (Polynomial S))) (SIGNATURE allRootsOf ((List S) (SparseUnivariatePolynomial (Integer)))) (SIGNATURE allRootsOf ((List S) (SparseUnivariatePolynomial (Fraction (Integer))))) (SIGNATURE allRootsOf ((List S) (SparseUnivariatePolynomial S))) (SIGNATURE rootOf ((Union S failed) (SparseUnivariatePolynomial S) (PositiveInteger))) (SIGNATURE rootOf ((Union S failed) (SparseUnivariatePolynomial S) (PositiveInteger) (OutputForm))) (SIGNATURE ** (S S (Fraction (Integer)))) (SIGNATURE nthRoot (S S (Integer))) (SIGNATURE sqrt (S S)) (SIGNATURE ** (S S (Integer))) (SIGNATURE characteristic ((NonNegativeInteger))) (SIGNATURE ** (S S (NonNegativeInte!
 ger))) (SIGNATURE ** (S S (PositiveInteger))))
 

   Cumulative Statistics for Constructor RealClosedField&
      Time: 0.97 seconds
 
   finalizing NRLIB RCFIELD- 
   Processing RealClosedField& for Browser database:
--------(mainForm ((Union E failed) $))---------
--------(mainDefiningPolynomial ((Union PME failed) $))---------
--------(mainValue ((Union PME failed) $))---------
--------(rootOf ((Union $ failed) PME PI E))---------
--------(rootOf ((Union $ failed) PME PI))---------
--------(allRootsOf ((List $) PME))---------
--------(allRootsOf ((List $) (SUP RN)))---------
--------(allRootsOf ((List $) (SUP Z)))---------
--------(allRootsOf ((List $) (POLY $)))---------
--------(allRootsOf ((List $) (POLY RN)))---------
--------(allRootsOf ((List $) (POLY Z)))---------
--------(sqrt ($ $ N))---------
--------(sqrt ($ $))---------
--------(sqrt ($ RN))---------
--------(sqrt ($ Z))---------
--------(rename! ($ $ E))---------
--------(rename ($ $ E))---------
--------(approximate (RN $ $))---------
--------constructor---------
;; Compiling file "RCFIELD-.NRLIB/code.lsp"
+++ |RCFIELD-;sqrt;2S;1| compiled, 12 + 12 bytes
+++ |RCFIELD-;sqrt;FS;2| compiled, 21 + 16 bytes
+++ |RCFIELD-;sqrt;IS;3| compiled, 21 + 16 bytes
+++ |RCFIELD-;characteristic;Nni;4| compiled, 2 + 8 bytes
+++ |RCFIELD-;rootOf;SupPiOfU;5| compiled, 46 + 24 bytes
+++ |RCFIELD-;rootOf;SupPiU;6| compiled, 41 + 24 bytes
+++ |RCFIELD-;sqrt;SNniS;7| compiled, 268 + 76 bytes
+++ |RCFIELD-;**;SFS;8| compiled, 55 + 40 bytes
+++ |RCFIELD-;nthRoot;SIS;9| compiled, 71 + 36 bytes
+++ |RCFIELD-;allRootsOf;SupL;10| compiled, 23 + 16 bytes
+++ |RCFIELD-;allRootsOf;SupL;10!0| compiled, 10 + 8 bytes
+++ |RCFIELD-;allRootsOf;SupL;11| compiled, 23 + 16 bytes
+++ |RCFIELD-;allRootsOf;SupL;11!0| compiled, 10 + 8 bytes
+++ |RCFIELD-;allRootsOf;PL;12| compiled, 19 + 12 bytes
+++ |RCFIELD-;allRootsOf;PL;13| compiled, 19 + 12 bytes
+++ |RCFIELD-;allRootsOf;PL;14| compiled, 19 + 12 bytes
+++ |RealClosedField&| compiled, 40 + 36 bytes
;; Compilation complete
------------------------------------------------------------------------
   RealClosedField& is now explicitly exposed in frame G82322 
   RealClosedField& will be automatically loaded when needed from 
      RCFIELD-.NRLIB/code
   finalizing NRLIB RCFIELD 
   Processing RealClosedField for Browser database:
--------(mainForm ((Union E failed) $))---------
--------(mainDefiningPolynomial ((Union PME failed) $))---------
--------(mainValue ((Union PME failed) $))---------
--------(rootOf ((Union $ failed) PME PI E))---------
--------(rootOf ((Union $ failed) PME PI))---------
--------(allRootsOf ((List $) PME))---------
--------(allRootsOf ((List $) (SUP RN)))---------
--------(allRootsOf ((List $) (SUP Z)))---------
--------(allRootsOf ((List $) (POLY $)))---------
--------(allRootsOf ((List $) (POLY RN)))---------
--------(allRootsOf ((List $) (POLY Z)))---------
--------(sqrt ($ $ N))---------
--------(sqrt ($ $))---------
--------(sqrt ($ RN))---------
--------(sqrt ($ Z))---------
--------(rename! ($ $ E))---------
--------(rename ($ $ E))---------
--------(approximate (RN $ $))---------
--------constructor---------
;; Compiling file "RCFIELD.NRLIB/code.lsp"
+++ |RealClosedField;AL| treated as if locally SPECIAL
+++ |RealClosedField;AL| treated as if locally SPECIAL
+++ |RealClosedField| compiled, 8 + 12 bytes
+++ |RealClosedField;| compiled, 71 + 100 bytes
;; Compilation complete
------------------------------------------------------------------------
   RealClosedField is now explicitly exposed in frame G82322 
   RealClosedField will be automatically loaded when needed from 
      RCFIELD.NRLIB/code

   ROIRC abbreviates domain RightOpenIntervalRootCharacterization 
   processing macro definition Z ==> Integer 
   processing macro definition P ==> ThePolDom 
   processing macro definition N ==> NonNegativeInteger 
   processing macro definition B ==> Boolean 
   processing macro definition UTIL ==> RealPolynomialUtilitiesPackage(TheField,ThePolDom) 
   processing macro definition RRCC ==> RealRootCharacterizationCategory 
   processing macro definition O ==> OutputForm 
   processing macro definition TwoPoints ==> Record(low: TheField,high: TheField) 
------------------------------------------------------------------------
   initializing NRLIB ROIRC for RightOpenIntervalRootCharacterization 
   compiling into NRLIB ROIRC 
****** Domain: TheField already in scope
   compiling exported size : $ -> TheField
Time: 0.13 SEC.

   compiling exported relativeApprox : (ThePolDom,$,TheField) -> TheField
Time: 0.15 SEC.

   compiling exported approximate : (ThePolDom,$,TheField) -> TheField
Time: 0.14 SEC.

   compiling local addOne : ThePolDom -> ThePolDom
Time: 0.02 SEC.

   compiling local minus : ThePolDom -> ThePolDom
Time: 0.02 SEC.

   compiling local translate : (ThePolDom,TheField) -> ThePolDom
Time: 0.02 SEC.

   compiling local dilate : (ThePolDom,TheField) -> ThePolDom
Time: 0.02 SEC.

   compiling local evalOne : ThePolDom -> TheField
Time: 0.02 SEC.

   compiling local invert : ThePolDom -> ThePolDom
Time: 0.03 SEC.

   compiling local rootBound : ThePolDom -> TheField
Time: 0.03 SEC.

   compiling local sturmNthRoot : (List ThePolDom,TheField,TheField,NonNegativeInteger,NonNegativeInteger,NonNegativeInteger) -> Union(Record(low: TheField,high: TheField),failed)
Time: 0.15 SEC.

   compiling local sturmIsolate : (List ThePolDom,TheField,TheField,NonNegativeInteger,NonNegativeInteger) -> List Record(low: TheField,high: TheField)
Time: 0.13 SEC.

   compiling local isolate : List ThePolDom -> List Record(low: TheField,high: TheField)
Time: 0.17 SEC.

   compiling exported rootOf : (ThePolDom,PositiveInteger) -> Union($,failed)
Time: 0.18 SEC.

   compiling exported allRootsOf : ThePolDom -> List $
Time: 0.19 SEC.

   compiling local hasVarsl : List TheField -> Boolean
Time: 0.05 SEC.

   compiling local hasVars : ThePolDom -> Boolean
Time: 0.06 SEC.

   compiling exported mightHaveRoots : (ThePolDom,$) -> Boolean
Time: 1.24 SEC.

   compiling exported coerce : $ -> OutputForm
Time: 0.04 SEC.

   compiling exported = : ($,$) -> Boolean
Time: 0.55 SEC.

   compiling local makeChar : (TheField,TheField,ThePolDom) -> $
Time: 0.17 SEC.

   compiling exported definingPolynomial : $ -> ThePolDom
      ROIRC;definingPolynomial;$ThePolDom;22 is replaced by QVELTrootChar2 
Time: 0 SEC.

   compiling local linearRecip : (ThePolDom,$) -> Union(ThePolDom,failed)
Time: 0.60 SEC.

   compiling exported recip : (ThePolDom,$) -> Union(ThePolDom,failed)
Time: 0.84 SEC.

   compiling local linearSign : (ThePolDom,$) -> Integer
Time: 0.37 SEC.

   compiling exported sign : (ThePolDom,$) -> Integer
Time: 0.69 SEC.

   compiling local linearZero? : (TheField,$) -> Boolean
Time: 0.09 SEC.

   compiling exported zero? : (ThePolDom,$) -> Boolean
Time: 0.56 SEC.

   compiling local refine! : $ -> $
Time: 0.17 SEC.

   compiling exported refine : $ -> $
Time: 0.14 SEC.

   compiling exported left : $ -> TheField
      ROIRC;left;$TheField;31 is replaced by QVELTrootChar0 
Time: 0 SEC.

   compiling exported right : $ -> TheField
      ROIRC;right;$TheField;32 is replaced by QVELTrootChar1 
Time: 0 SEC.

   compiling exported middle : $ -> TheField
Time: 0.04 SEC.

(time taken in buildFunctor:  20)

;;;     ***       |RightOpenIntervalRootCharacterization| REDEFINED

;;;     ***       |RightOpenIntervalRootCharacterization| REDEFINED
Time: 0.03 SEC.


   Cumulative Statistics for Constructor RightOpenIntervalRootCharacterization
      Time: 7.04 seconds
 
   finalizing NRLIB ROIRC 
   Processing RightOpenIntervalRootCharacterization for Browser database:
--------(left (TheField $))---------
--------(right (TheField $))---------
--------(size (TheField $))---------
--->/usr/local/axiom/mnt/linuxglibc2.1/../../src/algebra/reclos.spad-->RightOpenIntervalRootCharacterization((size (TheField $))): Improper first word in comments: The
"The size of the isolating interval"
--------(middle (TheField $))---------
--------(refine ($ $))---------
--------(mightHaveRoots (B P $))---------
--------(relativeApprox (TheField P $ TheField))---------
--------constructor---------
;; Compiling file "ROIRC.NRLIB/code.lsp"
+++ |ROIRC;size;$TheField;1| compiled, 16 + 16 bytes
+++ |ROIRC;relativeApprox;ThePolDom$2TheField;2| compiled, 793 + 112 bytes
+++ |ROIRC;approximate;ThePolDom$2TheField;3| compiled, 600 + 104 bytes
+++ |ROIRC;addOne| compiled, 48 + 28 bytes
+++ |ROIRC;minus| compiled, 39 + 24 bytes
+++ |ROIRC;translate| compiled, 50 + 28 bytes
+++ |ROIRC;dilate| compiled, 23 + 16 bytes
+++ |ROIRC;evalOne| compiled, 63 + 20 bytes
+++ |ROIRC;invert| compiled, 45 + 28 bytes
+++ |ROIRC;invert!0| compiled, 31 + 32 bytes
+++ |ROIRC;rootBound| compiled, 70 + 28 bytes
+++ |ROIRC;sturmNthRoot| compiled, 197 + 64 bytes
+++ |ROIRC;sturmIsolate| compiled, 176 + 60 bytes
+++ |ROIRC;isolate| compiled, 178 + 36 bytes
+++ |ROIRC;rootOf;ThePolDomPiU;14| compiled, 359 + 88 bytes
+++ |ROIRC;allRootsOf;ThePolDomL;15| compiled, 167 + 64 bytes
+++ |ROIRC;hasVarsl| compiled, 79 + 28 bytes
+++ |ROIRC;hasVars| compiled, 54 + 40 bytes
+++ |ROIRC;mightHaveRoots;ThePolDom$B;18| compiled, 104 + 56 bytes
+++ |ROIRC;coerce;$Of;19| compiled, 59 + 32 bytes
+++ |ROIRC;=;2$B;20| compiled, 136 + 48 bytes
+++ |ROIRC;makeChar| compiled, 312 + 84 bytes
+++ |ROIRC;definingPolynomial;$ThePolDom;22| compiled, 4 + 8 bytes
+++ |ROIRC;linearRecip| compiled, 378 + 88 bytes
+++ |ROIRC;recip;ThePolDom$U;24| compiled, 535 + 112 bytes
+++ |ROIRC;linearSign| compiled, 250 + 56 bytes
+++ |ROIRC;sign;ThePolDom$I;26| compiled, 498 + 108 bytes
+++ |ROIRC;linearZero?| compiled, 90 + 44 bytes
+++ |ROIRC;zero?;ThePolDom$B;28| compiled, 307 + 92 bytes
+++ |ROIRC;refine!| compiled, 202 + 44 bytes
+++ |ROIRC;refine;2$;30| compiled, 205 + 60 bytes
+++ |ROIRC;left;$TheField;31| compiled, 4 + 8 bytes
+++ |ROIRC;right;$TheField;32| compiled, 4 + 8 bytes
+++ |ROIRC;middle;$TheField;33| compiled, 36 + 28 bytes
+++ |RightOpenIntervalRootCharacterization| compiled, 46 + 44 bytes
+++ |RightOpenIntervalRootCharacterization;| compiled, 97 + 76 bytes
;; Compilation complete
------------------------------------------------------------------------
   RightOpenIntervalRootCharacterization is now explicitly exposed in 
      frame G82322 
   RightOpenIntervalRootCharacterization will be automatically loaded 
      when needed from ROIRC.NRLIB/code

   RECLOS abbreviates domain RealClosure 
   processing macro definition E ==> OutputForm 
   processing macro definition Z ==> Integer 
   processing macro definition SE ==> Symbol 
   processing macro definition B ==> Boolean 
   processing macro definition SUP ==> SparseUnivariatePolynomial $ 
   processing macro definition N ==> PositiveInteger 
   processing macro definition RN ==> Fraction Integer 
   processing macro definition LF ==> ListFunctions2($,PositiveInteger) 
   processing macro definition PME ==> SparseUnivariatePolynomial $ 
   processing macro definition SEG ==> RightOpenIntervalRootCharacterization($,SparseUnivariatePolynomial $) 
------------------------------------------------------------------------
   initializing NRLIB RECLOS for RealClosure 
   compiling into NRLIB RECLOS 
****** Domain: TheField already in scope
****** Domain: TheField already in scope
   compiling exported relativeApprox : ($,$) -> Fraction Integer
Time: 0.31 SEC.

   compiling exported approximate : ($,$) -> Fraction Integer
Time: 0.10 SEC.

   compiling local newElementIfneeded : (RightOpenIntervalRootCharacterization($,SparseUnivariatePolynomial $),OutputForm) -> $
Time: 0.09 SEC.

   compiling exported algebraicOf : (RightOpenIntervalRootCharacterization($,SparseUnivariatePolynomial $),OutputForm) -> $
Time: 0.11 SEC.

   compiling exported rename! : ($,OutputForm) -> $
Time: 0.02 SEC.

   compiling exported rename : ($,OutputForm) -> $
Time: 0.05 SEC.

   compiling exported rootOf : (SparseUnivariatePolynomial $,PositiveInteger) -> Union($,failed)
Time: 0.12 SEC.

   compiling exported allRootsOf : SparseUnivariatePolynomial $ -> List $
Time: 0.22 SEC.

   compiling exported coerce : $ -> $
Time: 0.08 SEC.

   compiling exported positive? : $ -> Boolean
Time: 0.05 SEC.

   compiling exported negative? : $ -> Boolean
Time: 0.03 SEC.

   compiling exported abs : $ -> $
Time: 0.01 SEC.

   compiling exported sign : $ -> Integer
Time: 0.04 SEC.

   compiling exported < : ($,$) -> Boolean
Time: 0 SEC.

   compiling exported = : ($,$) -> Boolean
Time: 0.01 SEC.

   compiling exported mainCharacterization : $ -> Union(RightOpenIntervalRootCharacterization($,SparseUnivariatePolynomial $),failed)
Time: 0.02 SEC.

   compiling exported mainDefiningPolynomial : $ -> Union(SparseUnivariatePolynomial $,failed)
Time: 0.05 SEC.

   compiling exported mainForm : $ -> Union(OutputForm,failed)
Time: 0.01 SEC.

   compiling exported mainValue : $ -> Union(SparseUnivariatePolynomial $,failed)
Time: 0.04 SEC.

   compiling exported coerce : $ -> OutputForm
Time: 0.05 SEC.

   compiling exported inv : $ -> $
Time: 0.02 SEC.

   compiling exported recip : $ -> Union($,failed)
Time: 0.09 SEC.

   compiling exported * : (Integer,$) -> $
Time: 0.13 SEC.

   compiling exported * : (TheField,$) -> $
Time: 0.13 SEC.

   compiling exported * : ($,$) -> $
Time: 0.24 SEC.

   compiling local nonNull : Rec -> $
Time: 0.09 SEC.

   compiling exported zero? : $ -> Boolean
Time: 0.01 SEC.

   compiling exported + : ($,$) -> $
Time: 0.17 SEC.

   compiling exported - : $ -> $
Time: 0.06 SEC.

   compiling exported retractIfCan : $ -> Union(TheField,failed)
Time: 0.02 SEC.

   compiling exported retract : $ -> TheField
Time: 0.03 SEC.

   compiling local lessAlgebraic : $ -> $
Time: 0.16 SEC.

   compiling exported Zero : () -> $
Time: 0 SEC.

   compiling exported One : () -> $
Time: 0 SEC.

   compiling exported coerce : TheField -> $
      RECLOS;coerce;TheField$;35 is replaced by CONS0rn 
Time: 0 SEC.

(time taken in buildFunctor:  170)

;;;     ***       |RealClosure| REDEFINED

;;;     ***       |RealClosure| REDEFINED
Time: 0.38 SEC.


   Cumulative Statistics for Constructor RealClosure
      Time: 2.94 seconds
 
   finalizing NRLIB RECLOS 
   Processing RealClosure for Browser database:
--------(algebraicOf ($ SEG E))---------
--------(mainCharacterization ((Union SEG failed) $))---------
--------(relativeApprox (RN $ $))---------
--------constructor---------
;; Compiling file "RECLOS.NRLIB/code.lsp"
+++ |RECLOS;relativeApprox;2$F;1| compiled, 58 + 28 bytes
+++ |RECLOS;approximate;2$F;2| compiled, 90 + 40 bytes
+++ |RECLOS;newElementIfneeded| compiled, 129 + 60 bytes
+++ |RECLOS;algebraicOf;RoircOf$;4| compiled, 129 + 60 bytes
+++ |RECLOS;rename!;$Of$;5| compiled, 9 + 8 bytes
+++ |RECLOS;rename;$Of$;6| compiled, 40 + 20 bytes
+++ |RECLOS;rootOf;SupPiU;7| compiled, 170 + 72 bytes
+++ |RECLOS;allRootsOf;SupL;8| compiled, 178 + 68 bytes
+++ |RECLOS;coerce;2$;9| compiled, 79 + 32 bytes
+++ |RECLOS;positive?;$B;10| compiled, 42 + 20 bytes
+++ |RECLOS;negative?;$B;11| compiled, 42 + 20 bytes
+++ |RECLOS;abs;2$;12| compiled, 21 + 12 bytes
+++ |RECLOS;sign;$I;13| compiled, 42 + 20 bytes
+++ |RECLOS;<;2$B;14| compiled, 21 + 12 bytes
+++ |RECLOS;=;2$B;15| compiled, 21 + 12 bytes
+++ |RECLOS;mainCharacterization;$U;16| compiled, 23 + 16 bytes
+++ |RECLOS;mainDefiningPolynomial;$U;17| compiled, 32 + 20 bytes
+++ |RECLOS;mainForm;$U;18| compiled, 23 + 20 bytes
+++ |RECLOS;mainValue;$U;19| compiled, 23 + 16 bytes
+++ |RECLOS;coerce;$Of;20| compiled, 63 + 32 bytes
+++ |RECLOS;inv;2$;21| compiled, 28 + 20 bytes
+++ |RECLOS;recip;$U;22| compiled, 129 + 44 bytes
+++ |RECLOS;*;I2$;23| compiled, 125 + 40 bytes
+++ |RECLOS;*;I2$;23!0| compiled, 16 + 16 bytes
+++ |RECLOS;*;TheField2$;24| compiled, 143 + 48 bytes
+++ |RECLOS;*;TheField2$;24!0| compiled, 16 + 16 bytes
+++ |RECLOS;*;3$;25| compiled, 368 + 60 bytes
+++ |RECLOS;*;3$;25!1| compiled, 16 + 16 bytes
+++ |RECLOS;*;3$;25!0| compiled, 16 + 16 bytes
+++ |RECLOS;nonNull| compiled, 70 + 32 bytes
+++ |RECLOS;zero?;$B;27| compiled, 23 + 12 bytes
+++ |RECLOS;+;3$;28| compiled, 435 + 44 bytes
+++ |RECLOS;-;2$;29| compiled, 79 + 32 bytes
+++ |RECLOS;retractIfCan;$U;30| compiled, 70 + 28 bytes
+++ |RECLOS;retract;$TheField;31| compiled, 63 + 28 bytes
+++ |RECLOS;lessAlgebraic| compiled, 128 + 40 bytes
+++ |RECLOS;Zero;$;33| compiled, 12 + 12 bytes
+++ |RECLOS;One;$;34| compiled, 12 + 12 bytes
+++ |RECLOS;coerce;TheField$;35| compiled, 4 + 8 bytes
+++ |RealClosure| compiled, 41 + 40 bytes
+++ |RealClosure;| compiled, 186 + 144 bytes
;; Compilation complete
------------------------------------------------------------------------
   RealClosure is now explicitly exposed in frame G82322 
   RealClosure will be automatically loaded when needed from 
      RECLOS.NRLIB/code

G82322 (1) -> )set message time on
G82322 (1) -> )set message autoload off
G82322 (1) -> )read reclos.input

-- Input generated from RealClosureXmpPage
)clear all
 
   All user variables and function definitions have been cleared.
Ran := RECLOS(FRAC INT)
 

   (1)  RealClosure Fraction Integer
                                                                 Type: Domain
                                                                  Time: 0 sec
--
-- Some simple signs for square roots, these correspond to an extension
-- of degree 16 of the rational numbers.
-- these examples were given to me by J. Abbot
--
fourSquares(a:Ran,b:Ran,c:Ran,d:Ran):Ran == sqrt(a)+sqrt(b) - sqrt(c)-sqrt(d)
 
   Function declaration fourSquares : (RealClosure Fraction Integer,
      RealClosure Fraction Integer,RealClosure Fraction Integer,
      RealClosure Fraction Integer) -> RealClosure Fraction Integer has
      been added to workspace.
                                                                   Type: Void
                                                                  Time: 0 sec
squareDiff1 := fourSquares(73,548,60,586)
 
   Compiling function fourSquares with type (RealClosure Fraction 
      Integer,RealClosure Fraction Integer,RealClosure Fraction Integer
      ,RealClosure Fraction Integer) -> RealClosure Fraction Integer 

           +---+    +--+    +---+    +--+
   (3)  - \|586  - \|60  + \|548  + \|73
                                           Type: RealClosure Fraction Integer
               Time: 0.01 (IN) + 0.01 (EV) + 0.01 (OT) + 0.03 (GC) = 0.06 sec
recip(squareDiff1)
 

   (4)
             +---+          +--+  +--+         +--+ +---+            +---+
     ((54602\|548  + 149602\|73 )\|60  + 49502\|73 \|548  + 9900895)\|586
   + 
             +--+ +---+             +--+            +---+            +--+
     (154702\|73 \|548  + 30941947)\|60  + 10238421\|548  + 28051871\|73
                                Type: Union(RealClosure Fraction Integer,...)
                                                   Time: 0.01 (EV) = 0.01 sec
sign(squareDiff1)
 

   (5)  1
                                                        Type: PositiveInteger
                                                                  Time: 0 sec
squareDiff2 := fourSquares(165,778,86,990)
 

           +---+    +--+    +---+    +---+
   (6)  - \|990  - \|86  + \|778  + \|165
                                           Type: RealClosure Fraction Integer
                                                   Time: 0.01 (EV) = 0.01 sec
recip(squareDiff2)
 

   (7)
                +---+           +---+  +--+          +---+ +---+
       ((556778\|778  + 1209010\|165 )\|86  + 401966\|165 \|778  + 144019431)
    *
        +---+
       \|990
   + 
              +---+ +---+              +--+             +---+             +---+
     (1363822\|165 \|778  + 488640503)\|86  + 162460913\|778  + 352774119\|165
                                Type: Union(RealClosure Fraction Integer,...)
                                                   Time: 0.01 (EV) = 0.01 sec
sign(squareDiff2)
 

   (8)  1
                                                        Type: PositiveInteger
                                                                  Time: 0 sec
squareDiff3 := fourSquares(217,708,226,692)
 

           +---+    +---+    +---+    +---+
   (9)  - \|692  - \|226  + \|708  + \|217
                                           Type: RealClosure Fraction Integer
                                       Time: 0.01 (IN) + 0.01 (EV) = 0.02 sec
recip(squareDiff3)
 

   (10)
               +---+         +---+  +---+         +---+ +---+             +---+
     ((- 34102\|708  - 61598\|217 )\|226  - 34802\|217 \|708  - 13641141)\|692
   + 
              +---+ +---+             +---+            +---+            +---+
     (- 60898\|217 \|708  - 23869841)\|226  - 13486123\|708  - 24359809\|217
                                Type: Union(RealClosure Fraction Integer,...)
                                       Time: 0.01 (EV) + 0.01 (OT) = 0.02 sec
sign(squareDiff3)
 

   (11)  - 1
                                                                Type: Integer
                                                   Time: 0.01 (EV) = 0.01 sec
squareDiff4 := fourSquares(155,836,162,820)
 

            +---+    +---+    +---+    +---+
   (12)  - \|820  - \|162  + \|836  + \|155
                                           Type: RealClosure Fraction Integer
                                                   Time: 0.01 (EV) = 0.01 sec
recip(squareDiff4)
 

   (13)
               +---+         +---+  +---+         +---+ +---+             +---+
     ((- 37078\|836  - 86110\|155 )\|162  - 37906\|155 \|836  - 13645107)\|820
   + 
              +---+ +---+             +---+            +---+            +---+
     (- 85282\|155 \|836  - 30699151)\|162  - 13513901\|836  - 31384703\|155
                                Type: Union(RealClosure Fraction Integer,...)
                                       Time: 0.01 (EV) + 0.01 (OT) = 0.02 sec
sign(squareDiff4)
 

   (14)  - 1
                                                                Type: Integer
                                                                  Time: 0 sec
squareDiff5 := fourSquares(591,772,552,818)
 

            +---+    +---+    +---+    +---+
   (15)  - \|818  - \|552  + \|772  + \|591
                                           Type: RealClosure Fraction Integer
                                                                  Time: 0 sec
recip(squareDiff5)
 

   (16)
             +---+         +---+  +---+         +---+ +---+             +---+
     ((70922\|772  + 81058\|591 )\|552  + 68542\|591 \|772  + 46297673)\|818
   + 
            +---+ +---+             +---+            +---+            +---+
     (83438\|591 \|772  + 56359389)\|552  + 47657051\|772  + 54468081\|591
                                Type: Union(RealClosure Fraction Integer,...)
                                       Time: 0.01 (EV) + 0.01 (OT) = 0.02 sec
sign(squareDiff5)
 

   (17)  1
                                                        Type: PositiveInteger
                                                                  Time: 0 sec
squareDiff6 := fourSquares(434,1053,412,1088)
 

            +----+    +---+    +----+    +---+
   (18)  - \|1088  - \|412  + \|1053  + \|434
                                           Type: RealClosure Fraction Integer
                                                                  Time: 0 sec
recip(squareDiff6)
 

   (19)
                +----+          +---+  +---+          +---+ +----+
       ((115442\|1053  + 179818\|434 )\|412  + 112478\|434 \|1053  + 76037291)
    *
        +----+
       \|1088
   + 
           +---+ +----+              +---+            +----+             +---+
   (182782\|434 \|1053  + 123564147)\|412  + 77290639\|1053  + 120391609\|434
                                Type: Union(RealClosure Fraction Integer,...)
                                                   Time: 0.01 (OT) = 0.01 sec
sign(squareDiff6)
 

   (20)  1
                                                        Type: PositiveInteger
                                                   Time: 0.01 (EV) = 0.01 sec
squareDiff7 := fourSquares(514,1049,446,1152)
 

            +----+    +---+    +----+    +---+
   (21)  - \|1152  - \|446  + \|1049  + \|514
                                           Type: RealClosure Fraction Integer
                                                   Time: 0.01 (EV) = 0.01 sec
recip(squareDiff7)
 

   (22)
                +----+          +---+  +---+          +---+ +----+
       ((349522\|1049  + 499322\|514 )\|446  + 325582\|514 \|1049  + 239072537)
    *
        +----+
       \|1152
   + 
           +---+ +----+              +---+             +----+             +---+
   (523262\|514 \|1049  + 384227549)\|446  + 250534873\|1049  + 357910443\|514
                                Type: Union(RealClosure Fraction Integer,...)
                                                   Time: 0.01 (EV) = 0.01 sec
sign(squareDiff7)
 

   (23)  1
                                                        Type: PositiveInteger
                                                                  Time: 0 sec
squareDiff8 := fourSquares(190,1751,208,1698)
 

            +----+    +---+    +----+    +---+
   (24)  - \|1698  - \|208  + \|1751  + \|190
                                           Type: RealClosure Fraction Integer
                                                   Time: 0.01 (IN) = 0.01 sec
recip(squareDiff8)
 

   (25)
                     +----+          +---+  +---+          +---+ +----+
           (- 214702\|1751  - 651782\|190 )\|208  - 224642\|190 \|1751
         + 
           - 129571901
    *
        +----+
       \|1698
   + 
               +---+ +----+              +---+             +----+
     (- 641842\|190 \|1751  - 370209881)\|208  - 127595865\|1751
   + 
                 +---+
     - 387349387\|190
                                Type: Union(RealClosure Fraction Integer,...)
                                       Time: 0.01 (EV) + 0.01 (OT) = 0.02 sec
sign(squareDiff8)
 

   (26)  - 1
                                                                Type: Integer
                                                   Time: 0.01 (EV) = 0.01 sec
relativeApprox(squareDiff8,10**(-3))::Float
 

   (27)  - 0.2340527771 5937700123 E -10
                                                                  Type: Float
                           Time: 1.38 (EV) + 0.01 (OT) + 0.23 (GC) = 1.62 sec
--
-- test the Renaud Rioboo fix (Jan 2004)
--
allRootsOf((x-2)*(x-3)*(x-4))$RECLOS(FRAC INT)
 

   (28)  [2,3,4]
                                      Type: List RealClosure Fraction Integer
                           Time: 0.01 (EV) + 0.01 (OT) + 0.01 (GC) = 0.03 sec
--
-- check out if the sum of all roots is null
-- example from P.V. Koseleff
--
l := allRootsOf((x**2-2)**2-2)$Ran
 

   (29)  [%A33,%A34,%A35,%A36]
                                      Type: List RealClosure Fraction Integer
                                                   Time: 0.01 (IN) = 0.01 sec
l.1+l.2+l.3+l.4
 

   (30)  0
                                           Type: RealClosure Fraction Integer
                                       Time: 1.10 (EV) + 0.12 (GC) = 1.22 sec
removeDuplicates map(mainDefiningPolynomial,l)
 

           4     2
   (31)  [?  - 4?  + 2]
Type: List Union(SparseUnivariatePolynomial RealClosure Fraction Integer,"failed")
                                       Time: 0.01 (EV) + 0.01 (OT) = 0.02 sec
map(mainCharacterization,l)
 

   (32)  [[- 2,- 1[,[- 1,0[,[0,1[,[1,2[]
Type: List Union(RightOpenIntervalRootCharacterization(RealClosure Fraction Integer,SparseUnivariatePolynomial RealClosure Fraction Integer),"failed")
                                                   Time: 0.01 (OT) = 0.01 sec
[reduce(+,l),reduce(*,l)-2]
 

   (33)  [0,0]
                                      Type: List RealClosure Fraction Integer
                           Time: 1.61 (EV) + 0.02 (OT) + 0.23 (GC) = 1.86 sec
--
-- a more complicated test that involve an extension of degree 256
-- example by prof Kahan at ISSAC'92
--
)cl prop s2 s5 10
 
(s2, s5, s10) := (sqrt(2)$Ran, sqrt(5)$Ran, sqrt(10)$Ran)
 

          +--+
   (34)  \|10
                                           Type: RealClosure Fraction Integer
                                                   Time: 0.01 (IN) = 0.01 sec
eq1:=sqrt(s10+3)*sqrt(s5+2) - sqrt(s10-3)*sqrt(s5-2) = sqrt(10*s2+10)
 

            +---------+ +--------+    +---------+ +--------+   +-----------+
            | +--+      | +-+         | +--+      | +-+        |   +-+
   (35)  - \|\|10  - 3 \|\|5  - 2  + \|\|10  + 3 \|\|5  + 2 = \|10\|2  + 10
                                  Type: Equation RealClosure Fraction Integer
                                       Time: 0.06 (IN) + 0.12 (GC) = 0.18 sec
eq1::Boolean
 

   (36)  true
                                                                Type: Boolean
                                                   Time: 0.16 (IN) = 0.16 sec
--
-- analogous one by [rr]
--
eq2:=sqrt(s5+2)*sqrt(s2+1) - sqrt(s5-2)*sqrt(s2-1) = sqrt(2*s10+2)
 

            +--------+ +--------+    +--------+ +--------+   +----------+
            | +-+      | +-+         | +-+      | +-+        |  +--+
   (37)  - \|\|5  - 2 \|\|2  - 1  + \|\|5  + 2 \|\|2  + 1 = \|2\|10  + 2
                                  Type: Equation RealClosure Fraction Integer
                                       Time: 0.02 (IN) + 0.01 (OT) = 0.03 sec
eq2::Boolean
 

   (38)  true
                                                                Type: Boolean
                                                   Time: 0.15 (IN) = 0.15 sec
--
-- these came from J.M. Arnaudies
--
)cl prop s4 s7 e1 e2
 
s3 := sqrt(3)$Ran
 

          +-+
   (39)  \|3
                                           Type: RealClosure Fraction Integer
                                                                  Time: 0 sec
s7:= sqrt(7)$Ran
 

          +-+
   (40)  \|7
                                           Type: RealClosure Fraction Integer
                                                                  Time: 0 sec
e1 := sqrt(2*s7-3*s3,3)
 

          +-------------+
         3|  +-+     +-+
   (41)  \|2\|7  - 3\|3
                                           Type: RealClosure Fraction Integer
                                                   Time: 0.01 (EV) = 0.01 sec
e2 := sqrt(2*s7+3*s3,3)
 

          +-------------+
         3|  +-+     +-+
   (42)  \|2\|7  + 3\|3
                                           Type: RealClosure Fraction Integer
                                                   Time: 0.01 (OT) = 0.01 sec
-- this should be null
ee1:=e2-e1=s3
 

          +-------------+    +-------------+
         3|  +-+     +-+    3|  +-+     +-+    +-+
   (43)  \|2\|7  + 3\|3   - \|2\|7  - 3\|3  = \|3
                                  Type: Equation RealClosure Fraction Integer
                                                                  Time: 0 sec
ee1::Boolean
 

   (44)  true
                                                                Type: Boolean
                                                                  Time: 0 sec
)cl prop pol r1 alpha beta
 
pol : UP(x,Ran) := x**4+(7/3)*x**2+30*x-(100/3)
 

          4   7  2         100
   (45)  x  + - x  + 30x - ---
              3             3
                   Type: UnivariatePolynomial(x,RealClosure Fraction Integer)
                                       Time: 0.23 (IN) + 0.03 (OT) = 0.26 sec
r1 := sqrt(7633)$Ran
 

          +----+
   (46)  \|7633
                                           Type: RealClosure Fraction Integer
                                                                  Time: 0 sec
-- cubic roots
alpha := sqrt(5*r1-436,3)/3
 

            +--------------+
         1 3|  +----+
   (47)  - \|5\|7633  - 436
         3
                                           Type: RealClosure Fraction Integer
                                                   Time: 0.01 (IN) = 0.01 sec
beta := -sqrt(5*r1+436,3)/3
 

              +--------------+
           1 3|  +----+
   (48)  - - \|5\|7633  + 436
           3
                                           Type: RealClosure Fraction Integer
                                                   Time: 0.01 (IN) = 0.01 sec
-- this should be null
pol.(alpha+beta-1/3)
 

   (49)  0
                                           Type: RealClosure Fraction Integer
                                       Time: 0.02 (IN) + 0.10 (EV) = 0.12 sec
)cl prop qol r2 alpha beta
 
r2 := sqrt(153)$Ran
 

          +---+
   (50)  \|153
                                           Type: RealClosure Fraction Integer
                                                                  Time: 0 sec
-- roots of order 5
alpha2 := sqrt(r2-11,5)
 

          +-----------+
         5| +---+
   (51)  \|\|153  - 11
                                           Type: RealClosure Fraction Integer
                                                   Time: 0.01 (IN) = 0.01 sec
beta2 := -sqrt(r2+11,5)
 

            +-----------+
           5| +---+
   (52)  - \|\|153  + 11
                                           Type: RealClosure Fraction Integer
                                                                  Time: 0 sec
qol : UP(x,Ran) := x**5+10*x**3+20*x+22
 

          5      3
   (53)  x  + 10x  + 20x + 22
                   Type: UnivariatePolynomial(x,RealClosure Fraction Integer)
                                       Time: 0.01 (OT) + 0.12 (GC) = 0.13 sec
qol(alpha2+beta2)
 

   (54)  0
                                           Type: RealClosure Fraction Integer
                                                   Time: 0.54 (EV) = 0.54 sec
dst1:=sqrt(9+4*s2)=1+2*s2
 

          +---------+
          |  +-+         +-+
   (55)  \|4\|2  + 9 = 2\|2  + 1
                                  Type: Equation RealClosure Fraction Integer
                                                                  Time: 0 sec
dst1::Boolean
 

   (56)  true
                                                                Type: Boolean
                                                                  Time: 0 sec
s6:Ran:=sqrt 6
 

          +-+
   (57)  \|6
                                           Type: RealClosure Fraction Integer
                                                                  Time: 0 sec
dst2:=sqrt(5+2*s6)+sqrt(5-2*s6) = 2*s3
 

          +-----------+    +---------+
          |    +-+         |  +-+         +-+
   (58)  \|- 2\|6  + 5  + \|2\|6  + 5 = 2\|3
                                  Type: Equation RealClosure Fraction Integer
                                                   Time: 0.01 (IN) = 0.01 sec
dst2::Boolean
 

   (59)  true
                                                                Type: Boolean
                                                                  Time: 0 sec
s29:Ran:=sqrt 29
 

          +--+
   (60)  \|29
                                           Type: RealClosure Fraction Integer
                                                                  Time: 0 sec
dst4:=sqrt(16-2*s29+2*sqrt(55-10*s29)) = sqrt(22+2*s5)-sqrt(11+2*s29)+s5
 

   (61)
    +--------------------------------+
    |  +--------------+                    +-----------+    +----------+
    |  |     +--+           +--+           |  +--+          |  +-+          +-+
   \|2\|- 10\|29  + 55  - 2\|29  + 16 = - \|2\|29  + 11  + \|2\|5  + 22  + \|5
                                  Type: Equation RealClosure Fraction Integer
                           Time: 0.01 (IN) + 0.01 (EV) + 0.01 (OT) = 0.03 sec
dst4::Boolean
 

   (62)  true
                                                                Type: Boolean
                                       Time: 0.52 (IN) + 0.12 (GC) = 0.64 sec
dst6:=sqrt((112+70*s2)+(46+34*s2)*s5) = (5+4*s2)+(3+s2)*s5
 

          +--------------------------------+
          |    +-+       +-+      +-+           +-+      +-+     +-+
   (63)  \|(34\|2  + 46)\|5  + 70\|2  + 112 = (\|2  + 3)\|5  + 4\|2  + 5
                                  Type: Equation RealClosure Fraction Integer
                                       Time: 0.02 (IN) + 0.01 (EV) = 0.03 sec
dst6::Boolean
 

   (64)  true
                                                                Type: Boolean
                                                                  Time: 0 sec
f3:Ran:=sqrt(3,5)
 

         5+-+
   (65)  \|3
                                           Type: RealClosure Fraction Integer
                                                   Time: 0.01 (IN) = 0.01 sec
f25:Ran:=sqrt(1/25,5)
 

          +--+
          | 1
   (66)  5|--
         \|25
                                           Type: RealClosure Fraction Integer
                                                   Time: 0.01 (IN) = 0.01 sec
f32:Ran:=sqrt(32/5,5)
 

          +--+
          |32
   (67)  5|--
         \| 5
                                           Type: RealClosure Fraction Integer
                                                                  Time: 0 sec
f27:Ran:=sqrt(27/5,5)
 

          +--+
          |27
   (68)  5|--
         \| 5
                                           Type: RealClosure Fraction Integer
                                                   Time: 0.01 (IN) = 0.01 sec
dst5:=sqrt((f32-f27,3)) = f25*(1+f3-f3**2)
 

          +---------------+
          |   +--+    +--+                         +--+
          |   |27     |32       5+-+2   5+-+       | 1
   (69)  3|- 5|--  + 5|--  = (- \|3   + \|3  + 1) 5|--
         \|  \| 5    \| 5                         \|25
                                  Type: Equation RealClosure Fraction Integer
                                       Time: 0.01 (IN) + 0.03 (EV) = 0.04 sec
dst5::Boolean
 

   (70)  true
                                                                Type: Boolean
                           Time: 2.65 (IN) + 0.01 (OT) + 0.65 (GC) = 3.31 sec
G82322 (71) -> )quit
   Please enter y or yes if you really want to leave the interactive 
      environment and return to the operating system:
y


bash-2.05b# 

=================================================================
=== free version
=================================================================


bash-2.05b# axiom
                        AXIOM Computer Algebra System 
                Version of Tuesday July 13, 2004 at 11:21:33 
-----------------------------------------------------------------------------
   Issue )copyright to view copyright notices.
   Issue )summary for a summary of useful system commands.
   Issue )quit to leave AXIOM and return to shell.
-----------------------------------------------------------------------------
 
   Re-reading compress.daase   Re-reading interp.daase
   Re-reading operation.daase
   Re-reading category.daase
   Re-reading browse.daase

"running /root/.axiom.input"
Value = NIL
Value = NIL
(1) -> )set message time on
(1) -> )set message autoload off
(1) -> )co reclos.spad
   Compiling AXIOM source code from file /tmp/old/reclos.spad using old
      system compiler.
   POLUTIL abbreviates package RealPolynomialUtilitiesPackage 
   processing macro definition Z ==> Integer 
   processing macro definition N ==> NonNegativeInteger 
   processing macro definition P ==> ThePols 
------------------------------------------------------------------------
   initializing NRLIB POLUTIL for RealPolynomialUtilitiesPackage 
   compiling into NRLIB POLUTIL 
   compiling exported sturmSequence : ThePols -> List ThePols
Time: 0.12 SEC.

   compiling exported sylvesterSequence : (ThePols,ThePols) -> List ThePols
Time: 0.06 SEC.

****** Domain: TheField already in scope
augmenting TheField: (OrderedRing)
augmenting $: (SIGNATURE $ boundOfCauchy (TheField ThePols))
augmenting $: (SIGNATURE $ sturmVariationsOf ((NonNegativeInteger) (List TheField)))
augmenting $: (SIGNATURE $ lazyVariations ((NonNegativeInteger) (List TheField) (Integer) (Integer)))
   compiling exported boundOfCauchy : ThePols -> TheField
Time: 0.02 SEC.

   compiling exported sturmVariationsOf : List TheField -> NonNegativeInteger
Time: 0.03 SEC.

   compiling exported lazyVariations : (List TheField,Integer,Integer) -> NonNegativeInteger
Time: 0.09 SEC.

****** Domain: TheField already in scope
augmenting TheField: (OrderedRing)
augmenting $: (SIGNATURE $ boundOfCauchy (TheField ThePols))
augmenting $: (SIGNATURE $ sturmVariationsOf ((NonNegativeInteger) (List TheField)))
augmenting $: (SIGNATURE $ lazyVariations ((NonNegativeInteger) (List TheField) (Integer) (Integer)))
(time taken in buildFunctor:  0)

;;;     ***       |RealPolynomialUtilitiesPackage| REDEFINED

;;;     ***       |RealPolynomialUtilitiesPackage| REDEFINED
Time: 0 SEC.

 
   Warnings: 
      [1] sylvesterSequence:  res has no value
      [2] sturmVariationsOf:  ll has no value
 

   Cumulative Statistics for Constructor RealPolynomialUtilitiesPackage
      Time: 0.32 seconds
 
   finalizing NRLIB POLUTIL 
   Processing RealPolynomialUtilitiesPackage for Browser database:
--------(sylvesterSequence ((List ThePols) ThePols ThePols))---------
--------(sturmSequence ((List ThePols) ThePols))---------
--------(boundOfCauchy (TheField ThePols))---------
--------(sturmVariationsOf (N (List TheField)))---------
--------(lazyVariations (N (List TheField) Z Z))---------
--------constructor---------
Compiling /tmp/old/POLUTIL.NRLIB/code.lsp.
End of Pass 1.  
End of Pass 2.  
OPTIMIZE levels: Safety=0 (No runtime error checking), Space=0, Speed=3
Finished compiling /tmp/old/POLUTIL.NRLIB/code.lsp.
------------------------------------------------------------------------
   RealPolynomialUtilitiesPackage is now explicitly exposed in frame 
      initial 
   RealPolynomialUtilitiesPackage will be automatically loaded when 
      needed from /tmp/old/POLUTIL.NRLIB/code

   RRCC abbreviates category RealRootCharacterizationCategory 
   processing macro definition Z ==> Integer 
   processing macro definition N ==> PositiveInteger 
   processing macro definition PUB ==> -- the constructor capsule 
------------------------------------------------------------------------
   initializing NRLIB RRCC for RealRootCharacterizationCategory 
   compiling into NRLIB RRCC 

;;;     ***       |RealRootCharacterizationCategory| REDEFINED
Time: 0.01 SEC.

   RRCC- abbreviates domain RealRootCharacterizationCategory& 
------------------------------------------------------------------------
   initializing NRLIB RRCC- for RealRootCharacterizationCategory& 
   compiling into NRLIB RRCC- 
****** Domain: TheField already in scope
   compiling exported zero? : (ThePols,S) -> Boolean
Time: 0.02 SEC.

   compiling exported negative? : (ThePols,S) -> Boolean
Time: 0.01 SEC.

   compiling exported positive? : (ThePols,S) -> Boolean
Time: 0.02 SEC.

   compiling exported rootOf : (ThePols,PositiveInteger) -> Union(S,failed)
Time: 0.03 SEC.

   compiling exported recip : (ThePols,S) -> Union(ThePols,failed)
Time: 0.06 SEC.

(time taken in buildFunctor:  1)

;;;     ***       |RealRootCharacterizationCategory&| REDEFINED
Time: 0.01 SEC.


   Cumulative Statistics for Constructor RealRootCharacterizationCategory&
      Time: 0.15 seconds
 
   finalizing NRLIB RRCC- 
   Processing RealRootCharacterizationCategory& for Browser database:
--------(sign (Z ThePols $))---------
--------(zero? ((Boolean) ThePols $))---------
--------(negative? ((Boolean) ThePols $))---------
--------(positive? ((Boolean) ThePols $))---------
--------(recip ((Union ThePols failed) ThePols $))---------
--------(definingPolynomial (ThePols $))---------
--------(allRootsOf ((List $) ThePols))---------
--------(rootOf ((Union $ failed) ThePols N))---------
--------(approximate (TheField ThePols $ TheField))---------
--------(relativeApprox (TheField ThePols $ TheField))---------
--------constructor---------
Compiling /tmp/old/RRCC-.NRLIB/code.lsp.
End of Pass 1.  
End of Pass 2.  
OPTIMIZE levels: Safety=0 (No runtime error checking), Space=0, Speed=3
Finished compiling /tmp/old/RRCC-.NRLIB/code.lsp.
------------------------------------------------------------------------
   RealRootCharacterizationCategory& is now explicitly exposed in frame
      initial 
   RealRootCharacterizationCategory& will be automatically loaded when 
      needed from /tmp/old/RRCC-.NRLIB/code
   finalizing NRLIB RRCC 
   Processing RealRootCharacterizationCategory for Browser database:
--------(sign (Z ThePols $))---------
--------(zero? ((Boolean) ThePols $))---------
--------(negative? ((Boolean) ThePols $))---------
--------(positive? ((Boolean) ThePols $))---------
--------(recip ((Union ThePols failed) ThePols $))---------
--------(definingPolynomial (ThePols $))---------
--------(allRootsOf ((List $) ThePols))---------
--------(rootOf ((Union $ failed) ThePols N))---------
--------(approximate (TheField ThePols $ TheField))---------
--------(relativeApprox (TheField ThePols $ TheField))---------
--------constructor---------
Compiling /tmp/old/RRCC.NRLIB/code.lsp.
; (DEFUN |RealRootCharacterizationCategory| ...) is being compiled.
;; The variable |RealRootCharacterizationCategory;AL| is undefined.
;; The compiler will assume this variable is a global.
; (DEFUN |RealRootCharacterizationCategory;| ...) is being compiled.
;; The variable |RealRootCharacterizationCategory;CAT| is undefined.
;; The compiler will assume this variable is a global.
End of Pass 1.  
End of Pass 2.  
OPTIMIZE levels: Safety=0 (No runtime error checking), Space=0, Speed=3
Finished compiling /tmp/old/RRCC.NRLIB/code.lsp.
------------------------------------------------------------------------
   RealRootCharacterizationCategory is now explicitly exposed in frame 
      initial 
   RealRootCharacterizationCategory will be automatically loaded when 
      needed from /tmp/old/RRCC.NRLIB/code

   RCFIELD abbreviates category RealClosedField 
   processing macro definition E ==> OutputForm 
   processing macro definition SUP ==> SparseUnivariatePolynomial 
   processing macro definition OFIELD ==> -- the constructor category 
   processing macro definition PME ==> SparseUnivariatePolynomial $ 
   processing macro definition N ==> NonNegativeInteger 
   processing macro definition PI ==> PositiveInteger 
   processing macro definition RN ==> Fraction Integer 
   processing macro definition Z ==> Integer 
   processing macro definition POLY ==> Polynomial 
   processing macro definition PACK ==> SparseUnivariatePolynomialFunctions2 
------------------------------------------------------------------------
   initializing NRLIB RCFIELD for RealClosedField 
   compiling into NRLIB RCFIELD 

;;;     ***       |RealClosedField| REDEFINED
Time: 0.03 SEC.

   RCFIELD- abbreviates domain RealClosedField& 
------------------------------------------------------------------------
   initializing NRLIB RCFIELD- for RealClosedField& 
   compiling into NRLIB RCFIELD- 
   compiling exported sqrt : S -> S
Time: 0.03 SEC.

   compiling exported sqrt : Fraction Integer -> S
Time: 0.02 SEC.

   compiling exported sqrt : Integer -> S
Time: 0.01 SEC.

   compiling exported characteristic : () -> NonNegativeInteger
      RCFIELD-;characteristic;Nni;4 is replaced by 0 
Time: 0.01 SEC.

   compiling exported rootOf : (SparseUnivariatePolynomial S,PositiveInteger,OutputForm) -> Union(S,failed)
Time: 0.02 SEC.

   compiling exported rootOf : (SparseUnivariatePolynomial S,PositiveInteger) -> Union(S,failed)
Time: 0.05 SEC.

   compiling exported sqrt : (S,NonNegativeInteger) -> S
Time: 0.02 SEC.

   compiling exported ** : (S,Fraction Integer) -> S
Time: 0.01 SEC.

   compiling exported nthRoot : (S,Integer) -> S
Time: 0.01 SEC.

   compiling exported allRootsOf : SparseUnivariatePolynomial Fraction Integer -> List S
Time: 0.05 SEC.

   compiling exported allRootsOf : SparseUnivariatePolynomial Integer -> List S
Time: 0.04 SEC.

   compiling exported allRootsOf : Polynomial S -> List S
Time: 0.08 SEC.

   compiling exported allRootsOf : Polynomial Fraction Integer -> List S
Time: 0.03 SEC.

   compiling exported allRootsOf : Polynomial Integer -> List S
Time: 0.08 SEC.

(time taken in buildFunctor:  0)

;;;     ***       |RealClosedField&| REDEFINED
Time: 0 SEC.

 
   Warnings: 
      [1] rootOf: not known that (Ring) is of mode (CATEGORY domain (SIGNATURE sqrt (S (Integer))) (SIGNATURE sqrt (S (Fraction (Integer)))) (SIGNATURE sqrt (S S (NonNegativeInteger))) (SIGNATURE allRootsOf ((List S) (Polynomial (Integer)))) (SIGNATURE allRootsOf ((List S) (Polynomial (Fraction (Integer))))) (SIGNATURE allRootsOf ((List S) (Polynomial S))) (SIGNATURE allRootsOf ((List S) (SparseUnivariatePolynomial (Integer)))) (SIGNATURE allRootsOf ((List S) (SparseUnivariatePolynomial (Fraction (Integer))))) (SIGNATURE allRootsOf ((List S) (SparseUnivariatePolynomial S))) (SIGNATURE rootOf ((Union S failed) (SparseUnivariatePolynomial S) (PositiveInteger))) (SIGNATURE rootOf ((Union S failed) (SparseUnivariatePolynomial S) (PositiveInteger) (OutputForm))) (SIGNATURE ** (S S (Fraction (Integer)))) (SIGNATURE nthRoot (S S (Integer))) (SIGNATURE sqrt (S S)) (SIGNATURE ** (S S (Integer))) (SIGNATURE characteristic ((NonNegativeInteger))) (SIGNATURE ** (S S (NonNegativeInteger)!
 )) (SIGNATURE ** (S S (PositiveInteger))))
      [2] allRootsOf: not known that (Ring) is of mode (CATEGORY domain (SIGNATURE sqrt (S (Integer))) (SIGNATURE sqrt (S (Fraction (Integer)))) (SIGNATURE sqrt (S S (NonNegativeInteger))) (SIGNATURE allRootsOf ((List S) (Polynomial (Integer)))) (SIGNATURE allRootsOf ((List S) (Polynomial (Fraction (Integer))))) (SIGNATURE allRootsOf ((List S) (Polynomial S))) (SIGNATURE allRootsOf ((List S) (SparseUnivariatePolynomial (Integer)))) (SIGNATURE allRootsOf ((List S) (SparseUnivariatePolynomial (Fraction (Integer))))) (SIGNATURE allRootsOf ((List S) (SparseUnivariatePolynomial S))) (SIGNATURE rootOf ((Union S failed) (SparseUnivariatePolynomial S) (PositiveInteger))) (SIGNATURE rootOf ((Union S failed) (SparseUnivariatePolynomial S) (PositiveInteger) (OutputForm))) (SIGNATURE ** (S S (Fraction (Integer)))) (SIGNATURE nthRoot (S S (Integer))) (SIGNATURE sqrt (S S)) (SIGNATURE ** (S S (Integer))) (SIGNATURE characteristic ((NonNegativeInteger))) (SIGNATURE ** (S S (NonNegativeInte!
 ger))) (SIGNATURE ** (S S (PositiveInteger))))
 

   Cumulative Statistics for Constructor RealClosedField&
      Time: 0.46 seconds
 
   finalizing NRLIB RCFIELD- 
   Processing RealClosedField& for Browser database:
--------(mainForm ((Union E failed) $))---------
--------(mainDefiningPolynomial ((Union PME failed) $))---------
--------(mainValue ((Union PME failed) $))---------
--------(rootOf ((Union $ failed) PME PI E))---------
--------(rootOf ((Union $ failed) PME PI))---------
--------(allRootsOf ((List $) PME))---------
--------(allRootsOf ((List $) (SUP RN)))---------
--------(allRootsOf ((List $) (SUP Z)))---------
--------(allRootsOf ((List $) (POLY $)))---------
--------(allRootsOf ((List $) (POLY RN)))---------
--------(allRootsOf ((List $) (POLY Z)))---------
--------(sqrt ($ $ N))---------
--------(sqrt ($ $))---------
--------(sqrt ($ RN))---------
--------(sqrt ($ Z))---------
--------(rename! ($ $ E))---------
--------(rename ($ $ E))---------
--------(approximate (RN $ $))---------
--------constructor---------
Compiling /tmp/old/RCFIELD-.NRLIB/code.lsp.
; (DEFUN |RCFIELD-;characteristic;Nni;4| ...) is being compiled.
;; Warning: The variable $ is not used.
End of Pass 1.  
End of Pass 2.  
OPTIMIZE levels: Safety=0 (No runtime error checking), Space=0, Speed=3
Finished compiling /tmp/old/RCFIELD-.NRLIB/code.lsp.
------------------------------------------------------------------------
   RealClosedField& is now explicitly exposed in frame initial 
   RealClosedField& will be automatically loaded when needed from 
      /tmp/old/RCFIELD-.NRLIB/code
   finalizing NRLIB RCFIELD 
   Processing RealClosedField for Browser database:
--------(mainForm ((Union E failed) $))---------
--------(mainDefiningPolynomial ((Union PME failed) $))---------
--------(mainValue ((Union PME failed) $))---------
--------(rootOf ((Union $ failed) PME PI E))---------
--------(rootOf ((Union $ failed) PME PI))---------
--------(allRootsOf ((List $) PME))---------
--------(allRootsOf ((List $) (SUP RN)))---------
--------(allRootsOf ((List $) (SUP Z)))---------
--------(allRootsOf ((List $) (POLY $)))---------
--------(allRootsOf ((List $) (POLY RN)))---------
--------(allRootsOf ((List $) (POLY Z)))---------
--------(sqrt ($ $ N))---------
--------(sqrt ($ $))---------
--------(sqrt ($ RN))---------
--------(sqrt ($ Z))---------
--------(rename! ($ $ E))---------
--------(rename ($ $ E))---------
--------(approximate (RN $ $))---------
--------constructor---------
Compiling /tmp/old/RCFIELD.NRLIB/code.lsp.
; (DEFUN |RealClosedField| ...) is being compiled.
;; The variable |RealClosedField;AL| is undefined.
;; The compiler will assume this variable is a global.
;; Warning: The variable #:G6884 is not used.
End of Pass 1.  
End of Pass 2.  
OPTIMIZE levels: Safety=0 (No runtime error checking), Space=0, Speed=3
Finished compiling /tmp/old/RCFIELD.NRLIB/code.lsp.
------------------------------------------------------------------------
   RealClosedField is now explicitly exposed in frame initial 
   RealClosedField will be automatically loaded when needed from 
      /tmp/old/RCFIELD.NRLIB/code

   ROIRC abbreviates domain RightOpenIntervalRootCharacterization 
   processing macro definition Z ==> Integer 
   processing macro definition P ==> ThePolDom 
   processing macro definition N ==> NonNegativeInteger 
   processing macro definition B ==> Boolean 
   processing macro definition UTIL ==> RealPolynomialUtilitiesPackage(TheField,ThePolDom) 
   processing macro definition RRCC ==> RealRootCharacterizationCategory 
   processing macro definition O ==> OutputForm 
   processing macro definition TwoPoints ==> Record(low: TheField,high: TheField) 
------------------------------------------------------------------------
   initializing NRLIB ROIRC for RightOpenIntervalRootCharacterization 
   compiling into NRLIB ROIRC 
****** Domain: TheField already in scope
   compiling exported size : $ -> TheField
Time: 0.04 SEC.

   compiling exported relativeApprox : (ThePolDom,$,TheField) -> TheField
Time: 0.05 SEC.

   compiling exported approximate : (ThePolDom,$,TheField) -> TheField
Time: 0.05 SEC.

   compiling local addOne : ThePolDom -> ThePolDom
Time: 0.01 SEC.

   compiling local minus : ThePolDom -> ThePolDom
Time: 0 SEC.

   compiling local translate : (ThePolDom,TheField) -> ThePolDom
Time: 0.01 SEC.

   compiling local dilate : (ThePolDom,TheField) -> ThePolDom
Time: 0.01 SEC.

   compiling local evalOne : ThePolDom -> TheField
Time: 0 SEC.

   compiling local invert : ThePolDom -> ThePolDom
Time: 0.01 SEC.

   compiling local rootBound : ThePolDom -> TheField
Time: 0.02 SEC.

   compiling local sturmNthRoot : (List ThePolDom,TheField,TheField,NonNegativeInteger,NonNegativeInteger,NonNegativeInteger) -> Union(Record(low: TheField,high: TheField),failed)
Time: 0.06 SEC.

   compiling local sturmIsolate : (List ThePolDom,TheField,TheField,NonNegativeInteger,NonNegativeInteger) -> List Record(low: TheField,high: TheField)
Time: 0.08 SEC.

   compiling local isolate : List ThePolDom -> List Record(low: TheField,high: TheField)
Time: 0.08 SEC.

   compiling exported rootOf : (ThePolDom,PositiveInteger) -> Union($,failed)
Time: 0.12 SEC.

   compiling exported allRootsOf : ThePolDom -> List $
Time: 0.09 SEC.

   compiling local hasVarsl : List TheField -> Boolean
Time: 0.02 SEC.

   compiling local hasVars : ThePolDom -> Boolean
Time: 0.02 SEC.

   compiling exported mightHaveRoots : (ThePolDom,$) -> Boolean
Time: 0.42 SEC.

   compiling exported coerce : $ -> OutputForm
Time: 0.01 SEC.

   compiling exported = : ($,$) -> Boolean
Time: 0.18 SEC.

   compiling local makeChar : (TheField,TheField,ThePolDom) -> $
Time: 0.06 SEC.

   compiling exported definingPolynomial : $ -> ThePolDom
      ROIRC;definingPolynomial;$ThePolDom;22 is replaced by QVELTrootChar2 
Time: 0 SEC.

   compiling local linearRecip : (ThePolDom,$) -> Union(ThePolDom,failed)
Time: 0.20 SEC.

   compiling exported recip : (ThePolDom,$) -> Union(ThePolDom,failed)
Time: 0.38 SEC.

   compiling local linearSign : (ThePolDom,$) -> Integer
Time: 0.13 SEC.

   compiling exported sign : (ThePolDom,$) -> Integer
Time: 0.28 SEC.

   compiling local linearZero? : (TheField,$) -> Boolean
Time: 0.09 SEC.

   compiling exported zero? : (ThePolDom,$) -> Boolean
Time: 0.26 SEC.

   compiling local refine! : $ -> $
Time: 0.07 SEC.

   compiling exported refine : $ -> $
Time: 0.06 SEC.

   compiling exported left : $ -> TheField
      ROIRC;left;$TheField;31 is replaced by QVELTrootChar0 
Time: 0.01 SEC.

   compiling exported right : $ -> TheField
      ROIRC;right;$TheField;32 is replaced by QVELTrootChar1 
Time: 0 SEC.

   compiling exported middle : $ -> TheField
Time: 0.01 SEC.

(time taken in buildFunctor:  0)

;;;     ***       |RightOpenIntervalRootCharacterization| REDEFINED

;;;     ***       |RightOpenIntervalRootCharacterization| REDEFINED
Time: 0.01 SEC.


   Cumulative Statistics for Constructor RightOpenIntervalRootCharacterization
      Time: 2.84 seconds
 
   finalizing NRLIB ROIRC 
   Processing RightOpenIntervalRootCharacterization for Browser database:
--------(left (TheField $))---------
--------(right (TheField $))---------
--------(size (TheField $))---------
--->/tmp/axiom/mnt/linux/../../src/algebra/ROIRC.spad-->RightOpenIntervalRootCharacterization((size (TheField $))): Improper first word in comments: The
"The size of the isolating interval"
--------(middle (TheField $))---------
--------(refine ($ $))---------
--------(mightHaveRoots (B P $))---------
--------(relativeApprox (TheField P $ TheField))---------
--------constructor---------
Compiling /tmp/old/ROIRC.NRLIB/code.lsp.
; (DEFUN |ROIRC;definingPolynomial;$ThePolDom;22| ...) is being compiled.
;; Warning: The variable $ is not used.
; (DEFUN |ROIRC;left;$TheField;31| ...) is being compiled.
;; Warning: The variable $ is not used.
; (DEFUN |ROIRC;right;$TheField;32| ...) is being compiled.
;; Warning: The variable $ is not used.
End of Pass 1.  
End of Pass 2.  
OPTIMIZE levels: Safety=0 (No runtime error checking), Space=0, Speed=3
Finished compiling /tmp/old/ROIRC.NRLIB/code.lsp.
------------------------------------------------------------------------
   RightOpenIntervalRootCharacterization is now explicitly exposed in 
      frame initial 
   RightOpenIntervalRootCharacterization will be automatically loaded 
      when needed from /tmp/old/ROIRC.NRLIB/code

   RECLOS abbreviates domain RealClosure 
   processing macro definition E ==> OutputForm 
   processing macro definition Z ==> Integer 
   processing macro definition SE ==> Symbol 
   processing macro definition B ==> Boolean 
   processing macro definition SUP ==> SparseUnivariatePolynomial $ 
   processing macro definition N ==> PositiveInteger 
   processing macro definition RN ==> Fraction Integer 
   processing macro definition LF ==> ListFunctions2($,PositiveInteger) 
   processing macro definition PME ==> SparseUnivariatePolynomial $ 
   processing macro definition SEG ==> RightOpenIntervalRootCharacterization($,SparseUnivariatePolynomial $) 
------------------------------------------------------------------------
   initializing NRLIB RECLOS for RealClosure 
   compiling into NRLIB RECLOS 
****** Domain: TheField already in scope
****** Domain: TheField already in scope
   compiling exported relativeApprox : ($,$) -> Fraction Integer
Time: 0.13 SEC.

   compiling exported approximate : ($,$) -> Fraction Integer
Time: 0.05 SEC.

   compiling local newElementIfneeded : (RightOpenIntervalRootCharacterization($,SparseUnivariatePolynomial $),OutputForm) -> $
Time: 0.04 SEC.

   compiling exported algebraicOf : (RightOpenIntervalRootCharacterization($,SparseUnivariatePolynomial $),OutputForm) -> $
Time: 0.05 SEC.

   compiling exported rename! : ($,OutputForm) -> $
Time: 0 SEC.

   compiling exported rename : ($,OutputForm) -> $
Time: 0.03 SEC.

   compiling exported rootOf : (SparseUnivariatePolynomial $,PositiveInteger) -> Union($,failed)
Time: 0.13 SEC.

   compiling exported allRootsOf : SparseUnivariatePolynomial $ -> List $
Time: 0.12 SEC.

   compiling exported coerce : $ -> $
Time: 0.03 SEC.

   compiling exported positive? : $ -> Boolean
Time: 0.03 SEC.

   compiling exported negative? : $ -> Boolean
Time: 0.03 SEC.

   compiling exported abs : $ -> $
Time: 0.01 SEC.

   compiling exported sign : $ -> Integer
Time: 0.02 SEC.

   compiling exported < : ($,$) -> Boolean
Time: 0 SEC.

   compiling exported = : ($,$) -> Boolean
Time: 0 SEC.

   compiling exported mainCharacterization : $ -> Union(RightOpenIntervalRootCharacterization($,SparseUnivariatePolynomial $),failed)
Time: 0 SEC.

   compiling exported mainDefiningPolynomial : $ -> Union(SparseUnivariatePolynomial $,failed)
Time: 0.03 SEC.

   compiling exported mainForm : $ -> Union(OutputForm,failed)
Time: 0 SEC.

   compiling exported mainValue : $ -> Union(SparseUnivariatePolynomial $,failed)
Time: 0.03 SEC.

   compiling exported coerce : $ -> OutputForm
Time: 0.03 SEC.

   compiling exported inv : $ -> $
Time: 0.01 SEC.

   compiling exported recip : $ -> Union($,failed)
Time: 0.05 SEC.

   compiling exported * : (Integer,$) -> $
Time: 0.06 SEC.

   compiling exported * : (TheField,$) -> $
Time: 0.08 SEC.

   compiling exported * : ($,$) -> $
Time: 0.16 SEC.

   compiling local nonNull : Rec -> $
Time: 0.05 SEC.

   compiling exported zero? : $ -> Boolean
Time: 0 SEC.

   compiling exported + : ($,$) -> $
Time: 0.07 SEC.

   compiling exported - : $ -> $
Time: 0.03 SEC.

   compiling exported retractIfCan : $ -> Union(TheField,failed)
Time: 0.01 SEC.

   compiling exported retract : $ -> TheField
Time: 0.02 SEC.

   compiling local lessAlgebraic : $ -> $
Time: 0.08 SEC.

   compiling exported Zero : () -> $
Time: 0 SEC.

   compiling exported One : () -> $
Time: 0 SEC.

   compiling exported coerce : TheField -> $
      RECLOS;coerce;TheField$;35 is replaced by CONS0rn 
Time: 0 SEC.

(time taken in buildFunctor:  2)

;;;     ***       |RealClosure| REDEFINED

;;;     ***       |RealClosure| REDEFINED
Time: 0.05 SEC.


   Cumulative Statistics for Constructor RealClosure
      Time: 1.43 seconds
 
   finalizing NRLIB RECLOS 
   Processing RealClosure for Browser database:
--------(algebraicOf ($ SEG E))---------
--------(mainCharacterization ((Union SEG failed) $))---------
--------(relativeApprox (RN $ $))---------
--------constructor---------
Compiling /tmp/old/RECLOS.NRLIB/code.lsp.
; (DEFUN |RECLOS;rename!;$Of$;5| ...) is being compiled.
;; Warning: The variable $ is not used.
; (DEFUN |RECLOS;rename;$Of$;6| ...) is being compiled.
;; Warning: The variable $ is not used.
; (DEFUN |RECLOS;mainCharacterization;$U;16| ...) is being compiled.
;; Warning: The variable $ is not used.
; (DEFUN |RECLOS;mainForm;$U;18| ...) is being compiled.
;; Warning: The variable $ is not used.
; (DEFUN |RECLOS;mainValue;$U;19| ...) is being compiled.
;; Warning: The variable $ is not used.
; (DEFUN |RECLOS;coerce;TheField$;35| ...) is being compiled.
;; Warning: The variable $ is not used.
End of Pass 1.  
End of Pass 2.  
OPTIMIZE levels: Safety=0 (No runtime error checking), Space=0, Speed=3
Finished compiling /tmp/old/RECLOS.NRLIB/code.lsp.
------------------------------------------------------------------------
   RealClosure is now explicitly exposed in frame initial 
   RealClosure will be automatically loaded when needed from 
      /tmp/old/RECLOS.NRLIB/code

(1) -> )read reclos.input

-- Input generated from RealClosureXmpPage
)clear all
 
   All user variables and function definitions have been cleared.
Ran := RECLOS(FRAC INT)
 

   (1)  RealClosure Fraction Integer
                                                                 Type: Domain
                                                                  Time: 0 sec
--
-- Some simple signs for square roots, these correspond to an extension
-- of degree 16 of the rational numbers.
-- these examples were given to me by J. Abbot
--
fourSquares(a:Ran,b:Ran,c:Ran,d:Ran):Ran == sqrt(a)+sqrt(b) - sqrt(c)-sqrt(d)
 
   Function declaration fourSquares : (RealClosure Fraction Integer,
      RealClosure Fraction Integer,RealClosure Fraction Integer,
      RealClosure Fraction Integer) -> RealClosure Fraction Integer has
      been added to workspace.
                                                                   Type: Void
                                                                  Time: 0 sec
squareDiff1 := fourSquares(73,548,60,586)
 
   Compiling function fourSquares with type (RealClosure Fraction 
      Integer,RealClosure Fraction Integer,RealClosure Fraction Integer
      ,RealClosure Fraction Integer) -> RealClosure Fraction Integer 

           +---+    +--+    +---+    +--+
   (3)  - \|586  - \|60  + \|548  + \|73
                                           Type: RealClosure Fraction Integer
                                       Time: 0.02 (EV) + 0.06 (OT) = 0.08 sec
recip(squareDiff1)
 

   (4)
             +---+          +--+  +--+         +--+ +---+            +---+
     ((54602\|548  + 149602\|73 )\|60  + 49502\|73 \|548  + 9900895)\|586
   + 
             +--+ +---+             +--+            +---+            +--+
     (154702\|73 \|548  + 30941947)\|60  + 10238421\|548  + 28051871\|73
                                Type: Union(RealClosure Fraction Integer,...)
                                                                  Time: 0 sec
sign(squareDiff1)
 

   (5)  1
                                                        Type: PositiveInteger
                                                                  Time: 0 sec
squareDiff2 := fourSquares(165,778,86,990)
 

           +---+    +--+    +---+    +---+
   (6)  - \|990  - \|86  + \|778  + \|165
                                           Type: RealClosure Fraction Integer
                                                   Time: 0.01 (EV) = 0.01 sec
recip(squareDiff2)
 

   (7)
                +---+           +---+  +--+          +---+ +---+
       ((556778\|778  + 1209010\|165 )\|86  + 401966\|165 \|778  + 144019431)
    *
        +---+
       \|990
   + 
              +---+ +---+              +--+             +---+             +---+
     (1363822\|165 \|778  + 488640503)\|86  + 162460913\|778  + 352774119\|165
                                Type: Union(RealClosure Fraction Integer,...)
                                                                  Time: 0 sec
sign(squareDiff2)
 

   (8)  1
                                                        Type: PositiveInteger
                                                                  Time: 0 sec
squareDiff3 := fourSquares(217,708,226,692)
 

           +---+    +---+    +---+    +---+
   (9)  - \|692  - \|226  + \|708  + \|217
                                           Type: RealClosure Fraction Integer
                                                                  Time: 0 sec
recip(squareDiff3)
 

   (10)
               +---+         +---+  +---+         +---+ +---+             +---+
     ((- 34102\|708  - 61598\|217 )\|226  - 34802\|217 \|708  - 13641141)\|692
   + 
              +---+ +---+             +---+            +---+            +---+
     (- 60898\|217 \|708  - 23869841)\|226  - 13486123\|708  - 24359809\|217
                                Type: Union(RealClosure Fraction Integer,...)
                                       Time: 0.01 (EV) + 0.06 (GC) = 0.07 sec
sign(squareDiff3)
 

   (11)  - 1
                                                                Type: Integer
                                                   Time: 0.01 (OT) = 0.01 sec
squareDiff4 := fourSquares(155,836,162,820)
 

            +---+    +---+    +---+    +---+
   (12)  - \|820  - \|162  + \|836  + \|155
                                           Type: RealClosure Fraction Integer
                                                   Time: 0.01 (IN) = 0.01 sec
recip(squareDiff4)
 

   (13)
               +---+         +---+  +---+         +---+ +---+             +---+
     ((- 37078\|836  - 86110\|155 )\|162  - 37906\|155 \|836  - 13645107)\|820
   + 
              +---+ +---+             +---+            +---+            +---+
     (- 85282\|155 \|836  - 30699151)\|162  - 13513901\|836  - 31384703\|155
                                Type: Union(RealClosure Fraction Integer,...)
                                                   Time: 0.01 (OT) = 0.01 sec
sign(squareDiff4)
 

   (14)  - 1
                                                                Type: Integer
                                                                  Time: 0 sec
squareDiff5 := fourSquares(591,772,552,818)
 

            +---+    +---+    +---+    +---+
   (15)  - \|818  - \|552  + \|772  + \|591
                                           Type: RealClosure Fraction Integer
                                                                  Time: 0 sec
recip(squareDiff5)
 

   (16)
             +---+         +---+  +---+         +---+ +---+             +---+
     ((70922\|772  + 81058\|591 )\|552  + 68542\|591 \|772  + 46297673)\|818
   + 
            +---+ +---+             +---+            +---+            +---+
     (83438\|591 \|772  + 56359389)\|552  + 47657051\|772  + 54468081\|591
                                Type: Union(RealClosure Fraction Integer,...)
                                                                  Time: 0 sec
sign(squareDiff5)
 

   (17)  1
                                                        Type: PositiveInteger
                                                                  Time: 0 sec
squareDiff6 := fourSquares(434,1053,412,1088)
 

            +----+    +---+    +----+    +---+
   (18)  - \|1088  - \|412  + \|1053  + \|434
                                           Type: RealClosure Fraction Integer
                                                                  Time: 0 sec
recip(squareDiff6)
 

   (19)
                +----+          +---+  +---+          +---+ +----+
       ((115442\|1053  + 179818\|434 )\|412  + 112478\|434 \|1053  + 76037291)
    *
        +----+
       \|1088
   + 
           +---+ +----+              +---+            +----+             +---+
   (182782\|434 \|1053  + 123564147)\|412  + 77290639\|1053  + 120391609\|434
                                Type: Union(RealClosure Fraction Integer,...)
                                                   Time: 0.06 (GC) = 0.06 sec
sign(squareDiff6)
 

   (20)  1
                                                        Type: PositiveInteger
                                                                  Time: 0 sec
squareDiff7 := fourSquares(514,1049,446,1152)
 

            +----+    +---+    +----+    +---+
   (21)  - \|1152  - \|446  + \|1049  + \|514
                                           Type: RealClosure Fraction Integer
                                                                  Time: 0 sec
recip(squareDiff7)
 

   (22)
                +----+          +---+  +---+          +---+ +----+
       ((349522\|1049  + 499322\|514 )\|446  + 325582\|514 \|1049  + 239072537)
    *
        +----+
       \|1152
   + 
           +---+ +----+              +---+             +----+             +---+
   (523262\|514 \|1049  + 384227549)\|446  + 250534873\|1049  + 357910443\|514
                                Type: Union(RealClosure Fraction Integer,...)
                                                                  Time: 0 sec
sign(squareDiff7)
 

   (23)  1
                                                        Type: PositiveInteger
                                                   Time: 0.01 (EV) = 0.01 sec
squareDiff8 := fourSquares(190,1751,208,1698)
 

            +----+    +---+    +----+    +---+
   (24)  - \|1698  - \|208  + \|1751  + \|190
                                           Type: RealClosure Fraction Integer
                                                                  Time: 0 sec
recip(squareDiff8)
 

   (25)
                     +----+          +---+  +---+          +---+ +----+
           (- 214702\|1751  - 651782\|190 )\|208  - 224642\|190 \|1751
         + 
           - 129571901
    *
        +----+
       \|1698
   + 
               +---+ +----+              +---+             +----+
     (- 641842\|190 \|1751  - 370209881)\|208  - 127595865\|1751
   + 
                 +---+
     - 387349387\|190
                                Type: Union(RealClosure Fraction Integer,...)
                                                                  Time: 0 sec
sign(squareDiff8)
 

   (26)  - 1
                                                                Type: Integer
                                                                  Time: 0 sec
relativeApprox(squareDiff8,10**(-3))::Float
 

   (27)  - 0.2340527771 5937700123 E -10
                                                                  Type: Float
               Time: 0.01 (IN) + 1.48 (EV) + 0.01 (OT) + 1.26 (GC) = 2.76 sec
--
-- test the Renaud Rioboo fix (Jan 2004)
--
allRootsOf((x-2)*(x-3)*(x-4))$RECLOS(FRAC INT)
 

   (28)  [2,3,4]
                                      Type: List RealClosure Fraction Integer
                                       Time: 0.01 (EV) + 0.02 (OT) = 0.03 sec
--
-- check out if the sum of all roots is null
-- example from P.V. Koseleff
--
l := allRootsOf((x**2-2)**2-2)$Ran
 

   (29)  [%A33,%A34,%A35,%A36]
                                      Type: List RealClosure Fraction Integer
                                                   Time: 0.01 (EV) = 0.01 sec
l.1+l.2+l.3+l.4
 

   (30)  0
                                           Type: RealClosure Fraction Integer
                           Time: 0.47 (EV) + 0.01 (OT) + 0.20 (GC) = 0.68 sec
removeDuplicates map(mainDefiningPolynomial,l)
 

           4     2
   (31)  [?  - 4?  + 2]
Type: List Union(SparseUnivariatePolynomial RealClosure Fraction Integer,"failed")
                                                   Time: 0.01 (OT) = 0.01 sec
map(mainCharacterization,l)
 

   (32)  [[- 2,- 1[,[- 1,0[,[0,1[,[1,2[]
Type: List Union(RightOpenIntervalRootCharacterization(RealClosure Fraction Integer,SparseUnivariatePolynomial RealClosure Fraction Integer),"failed")
                                                   Time: 0.01 (OT) = 0.01 sec
[reduce(+,l),reduce(*,l)-2]
 

   (33)  [0,0]
                                      Type: List RealClosure Fraction Integer
                           Time: 0.66 (EV) + 0.01 (OT) + 0.29 (GC) = 0.96 sec
--
-- a more complicated test that involve an extension of degree 256
-- example by prof Kahan at ISSAC'92
--
)cl prop s2 s5 10
 
(s2, s5, s10) := (sqrt(2)$Ran, sqrt(5)$Ran, sqrt(10)$Ran)
 

          +--+
   (34)  \|10
                                           Type: RealClosure Fraction Integer
                                                   Time: 0.01 (OT) = 0.01 sec
eq1:=sqrt(s10+3)*sqrt(s5+2) - sqrt(s10-3)*sqrt(s5-2) = sqrt(10*s2+10)
 

            +---------+ +--------+    +---------+ +--------+   +-----------+
            | +--+      | +-+         | +--+      | +-+        |   +-+
   (35)  - \|\|10  - 3 \|\|5  - 2  + \|\|10  + 3 \|\|5  + 2 = \|10\|2  + 10
                                  Type: Equation RealClosure Fraction Integer
                                       Time: 0.01 (IN) + 0.02 (OT) = 0.03 sec
eq1::Boolean
 

   (36)  true
                                                                Type: Boolean
                                       Time: 0.09 (IN) + 0.01 (OT) = 0.10 sec
--
-- analogous one by [rr]
--
eq2:=sqrt(s5+2)*sqrt(s2+1) - sqrt(s5-2)*sqrt(s2-1) = sqrt(2*s10+2)
 

            +--------+ +--------+    +--------+ +--------+   +----------+
            | +-+      | +-+         | +-+      | +-+        |  +--+
   (37)  - \|\|5  - 2 \|\|2  - 1  + \|\|5  + 2 \|\|2  + 1 = \|2\|10  + 2
                                  Type: Equation RealClosure Fraction Integer
                                                   Time: 0.01 (IN) = 0.01 sec
eq2::Boolean
 

   (38)  true
                                                                Type: Boolean
                                       Time: 0.06 (IN) + 0.08 (GC) = 0.14 sec
--
-- these came from J.M. Arnaudies
--
)cl prop s4 s7 e1 e2
 
s3 := sqrt(3)$Ran
 

          +-+
   (39)  \|3
                                           Type: RealClosure Fraction Integer
                                                                  Time: 0 sec
s7:= sqrt(7)$Ran
 

          +-+
   (40)  \|7
                                           Type: RealClosure Fraction Integer
                                                                  Time: 0 sec
e1 := sqrt(2*s7-3*s3,3)
 

          +-------------+
         3|  +-+     +-+
   (41)  \|2\|7  - 3\|3
                                           Type: RealClosure Fraction Integer
                                                                  Time: 0 sec
e2 := sqrt(2*s7+3*s3,3)
 

          +-------------+
         3|  +-+     +-+
   (42)  \|2\|7  + 3\|3
                                           Type: RealClosure Fraction Integer
                                                                  Time: 0 sec
-- this should be null
ee1:=e2-e1=s3
 

          +-------------+    +-------------+
         3|  +-+     +-+    3|  +-+     +-+    +-+
   (43)  \|2\|7  + 3\|3   - \|2\|7  - 3\|3  = \|3
                                  Type: Equation RealClosure Fraction Integer
                                                                  Time: 0 sec
ee1::Boolean
 

   (44)  true
                                                                Type: Boolean
                                                   Time: 0.01 (IN) = 0.01 sec
)cl prop pol r1 alpha beta
 
pol : UP(x,Ran) := x**4+(7/3)*x**2+30*x-(100/3)
 

          4   7  2         100
   (45)  x  + - x  + 30x - ---
              3             3
                   Type: UnivariatePolynomial(x,RealClosure Fraction Integer)
                                       Time: 0.08 (IN) + 0.04 (OT) = 0.12 sec
r1 := sqrt(7633)$Ran
 

          +----+
   (46)  \|7633
                                           Type: RealClosure Fraction Integer
                                                                  Time: 0 sec
-- cubic roots
alpha := sqrt(5*r1-436,3)/3
 

            +--------------+
         1 3|  +----+
   (47)  - \|5\|7633  - 436
         3
                                           Type: RealClosure Fraction Integer
                                                   Time: 0.01 (OT) = 0.01 sec
beta := -sqrt(5*r1+436,3)/3
 

              +--------------+
           1 3|  +----+
   (48)  - - \|5\|7633  + 436
           3
                                           Type: RealClosure Fraction Integer
                                                                  Time: 0 sec
-- this should be null
pol.(alpha+beta-1/3)
 

   (49)  0
                                           Type: RealClosure Fraction Integer
                                       Time: 0.01 (IN) + 0.08 (EV) = 0.09 sec
)cl prop qol r2 alpha beta
 
r2 := sqrt(153)$Ran
 

          +---+
   (50)  \|153
                                           Type: RealClosure Fraction Integer
                                                                  Time: 0 sec
-- roots of order 5
alpha2 := sqrt(r2-11,5)
 

          +-----------+
         5| +---+
   (51)  \|\|153  - 11
                                           Type: RealClosure Fraction Integer
                                                                  Time: 0 sec
beta2 := -sqrt(r2+11,5)
 

            +-----------+
           5| +---+
   (52)  - \|\|153  + 11
                                           Type: RealClosure Fraction Integer
                                                   Time: 0.01 (IN) = 0.01 sec
qol : UP(x,Ran) := x**5+10*x**3+20*x+22
 

          5      3
   (53)  x  + 10x  + 20x + 22
                   Type: UnivariatePolynomial(x,RealClosure Fraction Integer)
                                                   Time: 0.01 (IN) = 0.01 sec
qol(alpha2+beta2)
 

   (54)  0
                                           Type: RealClosure Fraction Integer
                                       Time: 0.33 (EV) + 0.22 (GC) = 0.55 sec
dst1:=sqrt(9+4*s2)=1+2*s2
 

          +---------+
          |  +-+         +-+
   (55)  \|4\|2  + 9 = 2\|2  + 1
                                  Type: Equation RealClosure Fraction Integer
                                                   Time: 0.01 (IN) = 0.01 sec
dst1::Boolean
 

   (56)  true
                                                                Type: Boolean
                                                                  Time: 0 sec
s6:Ran:=sqrt 6
 

          +-+
   (57)  \|6
                                           Type: RealClosure Fraction Integer
                                                                  Time: 0 sec
dst2:=sqrt(5+2*s6)+sqrt(5-2*s6) = 2*s3
 

          +-----------+    +---------+
          |    +-+         |  +-+         +-+
   (58)  \|- 2\|6  + 5  + \|2\|6  + 5 = 2\|3
                                  Type: Equation RealClosure Fraction Integer
                                                                  Time: 0 sec
dst2::Boolean
 

   (59)  true
                                                                Type: Boolean
                                                                  Time: 0 sec
s29:Ran:=sqrt 29
 

          +--+
   (60)  \|29
                                           Type: RealClosure Fraction Integer
                                                                  Time: 0 sec
dst4:=sqrt(16-2*s29+2*sqrt(55-10*s29)) = sqrt(22+2*s5)-sqrt(11+2*s29)+s5
 

   (61)
    +--------------------------------+
    |  +--------------+                    +-----------+    +----------+
    |  |     +--+           +--+           |  +--+          |  +-+          +-+
   \|2\|- 10\|29  + 55  - 2\|29  + 16 = - \|2\|29  + 11  + \|2\|5  + 22  + \|5
                                  Type: Equation RealClosure Fraction Integer
                                                   Time: 0.01 (OT) = 0.01 sec
dst4::Boolean
 

   (62)  true
                                                                Type: Boolean
                                       Time: 0.57 (IN) + 0.29 (GC) = 0.86 sec
dst6:=sqrt((112+70*s2)+(46+34*s2)*s5) = (5+4*s2)+(3+s2)*s5
 

          +--------------------------------+
          |    +-+       +-+      +-+           +-+      +-+     +-+
   (63)  \|(34\|2  + 46)\|5  + 70\|2  + 112 = (\|2  + 3)\|5  + 4\|2  + 5
                                  Type: Equation RealClosure Fraction Integer
                                                   Time: 0.01 (EV) = 0.01 sec
dst6::Boolean
 

   (64)  true
                                                                Type: Boolean
                                                   Time: 0.01 (IN) = 0.01 sec
f3:Ran:=sqrt(3,5)
 

         5+-+
   (65)  \|3
                                           Type: RealClosure Fraction Integer
                                                                  Time: 0 sec
f25:Ran:=sqrt(1/25,5)
 

          +--+
          | 1
   (66)  5|--
         \|25
                                           Type: RealClosure Fraction Integer
                                                                  Time: 0 sec
f32:Ran:=sqrt(32/5,5)
 

          +--+
          |32
   (67)  5|--
         \| 5
                                           Type: RealClosure Fraction Integer
                                                                  Time: 0 sec
f27:Ran:=sqrt(27/5,5)
 

          +--+
          |27
   (68)  5|--
         \| 5
                                           Type: RealClosure Fraction Integer
                                                                  Time: 0 sec
dst5:=sqrt((f32-f27,3)) = f25*(1+f3-f3**2)
 

          +---------------+
          |   +--+    +--+                         +--+
          |   |27     |32       5+-+2   5+-+       | 1
   (69)  3|- 5|--  + 5|--  = (- \|3   + \|3  + 1) 5|--
         \|  \| 5    \| 5                         \|25
                                  Type: Equation RealClosure Fraction Integer
                                       Time: 0.01 (EV) + 0.01 (OT) = 0.02 sec
dst5::Boolean
 

   (70)  true
                                                                Type: Boolean
                                       Time: 1.94 (IN) + 0.84 (GC) = 2.78 sec
(71) -> )quit

bash-2.05b# 


\start
Date: Wed, 14 Jul 2004 23:23:47 -0400
From: Tim Daly
To: list
Subject: change

The FAQ file was split out of the README file, per request.

\start
Date: 14 Jul 2004 22:32:04 -0400
From: Camm Maguire
To: Tim Daly
Subject: Foreseeing future build problems....

Greetings!  Just a quick note on an observation I've made in putting
together the latest Debian package.  As you may recall, we are
skipping the database rebuilding step on ia64, alpha, hppa, mips and
mipsel, as we cannot natively relocate objects on these machines yet,
and they therefore use dlopen, which takes up too many file handles in
this step.  Even were this surmounted, another difficulty would arise
-- all the algebra files are compiled with the filename "code.lsp"
before renaming the .o file as appropriate.  This names the lisp
initialization function in each object "init_code", causing a linker
conflict, and results in a failure to find the sought init functions
determined by filename at load time, e.g. init_AHYB, etc.

We do intend to  get native relocation on these machines, but it will
likely take considerable time.  Might it be quicker to rename the
code.lsp before compiling?

\start
Date: Wed, 14 Jul 2004 23:50:04 -0400
From: Tim Daly
To: Camm Maguire
Subject: Re: Foreseeing future build problems....

> We do intend to  get native relocation on these machines, but it will
> likely take considerable time.  Might it be quicker to rename the
> code.lsp before compiling?

I'll look at it.

\start
Date: Thu, 15 Jul 2004 00:30:59 -0400
From: Tim Daly
To: list
Subject: kuipers.input.pamphlet

added to input test cases.
created doc/src/input subdirectory

\start
Date: Thu, 15 Jul 2004 12:50:31 +0200
From: Renaud Rioboo
To: list
Subject: performance issues solved

Dear Axiom lovers,

The issue I had with the version of my Real Closure Package is solved. I was
not using the same sources for the different versions.

The issue came because version 1.1 was released too early with Axiom 2.3 and
still contained problems. When I fixed a bug in January, I fixed it from the
NAG version and not from my version which contains more code.

I have sent Tim the new version. Here is the example I used. It is due to John
Abott.

Ran := RECLOS(FRAC INT)
)se me ti on
a0 := sqrt(2,3)$Ran
a1 := sqrt(-(399063623035 - 316737007504*a0),3)
a2 := sqrt(-(5539 - 92526953*a1),3)
a3 := sqrt(-(5739 - 9473525*a2),3)
a4 := sqrt(-(1 - 1283*a3),3)
a5 := sqrt(-(4579804 - 191560867*a4),3)
a6 := sqrt(-(49400 - 220877349*a5),3)

------------------computation of a5 with Axiom 2.3------------------
                                           Type: RealClosure Fraction Integer
                         Time: 34.60 (EV) + 0.01 (OT) + 1.12 (GC) = 35.73 sec
------------------computation of a5 with Axiom 2.3------------------

and 

------------------computation of a5 with Open Axiom------------------
                                           Type: RealClosure Fraction Integer
                                     Time: 35.60 (EV) + 7.96 (GC) = 43.56 sec
------------------computation of a5 with Open Axiom------------------

Thanks to all of you for your help.

\start
Date: Thu, 15 Jul 2004 09:41:49 -0400
From: Tim Daly
To: Xin Li
Subject: dense is slower than sparse

> could you please give me some suggestion why my DUP is slower than SUP

This is a significant pile of code you sent. You have to hand-optimize
each line rather than copy SUP. It has nothing to do with fixnum
arithmetic. The difference between an SUP and a DUP representation is
the key to speedups.

In general, a dense representation will be slower than a sparse
representation for the simple reason that the dense representation has
more terms. Given good code I'd expect sparse to outperform dense in
almost every case.

If the sparse representation does an O(1) lookup (such as an array
access or hash table) for terms then it should be approximately as
fast as the dense representation in the worst case. This won't be true
in practice because a dense representation can assume the index of the
next term and can use a straight loop to walk terms. Thus a dense
representation can do:

  for i in 0..maxterm (process term i)

whereas a sparse representation must do

  for i in (lookup(term))..(lookup(term)) (process term i)

and thus the lookup speed is vital. Depending on the cost to process
a term this can be a dominant factor (e.g. adding terms) or not (e.g.
computing the integral of the term). 

Find all of the places where terms are accessed and make sure you
are fully using the fact that you know the bounds.

Another cost tradeoff is that a dense representation knows how large
the result must be whereas a sparse representation does not. So memory
allocation can be fast in a dense representation. If you assume worst
case terms in a sparse representation you can do a fast memory allocate,
collect the nonzero terms, and reallocate. By definition it's still
going to be more expensive. Thus a dense representation can do:

   allocate max memory
   compute all the terms

whereas a sparse does

   compute a term
   add it to a list (or whatever rep it uses)

or 
   allocate max memory
   compute the terms
   compute new memory bound
   allocate smaller memory
   copy the results
   deallocate max memory

So, did you find every place that SUP uses dynamic memory allocation
rather than fore-knowledge? 

Sparse representation can also be clever in storing the terms so
that maximum cancellation occurs (e.g. knowing that X=0 means
that you don't have to compute a lot of terms because they vanish).
To use this trick you need to know a lot about the domain and I
don't see SUP using it anywhere.

\start
Date: Thu, 15 Jul 2004 11:02:56 -0400
From: Bill Page
To: list
Subject: FW: [Axiom-mail] Axiom on the Web

-----Original Message-----
From: Bill Page [mailto:Bill Page] 
Sent: Thursday, July 15, 2004 10:46 AM
To: 'Mike Dewar'
Subject: RE: [Axiom-mail] Axiom on the Web


Mike,

Thank you very much for this observation. I am trying to plug such =
security
holes and have just added )lisp, )fin and )spool to the list of disabled
commands. If you try your test again you should see that it fails with a
reasonable error message.

It is a pity that we have to lock out lisp access. I wonder if anyone =
has
done any work on a "secure mode" for lisp?

About performance. This system collects all the Axiom commands embedded =
in a
web page and internally prepares a script that is run by Axiom as a =
batch.
The output is parsed and re-inserted back into the code for the web =
page.
This happens only once when the user clicks Save.

The LaTeX rendering done by the LatexWiki component which calls the
combination of latex+dvips+ghostscript is likewise done only once. =
Moreover
the images that it creates for inclusion in the final web page are =
cached
based on the LaTeX code that created them. These are keep in an "image
repository" so latex et al are never called more than once for each such
construct.

Regards,
Bill Page.

> -----Original Message-----
> From: Mike Dewar [mailto:Mike Dewar]
> Sent: Thursday, July 15, 2004 5:36 AM
> To: Bill Page
> Cc: Mike Dewar
> Subject: Re: [Axiom-mail] Axiom on the Web
> 
> 
> Hi Bill,
> 
> This is very nice, and not as slow as I expected it would be.
> 
> There is a problem with this kind of set-up in that an
> unscrupulous user can get access to your machine via Axiom's 
> underlying Lisp system. Unfortunately its impossible to make 
> the Lisp system completely secure without disabling file I/O 
> which of course stops you opening libraries, databases etc.  
> However you might want to disable ")lisp" in the interpreter 
> and the lisp system command, both of which seem to be working 
> at present, i.e. stop people doing
>   )lisp (system "cat /etc/passwd")
> :-)
> 
> Cheers, Mike.
> 
> On Thu, Jul 15, 2004 at 02:31:41AM -0400, Bill Page wrote:
> > Dear Axiom Users:
> > 
> > Now you can try Axiom online with only a web browser!
> > 
> >   http://page.axiom-developer.org
> > 
> > Use the "wiki" feature to insert Axiom commands into a web
> page.  When
> > you click Save you will see the output generated by Axiom
> displayed as
> > nicely formatted mathematics.
> > 
> ...

\start
Date: Thu, 15 Jul 2004 16:22:10 +0200 (CEST)
From: Bertfried Fauser
To: Bill Page
Subject: page.axiom-developed.org LaTeX broken

Hi Bill,

	on my page at page.axiom-develoer.org the (formerly functioning)
LaTeX doesn work any longer...?

\start
Date: Thu, 15 Jul 2004 12:02:27 -0400
From: Bill Page
To: Bertfried Fauser
Subject: RE: page.axiom-developed.org LaTeX broken

Bertfried,

I just tried your web page at

  http://page.axiom-developer.org/zope/Plone/Members/Bertfried

It still renders properly for me. What error did you get?

Regards,
Bill Page.

> -----Original Message-----
> 
> Hi Bill,
> 
> 	on my page at page.axiom-develoer.org the (formerly 
> functioning) LaTeX doesn work any longer...?
> 
> ciao
> BF.

\start
Date: Thu, 15 Jul 2004 12:08:45 -0400
From: Bill Page
To: Bertfried Fauser
Subject: RE: page.axiom-developed.org LaTeX broken

Bertfried,

Maybe you were talking about your web page on the "test"
version at

  http://test.axiom-developer.org/Members/Bertfried/FrontPage

I just tried it and yes, it did not appear correctly. The
problem was that when I split the original version of the
Axiom portal into two versions - one for general use and
one for testing and development - I forgot that I had to
regenerate any of the previously existing pages.

What I just did was click Edit on this page, make a simple
change that forces LatexWiki to regenerate the page, and
click Save. Now it seems to look ok.

Is it ok for you now (on both page.axiom-developer and
on test.axiom-developer)?

Cheers,
Bill Page.

> -----Original Message-----
> 
> Bertfried,
> 
> I just tried your web page at
> 
>   http://page.axiom-developer.org/zope/Plone/Members/Bertfried
> 
> It still renders properly for me. What error did you get?
> 
> Regards,
> Bill Page.
> 
> > -----Original Message-----

\start
Date: Thu, 15 Jul 2004 16:54:24 +0200 (CEST)
From: Bertfried Fauser
To: Bill Page
Subject: re: page.axiom-developed.org LaTeX broken

On Thu, 15 Jul 2004, Bill Page wrote:

> Is it ok for you now (on both page.axiom-developer and
> on test.axiom-developer)?

Hi Bill,

everything works out now on both locations. Even AXIOM seems to work very
nicely in the sandbox <grin> You will however not be angry seeing me using
my local mashine and AXIOM <grin>

Is axiom available from teh Members/Bertfried  pages too, so that one
could display certain calculations? How can I upload files containing
AXIOM code for such examples?

\start
Date: Thu, 15 Jul 2004 12:38:24 -0400
From: Bill Page
To: Bertfried Fauser
Subject: re: page.axiom-developed.org LaTeX broken

Bertfried,

On Thursday, July 15, 2004 10:54 AM you wrote:
> 
> On Thu, 15 Jul 2004, Bill Page wrote:
> 
> > Is it ok for you now (on both page.axiom-developer and
> > on test.axiom-developer)?
> 
> Hi Bill,
> 
> everything works out now on both locations. Even AXIOM seems 
> to work very nicely in the sandbox <grin> You will however 
> not be angry seeing me using my local machine and AXIOM <grin>

Of course not. That's great.

> 
> Is axiom available from the Members/Bertfried  pages too, so 
> that one could display certain calculations? How can I upload 
> files containing AXIOM code for such examples?
> 

Yes, Axiom is available on all pages that also support LaTeX
(only "wiki pages" with page type ...+Latex)

The simplest way to create a new page would be to first edit
the existing page and add a "wiki word", that is a word that
contains at least two capital letters LikeThis. When you click
Save, the page will be displayed with the word LikeThis? with
a question mark beside it. If you now click on that question
mark, a new page will be created named LikeThis.

Now to add some AXIOM code this page, the simplest way is
just to use cut-and-paste from the Axiom code displayed in
another window. You will have to edit it to include the

  \begin{axiom}
  ...
  \end{axiom}

and any other static LaTeX coding that you want.

Click Save. And that's it (unless there is an error of
course and then you just fix it and try again).

You can also go to "my folders" and if you like create a
new folder for some new work. Then just go to that folder
and Add a new wiki page. Now you have a place for stuff that
is separate from you main home page. And you can add as many
new pages here as you want using the same method as above.

I hope this helps.

\start
Date: Thu, 15 Jul 2004 09:40:51 -0700
From: Bob McElrath
To: Bill Page
Subject: re: page.axiom-developed.org LaTeX broken
Cc: Bertfried Fauser

Sometime in the last few versions I added the following to the top of
the LatexTemplate I distribute:

  %% This file is used as a python printf() string.  As such, the document we are
  %% trying to render is placed at the location of the percent-s below, and any
  %% comments in this file must be preceeded by TWO percent signs.

I'm not so fond of using LatexTemplate as a python printf string, and
would happily entertain other suggestions.

Secondly, when upgrading LatexWiki or ZWiki, one should run the
/upgradeAll method on the site, which will cause all pages to be
re-rendered.  If you get the latex alignment problem that we discussed
fixed, I suggest you delete the contents of the var/LatexWiki directory
(where the png's are), and run /upgradeAll, which will cause LatexWiki
to regenerate its images.

For a single page the method is /clearCache.  Run them like by appending
/upgradeAll or /clearCache to any wiki page like this:

    http://page.axiom-developer.org/zope/Plone/wiki/FrontPage/clearCache
    http://page.axiom-developer.org/zope/Plone/wiki/FrontPage/upgradeAll

Note that upgradeAll may take some time when your wiki becomes large,
especially when rendering lots of latex and axiom expressions!  I hope
to further improve the speed of ZWiki itself in the future.

Bill Page [Bill Page] wrote:
> Bertfried,
> 
> Maybe you were talking about your web page on the "test"
> version at
> 
>   http://test.axiom-developer.org/Members/Bertfried/FrontPage
> 
> I just tried it and yes, it did not appear correctly. The
> problem was that when I split the original version of the
> Axiom portal into two versions - one for general use and
> one for testing and development - I forgot that I had to
> regenerate any of the previously existing pages.
> 
> What I just did was click Edit on this page, make a simple
> change that forces LatexWiki to regenerate the page, and
> click Save. Now it seems to look ok.
> 
> Is it ok for you now (on both page.axiom-developer and
> on test.axiom-developer)?

\start
Date: 15 Jul 2004 16:06:16 -0400
From: Camm Maguire
To: list
Subject: GCL 2.6.3 is released

The following message is a courtesy copy of an article
that has been posted to comp.lang.lisp as well.

The GCL team is happy to announce the release of version 2.6.3, the
latest achievement in the 'stable' series. This release is a minor
modification to version 2.6.2, incorporating corrections to the few
errata discovered immediately after 2.6.2 was released.  From the
changelog:
     
       Correctly parse gcc version strings in gmp3 subconfigure on arm

       Fix variable capture error in dotimes macro

       Better sed separator for LI-CC in unixport/makefile

       Fix segfault in string-match

       vs_top=sup -> (reset-top) where possible in compiler

       Correct room report to show proper percentages when sgc is on

       Fix value stack leak in rare compiled call sequence

       Read in RELOC environment variable if set as default in debian/rules

       Remove local bfd libraries from libs variables as their objects are
       incorporated into libgcl and as the source directory may not be
       available at runtime

       Remove pcl/pcl_gazonk*lsp build-generated files from source
         
For the latest information, capabilities, and status of GCL stable,
please see the 2.6.2 release notes at 

http://www.gnu.org/software/gcl/RELEASE-2.6.2.html

\start
Date: Fri, 16 Jul 2004 00:05:05 -0400
From: Tim Daly
To: Camm Maguire
Subject: Re: GCL 2.6.3 is released

Camm,

which CVS command should I use to get 2.6.3?
does it have a different -r version?

\start
Date: Fri, 16 Jul 2004 00:43:27 -0400
From: Xin Li
To: list
Subject: is there any specification about how to use Lisp

Dear all,

for example,
I can make a 10 element array by using MAKE_-ARRAY(10)$Lisp
but how to specify those arguments?

make-array dimensions &key :element-type :initial-element :initial-contents
:adjustable :fill-pointer :displaced-to :displaced-index-offset

\start
Date: Fri, 16 Jul 2004 10:04:46 +0100
From: Mike Dewar
To: Xin Li
Subject: Re: is there any specification about how to use Lisp operations in AXIOM

You can't provide optional parameters to Lisp functions using $Lisp
because the Axiom interpreter doesn't understand the syntactic meaning
of ":".  You must either provide a Lisp cover function like e.g.:
)lisp (defun myarray (dims in-el) (make-array dims :initial-element in-el))
MYARRAY(10,1)$Lisp
or alternatively try to find an Axiom equivalent.  In this case it is
quite likely that the domain PrimitiveArray has the functionality you
need, for example the result of:
new(10,1)$PrimitiveArray(Integer)
is identical to that of myarray above.

Regards, Mike.

On Fri, Jul 16, 2004 at 12:43:27AM -0400, Xin Li wrote:
> Dear all,
> 
> for example,
> I can make a 10 element array by using MAKE_-ARRAY(10)$Lisp
> but how to specify those arguments?
> 
> make-array dimensions &key :element-type :initial-element :initial-contents
> :adjustable :fill-pointer :displaced-to :displaced-index-offset

\start
Date: Fri, 16 Jul 2004 11:25:20 +0100
From: Nic Doye
To: Mike Dewar
Subject: Re: is there any specification about how to use Lisp operations in AXIOM

Question: Why do people want to call Lisp directly from the interpreter
directly? It seems counter-intuitive to me.

Write a boot function and load it at run time and then use Axiom syntax.

\start
Date: Fri, 16 Jul 2004 09:41:12 -0400
From: Camm Maguire
To: Tim Daly
Subject: GCL 2.6.3 is released

Greetings!  You can either retrieve a tarball from

http://ftp.gnu.org/gnu/gcl/gcl-2.6.3.tar.gz

or via cvs with

export CVS_RSH=ssh
export CVSROOT=:ext:anoncvs@subversions.gnu.org:/cvsroot/gcl
cvs -z9 -q co -d gcl-2.6.3 -r Version_2_6_3 gcl

Please let me know if there are problems.

\start
Date: Fri, 16 Jul 2004 14:45:26 +0100
From: Mike Dewar
To: list
Subject: OpenMath 2 Released

Since there has been some discussion of OpenMath on this list, you may
be interested to know that OpenMath 2 has been released over at
http://www.openmath.org.

\start
Date: 16 Jul 2004 09:52:49 -0400
From: Camm Maguire
To: Tim Daly
Subject: Re: Foreseeing future build problems....

Greetings!  Just a further update.  The multiple filename code.lsp
resulting in the multiple function definition init_code also prevents
the performance rebuild of the system we're currently using in the
Debian package, (i.e. touch *.lisp *.lsp && make, loading the .fn
files this time.)

\start
Date: 19 Jul 2004 12:14:28 -0400
From: Camm Maguire
To: Tim Daly
Subject: Re: efficiency

Greetings!  Just a short note, as I've missed the head of this
thread.  Please bring to my attention any significant performance
deficiencies of open axiom vis a vis the NAG version.  Accompanying
any such by an as compact example as possible is always helpful.

Take care,

Tim Daly writes:

> Renaud,
> 
> I can't reproduce your example.
> Can you post the input file you used?

\start
Date: Mon, 19 Jul 2004 13:05:06 -0400
From: Tim Daly
To: Camm Maguire
Subject: Re: efficiency

Camm,

As I understand the issue the original comparison was flawed.
(Renaud, please correct me if I'm wrong).

There were two versions of the code, one with debugging enabled
and one without. The GCL/Axiom was run with debugging, the NAG
version without.

I performed the same tests using the same source code and the
results are comparable. There was just a minor misunderstanding
about comparing debugging vs non-debugging code. This was cleared
up later.

\start
Date: Mon, 19 Jul 2004 12:41:38 -0400
From: Bill Page
To: Tim Daly
Subject: RE: efficiency
Cc: Camm Maguire

Tim,

On Thursday Renaud refers to a bug and to "a new version" of
the code that he sent to you. Is that new version in the Axiom
CVS?

Regards,
Bill Page.

> -----Original Message-----
> 
> Camm,
> 
> As I understand the issue the original comparison was flawed.
> (Renaud, please correct me if I'm wrong).
> 
> There were two versions of the code, one with debugging enabled
> and one without. The GCL/Axiom was run with debugging, the NAG
> version without.
> 
> I performed the same tests using the same source code and the
> results are comparable. There was just a minor misunderstanding
> about comparing debugging vs non-debugging code. This was cleared
> up later.
> 
> Tim
> 


> From: Renaud Rioboo [mailto:Renaud Rioboo]
> Sent: Thursday, July 15, 2004 6:51 AM
> To: list
> Subject: performance issues solved
> 
> 
> Dear Axiom lovers,
> 
> The issue I had with the version of my Real Closure Package 
> is solved. I was not using the same sources for the different
> versions.
> 
> The issue came because version 1.1 was released too early 
> with Axiom 2.3 and still contained problems. When I fixed a
> bug in January, I fixed it from the NAG version and not from
> my version which contains more code.
> 
> I have sent Tim the new version. Here is the example I used.
> ...

\start
Date: Mon, 19 Jul 2004 13:34:28 -0400
From: Tim Daly
To: Bill Page
Subject: Re: efficiency
Cc: Camm Maguire

checking...

\start
Date: Mon, 19 Jul 2004 15:26:41 -0400
From: Tim Daly
To: Bill Page
Subject: Re: efficiency
Cc: Camm Maguire

Bill,

The new version was in the CVS (new relative to the original NAG code).
However, the CVS did not contain Renaud's latest performance patch.

I've fixed this and am now doing "round trip" testing.
The CVS is updated with the performance patch.

\start
Date: Mon, 19 Jul 2004 15:16:32 -0400
From: Bill Page
To: Tim Daly
Subject: RE: efficiency

Thanks Tim!

> -----Original Message-----
> 
> Bill,
> 
> The new version was in the CVS (new relative to the original 
> NAG code). However, the CVS did not contain Renaud's latest
> performance patch.
> 
> I've fixed this and am now doing "round trip" testing.
> The CVS is updated with the performance patch.

\start
Date: Mon, 19 Jul 2004 19:00:52 +0100
From: Mark Murray
To: list
Subject: Build breakage on FreeBSD with GCL-2.6.3

Hi

I have build breakage with GCL-2.6.3 on FreeBSD (IIRC, its also there
with GCL-2.6.2).

Like this:
Loading /usr/ports/math/axiom/work/axiom-0.0/int/interp/setq.lisp
Finished loading /usr/ports/math/axiom/work/axiom-0.0/int/interp/setq.lisp
Loading /usr/ports/math/axiom/work/axiom-0.0/int/interp/property.lisp
Finished loading /usr/ports/math/axiom/work/axiom-0.0/int/interp/property.lisp
Loading /usr/ports/math/axiom/work/axiom-0.0/int/interp/unlisp.lisp
Finished loading /usr/ports/math/axiom/work/axiom-0.0/int/interp/unlisp.lisp
Loading /usr/ports/math/axiom/work/axiom-0.0/int/interp/foam_l.lisp
Finished loading /usr/ports/math/axiom/work/axiom-0.0/int/interp/foam_l.lisp
Loading /usr/ports/math/axiom/work/axiom-0.0/int/interp/axext_l.lisp
Finished loading /usr/ports/math/axiom/work/axiom-0.0/int/interp/axext_l.lisp

Error: The function COMPILER::MAKE-PROCLAIMS is undefined.
Fast links are on: do (si::use-fast-links nil) for debugging
Error signalled by PROGN.
Backtrace: system:universal-error-handler > evalhook > load > build-depsys > make-depsys > let > let > unwind-protect > progn > lambda > lambda-closure > block > apply > APPLY

Broken at READ.
>>
NIL
>>
"/usr/ports/math/axiom/work/axiom-0.0/obj/freebsd/bin/depsys"
BOOT>>gmake[3]: *** [/usr/ports/math/axiom/work/axiom-0.0/obj/freebsd/bin/depsys] Error 255
gmake[3]: Leaving directory `/usr/ports/math/axiom/work/axiom-0.0/src/interp'
gmake[2]: *** [interpdir] Error 2
gmake[2]: Leaving directory `/usr/ports/math/axiom/work/axiom-0.0/src'
gmake[1]: *** [srcdir] Error 2
gmake[1]: Leaving directory `/usr/ports/math/axiom/work/axiom-0.0'
gmake: *** [all] Error 2
*** Error code 2

Stop in /usr/ports/math/axiom.

Any ideas? I am clueless with Lisp.

\start
Date: Mon, 19 Jul 2004 19:15:16 -0400
From: Tim Daly
To: Mark Murray
Subject: Re: Build breakage on FreeBSD with GCL-2.6.3

Mark,

I'm building the system on gcl-2.6.3 as we speak.

Your version of the build appears to have failed in loading 
obj/linux/bin/makedep.lisp. This is a dynamically created file
which is used to build a new depsys image. The command it is
interpreting looks to be:

(build-depsys 
 (quote 
  ( "/boot/axiom/int/interp/vmlisp.lisp"  
    "/boot/axiom/int/interp/ggreater.lisp"  
    "/boot/axiom/int/interp/hash.lisp"  
    "/boot/axiom/int/interp/bootfuns.lisp"  
    "/boot/axiom/int/interp/union.lisp"  
    "/boot/axiom/int/interp/nlib.lisp"  
    "/boot/axiom/int/interp/macros.lisp"  
    "/boot/axiom/int/interp/comp.lisp"  
    "/boot/axiom/int/interp/spaderror.lisp"  
    "/boot/axiom/int/interp/debug.lisp"  
    "/boot/axiom/int/interp/spad.lisp"  
    "/boot/axiom/int/interp/bits.lisp"  
    "/boot/axiom/int/interp/setq.lisp"  
    "/boot/axiom/int/interp/property.lisp"  
    "/boot/axiom/int/interp/unlisp.lisp"  
    "/boot/axiom/int/interp/foam_l.lisp"  
    "/boot/axiom/int/interp/axext_l.lisp")) 
  "/boot/axiom/mnt/linux" 
  "/boot/axiom/lsp/gcl-2.6.3" 
  "/boot/axiom/src" 
  "/boot/axiom/int" 
  "/boot/axiom/obj" 
  "/boot/axiom/mnt" 
  "linux")

The make-depsys function lives in src/interp/util.lisp.pamphlet

I'll see if it fails here before debugging it further.

\start
Date: 19 Jul 2004 18:51:21 -0400
From: Camm Maguire
To: Mark Murray
Subject: Re: Build breakage on FreeBSD with GCL-2.6.3

Greetings!  Mark, are you still using the axiom build patches to use
external gcl?  If so, they need updating.  In particular,
gcl_collectfn needs to be in the image at an earlier point, which is
the cause of your failure below.

Here is what I'm testing at the moment:

=============================================================================
patch.all
=============================================================================
--- ./src/Makefile.pamphlet.orig	2004-06-27 15:00:46.000000000 +0000
+++ ./src/Makefile.pamphlet	2004-07-05 15:56:03.000000000 +0000
@@ -24,8 +24,11 @@
 
 <<environment>>=
 SETUP=scriptsdir libdir
-DIRS=bootdir interpdir sharedir algebradir inputdir etcdir clefdir docdir \
-     graphdir
+ifeq ($(PASS1),)
+DIRS=bootdir interpdir sharedir algebradir inputdir etcdir clefdir docdir graphdir
+else
+DIRS=bootdir interpdir sharedir algebradir #inputdir etcdir clefdir docdir graphdir
+endif
 DOCS=scriptsdocument libdocument ${DIRS:dir=document} 
 CLNS=scriptsclean libclean ${DIRS:dir=clean} 
 
--- ./src/graph/Makefile.pamphlet.orig	2004-06-27 15:00:59.000000000 +0000
+++ ./src/graph/Makefile.pamphlet	2004-07-05 19:53:59.000000000 +0000
@@ -414,7 +414,7 @@
 
 ${DOC}/viewports:
 	@ echo 25 making ${DOC}/viewports from ${IN}/viewports 
-	@ cp -pr ${IN}/viewports ${DOC}
+#	@ cp -pr ${IN}/viewports ${DOC}
 
 <<viewmandir>>
 <<Gdrawsdir>>
=============================================================================
patch.nosave (i386 amd64 m68k sparc s390 powerpc arm)
=============================================================================
--- ./lsp/Makefile.pamphlet.orig	2004-07-01 21:24:34.000000000 +0000
+++ ./lsp/Makefile.pamphlet	2004-07-05 16:09:27.000000000 +0000
@@ -457,15 +457,7 @@
 	@echo 1 building ${LSP} ${GCLVERSION}
 
 gcldir: 
-	@echo 2 building ${GCLVERSION}
-	@tar -zxf ${ZIPS}/${GCLVERSION}.tgz
-<<gcl-2.6.2a-mvdir>>
-<<gcl-2.6.2a.socket.patch>>
-<<gcl-2.6.2a.libspad.patch>>
-<<gcl-2.6.2a.toploop.patch>>
-<<gcl-2.6.2a.tail-recursive.patch>>
-<<gcl-2.6.2a.collectfn.fix>>
-<<gclConfigureMake>>
+	echo '(compiler::link nil "${OUT}/lisp" (format nil "(progn (let ((*load-path* (cons ~S *load-path*))) (compiler::emit-fn t))(when (fboundp (quote si::sgc-on)) (si::sgc-on t))(setq compiler::*default-system-p* t))" si::*system-directory*) "${OBJ}/${SYS}/lib/cfuns-c.o ${OBJ}/${SYS}/lib/sockio-c.o ${OBJ}/${SYS}/lib/libspad.a")' | gcl
 	@echo 13 finished system build on `date` | tee >gcldir
 
 ccldir: ${LSP}/ccl/Makefile
--- ./src/interp/Makefile.pamphlet.orig	2004-06-27 15:01:27.000000000 +0000
+++ ./src/interp/Makefile.pamphlet	2004-07-05 16:16:32.000000000 +0000
@@ -669,8 +669,10 @@
 	@ echo '#+:akcl (setq compiler::*suppress-compiler-notes* t)' >> ${OUT}/makeint.lisp
 	@ echo '#+:akcl (si::gbc-time 0)' >> ${OUT}/makeint.lisp
 	@ echo '#+:akcl (setq si::*system-directory* "${SPAD}/bin/")' >> ${OUT}/makeint.lisp
+#	@ (cd ${OBJ}/${SYS}/bin ; \
+#	  echo '(progn (gbc t) (load "${OUT}/makeint.lisp") (gbc t) (user::spad-save "${SAVESYS}"))' | ${LISPSYS} )
 	@ (cd ${OBJ}/${SYS}/bin ; \
-	  echo '(progn (gbc t) (load "${OUT}/makeint.lisp") (gbc t) (user::spad-save "${SAVESYS}"))' | ${LISPSYS} )
+	  echo '(progn (gbc t) (setq x si::*system-directory*)(load "${OUT}/makeint.lisp") (setq si::*system-directory* x) (unintern (quote x))(gbc t) (user::spad-save "${SAVESYS}"))' | ${LISPSYS} )
 	@ echo 6 ${SAVESYS} created
 	@ cp ${SAVESYS} ${AXIOMSYS}
 	@ echo 6a ${AXIOMSYS} created
=============================================================================
patch.save (ia64 mips mipsel hppa alpha)
=============================================================================
--- ./lsp/Makefile.pamphlet.orig	2004-07-01 21:24:34.000000000 +0000
+++ ./lsp/Makefile.pamphlet	2004-07-05 16:09:27.000000000 +0000
@@ -457,15 +457,7 @@
 	@echo 1 building ${LSP} ${GCLVERSION}
 
 gcldir: 
-	@echo 2 building ${GCLVERSION}
-	@tar -zxf ${ZIPS}/${GCLVERSION}.tgz
-<<gcl-2.6.2a-mvdir>>
-<<gcl-2.6.2a.socket.patch>>
-<<gcl-2.6.2a.libspad.patch>>
-<<gcl-2.6.2a.toploop.patch>>
-<<gcl-2.6.2a.tail-recursive.patch>>
-<<gcl-2.6.2a.collectfn.fix>>
-<<gclConfigureMake>>
+	echo '(compiler::link nil "${OUT}/lisp" (format nil "(progn (let ((*load-path* (cons ~S *load-path*))(si::*load-types* ~S)) (compiler::emit-fn t))(when (fboundp (quote si::sgc-on)) (si::sgc-on t))(setq compiler::*default-system-p* t))" si::*system-directory* (quote (list ".lsp"))) "${OBJ}/${SYS}/lib/cfuns-c.o ${OBJ}/${SYS}/lib/sockio-c.o ${OBJ}/${SYS}/lib/libspad.a")' | gcl
 	@echo 13 finished system build on `date` | tee >gcldir
 
 ccldir: ${LSP}/ccl/Makefile
--- ./src/algebra/Makefile.pamphlet.orig	2004-07-15 02:15:39.000000000 +0000
+++ ./src/algebra/Makefile.pamphlet	2004-07-15 02:16:48.000000000 +0000
@@ -35190,7 +35190,8 @@
 	@ cp ${SRC}/doc/gloss.text ${OUT}
 	@ cp ${SRC}/doc/topics.data ${MID}
 	@ cp ${SRC}/doc/topics.data ${OUT}
-	@ (cd ${MID} ; echo ')lisp (make-databases "" nil)' | ${INTERPSYS} )
+#	@ (cd ${MID} ; echo ')lisp (make-databases "" nil)' | ${INTERPSYS} )
+	@ (cp ${SRC}/../debian/*.daase ${MID})
 	@ cp ${MID}/*.daase ${OUT}
 	@ echo "databases up to date" >${INT}/algebra/dbcomplete
 
--- ./src/boot/Makefile.pamphlet.orig	2004-06-27 15:00:58.000000000 +0000
+++ ./src/boot/Makefile.pamphlet	2004-07-05 16:19:42.000000000 +0000
@@ -1151,7 +1151,8 @@
 expansion. Adding a single quote symbol will break this expansion.
 
 <<environment>>= 
-CMD0=	(progn (mapcar (function (lambda (x) (load  x))) (quote (${OBJS1}))) (system::save-system "${SAVESYS}"))
+CMD0=	(compiler::link (quote (${OBJS1})) "${SAVESYS}" (format nil "(let ((*load-path* (cons ~S *load-path*))(si::*load-types* ~S)) (compiler::emit-fn t)) (when (fboundp (quote si::sgc-on)) (si::sgc-on t)) (setq compiler::*default-system-p* t)" si::*system-directory* (quote  (list ".lsp"))))
+#CMD0=	(progn (mapcar (function (lambda (x) (load  x))) (quote (${OBJS1}))) (system::save-system "${SAVESYS}"))
  
 @
 \subsection{boothdr.lisp \cite{1}}
--- ./src/interp/Makefile.pamphlet.orig	2004-06-27 15:01:27.000000000 +0000
+++ ./src/interp/Makefile.pamphlet	2004-07-05 16:43:38.000000000 +0000
@@ -616,8 +616,31 @@
 	@ echo '(load "${OUT}/c-util")' >> ${OUT}/makedep.lisp
 	@ echo '(unless (probe-file "${OUT}/g-util.${O}") (compile-file "${OUT}/g-util.${LISP}" :output-file "${OUT}/g-util.${O}"))' >> ${OUT}/makedep.lisp
 	@ echo '(load "${OUT}/g-util")' >> ${OUT}/makedep.lisp
+#	@ (cd ${MNT}/${SYS}/bin ; \
+#	   echo '(progn (load "${OUT}/makedep.lisp") (spad-save "${DEPSYS}"))' | ${LISPSYS})
 	@ (cd ${MNT}/${SYS}/bin ; \
-	   echo '(progn (load "${OUT}/makedep.lisp") (spad-save "${DEPSYS}"))' | ${LISPSYS})
+	echo '(progn \
+		(setq si::*collect-binary-modules* t) \
+		(load "${OUT}/makedep.lisp") \
+		(compiler::link \
+			(remove-duplicates si::*binary-modules* :test (quote equal)) \
+			"$(DEPSYS)" \
+			(format nil "\
+				(setq si::*collect-binary-modules* t) \
+				(let ((si::*load-path* (cons ~S si::*load-path*))\
+                                     (si::*load-types* ~S))\
+					(compiler::emit-fn t))\
+				(load \"$(OUT)/makedep.lisp\")\
+				(gbc t)\
+				(when si::*binary-modules* \
+					(error si::*binary-modules*))\
+				(setq si::collect-binary-modules* nil si::*binary-modules* nil)\
+				(gbc t)\
+				(when (fboundp (quote si::sgc-on)) (si::sgc-on t))\
+				(setq compiler::*default-system-p* t)\
+			" si::*system-directory* (quote (list ".lsp")))\
+			"" \
+			nil))' | $(LISPSYS))
 	@ echo 4 ${DEPSYS} created
 
 @
@@ -669,8 +689,36 @@
 	@ echo '#+:akcl (setq compiler::*suppress-compiler-notes* t)' >> ${OUT}/makeint.lisp
 	@ echo '#+:akcl (si::gbc-time 0)' >> ${OUT}/makeint.lisp
 	@ echo '#+:akcl (setq si::*system-directory* "${SPAD}/bin/")' >> ${OUT}/makeint.lisp
+#	@ (cd ${OBJ}/${SYS}/bin ; \
+#	  echo '(progn (gbc t) (load "${OUT}/makeint.lisp") (gbc t) (user::spad-save "${SAVESYS}"))' | ${LISPSYS} )
 	@ (cd ${OBJ}/${SYS}/bin ; \
-	  echo '(progn (gbc t) (load "${OUT}/makeint.lisp") (gbc t) (user::spad-save "${SAVESYS}"))' | ${LISPSYS} )
+	  echo '(progn \
+			(setq si::*collect-binary-modules* t)\
+			(setq x si::*system-directory*)\
+			(load "${OUT}/makeint.lisp")\
+			(setq si::*system-directory* x)\
+			(unintern (quote x))\
+			(compiler::link \
+				(remove-duplicates si::*binary-modules* :test (quote equal))\
+				"$(SAVESYS)" \
+				(format nil "\
+					(let ((si::*load-path* (cons ~S si::*load-path*))\
+                                             (si::*load-types* ~S))\
+						(compiler::emit-fn t))\
+					 (setq si::*collect-binary-modules* t)\
+					 (setq x si::*system-directory*)\
+					 (load \"$(OUT)/makeint.lisp\")\
+					 (setq si::*system-directory* x)\
+					 (unintern (quote x))\
+					 (when si::*binary-modules* \
+						(error si::*binary-modules*))\
+					(setq si::collect-binary-modules* nil si::*binary-modules* nil)\
+					(gbc t)\
+					(when (fboundp (quote si::sgc-on)) (si::sgc-on t))\
+					(setq compiler::*default-system-p* t)\
+				" si::*system-directory* (quote (list ".lsp")))\
+			"$(OBJ)/$(SYS)/lib/sockio-c.o $(OBJ)/$(SYS)/lib/cfuns-c.o $(OBJ)/$(SYS)/lib/libspad.a" \
+			nil))' | $(LISPSYS))
 	@ echo 6 ${SAVESYS} created
 	@ cp ${SAVESYS} ${AXIOMSYS}
 	@ echo 6a ${AXIOMSYS} created
--- src/interp/nlib.lisp.pamphlet~	2004-05-24 22:53:55.000000000 +0000
+++ src/interp/nlib.lisp.pamphlet	2004-07-19 19:59:00.000000000 +0000
@@ -295,7 +295,16 @@
 (defun rpackfile (filespec)
   (setq filespec (make-filename filespec))
   (if (string= (pathname-type filespec) "NRLIB")
-      (recompile-lib-file-if-necessary (concat (namestring filespec) "/code.lsp"))
+      (let* ((base (pathname-name filespec))
+	     (code (concatenate 'string (namestring filespec) "/code.lsp"))
+	     (temp (concatenate 'string (namestring filespec) "/" base ".lsp"))
+	     (o (make-pathname :type "o")))
+	(si::system (format nil "cp ~S ~S" code temp))
+	(recompile-lib-file-if-necessary temp)
+	(si::system (format nil "mv ~S ~S~%" 
+			    (namestring (merge-pathnames o temp))
+			    (namestring (merge-pathnames o code)))))
+    ;(recompile-lib-file-if-necessary (concat (namestring filespec) "/code.lsp"))
   ;; only pack non libraries to avoid lucid file handling problems    
     (let* ((rstream (rdefiostream (list (cons 'file filespec) (cons 'mode 'input))))
 	   (nstream nil)
=============================================================================

Take care,

Mark Murray writes:

> Hi
> 
> I have build breakage with GCL-2.6.3 on FreeBSD (IIRC, its also there
> with GCL-2.6.2).
> 
> Like this:
> Loading /usr/ports/math/axiom/work/axiom-0.0/int/interp/setq.lisp
> Finished loading /usr/ports/math/axiom/work/axiom-0.0/int/interp/setq.lisp
> Loading /usr/ports/math/axiom/work/axiom-0.0/int/interp/property.lisp
> Finished loading /usr/ports/math/axiom/work/axiom-0.0/int/interp/property.lisp
> Loading /usr/ports/math/axiom/work/axiom-0.0/int/interp/unlisp.lisp
> Finished loading /usr/ports/math/axiom/work/axiom-0.0/int/interp/unlisp.lisp
> Loading /usr/ports/math/axiom/work/axiom-0.0/int/interp/foam_l.lisp
> Finished loading /usr/ports/math/axiom/work/axiom-0.0/int/interp/foam_l.lisp
> Loading /usr/ports/math/axiom/work/axiom-0.0/int/interp/axext_l.lisp
> Finished loading /usr/ports/math/axiom/work/axiom-0.0/int/interp/axext_l.lisp
> 
> Error: The function COMPILER::MAKE-PROCLAIMS is undefined.
> Fast links are on: do (si::use-fast-links nil) for debugging
> Error signalled by PROGN.
> Backtrace: system:universal-error-handler > evalhook > load > build-depsys > make-depsys > let > let > unwind-protect > progn > lambda > lambda-closure > block > apply > APPLY
> 
> Broken at READ.
> >>
> NIL
> >>
> "/usr/ports/math/axiom/work/axiom-0.0/obj/freebsd/bin/depsys"
> BOOT>>gmake[3]: *** [/usr/ports/math/axiom/work/axiom-0.0/obj/freebsd/bin/depsys] Error 255
> gmake[3]: Leaving directory `/usr/ports/math/axiom/work/axiom-0.0/src/interp'
> gmake[2]: *** [interpdir] Error 2
> gmake[2]: Leaving directory `/usr/ports/math/axiom/work/axiom-0.0/src'
> gmake[1]: *** [srcdir] Error 2
> gmake[1]: Leaving directory `/usr/ports/math/axiom/work/axiom-0.0'
> gmake: *** [all] Error 2
> *** Error code 2
> 
> Stop in /usr/ports/math/axiom.
> 
> 
> 
> 
> Any ideas? I am clueless with Lisp.

\start
Date: Mon, 19 Jul 2004 19:45:37 -0400
From: Tim Daly
To: Camm Maguire
Subject: Re: Build breakage on FreeBSD with GCL-2.6.3

Camm, Mark,

Perhaps we should make a separate system build name such as
 'external'
to handle these builds.

The design of the axiom makefile build tree is that each system,
such as linux, which requires changes in the makefiles to build
has its own build name. Thus, to build on a solaris system one
sets the AXIOM variable:

  (path)/axiom/mnt/solaris

which causes the top level Makefile to dynamically generate

  Makefile.solaris

These changes for an external lisp should properly be added to
the top level Makefile.pamphlet, a new build name such as 'external'
should be defined. Then the AXIOM variable would be set to:

  (path)/axiom/mnt/external

which causes the top level Makefile to dynamically generate

  Makefile.external

to handle all of the changes. I'll look at your patches and
see if I can incorporate them into the main branch rather than
apply them as patches.

\start
Date: Mon, 19 Jul 2004 20:23:52 -0400
From: Tim Daly
To: Mark Murray
Subject: Re: Build breakage on FreeBSD with GCL-2.6.3

Mark,

My system build has progressed past the make-depsys and is now
successfully compiling the algebra. So whatever the issue you
are have found is, it isn't present here.

Are you building with GCLVERSION=gcl-2.6.2a?

\start
Date: Tue, 20 Jul 2004 08:19:13 +0100
From: Mark Murray
To: Tim Daly
Subject: Re: Build breakage on FreeBSD with GCL-2.6.3 

root writes:
> My system build has progressed past the make-depsys and is now
> successfully compiling the algebra. So whatever the issue you
> are have found is, it isn't present here.
> 
> Are you building with GCLVERSION=gcl-2.6.2a?

No. I'm building with GCLVERSION=gcl-system and the patches that I sent
you last November and a week or two ago.

The "internal" GCL build is completely non-usable for us FreeBSD
folks, sorry!

\start
Date: Tue, 20 Jul 2004 08:16:50 +0100
From: Mark Murray
To: Tim Daly
Subject: Re: Build breakage on FreeBSD with GCL-2.6.3
Cc: Camm Maguire

root writes:
> Perhaps we should make a separate system build name such as
>  'external' to handle these builds.

The patches that I sent you do exactly this! (Except I call it gcl-system)

> The design of the axiom makefile build tree is that each system,
> such as linux, which requires changes in the makefiles to build
> has its own build name. Thus, to build on a solaris system one
> sets the AXIOM variable:
> 
>   (path)/axiom/mnt/solaris
> 
> which causes the top level Makefile to dynamically generate
> 
>   Makefile.solaris
> 
> These changes for an external lisp should properly be added to
> the top level Makefile.pamphlet, a new build name such as 'external'
> should be defined. Then the AXIOM variable would be set to:
> 
>   (path)/axiom/mnt/external
> 
> which causes the top level Makefile to dynamically generate
> 
>   Makefile.external
> 
> to handle all of the changes. I'll look at your patches and
> see if I can incorporate them into the main branch rather than
> apply them as patches.

I sent you patches that do this for Makefile.freebsd.

\start
Date: 20 Jul 2004 14:56:56 -0400
From: Camm Maguire
To: Tim Daly
Subject: Re: Build breakage on FreeBSD with GCL-2.6.3

Greetings!

I think this is a good idea, Tim!  Please let me know if you need my
assistance. 

Take care,

Tim Daly writes:

> Camm, Mark,
> 
> Perhaps we should make a separate system build name such as
>  'external'
> to handle these builds.
> 
> The design of the axiom makefile build tree is that each system,
> such as linux, which requires changes in the makefiles to build
> has its own build name. Thus, to build on a solaris system one
> sets the AXIOM variable:
> 
>   (path)/axiom/mnt/solaris
> 
> which causes the top level Makefile to dynamically generate
> 
>   Makefile.solaris
> 
> These changes for an external lisp should properly be added to
> the top level Makefile.pamphlet, a new build name such as 'external'
> should be defined. Then the AXIOM variable would be set to:
> 
>   (path)/axiom/mnt/external
> 
> which causes the top level Makefile to dynamically generate
> 
>   Makefile.external
> 
> to handle all of the changes. I'll look at your patches and
> see if I can incorporate them into the main branch rather than
> apply them as patches.

\start
Date: Tue, 20 Jul 2004 19:28:55 -0400
From: Bill Page
To: list
Subject: RE: lattice drawing program

Tim,

On Tuesday, July 13, 2004 8:14 AM you wrote:
> 
> Remember the problem of drawing the algebra lattice?
> I've looked into it a bit more...
>

When you get a chance I would really appreciate your opinions
about my first attempts to draw and navigate through Axiom's
algebra lattice (actually, directed graph) using TouchGraph as
part of MathAction, the Axiom Wiki. It is sort of like the old
Axiom hyperdoc (only better, I think :) 

The graph is built automatically by the interface to TouchGraph
based on the Axiom Algebra Database. I hope to get some help
from other people to complete this Project to convert the
algebra pamphlet and spad files to AxiomWiki page format. The
conversion is not difficult but there are a lot of files, so
it is quite time consuming - as you so very well know Tim!

Anyway, so far I have only about 15 of the major Axiom
categories and a few domain. But already you can get a good
idea of how this might work.

Please take a look here:

  http://page.axiom-developer.org/zope/mathaction/withNavigator

This will start the Axiom wiki with a graphical "navigator" in
the top panel. Later you will probably want to increase the size
of the panel containing the graph. You can do this by positioning
the cursor just under the top horizontal slider bar until you
see the cursor change to a up-down arrow. Hold the left mouse
button down and drag the border down to make the top panel bigger.

Double-clicking on a node of the graph in the upper panel will
cause the contents of the lower panel to change. You can also use
a "right-click" on the node to hide, expand, re-center etc. the
node. You can click-and-hold a node to drag it to another part
of the panel. The graph will respond like a network of springs
with the edges stretching and then relaxing into a new shape.
Clicking and holding somewhere else on the upper panel other
than a node will "drag" the whole graph up-down or left right
so that you can pan into a new area. The slider bar at the
bottom of the top panel changes the scale. It takes a little
practice to play with this, but it is rather fun!

Now do a search for say, 'semigroup' by typing that word in the
box at the to right of the lower panel. Pressing Enter will
perform a search for any pages contain the word. Click on the
link labelled 'SemiGroup' under the heading Page Names.

Notice how the graph in the top panel changes - re-centering
on the page that you selected. One of the prominent features
you will notice right away is the Integer node with what seems
like a "pin-cushion" of links surrounding it. Since this is
detail we don't need right now, use a "right-click" on the
Integer node to hide it. Now you will see a reasonable sized
graph centred on the 'SemiGroup' category.  The graph displays
the relationships between the other categorys, domains and
packages "near" SemiGroup.

The links between the nodes are build automatically by parsing
the autoloading messages generated by the Axiom compiler. Some
of the nodes will also be "documentation" nodes as well as the
library code nodes themselves. Documentation nodes can make
reference to different parts of the graph and serve as a
further add to navigating the structure.

Axiom commands that are run using the option

  )set message autoload on

will also generate hyperlink references to the packages,
domains and categorys required by the code. I have also set
up the other parts of the web site

  http://page.axiom-developer.org

so these hyperlink references point back to the nodes in
the Axiom algebra database in the MathAction wiki.

   etc. etc. ...

I've probably already spent too much time having fun playing
with this, so I am interested to hear what other people think.
Will this be a useful tool to help manage the complexity of
Axiom's algebraic structures?

So everyone, please give it a try and give me some feedback...

\start
Date: Tue, 20 Jul 2004 23:49:09 -0400
From: Tim Daly
To: list
Subject: gcl-2.6.3

The system has been updated and verified to work with gcl-2.6.3.

\start
Date: Wed, 21 Jul 2004 12:24:52 -0400
From: Camm Maguire
To: Tim Daly
Subject: FYI: CAS extension design paper mentioning

... can be found here:

http://www.cs.berkeley.edu/~fateman/papers/addformat.pdf

\start
Date: Wed, 21 Jul 2004 11:31:33 -0400
From: Tim Daly
To: Camm Maguire
Subject: fateman paper mentioning axiom

re: fateman paper mentioning axiom

downloaded it. thanks for the pointer.

\start
Date: Thu, 22 Jul 2004 12:33:13 -0400
From: Bill Page
To: Bob McElrath
Subject: re: lattice drawing program

Bob,

I think I now understand how the darcs repository works, so
I have set up two repositories for the AxiomWiki project
that you can get to from here:

  http://page.axiom-developer.org/repository.html

One contains the patches to LatexWiki to include Axiom,
the other contains minor patches to Zwiki.

Please let me know if you can access these or if I have done
something wrong in using darcs.

I am starting to like darcs, so if everything is ok, with
Tim Daly's approval I might setup a repository here also
for Axiom itself. Ideally, I would like to link this Axiom
repository to changes that might be made to Axiom library
code online from the Axiom Wiki.

\start
Date: Thu, 22 Jul 2004 11:39:02 -0400
From: Tim Daly
To: Bill Page, Bob McElrath
Subject: lattice drawing program

Bill,

It's easier to apologize than to get permission :-)
You have blanket permission to set up what you need.
I trust you to act reasonably.
Try to keep me informed :-)

\start
Date: Thu, 22 Jul 2004 09:51:36 -0700
From: Bob McElrath
To: Bill Page
Subject: RE: lattice drawing program

Awesome!  I will be travelling to conferences for the next month, so I'm
not sure I will have time to work on this again until the end of August.
:(

You should let the zwiki folks know of your repository, so they can pull
your patches into the next release.  They are very regular with monthly
releases.

Bill Page [Bill Page] wrote:
> Bob,
> 
> I think I now understand how the darcs repository works, so
> I have set up two repositories for the AxiomWiki project
> that you can get to from here:
> 
>   http://page.axiom-developer.org/repository.html
> 
> One contains the patches to LatexWiki to include Axiom,
> the other contains minor patches to Zwiki.
> 
> Please let me know if you can access these or if I have done
> something wrong in using darcs.
> 
> I am starting to like darcs, so if everything is ok, with
> Tim Daly's approval I might setup a repository here also
> for Axiom itself. Ideally, I would like to link this Axiom
> repository to changes that might be made to Axiom library
> code online from the Axiom Wiki.
> 
> Thanks.

\start
Date: Thu, 22 Jul 2004 18:34:12 -0700
From: Bob McElrath
To: Bill Page
Subject: LatexWiki/Axiom wide output

Axiom can sometimes generate output that is wider than a usual printed
page, generating LatexWiki images that are black on the part that is
wider than the page.  See:

    http://test.axiom-developer.org/Members/mcelrath/Kxaxiomtest

For an example.  This can be partially worked around by adding the
-g10000x10000 option to ghostscript, where 10000 is the resolution in
pixels of the output png.  However this makes for larger temporary
files, longer ghostscript running, and longer PIL processing to chop the
image down to size.

I have been wrestling with getting ghostscript to be more efficent about
this for some time.  It would be ideal if I could get it to generate
png's sized according to the bounding box, but it will not.  If you have
any ideas...

Axiom should also be chopping up its output so that it is not wider than
a page.

\start
Date: Thu, 22 Jul 2004 22:29:25 -0400
From: Bill Page
To: Bob McElrath
Subject: RE: LatexWiki/Axiom wide output

Bob,

On Thursday, July 22, 2004 9:34 PM you wrote:
> ...
> Axiom should also be chopping up its output so that it is
> not wider than a page.

A C program written by Robert Sutor exists to do that.
I have a version of the TeXmacs interface for Axiom that
includes this program but the developer of TeXmacs said
that he preferred to enhance TeXmacs native ability to
split long LaTeX lines, so it is not currently included
in the TeXmacs distribution.

Anyway, I am planning to include this in the LatexWiki
Axiom interface ... just as soon as I have a enough time
to work out the details of calling a C subroutine from
Python. I know it is quite easily done, but do you happen
to know where I can find a simple example?

\start
Date: Thu, 22 Jul 2004 19:35:25 -0700
From: Bob McElrath
To: Bill Page
Subject: Re: LatexWiki/Axiom wide output

Bill Page [Bill Page] wrote:
> Bob,
> 
> On Thursday, July 22, 2004 9:34 PM you wrote:
> > ...
> > Axiom should also be chopping up its output so that it is
> > not wider than a page.
> 
> A C program written by Robert Sutor exists to do that.
> I have a version of the TeXmacs interface for Axiom that
> includes this program but the developer of TeXmacs said
> that he preferred to enhance TeXmacs native ability to
> split long LaTeX lines, so it is not currently included
> in the TeXmacs distribution.
> 
> Anyway, I am planning to include this in the LatexWiki
> Axiom interface ... just as soon as I have a enough time
> to work out the details of calling a C subroutine from
> Python. I know it is quite easily done, but do you happen
> to know where I can find a simple example?

pydoc os

or use the existing 'runCommand' that I wrote.  (there are enhancements
to this function in my darcs, BTW)  Unless the algorithm is terribly
complicated, it might be worthwhile to just port the algorithm to
native python.  Python excels at string-processing anyway.

\start
Date: Fri, 23 Jul 2004 17:14:38 -0400
From: Xin Li
To: list
Subject: how to build functions into kernel?

> what's in the Lisp kernel? 

> how to build performance-critical parts of the libraries into the kernel?

\start
Date: Fri, 23 Jul 2004 18:24:15 -0400
From: Tim Daly
To: Xin Li
Subject: Re: how to build functions into kernel?

The correct method to modify the lisp kernel would be to use UFFI
(the universal foreign function interface). This should allow you
to use C code.

The question, however, is why. With proper type optimization it
is possible to generate lisp that is nearly optimal. I've seen
CAR, CDR, and the various mathematical operations like + reduced
to a single generated machine instruction. Except for truly 
data-intensive numeric operations, like matrix multiply, there
is not much gain. The huge gains in time come from better high
level algorithms. You don't have to perform a 1000x1000 matrix
multiply if you can prove the result must be zero before you start.


\start
Date: Thu, 29 Jul 2004 18:33:05 +0200
From: Marcus Better
To: list
Subject: Compiling spad files on Debian

Hi,

I'm using the Axiom package for Debian, version 0.20040128-4. I try to 
compile my own package (in a spad file) using
   )comp mypackage

It seems to compile the LISP code, but then the C compiler complains:

End of Pass 1.
End of Pass 2.
code.c:2:24: cmpinclude.h: No such file or directory
In file included from code.c:3:
code.h:3: error: parse error before "LI1"
code.h:9: error: parse error before "LI3"
code.h:32: error: parse error before "LnkTLI7"
...(lots of errors follow)

Is cmpinclude.h missing or am I doing something wrong?

\start
Date: Thu, 29 Jul 2004 11:38:33 -0400
From: Tim Daly
To: Marcus Better
Subject: Compileing spad files on Debian

Marcus,

Send me the source code and let me try it here.

\start
Date: Thu, 29 Jul 2004 12:18:07 -0400
From: Tim Daly
To: Dirk Eddelbuettel, Bill Page
Subject: (no subject)
Cc: Sam Dooley, Manuel Bronstein, Wen-Shin Lee, Emil Volcheck

Reply-to: Tim Daly
Subject: Quantian
--text follows this line--
Dirk, Bill,

I want to introduce you two. 

Dirk Eddelbuettel is responsible for Quantian, a Knoppix-live CD
distribution of mathematical software. He maintains the distribution
at: http://dirk.eddelbuettel.com/quantian.html

Quantian is a very sweet idea. Basically a lot of mathematical
software is collected on one linux distribution. I'd like this
distribution to eventually get distributed as the "standard" 
computational mathematics platform. 

Bill Page is responsible for the wiki pages (originally Axiom, now
expanding to REDUCE and possibly others) which is another sweet idea.
It allows online creation of mathematics. The wiki may eventually get
split out as a standalone front end that can be packaged with Axiom or
other systems.

I think there is the possibility of a couple different events that
could quickly come together with little effort.

First to have a merger that puts Bill's work on Quantian. This would
bring the wiki front end to other systems.

Second to promote Quantian as a platform for doing computational
mathematics. Dirk has already collected a fair number of systems onto
one CD. If we can coordinate efforts we could arrange to have Quantian
CDs distributed at all of the math-related conferences.

Third to coordinate the next ISSAC conference to have at least poster
sessions demonstrating the use of the Page+Quantian effort. This would
involve actively creating some demonstrations using various systems.

Thoughts?

\start
Date: Thu, 29 Jul 2004 12:18:07 -0400
From: Tim Daly
To: Dirk Eddelbuettel, Bill Page
Subject: (no subject)
Cc: Sam Dooley, Manuel Bronstein, Wen-Shin Lee, Emil Volcheck

Reply-to: Tim Daly
Subject: Quantian
--text follows this line--
Dirk, Bill,

I want to introduce you two. 

Dirk Eddelbuettel is responsible for Quantian, a Knoppix-live CD
distribution of mathematical software. He maintains the distribution
at: http://dirk.eddelbuettel.com/quantian.html

Quantian is a very sweet idea. Basically a lot of mathematical
software is collected on one linux distribution. I'd like this
distribution to eventually get distributed as the "standard" 
computational mathematics platform. 

Bill Page is responsible for the wiki pages (originally Axiom, now
expanding to REDUCE and possibly others) which is another sweet idea.
It allows online creation of mathematics. The wiki may eventually get
split out as a standalone front end that can be packaged with Axiom or
other systems.

I think there is the possibility of a couple different events that
could quickly come together with little effort.

First to have a merger that puts Bill's work on Quantian. This would
bring the wiki front end to other systems.

Second to promote Quantian as a platform for doing computational
mathematics. Dirk has already collected a fair number of systems onto
one CD. If we can coordinate efforts we could arrange to have Quantian
CDs distributed at all of the math-related conferences.

Third to coordinate the next ISSAC conference to have at least poster
sessions demonstrating the use of the Page+Quantian effort. This would
involve actively creating some demonstrations using various systems.

Thoughts?

\start
Date: Thu, 29 Jul 2004 13:37:30 -0500
From: Dirk Eddelbuettel
To: Tim Daly
Subject: Re: your mail
Cc: Sam Dooley, Manuel Bronstein, Bill Page, Wen-Shin Lee, Dirk Eddelbuettel, Ed Pegg Jr, Emil Volcheck

Hi Tim,

Excellent to get email from you -- I had been meaning to send you one to see
where your efforts with respect to Quantian for ISSAC went...

On Thu, Jul 29, 2004 at 12:18:07PM -0400, Tim Daly wrote:

> I want to introduce you two. 

Hi Bill :)

> Dirk Eddelbuettel is responsible for Quantian, a Knoppix-live CD
> distribution of mathematical software. He maintains the distribution
> at: http://dirk.eddelbuettel.com/quantian.html

These days it is actually a dvd as 700mb was too small, even at approx 3:1
compression.  With the dvd size, we can pack much more documentation -- I am
planning to eventually put almost all (that is easily available, which means
Debian doc packages for the binary packages) in there.

The most recent release came in at 1.2gb. I have a few HOWTOs on the site
showing how to boot that even if you don't have a dvd drive, let alone a
writer. Also, within days of "going dvd" I had heard from two dvd vendors
that Quantian dvds available for just a few dollars.

> Quantian is a very sweet idea. Basically a lot of mathematical
> software is collected on one linux distribution. I'd like this
> distribution to eventually get distributed as the "standard" 
> computational mathematics platform. 

Yes, though Quantian tries to stay somewhat agnostic of disciplines. Hence,
my focus is not primarily math -- it just so happens that a large number of
CAS systems were already available as good Debian packages, so I included
them. Personally, I work more on the empirical front.

That said, we have a lot of "quantiative" or "numerical" or "scientific"
software in here which make Quantian appealing to different "disciplines" --
I really welcome input like this and will try to accomate specific requests
where I can as this tends to improve things for others as a side effect. An
almost free lunch, if you wish.

I will also CC Ed Pegg, who is into math (as editor of Math Games at the
MAA), and who has been a supporter of Quantian for a while -- and has
contributed a very nice background image too. So everybody, meet Ed. He may
have some thoughts on making Quantian a base for math endeavours.

> Bill Page is responsible for the wiki pages (originally Axiom, now
> expanding to REDUCE and possibly others) which is another sweet idea.
> It allows online creation of mathematics. The wiki may eventually get
> split out as a standalone front end that can be packaged with Axiom or
> other systems.
> 
> I think there is the possibility of a couple different events that
> could quickly come together with little effort.
> 
> First to have a merger that puts Bill's work on Quantian. This would
> bring the wiki front end to other systems.

The best way for this would be decent Debian packages. It doesn't have to be
in the main Debian archive, though that is preferable. I do take for example
Scientific Python packages from a contributor site as .deb packages, and it
is the same with the giac/xcas CAS by B. Parisse.

> Second to promote Quantian as a platform for doing computational
> mathematics. Dirk has already collected a fair number of systems onto
> one CD. If we can coordinate efforts we could arrange to have Quantian
> CDs distributed at all of the math-related conferences.

That would be sweet. The cd/dvd printer may help and give volume discounts.

> Third to coordinate the next ISSAC conference to have at least poster
> sessions demonstrating the use of the Page+Quantian effort. This would
> involve actively creating some demonstrations using various systems.

I'd be up for that too, though my Ph.D. is in math econ. I better say that
now as I don't want to get you guys thrown out of your conferences if you
work with an Economist :)

> Thoughts?

Sounds good, let's keep it rolling.

Dirk

\start
Date: Thu, 29 Jul 2004 16:01:28 -0500
From: Ed Pegg Jr
To: Dirk Eddelbuettel
Subject: Re: your mail
Cc: Sam Dooley, Manuel Bronstein, Bill Page, Wen-Shin Lee, Dirk Eddelbuettel, Emil Volcheck

> I will also CC Ed Pegg, who is into math (as editor of Math Games at the
> MAA), and who has been a supporter of Quantian for a while -- and has
> contributed a very nice background image too. So everybody, meet Ed. He may
> have some thoughts on making Quantian a base for math endeavours.

My initial desire is a page or something that will allow a new user to
do something neat with each program.

The Axiom WIKI (what is the URL?) would be nice for that, since
experts in a particular area could add things to it.  For example --
Python ... here's a quick program ... here's how to run it ... here's
links to Python material.

Perhaps later, http://planetmath.org/ and
http://en.wikipedia.org/wiki/Mathematics  can have individual math
entries updated with short programs, with links to the appropriate
languages and Quantian  (which will be the program with everything).

Incidently, I can turn over quantian.org (currently a redirect) to
anyone, if that would be a good spot for a WIKI.  I have hosting
arranged at Eskimo.com

\start
Date: Thu, 29 Jul 2004 16:01:28 -0500
From: Ed Pegg Jr
To: Dirk Eddelbuettel
Subject: Re: your mail
Cc: Sam Dooley, Manuel Bronstein, Bill Page, Wen-Shin Lee, Dirk Eddelbuettel, Emil Volcheck

> I will also CC Ed Pegg, who is into math (as editor of Math Games at the
> MAA), and who has been a supporter of Quantian for a while -- and has
> contributed a very nice background image too. So everybody, meet Ed. He may
> have some thoughts on making Quantian a base for math endeavours.

My initial desire is a page or something that will allow a new user to
do something neat with each program.

The Axiom WIKI (what is the URL?) would be nice for that, since
experts in a particular area could add things to it.  For example --
Python ... here's a quick program ... here's how to run it ... here's
links to Python material.

Perhaps later, http://planetmath.org/ and
http://en.wikipedia.org/wiki/Mathematics  can have individual math
entries updated with short programs, with links to the appropriate
languages and Quantian  (which will be the program with everything).

Incidently, I can turn over quantian.org (currently a redirect) to
anyone, if that would be a good spot for a WIKI.  I have hosting
arranged at Eskimo.com

\start
Date: Thu, 29 Jul 2004 17:22:05 -0400
From: Bill Page
To: Ed Pegg Jr
Subject: re: your mail
Cc: Sam Dooley, Manuel Bronstein, Wen-Shin Lee, Dirk Eddelbuettel, Emil Volcheck

On Thursday, July 29, 2004 5:01 PM Ed Pegg Jr wrote:
> ... 
> My initial desire is a page or something that will allow a new
> user to do something neat with each program.
> 
> The Axiom WIKI (what is the URL?) would be nice for that, since
> experts in a particular area could add things to it.

See:

  http://page.axiom-developer.org

> For example -- Python ... here's a quick program ... here's how
> to run it ... here's links to Python material.

Python?

> 
> Perhaps later, http://planetmath.org/ and
> http://en.wikipedia.org/wiki/Mathematics  can have individual math
> entries updated with short programs, with links to the appropriate
> languages and Quantian  (which will be the program with everything).
> 

Yes, I think it would be great to have "active" mathematics based on
Axiom in planetmath and wikipedia.

> Incidently, I can turn over quantian.org (currently a redirect) to
> anyone, if that would be a good spot for a WIKI.  I have hosting
> arranged at Eskimo.com
> 

I am willing to build a mirror site based on page.axiom-developer.org
at another location. Currently it runs on a RedHat 9 system. I need
to install Zope, Zwiki, LatexWiki + my extensions, Plone, Axiom etc.
And currently I use Apache to front for Zope (optional).

\start
Date: Thu, 29 Jul 2004 17:22:05 -0400
From: Bill Page
To: Ed Pegg Jr
Subject: Re: your mail
Cc: Sam Dooley, Manuel Bronstein, Wen-Shin Lee, Dirk Eddelbuettel, Dirk Eddelbuettel, Emil Volcheck

On Thursday, July 29, 2004 5:01 PM Ed Pegg Jr wrote:
> ... 
> My initial desire is a page or something that will allow a new
> user to do something neat with each program.
> 
> The Axiom WIKI (what is the URL?) would be nice for that, since
> experts in a particular area could add things to it.

See:

  http://page.axiom-developer.org

> For example -- Python ... here's a quick program ... here's how
> to run it ... here's links to Python material.

Python?

> 
> Perhaps later, http://planetmath.org/ and
> http://en.wikipedia.org/wiki/Mathematics  can have individual math
> entries updated with short programs, with links to the appropriate
> languages and Quantian  (which will be the program with everything).
> 

Yes, I think it would be great to have "active" mathematics based on
Axiom in planetmath and wikipedia.

> Incidently, I can turn over quantian.org (currently a redirect) to
> anyone, if that would be a good spot for a WIKI.  I have hosting
> arranged at Eskimo.com
> 

I am willing to build a mirror site based on page.axiom-developer.org
at another location. Currently it runs on a RedHat 9 system. I need
to install Zope, Zwiki, LatexWiki + my extensions, Plone, Axiom etc.
And currently I use Apache to front for Zope (optional).

\start
Date: Thu, 29 Jul 2004 16:32:33 -0500
From: Dirk Eddelbuettel
To: Bill Page
Subject: re: your mail
Cc: Sam Dooley, Manuel Bronstein, Wen-Shin Lee, Dirk Eddelbuettel, Dirk Eddelbuettel, Ed Pegg Jr, Emil Volcheck

Wow, that Java navigator thingie is pretty neato :)

On Thu, Jul 29, 2004 at 05:22:05PM -0400, Bill Page wrote:
> Yes, I think it would be great to have "active" mathematics based on
> Axiom in planetmath and wikipedia.
> 
> > Incidently, I can turn over quantian.org (currently a redirect) to
> > anyone, if that would be a good spot for a WIKI.  I have hosting
> > arranged at Eskimo.com
> > 
> 
> I am willing to build a mirror site based on page.axiom-developer.org
> at another location. Currently it runs on a RedHat 9 system. I need
> to install Zope, Zwiki, LatexWiki + my extensions, Plone, Axiom etc.
> And currently I use Apache to front for Zope (optional).

I could pull in some Zope/Plone expertise from the folks currently hosting
Quantian at UW, but am pretty clueless with that system myself.

That said, we can try on one of my Debian boxen at home. Could you work on
that via ssh?  I would have to keep root access to myself, but Debian should
have most of what we need (but maybe not latexwiki).  See below for a quick
apt-cache search.

Dirk


edd@homebud:~> apt-cache  search "^zope"
libroxen-zopegw - Zope relay module for the Roxen Challenger web server
zope - Open Source Web Application Server
zope-backtalk - A document annotation, editing, and production system - Zope
zope-book - Zope Open Content Book
zope-btreefolder2 - Zope folder that can contain many more objects efficiently
zope-callprofiler - profile your Zope website
zope-cmf - Zope Content Management Framework (CMF)
zope-cmfcalendar - Zope CMF Calendar
zope-cmfcore - Zope CMF Core services
zope-cmfdefault - Zope CMF Default (basic) content
zope-cmfforum - Zope Content Management Framework Forum Module
zope-cmfldap - Zope CMF LDAP membership management tools
zope-cmfpgforum - CMFpgForum is a CMF forum that uses a PostgreSQL database
zope-cmfphoto - Zope Content Management Framework Photo module
zope-cmfphotoalbum - Zope Content Management Framework Photo Album module
zope-cmfplone - A zope/cmf-based content management system
zope-cmftopic - Zope CMF Topic
zope-cmfworkflow - Zope CMF workflow module
zope-devguide - Zope Developer's Guide
zope-devguide-example - Example contained in the Zope Developer's Guide
zope-docfindereverywhere - Find documentation for a Zope product using a doc tab
zope-dtmlcalendar - Calendar DTML Tag - Zope
zope-emarket - Simple e-commerce system for Zope
zope-epoz - cross-browser WYSIWYG editor for Zope
zope-externaleditor - Zope External Editor
zope-extfile - Stores large files outside Zope database
zope-exuserfolder - XUF -- user authentication, properties and sessions
zope-formulator - A tool to create and validate web forms in Zope
zope-kinterbasdbda - Zope Database Adapter for Interbase/Firebird
zope-ldap - A driver for connecting Zope with Ldap system
zope-ldapuserfolder - The Zope LDAP user folder
zope-localizer - Helps build multilingual web sites and multilingual Zope products
zope-lockablefolder - variant of the standard Folder that can restrict access to its contents
zope-loginmanager - User Folder workalike and replacement for Zope
zope-mysqlda - A Zope Database Adapter for MySQL
zope-parsedxml - ParsedXML Zope Product
zope-photo - Zope product for managing digital images in Zope
zope-popyda - A Database Adapter connecting Zope and PostgreSQL
zope-psycopgda - Zope Database Adapter based on python-psycopg
zope-rdfgrabber - Zope Product to search foreign webpages by their RDF files
zope-replacesupport - Add search and replace functionality to TTW Zope objects
zope-sqlrelayda - SQL Relay Zope database adapter
zope-testcase - unit testing framework and test case for Zope
zope-textindexng2 - Full text index for Zope
zope-tinytable - Present tabular data in Zope
zope-tinytableplus - Present tabular data in Zope
zope-translationservice - A location-aware translation service for Zope
zope-ttwtype - Enables portal administrators to create new content types
zope-verbosesecurity - Helps to explain the reason for denied access
zope-xmlmethods - XMLMethods Zope Product
zope-zms - Content management for science, technology and medicine
zope-znavigator - Zope product for creating navigation bars
zope-zpatterns - Database Independence and Framework Integration for Zope
zope-zshell - command line interface to Zope
zope-zwiki - WikiWikiWeb on Zope
zope2.7 - Open Source Web Application Server
zopectl - Zope instances controlling utility
zopeedit - Helper Application for Zope External Editor
edd@homebud:~> apt-cache  search "plone"
plone - A zope/cmf-based content management system
zope-cmfforum - Zope Content Management Framework Forum Module
zope-cmfpgforum - CMFpgForum is a CMF forum that uses a PostgreSQL database
zope-cmfphoto - Zope Content Management Framework Photo module
zope-cmfphotoalbum - Zope Content Management Framework Photo Album module
zope-cmfplone - A zope/cmf-based content management system
zope-epoz - cross-browser WYSIWYG editor for Zope
zope-ttwtype - Enables portal administrators to create new content types
edd@homebud:~> 

\start
Date: Thu, 29 Jul 2004 18:37:09 -0400
From: Bill Page
To: Tim Daly
Subject: REDUCE on test.axiom-developer.org

Everyone:

I have a very preliminary implementation of an interface
to REDUCE implemented on the test.axom-developer.org site.
Please see:

  http://test.axiom-developer.org/Members/billpage/TestReduce

for some initial examples.

I would appreciate the help of those Axiom developers who
know REDUCE (or want to learn) to test this. Let me know
what goes wrong, what is missing and especially any hints
and tips about security issues.

\start
Date: Thu, 29 Jul 2004 20:26:15 -0400
From: Tim Daly
To: Bill Page
Subject: REDUCE vs Axiom

Bill,

Attached is the Rosetta document which details some of the differences
between Axiom and other system's syntax. In particular, it lists REDUCE.

Tim

=================================================================
\documentclass{book}
\normalsize\baselineskip=12pt
\parskip=0pt
\parindent=10pt
\tolerance=5000
\pretolerance=5000
\frenchspacing
\hangindent=10pt
\skip\footins=18pt
\global\textwidth 31pc \global\textheight 47pc
\headsep 12pt
\oddsidemargin 0pt
\evensidemargin 0pt
%
\renewcommand{\textfraction}{.1}
\renewcommand{\floatpagefraction}{.75}
%
\def\chaptername{}
%
\catcode`@=11
\def\ps@plain{\let\@mkboth\@gobbletwo%
     \let\@oddhead\@empty\def\@oddfoot{\sysdetails}
     \let\@evenhead\@empty\let\@evenfoot\@oddfoot}
\def\ps@empty{\let\@mkboth\@gobbletwo%
     \let\@oddhead\@empty\def\@oddfoot{\sysdetails}
     \let\@evenhead\@empty\let\@evenfoot\@oddfoot}
\catcode`@=12
%
\def\sysdetails{\parbox{\textwidth}{%
Based on material originally published in {\sl Computer Algebra Systems: A
Practical Guide\/} edited by Michael J.\ Wester, John Wiley \& Sons,
Chichester, United Kingdom, ISBN 0-471-98353-5, xvi+436 pages, 1999.}}
%
\pagestyle{plain}

\begin{document}
%
% \nth{n} produces 1^{st}, 2^{nd}, 3^{rd}, 4^{th}, etc.
%
\def\nth#1{$#1^{\rm \ifcase#1 th\or st\or nd\or rd\else th\fi}$}
%
% Abbreviations
%
\newcommand{\Axiom}{{\sf Axiom}}
\newcommand{\Derive}{{\sf Derive}}
\newcommand{\DoCon}{{\sf DoCon}}
\newcommand{\GAP}{{\sf GAP}}
\newcommand{\Gmp}{{\sf Gmp}}
\newcommand{\Macsyma}{{\sf Macsyma}}
\newcommand{\Magnus}{{\sf Magnus}}
\newcommand{\Maxima}{{\sf Maxima}}
\newcommand{\Maple}{{\sf Maple}}
\newcommand{\Mathematica}{{\sf Mathematica}}
\newcommand{\MuPAD}{{\sf MuPAD}}
\newcommand{\Octave}{{\sf Octave}}
\newcommand{\Pari}{{\sf Pari}}
\newcommand{\Reduce}{{\sf Reduce}}
\newcommand{\Scilab}{{\sf Scilab}}
\newcommand{\Sumit}{{\sf Sumit}}
\newcommand{\Yacas}{{\sf Yacas}}

\chapter{Rosetta Translations}

\section{Introduction}

The following is a collection of synonyms for various operations in
the computer algebra systems \Axiom, \Derive, \GAP, \Gmp, \DoCon,
\Macsyma, \Magnus, \Maxima, \Maple, \Mathematica, \MuPAD, \Octave,
\Pari, \Reduce, \Scilab, \Sumit\ and \Yacas.  This collection does not
attempt to be comprehensive, but hopefully it will be useful in giving
an indication of how to translate between the syntaxes used by the
different systems in many common situations.  Note that a blank entry
means either (a) that there may be an exact translation of a
particular operation for the indicated system, but we don't know what
it is or (b) there is no exact translation but it may still be
possible to work around this lack with a related functionality.

While commercial systems are not provided on this CD the intent of the
Rosetta effort is to make it possible for experienced Computer Algebra
users to experiment with other systems. Thus the commands for
commercial systems are included to allow users of those systems to
translate.

Some of these systems are special purpose and do not support a lot of
the functionality of the more general purpose systems. Where they do
support an interpreter the commands are provided.

Originally written by Michael Wester.
Modified for Rosetta by Timothy Daly, Alexander Hulpke (GAP).

\section{System availability}

\begin{tabular}{l|lll}
System & \rm{License} & \rm{Status (May 2002)} & \rm{Web Location} \\
\hline
\Axiom       & BSD         & available  & http://www.aldor.org \\
\Axiom       & open source & pending    & http://home.earthlink.net/~jgg964/axiom.html \\
\Derive      & commercial  & available  & http://www.mathware.com \\
\DoCon       & open source & available  & http://www.haskell.org/docon \\
\GAP         & GPL         & Rosetta    & http://www.gap-system.org/~gap \\
\Gmp         & GPL         & Rosetta    & http://www.swox.com/gmp \\
\Macsyma     & commercial  & dead       & unavailable \\
\Magnus      & GPL         & Rosetta    & http://zebra.sci.ccny.cuny.edu/web \\
\Maxima      & GPL         & Rosetta    & http://www.ma.utexas.edu/maxima.html\\
\Maple       & commercial  & available  & http://www.maplesoft.com \\
\Mathematica & commercial  & available  & http://www.wolfram.com \\
\MuPAD       & commercial  & available  & http://www.mupad.de \\
\Octave      & GPL         & Rosetta    & http://www.octave.org \\
\Pari        & GPL         & Rosetta    & http://www.parigp-home.de \\
\Reduce      & commercial  & available  & http://www.zib.de/Symbolik/reduce \\
\Scilab      & Scilab      & available  & http://www-rocq.inria.fr/scilab \\
\Sumit       &             & available  & http://www-sop.inria.fr/cafe/soft-f.html \\
\Yacas       & GPL         & available  & http://yacas.sourceforge.net \\
\end{tabular} \\[10pt]
\\
\begin{tabular}{l|ll}
System & \rm{Type} & \rm{Interpreted or Compiled}\\
\hline
\Axiom       & General Purpose          & both \\
\Derive      & General Purpose          & \\
\DoCon       & General Purpose          & Interpreted in Haskell \\
\GAP         & Group Theory             & \\
\Gmp         & arb. prec. arithmetic    & \\
\Macsyma     & General Purpose          & \\
\Magnus      & Infinite Group Theory    & \\
\Maxima      & General Purpose          & \\
\Maple       & General Purpose          & \\
\Mathematica & General Purpose          & \\
\MuPAD       & General Purpose          & \\
\Octave      & Numerical Computing      & \\
\Pari        & Number Theory            & \\
\Reduce      & General Purpose          & \\
\Scilab      & General Purpose          & \\
\Sumit       & Functional Equations     & \\
\Yacas       & General Purpose          & \\
\end{tabular} \\[10pt]

\section{Programming and Miscellaneous}

\begingroup
\newcommand{\OR}{{\em or }}
\newcommand{\fnm}{\footnotemark}
\newcommand{\h}[1]{{\rm #1}}
\newcommand{\m}[2]{\multicolumn{#1}{l}{#2}}
\newcommand{\q}{\quad}
\newcommand{\st}{\small\tt}
\parindent=0pt
\hfuzz=1pt
\begin{tt}

\begin{tabular}{l|ll}
& \m{2}{\rm Unix/Microsoft user initialization file} \\
\hline
\Axiom       & \~{}/axiom.input          & \\
\GAP         & \~{}/.gaprc               & GAP.RC \\
\Gmp         &                           & \\
\DoCon       &                           & \\
\Derive      &                           & derive.ini   \\
\Macsyma     & \~{}/macsyma-init.macsyma & mac-init.mac \\
\Magnus      &                           & \\
\Maxima      & \~{}/macsyma-init.macsyma & mac-init.mac \\
\Maple       & \~{}/.mapleinit           & maplev5.ini  \\
\Mathematica & \~{}/init.m               & init.m       \\
\MuPAD       & \~{}/.mupadinit           &
	$\backslash$mupad$\backslash$bin$\backslash$userinit.mu \\
\Octave      &                           & \\
\Pari        &                           & \\
\Reduce      & \~{}/.reducerc            & reduce.rc    \\
\Scilab      &                           & \\
\Sumit       &                           & \\
\Yacas       &                           & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|ll}
& \h{Describe {\em keyword}} & \h{Find keywords containing {\em pattern}} \\
\hline
\Axiom       &                       & )what operations pattern \\
\Derive      &                       & \\
\DoCon       &                       & \\
\GAP         & ?keyword              & ??keyword\\
\Gmp         &                       & \\
\Macsyma     & describe("keyword")\$ & apropos("pattern");      \\
\Magnus      &                       & \\
\Maxima      & describe("keyword")\$ & apropos("pattern");      \\
\Maple       & ?keyword              & ?pattern\,\fnm           \\
\Mathematica & ?keyword              & ?*pattern*               \\
\MuPAD       & ?keyword              & ?*pattern*               \\
\Octave      & help -i keyword       & \\
\Pari        &                       & \\
\Reduce      &                       & \\
\Scilab      &                       & \\
\Sumit       &                       & \\
\Yacas       &                       & \\
\end{tabular} \\[10pt]

\footnotetext{Only if the pattern is not a keyword and then the matches are
simplistic.}

\begin{tabular}{l|l@{ }llll}
& & & \h{Prev.} & \h{Case} & \h{Variables} \\
& \h{Comment} & \h{Line continuation} & \h{expr.} & \h{sensitive} & \h{assumed}
	\\
\hline
\Axiom       & -- comment    & input \_<CR>input   & \% & Yes & real    \\
\Derive      & "comment"     & input \~{}<CR>input &    & No  & real    \\
\DoCon       &               &                     &    &     & \\
\GAP         & \# comment    & input$\backslash$<CR>input&last&Yes&no assumption\\
\Gmp         &               &                     &    &     & \\
\Macsyma     & /* comment */ & input<CR>input;     & \% & No  & real    \\
\Magnus      &               &                     &    &     & \\
\Maxima      & /* comment */ & input<CR>input;     & \% & No  & real    \\
\Maple       & \# comment    & input<CR>input;     & \% & Yes & complex \\
\Mathematica & (* comment *) & input<CR>input      & \% & Yes & complex \\
\MuPAD       & \# comment \# & input<CR>input;     & \% & Yes & complex \\
\Octave      & \#\#          &                     &    & Yes & \\
\Pari        &               &                     &    &     & \\
\Reduce      & \% comment    & input<CR>input;     & ws & No  & complex \\
\Scilab      &               &                     &    &     & \\
\Sumit       &               &                     &    &     & \\
\Yacas       &               &                     &    &     & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|lll}
& \h{Load a file} & \h{Time a command} & \h{Quit} \\
\hline
\Axiom       & )read "file" )quiet    & )set messages time on  & )quit \\
\Derive      & [Transfer Load Derive] &                        & [Quit] \\
\DoCon       &                        &                        & \\
\GAP         & Read("file");          & time; \h{(also see {\tt Runtime();})}&quit;\\
\Gmp         &                        &                        & \\
\Macsyma     & load("file")\$         & showtime: all\$        & quit(); \\
\Magnus      &                        &                        & \\
\Maxima      & load("file")\$         & showtime: all\$        & quit(); \\
\Maple       & read("file"):          & readlib(showtime): on; & quit \\
\Mathematica & << file                & Timing[command]        & Quit[] \\
\MuPAD       & read("file"):          & time(command);         & quit \\
\Octave      & load file              & tic(); cmd ; toc()     & quit \OR\ exit\\
\Pari        &                        &                        & \\
\Reduce      & in "file"\$            & on time;               & quit; \\
\Scilab      &                        &                        & quit \\
\Sumit       &                        &                        & \\
\Yacas       &                        &                        & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|lll}
& \h{Display} & \h{Suppress} & \\
& \h{output} & \h{output} & \h{Substitution: $f(x, y) \rightarrow f(z, w)$} \\
\hline
\Axiom       & input  & input;      & subst(f(x, y), [x = z, y = w])   \\
\Derive      & input  & var:= input & [Manage Substitute]              \\
\DoCon       &        &             & \\
\GAP         & input; & input;;     & Value(f,[x,y],[z,w]);\fnm         \\
\Gmp         &        &             & \\
\Macsyma     & input; & input\$     & subst([x = z, y = w], f(x, y));  \\
\Magnus      &        &             & \\
\Maxima      & input; & input\$     & subst([x = z, y = w], f(x, y));  \\
\Maple       & input; & input:      & subs(\{x = z, y = w\}, f(x, y)); \\
\Mathematica & input  & input;      & f[x, y] /. \{x -> z, y -> w\}    \\
\MuPAD       & input; & input:      & subs(f(x, y), [x = z, y = w]);   \\
\Octave      & input  & input;      & \\
\Pari        &        &             & \\
\Reduce      & input; & input\$     & sub(\{x = z, y = w\}, f(x, y));  \\
\Scilab      &        &             & \\
\Sumit       &        &             & \\
\Yacas       &        &             & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|lll}
& \h{Set} & \h{List} & \h{Matrix} \\
\hline
\Axiom       & set [1, 2] & [1, 2]    & matrix([[1, 2],[3, 4]])            \\
\Derive      & \{1, 2\}   & [1, 2]    & [[1,2], [3,4]]                     \\
\DoCon       &            &           & \\
\GAP         & Set([1,2]) & [1, 2]    & [[1,2], [3,4]]\fnm                 \\
\Gmp         &            &           & \\
\Macsyma     & [1, 2]     & [1, 2]    & matrix([1, 2], [3, 4])             \\
\Magnus      &            &           & \\
\Maxima      & [1, 2]     & [1, 2]    & matrix([1, 2], [3, 4])             \\
\Maple       & \{1, 2\}   & [1, 2]    & matrix([[1, 2], [3, 4]])           \\
\Mathematica & \{1, 2\}   & \{1, 2\}  & \{\{1, 2\}, \{3, 4\}\}             \\
\MuPAD       & \{1, 2\}   & [1, 2]    & export(Dom): \q export(linalg):    \\
             &            &           & matrix:= ExpressionField(normal)): \\
             &            &           & matrix([[1, 2], [3, 4]])           \\
\Octave      &            &           & \\
\Pari        &            &           & \\
\Reduce      & \{1, 2\}   & \{1, 2\}  & mat((1, 2), (3, 4))                \\
\Scilab      &            & list(1,2) & A=[1,2;3,4]\\
\Sumit       &            &           & \\
\Yacas       &            &           & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|llll}
& \h{Equation} & \h{List element} & \h{Matrix element} & \h{Length of a list} \\
\hline
\Axiom       & x = 0  & l . 2      & m(2, 3)       & \#l          \\
\Derive      & x = 0  & l SUB 2    & m SUB 2 SUB 3 & DIMENSION(l) \\
\DoCon       &        &            &               & \\
\GAP         & x=0    & l[2]       & m[2][3]       & Length(l)    \\
\Gmp         &        &            &               & \\
\Macsyma     & x = 0  & l[2]       & m[2, 3]       & length(l)    \\
\Magnus      &        &            &               & \\
\Maxima      & x = 0  & l[2]       & m[2, 3]       & length(l)    \\
\Maple       & x = 0  & l[2]       & m[2, 3]       & nops(l)      \\
\Mathematica & x == 0 & l[[2]]     & m[[2, 3]]     & Length[l]    \\
\MuPAD       & x = 0  & l[2]       & m[2, 3]       & nops(l)      \\
\Octave      &        &            &               & \\
\Pari        &        &            &               & \\
\Reduce      & x = 0  & part(l, 2) & m(2, 3)       & length(l)    \\
\Scilab      &        & l(2)       &               & \\
\Sumit       &        &            &               & \\
\Yacas       &        &            &               & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|lll}
& \m{2}{\rm Prepend/append an element to a list} & \h{Append two lists} \\
\hline
\Axiom       & cons(e, l)     & concat(l, e)   & append(l1, l2)   \\
\Derive      & APPEND([e], l) & APPEND(l, [e]) & APPEND(l1, l2)   \\
\DoCon       &                &                & \\
\GAP         & Concatenation([e],l) & Add(l,e) & Append(l1, l2)   \\
\Gmp         &                &                & \\
\Macsyma     & cons(e, l)     & endcons(e, l)  & append(l1, l2)   \\
\Magnus      &                &                & \\
\Maxima      & cons(e, l)     & endcons(e, l)  & append(l1, l2)   \\
\Maple       & [e, op(l)]     & [op(l), e]     & [op(l1), op(l2)] \\
\Mathematica & Prepend[l, e]  & Append[l, e]   & Join[l1, l2]     \\
\MuPAD       & [e, op(l)]     & append(l, e)   & l1 . l2          \\
\Octave      &                &                & \\
\Pari        &                &                & \\
\Reduce      & e . l          & append(l, {e}) & append(l1, l2)   \\
\Scilab      &                &                & \\
\Sumit       &                &                & \\
\Yacas       &                &                & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|ll}
& \h{Matrix column dimension} & \h{Convert a list into a column vector} \\
\hline
\Axiom       & ncols(m)                  & transpose(matrix([l]))         \\
\Derive      & DIMENSION(m SUB 1)        & [l]\`{}                        \\
\DoCon       &                           & \\
\GAP         & Length(mat[1])            & \h{objects are identical}      \\
\Gmp         &                           & \\
\Macsyma     & mat\_\,ncols(m)           & transpose(matrix(l))           \\
\Magnus      &                           & \\
\Maxima      & mat\_\,ncols(m)           & transpose(matrix(l))           \\
\Maple       & linalg[coldim](m)         & linalg[transpose](matrix([l])) \\
\Mathematica & Dimensions[m][[2]]        & Transpose[\{l\}]               \\
\MuPAD       & linalg::ncols(m)          & transpose(matrix([l]))\,\fnm   \\
\Octave      &                           & \\
\Pari        &                           & \\
\Reduce      & load\_\,package(linalg)\$ & matrix v(length(l), 1)\$       \\
             & column\_dim(m)            & for i:=1:length(l) do          \\
             &                           & \q\q v(i, 1):= part(l, i)      \\
\Scilab      &                           & \\
\Sumit       &                           & \\
\Yacas       &                           & \\
\end{tabular} \\[10pt]

\footnotetext{See the definition of {\tt matrix} above.}

\begin{tabular}{l|l}
& \h{Convert a column vector into a list} \\
\hline
\Axiom       & [v(i, 1) for i in 1..nrows(v)]              \\
\Derive      & v\`{} SUB 1                                 \\
\DoCon       & \\
\GAP         & \h{objects are identical}                   \\
\Gmp         & \\
\Macsyma     & part(transpose(v), 1)                       \\
\Magnus      & \\
\Maxima      & part(transpose(v), 1)                       \\
\Maple       & op(convert(linalg[transpose](v), listlist)) \\
\Mathematica & Flatten[v]                                  \\
\MuPAD       & [op(v)]                                     \\
\Octave      & \\
\Pari        & \\
\Reduce      & load\_\,package(linalg)\$                   \\
             & for i:=1:row\_\,dim(v) collect(v(i, 1))     \\
\Scilab      & \\
\Sumit       & \\
\Yacas       & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|lllllll}
& \h{True} & \h{False} & \h{And} & \h{Or} & \h{Not} & \h{Equal} & \h{Not equal}
	\\
\hline
\Axiom       & true & false & and  & or & not & =  & \~{}= \\
\Derive      & TRUE & FALSE & AND  & OR & NOT & =  & /=    \\
\DoCon       &      &       &      &    &     &    & \\
\GAP         & true & false\fnm & and  & or & not & = & <>     \\
\Gmp         &      &       &      &    &     &    & \\
\Macsyma     & true & false & and  & or & not & =  & \#    \\
\Magnus      &      &       &      &    &     &    & \\
\Maxima      & true & false & and  & or & not & =  & \#    \\
\Maple       & true & false & and  & or & not & =  & <>    \\
\Mathematica & True & False & \&\& & || & !   & == & !=    \\
\MuPAD       & true & false & and  & or & not & =  & <>    \\
\Octave      &      &       &      &    &     &    & \\
\Pari        &      &       &      &    &     &    & \\
\Reduce      & t    & nil   & and  & or & not & =  & neq   \\
\Scilab      & \%t  & \%f   &      &    &     &    & \\
\Sumit       &      &       &      &    &     &    & \\
\Yacas       &      &       &      &    &     &    & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|ll}
& \h{If+then+else statements} & \h{Strings (concatenated)} \\
\hline
\Axiom       & if \_ then \_ else if \_ then \_ else \_ & concat(["x", "y"])  \\
\Derive      & IF(\_, \_, IF(\_, \_, \_))               & "xy"                \\
\DoCon       &                                          & \\
\GAP         & if \_ then \_ elif \_ then \_ else \_ fi & Concatenation("x","y")\\
\Gmp         &                                          & \\
\Macsyma     & if \_ then \_ else if \_ then \_ else \_ & concat("x", "y")    \\
\Magnus      &                                          & \\
\Maxima      & if \_ then \_ else if \_ then \_ else \_ & concat("x", "y")    \\
\Maple       & if \_ then \_ elif \_ then \_ else \_ fi & "x" . "y"           \\
\Mathematica & If[\_, \_, If[\_, \_, \_]]               & "x" <> "y"          \\
\MuPAD       & if \_ then \_ elif \_ then \_ else \_    & "x" . "y"           \\
             & \q\q end\_if                             & \\
\Octave      &                                          & \\
\Pari        &                                          & \\
\Reduce      & if \_ then \_ else if \_ then \_ else \_ & "xy" \OR\ mkid(x, y)\\
\Scilab      &                                          & \\
\Sumit       &                                          & \\
\Yacas       &                                          & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|ll}
& \h{Simple loop and Block} & \h{Generate the list $[1, 2, \ldots, n]$} \\
\hline
\Axiom       & for i in 1..n repeat ( x; y )       & [f(i) for i in 1..n]     \\
\Derive      & VECTOR([x, y], i, 1, n)             & VECTOR(f(i), i, 1, n)    \\
\DoCon       &                                     & \\
\GAP         & for i in [1..n] do \_ od;           & [1..n] {\rm or} [1,2..n]\\
\Gmp         &                                     & \\
\Macsyma     & for i:1 thru n do (x, y);           & makelist(f(i), i, 1, n); \\
\Magnus      &                                     & \\
\Maxima      & for i:1 thru n do (x, y);           & makelist(f(i), i, 1, n); \\
\Maple       & for i from 1 to n do x; y od;       & [f(i) \$ i = 1..n];      \\
\Mathematica & Do[x; y, \{i, 1, n\}]               & Table[f[i], \{i, 1, n\}] \\
\MuPAD       & for i from 1 to n do x; y           & [f(i) \$ i = 1..n];      \\
             & \q\q end\_for;                      & \\
\Octave      &                                     & \\
\Pari        &                                     & \\
\Reduce      & for i:=1:n do <<x; y>>;             & for i:=1:n collect f(i); \\
\Scilab      &                                     & \\
\Sumit       &                                     & \\
\Yacas       &                                     & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|l}
& \h{Complex loop iterating on a list} \\
\hline
\Axiom       & for x in [2, 3, 5] while x**2 < 10 repeat output(x)         \\
\Derive      & \\
\DoCon       & \\
\GAP         & for x in [2, 3, 5] do while x\^{}2<10 do Print(x);od;od; \\
\Gmp         & \\
\Macsyma     & for x in [2, 3, 5] while x\^{}2 < 10 do print(x)\$          \\
\Magnus      & \\
\Maxima      & for x in [2, 3, 5] while x\^{}2 < 10 do print(x)\$          \\
\Maple       & for x in [2, 3, 5] while x\^{}2 < 10 do print(x) od:        \\
\Mathematica & For[l = \{2, 3, 5\}, l != \{\} \&\& l[[1]]\^{}2 < 10,       \\
             & \q l = Rest[l], Print[l[[1]]] ]                             \\
\MuPAD       & for x in [2, 3, 5] do if x\^{}2 < 10 then print(x) end\_if  \\
             & \q end\_for:                                                \\
\Octave      & \\
\Pari        & \\
\Reduce      & for each x in \{2, 3, 5\} do if x\^{}2 < 10 then write(x)\$ \\
\Scilab      & \\
\Sumit       & \\
\Yacas       & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|lll}
& \h{\small Assignment} & \h{Function definition} & \h{Clear vars and funs} \\
\hline
\Axiom       & y:= f(x)  & f(x, y) == x*y              &
	{\small\tt )clear properties y f} \\
\Derive      & y:= f(x)  & f(x, y):= x*y               & y:=  f:=           \\
\DoCon       &           &                             & \\
\GAP         & y:= f(x); & f:=function(x, y) return x*y; end; & \h{There are
no symbolic variables}\\
\Gmp         &           &                             & \\
\Macsyma     & y: f(x);  & f(x, y):= x*y;              & remvalue(y)\$      \\
             &           &                             & remfunction(f)\$   \\
\Magnus      &           &                             & \\
\Maxima      & y: f(x);  & f(x, y):= x*y;              & remvalue(y)\$      \\
             &           &                             & remfunction(f)\$   \\
\Maple       & y:= f(x); & f:= proc(x, y) x*y end;     & y:= 'y':  f:= 'f': \\
\Mathematica & y = f[x]  & f[x\_, y\_\,]:= x*y         & Clear[y, f]        \\
\MuPAD       & y:= f(x); & f:= proc(x, y)              & y:= NIL:  f:= NIL: \\
             &           & \q\q begin x*y end\_\,proc; & \\
\Octave      &           &                             & \\
\Pari        &           &                             & \\
\Reduce      & y:= f(x); & procedure f(x, y); x*y;     & clear y, f;        \\
\Scilab      &           &                             & \\
\Sumit       &           &                             & \\
\Yacas       &           &                             & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|l}
& \h{Function definition with a local variable} \\
\hline
\Axiom       & f(x) == (local n; n:= 2; n*x)                           \\
\Derive      & \\
\DoCon       & \\
\GAP         & f:=function(x) local n; n:=2;return n*x; end;           \\
\Gmp         & \\
\Macsyma     & f(x):= block([n], n: 2, n*x);                           \\
\Magnus      & \\
\Maxima      & f(x):= block([n], n: 2, n*x);                           \\
\Maple       & f:= proc(x) local n; n:= 2; n*x end;                    \\
\Mathematica & f[x\_\,]:= Module[\{n\}, n = 2; n*x]                    \\
\MuPAD       & f:= proc(x) local n; begin n:= 2; n*x end\_\,proc;      \\
\Octave      & \\
\Pari        & \\
\Reduce      & procedure f(x); begin scalar n; n:= 2; return(n*x) end; \\
\Scilab      & \\
\Sumit       & \\
\Yacas       & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|ll}
& \h{Return unevaluated symbol} & \h{Define a function from an expression} \\
\hline
\Axiom       & e:= x*y;\q 'e          & function(e, f, x, y)          \\
\Derive      & e:= x*y\q 'e           & f(x, y):== e                  \\
\DoCon       &                        & \\
\GAP         & \h{No unevaluated symbols}\fnm&\\
\Gmp         &                        & \\
\Macsyma     & e: x*y\$\q 'e;         & define(f(x, y), e);           \\
\Magnus      &                        & \\
\Maxima      & e: x*y\$\q 'e;         & define(f(x, y), e);           \\
\Maple       & e:= x*y:\q 'e';        & f:= unapply(e, x, y);         \\
\Mathematica & e = x*y;\q HoldForm[e] & f[x\_, y\_\,] = e             \\
\MuPAD       & e:= x*y:\q hold(e);    & f:= hold(func)(e, x, y);      \\
\Octave      &                        & \\
\Pari        &                        & \\
\Reduce      & e:= x*y\$              & for all x, y let f(x, y):= e; \\
\Scilab      &                        & \\
\Sumit       &                        & \\
\Yacas       &                        & \\
\end{tabular} \\[10pt]
\footnotetext{Variables can be assigned to generators of a suitable free
object, for example {\tt x:=X(Rationals,"x");} or {\tt
f:=FreeGroup(2);x:=f.1;}.}
\addtocounter{footnote}{-1}%

\begin{tabular}{l|ll}
& \h{Fun.\ of an indefinite number of args} & \h{Apply ``+'' to sum a list} \\
\hline
\Axiom       &                                   & reduce(+, [1, 2])          \\
\Derive      & LST l:= l                         & \\
\DoCon       &                                   & \\
\GAP         & lst:=function(args) \_ end;       & Sum([1,2])\\
\Gmp         &                                   & \\
\Macsyma     & lst([l]):= l;                     & apply("+", [1, 2])         \\
\Magnus      &                                   & \\
\Maxima      & lst([l]):= l;                     & apply("+", [1, 2])         \\
\Maple       & lst:=proc() [args[1..nargs]] end; & convert([1, 2], \`{}+\`{}) \\
\Mathematica & lst[l\_\,\_\,\_\,]:= \{l\}        & Apply[Plus, \{1, 2\}]      \\
\MuPAD       & lst:= proc(l) begin [args()]      & \_\,plus(op([1, 2]))       \\
             & \q\q\q end\_\,proc;               & \\
\Octave      &                                   & \\
\Pari        &                                   & \\
\Reduce      &                                   & xapply(+, \{1, 2\})\,\fnm  \\
\Scilab      &                                   & \\
\Sumit       &                                   & \\
\Yacas       &                                   & \\
\end{tabular} \\[10pt]

\footnotetext{\tt procedure xapply(f, lst); lisp(f . cdr(lst))\$}
\addtocounter{footnote}{-1}%

\begin{tabular}{l|ll}
& \h{Apply a fun.\ to a} & \\
& \h{list of its args} & \h{Map an anonymous function onto a list} \\
\hline
\Axiom       & reduce(f, l)       & map(x +-> x + y, [1, 2])                \\
\Derive      &                    & x:= [1, 2]                              \\
             &                    & VECTOR(x SUB i + y, i, 1, DIMENSION(x)) \\
\DoCon       &                    & \\
\GAP         & List(l,f)          & List([1,2],x->x+y) \\
\Gmp         &                    & \\
\Macsyma     & apply(f, l)        & map(lambda([x], x + y), [1, 2])         \\
\Magnus      &                    & \\
\Maxima      & apply(f, l)        & map(lambda([x], x + y), [1, 2])         \\
\Maple       & f(op(l))           & map(x -> x + y, [1, 2])                 \\
\Mathematica & Apply[f, l]        & Map[\# + y \&, \{1, 2\}]                \\
\MuPAD       & f(op(l))           & map([1, 2], func(x + y, x))             \\
\Octave      &                    & \\
\Pari        &                    & \\
\Reduce      & xapply(f, l)\,\fnm & for each x in \{1, 2\} collect x + y    \\
\Scilab      &                    & \\
\Sumit       &                    & \\
\Yacas       &                    & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|l}
& \h{Pattern matching: $f(3 y) + f(z y) \rightarrow 3 f(y) + f(z y)$} \\
\hline
\Axiom       & f:= operator('f);                                  \\
             & ( rule f((n | integer?(n)) * x) == n*f(x) )( \_    \\
             & \q\q f(3*y) + f(z*y))                              \\
\Derive      & \\
\DoCon       & \\
\GAP         & \\
\Gmp         & \\
\Macsyma     & matchdeclare(n, integerp, x, true)\$               \\
             & defrule(fnx, f(n*x), n*f(x))\$                     \\
             & apply1(f(3*y) + f(z*y), fnx);                      \\
\Magnus      & \\
\Maxima      & matchdeclare(n, integerp, x, true)\$               \\
             & defrule(fnx, f(n*x), n*f(x))\$                     \\
             & apply1(f(3*y) + f(z*y), fnx);                      \\
\Maple       & map(proc(q) local m;                               \\
             & \q\q\q if match(q = f(n*y), y, 'm') and            \\
             & \q\q\q\q\q type(rhs(op(m)), integer) then          \\
             & \q\q\q\q subs(m, n * f(y)) else q fi               \\
             & \q\q end,                                          \\
             & \q\q f(3*y) + f(z*y));                             \\
\Mathematica & f[3*y] + f[z*y] /. f[n\_Integer * x\_\,] -> n*f[x] \\
\MuPAD       & d:= domain("match"): \q d::FREEVARIABLE:= TRUE:    \\
             & n:= new(d, "n", func(testtype(m, DOM\_INT), m)):   \\
             & x:= new(d, "x", TRUE):                             \\
             & map(f(3*y) + f(z*y),                               \\
             & \q\q proc(q) local m; begin m:= match(q, f(n*x));  \\
             & \q\q\q if m = FAIL then q                          \\
             & \q\q\q else subs(hold("n" * f("x")), m) end\_if    \\
             & \q\q end\_\,proc);                                 \\
\Octave      & \\
\Pari        & \\
\Reduce      & operator f;                                        \\
             & f(3*y) + f(z*y)                                    \\
             & \q\q where \{f(\~{}n * \~{}x) => n*f(x) when fixp(n)\}; \\
\Scilab      & \\
\Sumit       & \\
\Yacas       & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|l}
& \h{Define a new infix operator and then use it} \\
\hline
\Axiom       & \\
\Derive      & \\
\DoCon       & \\
\GAP     &\h{One can overload existing infix operators for ones own purposes}\\
\Gmp         & \\
\Macsyma     & infix("\~{}")\$ \q "\~{}"(x, y):= sqrt(x\^{}2 + y\^{}2)\$ \q
	3 \~{} 4;               \\
\Magnus      & \\
\Maxima      & infix("\~{}")\$ \q "\~{}"(x, y):= sqrt(x\^{}2 + y\^{}2)\$ \q
	3 \~{} 4;               \\
\Maple       & \`{}\&\~{}\`{}:= (x, y) -> sqrt(x\^{}2 + y\^{}2): \q 3 \&\~{} 4;
	\\
\Mathematica & x\_ $\backslash$[Tilde] y\_:= Sqrt[x\^{}2 + y\^{}2]; \q
	3 $\backslash$[Tilde] 4 \\
\MuPAD       & tilde:= proc(x, y) begin sqrt(x\^{}2 + y\^{}2) end\_\,proc: \\
             & \q 3 \&tilde 4;                                             \\
\Octave      & \\
\Pari        & \\
\Reduce      & infix |\$ \q procedure |(x, y); sqrt(x\^{}2 + y\^{}2)\$ \q
	3 | 4;                  \\
\Scilab      & \\
\Sumit       & \\
\Yacas       & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|lll}
& \h{Main expression} & & \\
& \h{operator} & \h{\nth{1} operand} & \h{List of expression operands} \\
\hline
\Axiom\fnm   &            & kernels(e) . 1 & kernels(e)              \\
\Derive      &            &                & {\em various}\fnm       \\
\DoCon       &            &                & \\
\GAP         &\m{3}{\rm There are no formal unevaluated expressions}\\
\Gmp         &            &                & \\
\Macsyma     & part(e, 0) & part(e, 1)     & args(e)                 \\
\Magnus      &            &                & \\
\Maxima      & part(e, 0) & part(e, 1)     & args(e)                 \\
\Maple       & op(0, e)   & op(1, e)       & [op(e)]                 \\
\Mathematica & Head[e]    & e[[1]]         & ReplacePart[e, List, 0] \\
\MuPAD       & op(e, 0)   & op(e, 1)       & [op(e)]                 \\
\Octave      &            &                & \\
\Pari        &            &                & \\
\Reduce      & part(e, 0) & part(e, 1)     & for i:=1:arglength(e)   \\
             &            &                & \q\q collect part(e, i) \\
\Scilab      &            &                & \\
\Sumit       &            &                & \\
\Yacas       &            &                & \\
\end{tabular} \\[10pt]

\addtocounter{footnote}{-1}%
\footnotetext{The following commands work only on expressions that consist of a
single level (e.g., $x + y + z$ but not $a/b + c/d$).}
\addtocounter{footnote}{-1}%
\footnotetext{{\tt TERMS}, {\tt FACTORS}, {\tt NUMERATOR}, {\tt LHS}, etc.}

\begin{tabular}{l|l}
& \h{Print text and results} \\
\hline
\Axiom       & output(concat(["sin(", string(0), ") = ",                 \\
             & \q string(sin(0))]));                                     \\
\Derive      & "sin(0)" = sin(0)                                         \\
\DoCon       & \\
\GAP         & Print("There is no sin, but factors(10)= ",Factors(10),
"$\backslash$n")\\
\Gmp         & \\
\Macsyma     & print("sin(", 0, ") =", sin(0))\$                         \\
\Magnus      & \\
\Maxima      & print("sin(", 0, ") =", sin(0))\$                         \\
\Maple       & printf("sin(\%a) = \%a$\backslash$n", 0, sin(0)):         \\
\Mathematica & Print[StringForm["sin(\`{}\`{}) = \`{}\`{}", 0, Sin[0]]]; \\
\MuPAD       & print(Unquoted, "sin(".0.")" = sin(0)):                   \\
\Octave      & \\
\Pari        & \\
\Reduce      & write("sin(", 0, ") = ", sin(0))\$                        \\
\Scilab      & \\
\Sumit       & \\
\Yacas       & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|ll}
& \h{Generate FORTRAN} & \h{Generate \TeX/\LaTeX} \\
\hline
\Axiom       & outputAsFortran(e)                    & outputAsTex(e)      \\
\Derive      & [Transfer Save Fortran]               & \\
\DoCon       &                                       & \\
\GAP         &&Print(LaTeX(e));\\
\Gmp         &                                       & \\
\Macsyma     & fortran(e)\$ \OR gentran(eval(e))\$   & tex(e);             \\
\Magnus      &                                       & \\
\Maxima      & fortran(e)\$ \OR gentran(eval(e))\$   & tex(e);             \\
\Maple       & fortran([e]);                         & latex(e);           \\
\Mathematica & FortranForm[e]                        & TexForm[e]          \\
\MuPAD       & generate::fortran(e);                 & generate::TeX(e);   \\
\Octave      &                                       & \\
\Pari        &                                       & \\
\Reduce      & on fort; \q e; \q off fort; \OR       & load\_\,package(tri)\$ \\
             & load\_\,package(gentran)\$ gentran e; & on TeX; e; off TeX; \\
\Scilab      &                                       & \\
\Sumit       &                                       & \\
\Yacas       &                                       & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|l}
& \h{Import two space separated columns of integers from {\tt file}} \\
\hline
\Axiom       & \\
\Derive      & [Transfer Load daTa] ({\rm from} file.dat)          \\
\DoCon       & \\
\GAP         & \\
\Gmp         & \\
\Macsyma     & xy: read\_num\_data\_to\_matrix("file", nrows, 2)\$ \\
\Magnus      & \\
\Maxima      & xy: read\_num\_data\_to\_matrix("file", nrows, 2)\$ \\
\Maple       & xy:= readdata("file", integer, 2):                  \\
\Mathematica & xy = ReadList["file", Number, RecordLists -> True]  \\
\MuPAD       & \\
\Octave      & \\
\Pari        & \\
\Reduce      & \\
\Scilab      & \\
\Sumit       & \\
\Yacas       & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|l}
& \h{Export two space separated columns of integers to {\tt file}\fnm} \\
\hline
\Axiom       & )set output algebra "file" \q ({\rm creates} file.spout)       \\
             & for i in 1..n repeat output( \_                                \\
             & \q concat([string(xy(i, 1)), " ", string(xy(i, 2))]) )         \\
             & )set output algebra console                                    \\
\Derive      & xy  [Transfer Print Expressions File]\q({\rm creates} file.prt)\\
\DoCon       & \\
\GAP         & PrintTo("file");for i in [1..n] do\\
             &\q AppendTo("file",xy[i][1]," ",xy[i][2],"$\backslash$n");od;\\
\Gmp         & \\
\Macsyma     & writefile("file")\$ \q for i:1 thru n do                       \\
             & \q print(xy[i, 1], xy[i, 2])\$ \q closefile()\$                \\
\Magnus      & \\
\Maxima      & writefile("file")\$ \q for i:1 thru n do                       \\
             & \q print(xy[i, 1], xy[i, 2])\$ \q closefile()\$                \\
\Maple       & writedata("file", xy);                                         \\
\Mathematica & outfile = OpenWrite["file"];                                   \\
             & Do[WriteString[outfile,                                        \\
             & \q xy[[i, 1]], " ", xy[[i, 2]], "$\backslash$n"], \{i, 1, n\}] \\
             & Close[outfile];                                                \\
\MuPAD       & fprint(Unquoted, Text, "file",                                 \\
             & \q ("$\backslash$n", xy[i, 1], xy[i, 2]) \$ i = 1..n):         \\
\Octave      & \\
\Pari        & \\
\Reduce      & out "file"; \q for i:=1:n do                                   \\
             & \q write(xy(i, 1), " ", xy(i, 2)); \q shut "file";             \\
\Scilab      & \\
\Sumit       & \\
\Sumit       & \\
\Yacas       & \\
\end{tabular} \\[10pt]

\footnotetext{Some editing of {\tt file} will be necessary for all systems but
\Maple\ and \Mathematica.}

\section{Mathematics and Graphics}

{\rm Since {\GAP} aims at discrete mathematics, it does not provide much of
the calculus functionality listed in the following section.}

\begin{tabular}{l|llllll}
& $e$ & $\pi$ & $i$ & $+\infty$ & $\sqrt{2}$ & $2^{1/3}$ \\
\hline
\Axiom       & \%e    & \%pi & \%i & \%plusInfinity & sqrt(2) & 2**(1/3)   \\
\Derive      & \#e    & pi   & \#i & inf            & SQRT(2) & 2\^{}(1/3) \\
\DoCon       &        &      &     &                &         & \\
\GAP         &        &      & E(4) & infinity & ER(2)\fnm &\\
\Gmp         &        &      &     &                &         & \\
\Macsyma     & \%e    & \%pi & \%i & inf            & sqrt(2) & 2\^{}(1/3) \\
\Magnus      &        &      &     &                &         & \\
\Maxima      & \%e    & \%pi & \%i & inf            & sqrt(2) & 2\^{}(1/3) \\
\Maple       & exp(1) & Pi   & I   & infinity       & sqrt(2) & 2\^{}(1/3) \\
\Mathematica & E      & Pi   & I   & Infinity       & Sqrt[2] & 2\^{}(1/3) \\
\MuPAD       & E      & PI   & I   & infinity       & sqrt(2) & 2\^{}(1/3) \\
\Octave      &        &      &     &                &         & \\
\Pari        &        &      &     &                &         & \\
\Reduce      & e      & pi   & i   & infinity       & sqrt(2) & 2\^{}(1/3) \\
\Scilab      &        &      &     &                &         & \\
\Sumit       &        &      &     &                &         & \\
\Yacas       &        &      &     &                &         & \\
\end{tabular} \\[10pt]
\footnotetext{{\tt ER} represents special cyclotomic numbers and is not a
root function.}
\addtocounter{footnote}{-1}%

\begin{tabular}{l|llll}
& \h{Euler's constant} & \h{Natural log} & \h{Arctangent} & $n!$ \\
\hline
\Axiom       &                & log(x) & atan(x)   & factorial(n) \\
\Derive      & euler\_\,gamma & LOG(x) & ATAN(x)   & n!           \\
\DoCon       &                &        &           & \\
\GAP         &                & LogInt(x,base) && Factorial(n) \\
\Gmp         &                &        &           & \\
\Macsyma     & \%gamma        & log(x) & atan(x)   & n!           \\
\Magnus      &                &        &           & \\
\Maxima      & \%gamma        & log(x) & atan(x)   & n!           \\
\Maple       & gamma          & log(x) & arctan(x) & n!           \\
\Mathematica & EulerGamma     & Log[x] & ArcTan[x] & n!           \\
\MuPAD       & EULER          & ln(x)  & atan(x)   & n!           \\
\Octave      &                &        &           & \\
\Pari        &                &        &           & \\
\Reduce      & Euler\_\,Gamma & log(x) & atan(x)   & factorial(n) \\
\Scilab      &                &        &           & \\
\Sumit       &                &        &           & \\
\Yacas       &                &        &           & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|ll}
& \h{Legendre polynomial} & \h{Chebyshev poly.\ of the \nth{1} kind} \\
\hline
\Axiom       & legendreP(n, x)          & chebyshevT(n, x)           \\
\Derive      & LEGENDRE\_\,P(n, x)      & CHEBYCHEV\_\,T(n, x)       \\
\DoCon       &                          & \\
\GAP         &                          & \\
\Gmp         &                          & \\
\Macsyma     & legendre\_\,p(n, x)      & chebyshev\_\,t(n, x)       \\
\Magnus      &                          & \\
\Maxima      & legendre\_\,p(n, x)      & chebyshev\_\,t(n, x)       \\
\Maple       & orthopoly[P](n, x)       & orthopoly[T](n, x)         \\
\Mathematica & LegendreP[n, x]          & ChebyshevT[n, x]           \\
\MuPAD       & orthpoly::legendre(n, x) & orthpoly::chebyshev1(n, x) \\
\Octave      &                          & \\
\Pari        &                          & \\
\Reduce      & LegendreP(n, x)          & ChebyshevT(n, x)           \\
\Scilab      &                          & \\
\Sumit       &                          & \\
\Yacas       &                          & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|ll}
& \h{Fibonacci number} & \h{Elliptic integral of the \nth{1} kind} \\
\hline
\Axiom       & fibonacci(n)           & \\
\Derive      & FIBONACCI(n)           & ELLIPTIC\_\,E(phi, k\^{}2) \\
\DoCon       &                        & \\
\GAP         & Fibonacci(n)           & \\
\Gmp         &                        & \\
\Macsyma     & fib(n)                 & elliptic\_\,e(phi, k\^{}2) \\
\Magnus      &                        & \\
\Maxima      & fib(n)                 & elliptic\_\,e(phi, k\^{}2) \\
\Maple       & combinat[fibonacci](n) & EllipticE(sin(phi), k)     \\
\Mathematica & Fibonacci[n]           & EllipticE[phi, k\^{}2]     \\
\MuPAD       & numlib::fibonacci(n)   & \\
\Octave      &                        & \\
\Pari        &                        & \\
\Reduce      &                        & EllipticE(phi, k\^{}2)     \\
\Scilab      &                        & \\
\Sumit       &                        & \\
\Yacas       &                        & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|llll}
& $\Gamma(x)$ & $\psi(x)$ & \h{Cosine integral} & \h{Bessel fun.\ (\nth{1})} \\
\hline
\Axiom       & Gamma(x) & psi(x)       & real(Ei(\%i*x)) & besselJ(n, x)     \\
\Derive      & GAMMA(x) & PSI(x)       & CI(x)           & BESSEL\_\,J(n, x) \\
\DoCon       &          &              &                 & \\
\GAP         &          &              &                 & \\
\Gmp         &          &              &                 & \\
\Macsyma     & gamma(x) & psi[0](x)    & cos\_\,int(x)   & bessel\_j[n](x)   \\
\Magnus      &          &              &                 & \\
\Maxima      & gamma(x) & psi[0](x)    & cos\_\,int(x)   & bessel\_j[n](x)   \\
\Maple       & GAMMA(x) & Psi(x)       & Ci(x)           & BesselJ(n, x)     \\
\Mathematica & Gamma[x] & PolyGamma[x] & CosIntegral[x]  & BesselJ[n, x]     \\
\MuPAD       & gamma(x) & psi(x)       &                 & besselJ(n, x)     \\
\Octave      &          &              &                 & \\
\Pari        &          &              &                 & \\
\Reduce      & Gamma(x) & Psi(x)       & Ci(x)           & BesselJ(n, x)     \\
\Scilab      &          &              &                 & \\
\Sumit       &          &              &                 & \\
\Yacas       &          &              &                 & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|lll}
& \h{Hypergeometric fun.\ ${}_2F_1(a, b; c; x)$} & \h{Dirac delta} &
	\h{Unit step fun.} \\
\hline
\Axiom       &                                    &          & \\
\Derive      & GAUSS(a, b, c, x)                  &          & STEP(x)      \\
\DoCon       &                                    &          & \\
\GAP         &                                    &          & \\
\Gmp         &                                    &          & \\
\Macsyma     & hgfred([a, b], [c], x)             & delta(x) & unit\_\,step(x)
	\\
\Magnus      &                                    &          & \\
\Maxima      & hgfred([a, b], [c], x)             & delta(x) & unit\_\,step(x)
	\\
\Maple       & hypergeom([a, b], [c], x)          & Dirac(x) & Heaviside(x) \\
\Mathematica & HypergeometricPFQ[\{a,b\},\{c\},x] &
	\m{2}{<< Calculus\`{}DiracDelta\`{}} \\
\MuPAD       &                                    & dirac(x) & heaviside(x) \\
\Octave      &                                    &          & \\
\Pari        &                                    &          & \\
\Reduce      & hypergeometric(\{a, b\}, \{c\}, x) &          & \\
\Scilab      &                                    &          & \\
\Sumit       &                                    &          & \\
\Yacas       &                                    &          & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|l}
& \h{Define $|x|$ via a piecewise function} \\
\hline
\Axiom       & \\
\Derive      & a(x):= -x*CHI(-inf, x, 0) + x*CHI(0, x, inf)        \\
\DoCon       & \\
\GAP         & \\
\Gmp         & \\
\Macsyma     & a(x):= -x*unit\_\,step(-x) + x*unit\_\,step(x)\$    \\
\Magnus      & \\
\Maxima      & a(x):= -x*unit\_\,step(-x) + x*unit\_\,step(x)\$    \\
\Maple       & a:= x -> piecewise(x < 0, -x, x):                   \\
\Mathematica & << Calculus\`{}DiracDelta\`{}                       \\
             & a[x\_]:= -x*UnitStep[-x] + x*UnitStep[x]            \\
\MuPAD       & a:= proc(x) begin -x*heaviside(-x) + x*heaviside(x) \\
             & \q\q end\_\,proc:                                   \\
\Octave      & \\
\Pari        & \\
\Reduce      & \\
\Scilab      & \\
\Sumit       & \\
\Yacas       & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|ll}
& \h{Assume $x$ is real} & \h{Remove that assumption} \\
\hline
\Axiom       & & \\
\Derive      & x :epsilon Real           & x:=                         \\
\DoCon       &                           & \\
\GAP         &                           & \\
\Gmp         &                           & \\
\Macsyma     & declare(x, real)\$        & remove(x, real)\$           \\
\Magnus      &                           & \\
\Maxima      & declare(x, real)\$        & remove(x, real)\$           \\
\Maple       & assume(x, real);          & x:= 'x':                    \\
\Mathematica & x/: Im[x] = 0;            & Clear[x]                    \\
\MuPAD       & assume(x, Type::RealNum): & unassume(x, Type::RealNum): \\
\Octave      &                           & \\
\Pari        &                           & \\
\Reduce      & & \\
\Scilab      &                           & \\
\Sumit       &                           & \\
\Yacas       &                           & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|ll}
& \h{Assume $0 < x \le 1$} & \h{Remove that assumption} \\
\hline
\Axiom       & & \\
\Derive      & x :epsilon (0, 1]               & x:=                     \\
\DoCon       &                                 & \\
\GAP         &                                 & \\
\Gmp         &                                 & \\
\Macsyma     & assume(x > 0, x <= 1)\$         & forget(x > 0, x <= 1)\$ \\
\Magnus      &                                 & \\
\Maxima      & assume(x > 0, x <= 1)\$         & forget(x > 0, x <= 1)\$ \\
\Maple       & assume(x > 0);                  & x:= 'x':                \\
             & additionally(x <= 1);           & \\
\Mathematica & Assumptions -> 0 < x <= 1\,\fnm & \\
\MuPAD       & assume(x > 0):  assume(x <= 1): & unassume(x):            \\
\Octave      &                                 & \\
\Pari        &                                 & \\
\Reduce      & & \\
\Scilab      &                                 & \\
\Sumit       &                                 & \\
\Yacas       &                                 & \\
\end{tabular} \\[10pt]

\footnotetext{This is an option for {\tt Integrate}.}

\begin{tabular}{l|l}
& \h{Basic simplification of an expression $e$} \\
\hline
\Axiom       & simplify(e) \OR\ normalize(e) \OR\ complexNormalize(e) \\
\Derive      & e                                                      \\
\DoCon       & \\
\GAP         & e \\
\Gmp         & \\
\Macsyma     & ratsimp(e) \OR\ radcan(e)                              \\
\Magnus      & \\
\Maxima      & ratsimp(e) \OR\ radcan(e)                              \\
\Maple       & simplify(e)                                            \\
\Mathematica & Simplify[e] \OR\ FullSimplify[e]                       \\
\MuPAD       & simplify(e) \OR\ normal(e)                             \\
\Octave      & \\
\Pari        & \\
\Reduce      & e                                                      \\
\Scilab      & \\
\Sumit       & \\
\Yacas       & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|ll}
& \h{Use an unknown function} & \h{Numerically evaluate an expr.} \\
\hline
\Axiom       & f:= operator('f); \q f(x) & exp(1) :: Complex Float \\
\Derive      & f(x):=                    & Precision:= Approximate \\
             & f(x)                      & APPROX(EXP(1)) \\
             &                           & Precision:= Exact \\
\DoCon       &                           & \\
\GAP         &                           & EvalF(123/456)\\
\Gmp         &                           & \\
\Macsyma     & f(x)                      & sfloat(exp(1)); \\
\Magnus      &                           & \\
\Maxima      & f(x)                      & sfloat(exp(1)); \\
\Maple       & f(x)                      & evalf(exp(1)); \\
\Mathematica & f[x]                      & N[Exp[1]] \\
\MuPAD       & f(x)                      & float(exp(1)); \\
\Octave      &                           & \\
\Pari        &                           & \\
\Reduce      & operator f; \q f(x)       & on rounded; \q exp(1); \\
             &                           & off rounded; \\
\Scilab      &                           & \\
\Sumit       &                           & \\
\Yacas       &                           & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|ll}
& $ n \bmod m$ & \h{Solve $e \equiv 0 \bmod m$ for $x$} \\
\hline
\Axiom       & rem(n, m)       & solve(e = 0 :: PrimeField(m), x)        \\
\Derive      & MOD(n, m)       & SOLVE\_\,MOD(e = 0, x, m)               \\
\DoCon       &                 & \\
\GAP         & n mod m         & \h{solve using finite fields}\\
\Gmp         &                 & \\
\Macsyma     & mod(n, m)       & modulus: m\$ \q solve(e = 0, x)         \\
\Magnus      &                 & \\
\Maxima      & mod(n, m)       & modulus: m\$ \q solve(e = 0, x)         \\
\Maple       & n mod m         & msolve(e = 0, m)                        \\
\Mathematica & Mod[n, m]       & Solve[\{e == 0, Modulus == m\}, x]      \\
\MuPAD       & n mod m         & solve(poly(e = 0, [x], IntMod(m)), x)   \\
\Octave      &                 & \\
\Pari        &                 & \\
\Reduce      & on modular;     & load\_\,package(modsr)\$ \q on modular; \\
             & setmod m\$ \q n & setmod m\$ \q m\_solve(e = 0, x)        \\
\Scilab      &                 & \\
\Sumit       &                 & \\
\Yacas       &                 & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|ll}
& \h{Put over common denominator} & \h{Expand into separate fractions} \\
\hline
\Axiom       & a/b + c/d                  & (a*d + b*c)/(b*d) :: \_      \\
             &                            & \q MPOLY([a], FRAC POLY INT) \\
\Derive      & FACTOR(a/b + c/d, Trivial) & EXPAND((a*d + b*c)/(b*d))    \\
\DoCon       &                            & \\
\GAP         & a/b+c/d                    &\\
\Gmp         &                            & \\
\Macsyma     & xthru(a/b + c/d)           & expand((a*d + b*c)/(b*d))    \\
\Magnus      &                            & \\
\Maxima      & xthru(a/b + c/d)           & expand((a*d + b*c)/(b*d))    \\
\Maple       & normal(a/b + c/d)          & expand((a*d + b*c)/(b*d))    \\
\Mathematica & Together[a/b + c/d]        & Apart[(a*d + b*c)/(b*d)]     \\
\MuPAD       & normal(a/b + c/d)          & expand((a*d + b*c)/(b*d))    \\
\Octave      &                            & \\
\Pari        &                            & \\
\Reduce      & a/b + c/d                  & on div;  (a*d + b*c)/(b*d)   \\
\Scilab      &                            & \\
\Sumit       &                            & \\
\Yacas       &                            & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|l}
& \h{Manipulate the root of a polynomial} \\
\hline
\Axiom       & a:= rootOf(x**2 - 2); \q a**2                               \\
\Derive      & \\
\DoCon       & \\
\GAP         & x:=X(Rationals,"x");\\
&\q a:=RootOfDefiningPolynomial(AlgebraicExtension(Rationals,x\^{}2-2));
a\^{}2\\
\Gmp         & \\
\Macsyma     & algebraic:true\$ \q tellrat(a\^{}2 - 2)\$ \q rat(a\^{}2);   \\
\Magnus      & \\
\Maxima      & algebraic:true\$ \q tellrat(a\^{}2 - 2)\$ \q rat(a\^{}2);   \\
\Maple       & a:= RootOf(x\^{}2 - 2): \q simplify(a\^{}2);                \\
\Mathematica & a = Root[\#\^{}2 - 2 \&, 2] \q a\^{}2                       \\
\MuPAD       & \\
\Octave      & \\
\Pari        & \\
\Reduce      & load\_\,package(arnum)\$ \q defpoly(a\^{}2 - 2); \q a\^{}2; \\
\Scilab      & \\
\Sumit       & \\
\Yacas       & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|ll}
& \h{Noncommutative multiplication} & \h{Solve a pair of equations} \\
\hline
\Axiom       &                      & solve([eqn1, eqn2], [x, y])     \\
\Derive      & x :epsilon Nonscalar & SOLVE([eqn1, eqn2], [x, y])     \\
             & y :epsilon Nonscalar & \\
             & x . y                & \\
\DoCon       &                      & \\
\GAP         &*&\\
\Gmp         &                      & \\
\Macsyma     & x . y                & solve([eqn1, eqn2], [x, y])     \\
\Magnus      &                      & \\
\Maxima      & x . y                & solve([eqn1, eqn2], [x, y])     \\
\Maple       & x \&* y              & solve(\{eqn1, eqn2\}, \{x, y\}) \\
\Mathematica & x ** y               & Solve[\{eqn1, eqn2\}, \{x, y\}] \\
\MuPAD       &                      & solve(\{eqn1, eqn2\}, \{x, y\}) \\
\Octave      &                      & \\
\Pari        &                      & \\
\Reduce      & operator x, y;       & solve(\{eqn1, eqn2\}, \{x, y\}) \\
             & noncom x, y;         & \\
             & x() * y()            & \\
\Scilab      &                      & \\
\Sumit       &                      & \\
\Yacas       &                      & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|ll}
& \m{2}{\rm Decrease/increase angles in trigonometric functions} \\
\hline
\Axiom       & \m{2}{simplify(normalize(sin(2*x)))} \\
\Derive      & Trigonometry:= Expand         & Trigonometry:= Collect      \\
             & sin(2*x)                      & 2*sin(x)*cos(x)             \\
\DoCon       &                               & \\
\GAP         &                               & \\
\Gmp         &                               & \\
\Macsyma     & trigexpand(sin(2*x))          & trigreduce(2*sin(x)*cos(x)) \\
\Magnus      &                               & \\
\Maxima      & trigexpand(sin(2*x))          & trigreduce(2*sin(x)*cos(x)) \\
\Maple       & expand(sin(2*x))              & combine(2*sin(x)*cos(x))    \\
\Mathematica & TrigExpand[Sin[2*x]]          & TrigReduce[2*Sin[x]*Cos[x]] \\
\MuPAD       & expand(sin(2*x))              & combine(2*sin(x)*cos(x), sincos)
	\\
\Octave      &                               & \\
\Pari        &                               & \\
\Reduce      & load\_\,package(assist)\$ \\
             & trigexpand(sin(2*x))          & trigreduce(2*sin(x)*cos(x)) \\
\Scilab      &                               & \\
\Sumit       &                               & \\
\Yacas       &                               & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|l}
& \h{Gr\"obner basis} \\
\hline
\Axiom       & groebner([p1, p2, ...])                                  \\
\Derive      & \\
\DoCon       & \\
\GAP         & \\
\Gmp         & \\
\Macsyma     & grobner([p1, p2, ...]) \\
\Magnus      & \\
\Maxima      & grobner([p1, p2, ...]) \\
\Maple       & Groebner[gbasis]([p1, p2, ...], plex(x1, x2, ...))       \\
\Mathematica & GroebnerBasis[\{p1, p2, ...\}, \{x1, x2, ...\}]          \\
\MuPAD       & groebner::gbasis([p1, p2, ...])                          \\
\Octave      & \\
\Pari        & \\
\Reduce      & load\_\,package(groebner)\$ \q groebner(\{p1, p2, ...\}) \\
\Scilab      & \\
\Sumit       & \\
\Yacas       & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|l}
& \h{Factorization of $e$ over $i = \sqrt{-1}$} \\
\hline
\Axiom       & factor(e, [rootOf(i**2 + 1)]) \\
\Derive      & FACTOR(e, Complex) \\
\DoCon       & \\
\GAP         & Factors(GaussianIntegers,e)\\
\Gmp         & \\
\Macsyma     & gfactor(e); \OR\ factor(e, i\^{}2 + 1); \\
\Magnus      & \\
\Maxima      & gfactor(e); \OR\ factor(e, i\^{}2 + 1); \\
\Maple       & factor(e, I); \\
\Mathematica & Factor[e, Extension -> I] \\
\MuPAD       & QI:= Dom::AlgebraicExtension(Dom::Rational, i\^{}2 + 1); \\
             & QI::name:= "QI": \q Factor(poly(e, QI)); \\
\Octave      & \\
\Pari        & \\
\Reduce      & on complex, factor; \q e; \q off complex, factor; \\
\Scilab      & \\
\Sumit       & \\
\Yacas       & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|ll}
& \h{Real part} & \h{Convert a complex expr.\ to rectangular form} \\
\hline
\Axiom       & real(f(z))     & complexForm(f(z))             \\
\Derive      & RE(f(z))       & f(z)                          \\
\DoCon       &                & \\
\GAP         & (f(z)+GaloisCyc(f(z),-1))/2&\\
\Gmp         &                & \\
\Macsyma     & realpart(f(z)) & rectform(f(z))                \\
\Magnus      &                & \\
\Maxima      & realpart(f(z)) & rectform(f(z))                \\
\Maple       & Re(f(z))       & evalc(f(z))                   \\
\Mathematica & Re[f[z]]       & ComplexExpand[f[z]]           \\
\MuPAD       & Re(f(z))       & rectform(f(z))                \\
\Octave      &                & \\
\Pari        &                & \\
\Reduce      & repart(f(z))   & repart(f(z)) + i*impart(f(z)) \\
\Scilab      &                & \\
\Sumit       &                & \\
\Yacas       &                & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|lll}
& \h{Matrix addition} & \h{Matrix multiplication} & \h{Matrix transpose} \\
\hline
\Axiom       & A + B        & A * B          & transpose(A)         \\
\Derive      & A + B        & A . B          & A\`{}                \\
\DoCon       &              &                & \\
\GAP         & A + B        & A * B          & TransposedMat(A)\\
\Gmp         &              &                & \\
\Macsyma     & A + B        & A . B          & transpose(A)         \\
\Magnus      &              &                & \\
\Maxima      & A + B        & A . B          & transpose(A)         \\
\Maple       & evalm(A + B) & evalm(A \&* B) & linalg[transpose](A) \\
\Mathematica & A + B        & A . B          & Transpose[A]         \\
\MuPAD       & A + B        & A * B          & transpose(A)         \\
\Octave      &              &                & \\
\Pari        &              &                & \\
\Reduce      & A + B        & A * B          & tp(A)                \\
\Scilab      &              &                & \\
\Sumit       &              &                & \\
\Yacas       &              &                & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|l}
& \h{Solve the matrix equation $A x = b$} \\
\hline
\Axiom       & solve(A, transpose(b)) . 1 . particular :: Matrix \_\_\_ \\
\Derive      & \\
\DoCon       & \\
\GAP         & SolutionMat(TransposedMat(A),b)\\
\Gmp         & \\
\Macsyma     & xx: genvector('x, mat\_nrows(b))\$                       \\
             & x: part(matlinsolve(A . xx = b, xx), 1, 2)               \\
\Magnus      & \\
\Maxima      & xx: genvector('x, mat\_nrows(b))\$                       \\
             & x: part(matlinsolve(A . xx = b, xx), 1, 2)               \\
\Maple       & x:= linalg[linsolve](A, b)                               \\
\Mathematica & x = LinearSolve[A, b]                                    \\
\MuPAD       & \\
\Octave      & \\
\Pari        & \\
\Reduce      & \\
\Scilab      & \\
\Sumit       & \\
\Yacas       & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|ll}
& \h{Sum: $\sum_{i = 1}^n f(i)$} & \h{Product: $\prod_{i = 1}^n f(i)$} \\
\hline
\Axiom       & sum(f(i), i = 1..n)    & product(f(i), i = 1..n)    \\
\Derive      & SUM(f(i), i, 1, n)     & PRODUCT(f(i), i, 1, n)     \\
\DoCon       &                        & \\
\GAP         & Sum([1..n],f)          & Product([1..n],f)\\
\Gmp         &                        & \\
\Macsyma     & closedform(            & closedform(                \\
             & \q sum(f(i), i, 1, n)) & \q product(f(i), i, 1, n)) \\
\Magnus      &                        & \\
\Maxima      & closedform(            & closedform(                \\
             & \q sum(f(i), i, 1, n)) & \q product(f(i), i, 1, n)) \\
\Maple       & sum(f(i), i = 1..n)    & product(f(i), i = 1..n)    \\
\Mathematica & Sum[f[i], \{i, 1, n\}] & Product[f[i], \{i, 1, n\}] \\
\MuPAD       & sum(f(i), i = 1..n)    & product(f(i), i = 1..n)    \\
\Octave      &                        & \\
\Pari        &                        & \\
\Reduce      & sum(f(i), i, 1, n)     & prod(f(i), i, 1, n)        \\
\Scilab      &                        & \\
\Sumit       &                        & \\
\Yacas       &                        & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|ll}
& \h{Limit: $\lim_{x \rightarrow 0-} f(x)$} & \h{Taylor/Laurent/etc.\ series} \\
\hline
\Axiom       & limit(f(x), x = 0, "left")      & series(f(x), x = 0, 3)   \\
\Derive      & LIM(f(x), x, 0, -1)             & TAYLOR(f(x), x, 0, 3)    \\
\DoCon       &                                 & \\
\GAP         &                                 & \\
\Gmp         &                                 & \\
\Macsyma     & limit(f(x), x, 0, minus)        & taylor(f(x), x, 0, 3)    \\
\Magnus      &                                 & \\
\Maxima      & limit(f(x), x, 0, minus)        & taylor(f(x), x, 0, 3)    \\
\Maple       & limit(f(x), x = 0, left)        & series(f(x), x = 0, 4)   \\
\Mathematica & Limit[f[x], x->0, Direction->1] & Series[f[x],\{x, 0, 3\}] \\
\MuPAD       & limit(f(x), x = 0, Left)        & series(f(x), x = 0, 4)   \\
\Octave      &                                 & \\
\Pari        &                                 & \\
\Reduce      & limit!-(f(x), x, 0)             & taylor(f(x), x, 0, 3)    \\
\Scilab      &                                 & \\
\Sumit       &                                 & \\
\Yacas       &                                 & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|ll}
& \h{Differentiate: $\frac{d^3 f(x, y)}{dx \, dy^2}$} &
	\h{Integrate: $\int_0^1 f(x) \, dx$} \\
\hline
\Axiom       & D(f(x, y), [x, y], [1, 2]) & integrate(f(x), x = 0..1)    \\
\Derive      & DIF(DIF(f(x, y), x), y, 2) & INT(f(x), x, 0, 1)           \\
\DoCon       &                            & \\
\GAP         &                            & \\
\Gmp         &                            & \\
\Macsyma     & diff(f(x, y), x, 1, y, 2)  & integrate(f(x), x, 0, 1)     \\
\Magnus      &                            & \\
\Maxima      & diff(f(x, y), x, 1, y, 2)  & integrate(f(x), x, 0, 1)     \\
\Maple       & diff(f(x, y), x, y\$2)     & int(f(x), x = 0..1)          \\
\Mathematica & D[f[x, y], x, \{y, 2\}]    & Integrate[f[x], \{x, 0, 1\}] \\
\MuPAD       & diff(f(x, y), x, y\$2)     & int(f(x), x = 0..1)          \\
\Octave      &                            & \\
\Pari        &                            & \\
\Reduce      & df(f(x, y), x, y, 2)       & int(f(x), x, 0, 1)           \\
\Scilab      &                            & \\
\Sumit       &                            & \\
\Yacas       &                            & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|ll}
& \h{Laplace transform} & \h{Inverse Laplace transform} \\
\hline
\Axiom       & laplace(e, t, s)          & inverseLaplace(e, s, t)        \\
\Derive      & LAPLACE(e, t, s)          & \\
\DoCon       &                           & \\
\GAP         &                           & \\
\Gmp         &                           & \\
\Macsyma     & laplace(e, t, s)          & ilt(e, s, t)                   \\
\Magnus      &                           & \\
\Maxima      & laplace(e, t, s)          & ilt(e, s, t)                   \\
\Maple       & inttrans[laplace](e,t,s)  & inttrans[invlaplace](e,s,t)    \\
\Mathematica & \m{2}{\q << Calculus\`{}LaplaceTransform\`{}} \\
             & LaplaceTransform[e, t, s] & {\st InverseLaplaceTransform[e,s,t]}
	\\
\MuPAD       & transform::laplace(e,t,s) & transform::ilaplace(e, s, t)   \\
\Octave      &                           & \\
\Pari        &                           & \\
\Reduce      & \m{2}{\q load\_\,package(laplace)\$ \q load\_\,package(defint)\$}
	\\
             & laplace(e, t, s)          & invlap(e, t, s)                \\
\Scilab      &                           & \\
\Sumit       &                           & \\
\Yacas       &                           & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|l}
& \h{Solve an ODE (with the initial condition $y'(0) = 1$)} \\
\hline
\Axiom       & solve(eqn, y, x)                                      \\
\Derive      & APPLY\_\,IC(RHS(ODE(eqn, x, y, y\_)), [x, 0], [y, 1]) \\
\DoCon       & \\
\GAP         & \\
\Gmp         & \\
\Macsyma     & ode\_ibc(ode(eqn, y(x), x), x = 0, diff(y(x), x) = 1) \\
\Magnus      & \\
\Maxima      & ode\_ibc(ode(eqn, y(x), x), x = 0, diff(y(x), x) = 1) \\
\Maple       & dsolve(\{eqn, D(y)(0) = 1\}, y(x))                    \\
\Mathematica & DSolve[\{eqn, y'[0] == 1\}, y[x], x]                  \\
\MuPAD       & solve(ode(\{eqn, D(y)(0) = 1\}, y(x)))                \\
\Octave      & \\
\Pari        & \\
\Reduce      & odesolve(eqn, y(x), x)                                \\
\Scilab      & \\
\Sumit       & \\
\Yacas       & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|l}
& \h{Define the differential operator $L = D_x + I$ and apply it to $\sin x$} \\
\hline
\Axiom       & DD : LODO(Expression Integer, e +-> D(e, x)) := D(); \\
             & L:= DD + 1; \q L(sin(x))                             \\
\Derive      & \\
\DoCon       & \\
\GAP         & \\
\Gmp         & \\
\Macsyma     & load(opalg)\$ \q L: (diffop(x) - 1)\$ \q L(sin(x));  \\
\Magnus      & \\
\Maxima      & load(opalg)\$ \q L: (diffop(x) - 1)\$ \q L(sin(x));  \\
\Maple       & id:= x -> x: \q L:= (D + id): \q L(sin)(x);          \\
\Mathematica & L = D[\#, x]\& + Identity; \q Through[L[Sin[x]]]     \\
\MuPAD       & L:= (D + id): \q L(sin)(x);                          \\
\Octave      & \\
\Pari        & \\
\Reduce      & \\
\Scilab      & \\
\Sumit       & \\
\Yacas       & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|l}
& \h{2D plot of two separate curves overlayed} \\
\hline
\Axiom       & draw(x, x = 0..1); \q draw(acsch(x), x = 0..1);           \\
\Derive      & [Plot Overlay]                                            \\
\DoCon       & \\
\GAP         & \\
\Gmp         & \\
\Macsyma     & plot(x, x, 0, 1)\$ \q plot(acsch(x), x, 0, 1)\$           \\
\Magnus      & \\
\Maxima      & plot(x, x, 0, 1)\$ \q plot(acsch(x), x, 0, 1)\$           \\
\Maple       & plot(\{x, arccsch(x)\}, x = 0..1):                        \\
\Mathematica & Plot[\{x, ArcCsch[x]\}, \{x, 0, 1\}];                     \\
\MuPAD       & plotfunc(x, acsch(x), x = 0..1):                          \\
\Octave      & \\
\Pari        & \\
\Reduce      & load\_\,package(gnuplot)\$ \q plot(y = x, x = (0 .. 1))\$ \\
             & plot(y = acsch(x), x = (0 .. 1))\$                        \\
\Scilab      & \\
\Sumit       & \\
\Yacas       & \\
\end{tabular} \\[10pt]

\begin{tabular}{l|l}
& \h{Simple 3D plotting} \\
\hline
\Axiom       & draw(abs(x*y), x = 0..1, y = 0..1);              \\
\Derive      & [Plot Overlay]                                   \\
\DoCon       & \\
\GAP         & \\
\Gmp         & \\
\Macsyma     & plot3d(abs(x*y), x, 0, 1, y, 0, 1)\$             \\
\Magnus      & \\
\Maxima      & plot3d(abs(x*y), x, 0, 1, y, 0, 1)\$             \\
\Maple       & plot3d(abs(x*y), x = 0..1, y = 0..1):            \\
\Mathematica & Plot3D[Abs[x*y], \{x, 0, 1\}, \{y, 0, 1\}];      \\
\MuPAD       & plotfunc(abs(x*y), x = 0..1, y = 0..1):          \\
\Octave      & \\
\Pari        & \\
\Reduce      & load\_\,package(gnuplot)\$                       \\
             & plot(z = abs(x*y), x = (0 .. 1), y = (0 .. 1))\$ \\
\Scilab      & \\
\Sumit       & \\
\Yacas       & \\
\end{tabular} \\[10pt]

%\begin{tabular}{l|l}
%& \h{} \\
%\hline
%\Axiom       & \\
%\Derive      & \\
%\DoCon       & \\
%\GAP         & \\
%\Gmp         & \\
%\Macsyma     & \\
%\Magnus      & \\
%\Maxima      & \\
%\Maple       & \\
%\Mathematica & \\
%\MuPAD       & \\
%\Octave      & \\
%\Pari        & \\
%\Reduce      & \\
%\Scilab      & \\
%\Sumit       & \\
%\Yacas       & \\
%\end{tabular} \\[10pt]

\end{tt}
\endgroup
\end{document}

\start
Date: Thu, 29 Jul 2004 16:47:54 -0700
From: Bob McElrath
To: Bill Page
Subject: Re: REDUCE on test.axiom-developer.org

Bill Page [Bill Page] wrote:
> Everyone:
> 
> I have a very preliminary implementation of an interface
> to REDUCE implemented on the test.axom-developer.org site.
> Please see:
> 
>   http://test.axiom-developer.org/Members/billpage/TestReduce
> 
> for some initial examples.
> 
> I would appreciate the help of those Axiom developers who
> know REDUCE (or want to learn) to test this. Let me know
> what goes wrong, what is missing and especially any hints
> and tips about security issues.

Neat!

I wonder if your last example on that page is correct...neither Maple
nor Mathematica will do that integral.

I was thinking to separate your code into a different PageType.  i.e.
the PageType specifies what this document is *written* in.  Separate
=66rom that is the presentation (i.e. png/mathml which should not be a
page type -- as I have it now).  Is the new Reduce stuff in your darcs
repository?

But now we have two math backends...and it might be very useful to have
both in the same document.  So should we define a
StructuredText+LaTeX+Math pagetype where 'Math' refers to any symbolic
backend?  It would also be useful to do a bit of stylesheet magic to
differentiate between Axiom/Reduce/Maxima...  Perhaps some small text in
the UR corner that says what language this is.

\start
Date: Thu, 29 Jul 2004 20:47:05 -0400
From: Tim Daly
To: Bob McElrath
Subject: Re: REDUCE on test.axiom-developer.org
Cc: Bill Page

Bob,

>I wonder if your last example on that page is correct...neither Maple
>nor Mathematica will do that integral.

The Trager/Bronstein Integration can be broken up into a set of cases.
This is one special case that was not implemented but should be integrable.

>I was thinking to separate your code into a different PageType.  i.e.
>the PageType specifies what this document is *written* in.  Separate
>from that is the presentation (i.e. png/mathml which should not be a
>page type -- as I have it now).  Is the new Reduce stuff in your darcs
>repository?

One use I expect to have for these pages is test cases. I'm working
on CATS (Computer Algebra Test Suite). The basic idea is to document
some mathematics and then implement the computation in a variety of
systems. The idea is to pool the tedious effort of developing a test
suite so that all the systems can benefit from the effort.

NIST funded a project years ago to do a classification of the various
types of numerical mathematics. There is no corresponding classification
scheme for symbolic mathematics. CATS could form the basis for a scheme
for classification of the mathematics and provide test cases for each
category.

Bill's idea of joining several systems in one page is an important tool
for this kind of work.

>But now we have two math backends...and it might be very useful to have
>both in the same document.  So should we define a
>StructuredText+LaTeX+Math pagetype where 'Math' refers to any symbolic
>backend?  It would also be useful to do a bit of stylesheet magic to
>differentiate between Axiom/Reduce/Maxima...  Perhaps some small text in
>the UR corner that says what language this is.

\start
Date: Thu, 29 Jul 2004 21:56:39 -0400
From: Bill Page
To: Tim Daly
Subject: RE: REDUCE vs Axiom
Cc: Bob McElrath

Tim,

I have added your Rosetta document to the Axiom portal test
site at

  http://test.axiom-developer.org/wiki/RosettaStone

After you take a look at it and if you think it would be
useable in this form, then we can make whatever editting
you think necessary and then move it to the main site. For
one thing, probably we should split this document into
several web pages.

I converted this using the LaTeX to HTML converted called
HEVEA. See

  http://para.inria.fr/~maranget/hevea/

Inspite of this be a rather complex document, I think that
HEVEA did a quite good job of the conversion AND it was FAST.

Bob, perhaps this is the kind of LaTeX to HTML converter
that we could use in LatexWiki?! The licensing conditions
seem about right. :)

Regards,
Bill Page.

> -----Original Message-----
> 
> Bill,
> 
> Attached is the Rosetta document which details some of the
> differences between Axiom and other system's syntax. In
> particular, it lists REDUCE.

\start
Date: Thu, 29 Jul 2004 22:54:30 -0400
From: Tim Daly
To: Bill Page
Subject: Re: REDUCE vs Axiom
Cc: Bob McElrath

Bill,

It looks like it translated quite well.
The only two comments are that the wiki wants to insert ? after [] exprs
and the latex form of groebner (gr\"obner) didn't seem to translate well.

\start
Date: Thu, 29 Jul 2004 21:38:57 -0700
From: Bob McElrath
To: Bill Page
Subject: Re: REDUCE vs Axiom

Bill Page [Bill Page] wrote:
> I converted this using the LaTeX to HTML converted called
> HEVEA. See
> 
>   http://para.inria.fr/~maranget/hevea/
> 
> Inspite of this be a rather complex document, I think that
> HEVEA did a quite good job of the conversion AND it was FAST.
> 
> Bob, perhaps this is the kind of LaTeX to HTML converter
> that we could use in LatexWiki?! The licensing conditions
> seem about right. :)

I have avoided this math-using-HTML-only technique (latex2html does this
too) because I think it looks like crap.  Also it appears that hevea
requires the user to do some browser configuration (also something I
would like to avoid).  I think math should be either an image or MathML.

It would be nice, however, to have the math-using-HTML option and let
users decide what they want to see.

\start
Date: Fri, 30 Jul 2004 08:40:49 +0200
From: Marcus Better
To: Tim Daly
Subject: Re: Compileing spad files on Debian

> Send me the source code and let me try it here.

It happens with any code really, such as one of the spad files from 
src/algebra, or this test file:

----------------------------------------------------
)abbrev package TESTPAK TestPackage
TestPackage(): Exports == Implementation where
   Exports == with
     op: INT -> INT

   Implementation == add
     op(x) == x
---------------------------------------------------

Marcus

-- 
-----------------------------------------------------------------
Marcus Better
Department of Mathematics                      Tel. +46 8 164539
Stockholm University                           Fax +46 8 6126717
SE-106 91 Stockholm
Sweden                                     http://www.math.su.se
-----------------------------------------------------------------

\start
Date: Fri, 30 Jul 2004 10:18:01 -0400
From: Xin Li
To: list
Subject: about compilation error on mandrake 1.0

the error message as follow:
could you guys give me some hit? thanks
.
.
.
using 386-linux.defs
make[3]: Entering directory `/home/xli96/programs/axiom/lsp/gcl-2.6.3'
rm -f bin/gcl xbin/gcl
MGCLDIR=`echo /home/xli96/programs/axiom/lsp/gcl-2.6.3 | sed -e
'sX^\([a-z]\):X/\1Xg'` ; \
GCLDIR=`echo /home/xli96/programs/axiom/lsp/gcl-2.6.3` ; \
make install-command "INSTALL_LIB_DIR=$GCLDIR" "prefix=$GCLDIR"
"BINDIR=$MGCLDIR/unixport"
make[4]: Entering directory `/home/xli96/programs/axiom/lsp/gcl-2.6.3'
rm -f /home/xli96/programs/axiom/lsp/gcl-2.6.3/bin/gcl
(echo '#!/bin/sh' ; \
echo exec /home/xli96/programs/axiom/lsp/gcl-2.6.3/unixport/ \\ ; \
echo '   -dir' /home/xli96/programs/axiom/lsp/gcl-2.6.3/unixport/ \\ ; \
echo '   -libdir' /home/xli96/programs/axiom/lsp/gcl-2.6.3/ \\ ; \
echo '   -eval '\''(setq si::*allow-gzipped-file* t)'\' \\ ;\
! [ -d "" ] || echo '   -eval '\''(setq si::*tk-library* '\"\"')'\' \\;\
echo '     '\"\$@\" ) > /home/xli96/programs/axiom/lsp/gcl-2.6.3/bin/gcl;
echo '#' other options: -load "/tmp/foo.o" -load "jo.lsp" -eval '"(joe 3)"' >>
/home/xli96/programs/axiom/lsp/gcl-2.6.3/
bin/gcl
chmod a+x /home/xli96/programs/axiom/lsp/gcl-2.6.3/bin/gcl
rm -f /home/xli96/programs/axiom/lsp/gcl-2.6.3/bin/gclm.bat
if gcc --version | grep mingw >/dev/null 2>&1 ; then (echo '@SET cd='; \
 echo '@SET promp%prompt%'; \
 echo '@PROMPT SET cd'; \
 echo '@CALL>%temp%.\setdir.bat'; \
 echo '@'; \
 echo '% do not delete this line %'; \
 echo '@ECHO off'; \
 echo 'PROMPT %promp'; \
 echo 'FOR %%c IN (CALL DEL) DO %%c %temp%.\setdir.bat'; \
 echo 'set cwd=%cd%'; \
 echo 'set libdir=%cd%\..\lib\gcl-`cat majvers`.`cat minvers`'; \
 echo 'set unixportdir=%libdir%\unixport'; \
 echo 'path %cd%\..\mingw\bin;%PATH%'; \
 echo "start %unixportdir%\.exe -dir %unixportdir% -libdir %libdir% -eval
\"(setq si::*allow-gzipped-file* t)\" %1 %2 %3
 %4 %5 %6 %7 %8 %9" ) > /home/xli96/programs/axiom/lsp/gcl-2.6.3/bin/gclm.bat ;
fi
rm -f /home/xli96/programs/axiom/lsp/gcl-2.6.3/bin/gclfinal.bat
if gcc --version | grep -i mingw >/dev/null 2>&1 ; then (echo 'ECHO path
%1\mingw\bin;%PATH% > gcli.bat'; \
 echo "ECHO start %1\lib\gcl-`cat majvers`.`cat minvers`\unixport\.exe -dir
%1\lib\gcl-`cat majvers`.`cat minvers`\unixp
ort -libdir %1\lib\gcl-`cat majvers`.`cat minvers` -eval \"(setq
si::*allow-gzipped-file* t)\" %1 %2 %3 %4 %5 %6 %7 %8 %
9 >> gcli.bat" ) > /home/xli96/programs/axiom/lsp/gcl-2.6.3/bin/gclfinal.bat ;
fi
make[4]: Leaving directory `/home/xli96/programs/axiom/lsp/gcl-2.6.3'
(cd xbin ; cp ../bin/gcl .)
cd cmpnew && make gcl_collectfn.o
make[4]: Entering directory `/home/xli96/programs/axiom/lsp/gcl-2.6.3/cmpnew'
../unixport/saved_pre_gcl ../unixport/ -compile gcl_collectfn.lsp
make[4]: ../unixport/saved_pre_gcl: Command not found
make[4]: *** [gcl_collectfn.o] Error 127
make[4]: Leaving directory `/home/xli96/programs/axiom/lsp/gcl-2.6.3/cmpnew'
make[3]: *** [cmpnew/gcl_collectfn.o] Error 2
make[3]: Leaving directory `/home/xli96/programs/axiom/lsp/gcl-2.6.3'
/bin/sh: line 1: unixport/saved_gcl: No such file or directory
make[2]: *** [gcldir] Error 127
make[2]: Leaving directory `/home/xli96/programs/axiom/lsp'
make[1]: *** [lspdir] Error 2
make[1]: Leaving directory `/home/xli96/programs/axiom'
make: *** [all] Error 2
[xli96@n19h087 axiom]$ gedit README

\start
Date: Fri, 30 Jul 2004 11:37:40 -0400
From: Tim Daly
To: Xin Li
Subject: Re: about compilation error on mandrake 1.0

do you have m4 installed? (see the FAQ file in the latest distribution).
I believe this problem occurs because m4 is missing.
Look at the early messages and see if there is an error message
complaining about m4.

\start
Date: Fri, 30 Jul 2004 11:12:45 -0400
From: Stephen Wilson
To: Xin Li
Subject: Re: about compilation error on mandrake 1.0

Hi Xin,

On Fri, Jul 30, 2004 at 10:18:01AM -0400, Xin Li wrote:
> the error message as follow:
> could you guys give me some hit? thanks

This is the Steve you know from the lab! I have only posted here once
before, so I'd like to introduce myself to the rest of the list.

Im an undergrad at UWO studying math and comp-sci. I have a strong
interest in computer algebra, both theory and implementation. I am
currently working as a research assistant at ORCCA (Ontario Research
Center for Computer Algebra) implementing univariate and multivariate
polynomial factorization routines (via Hensel lifting, van Hoeij
recombination) in Aldor under the supervision of Marc Moreno
Maza. Tim, we met briefly when you last visited UWO. 

I have lurked on this list for some months now. I only jump in when my
insane inexperience isn't so obvious :) 

Xin, You need to edit lsp/Makefile.pamphlet line 300 (as of cvs 2-3
days ago). It reads as:

 ./configure --enable-vssize=65536*2 --enable-statsysbfd --enable-maxpage=128*1024 ;

you should change this to:

 ./configure --enable-vssize=65536*2 --disable-statsysbfd --enable-locbfd \
 --enable-maxpage=128*1024 ;

I built AXIOM on this very same machine a month or so ago, and this
fix worked for me. Thus, I dont think the problem is M4. I also had
this problem (with the same fix) for Slackware 9.1.

\start
Date: Fri, 30 Jul 2004 11:36:06 -0400
From: Stephen Wilson
To: list
Subject: very simple Axiom 'bug'

Tim,

Sending you this simple comment has been on my TODO list for some
time.

Regarding src/clef/edible.c.pamphlet, line 291, we have:

   struct termio ptermio;

This should be:

   struct termios ptermio;

Now if you unwind the #ifdef's you see that this is not compiled
unless 'unlikely' is defined (top of file, lines 79-83). Perhaps this
is truly dead code, but maybe this fix will save someone a few minutes
and a redundant `make' down the road.

\start
Date: Fri, 30 Jul 2004 12:56:02 -0400
From: Tim Daly
To: Stephen Wilson
Subject: Re: very simple Axiom 'bug'

>Sending you this simple comment has been on my TODO list for some
>time.
>
>Regarding src/clef/edible.c.pamphlet, line 291, we have:
>
>   struct termio ptermio;
>
>This should be:
>
>   struct termios ptermio;
>
>Now if you unwind the #ifdef's you see that this is not compiled
>unless 'unlikely' is defined (top of file, lines 79-83). Perhaps this
>is truly dead code, but maybe this fix will save someone a few minutes
>and a redundant `make' down the road.

applied. though i don't know how to test it. thanks -- tim

\start
Date: Fri, 30 Jul 2004 13:00:37 -0400
From: Tim Daly
To: Stephen Wilson
Subject: Re: about compilation error on mandrake 1.0

Steve,

what is locbfd? i need to document it either in the FAQ or 
as a separate branch of the make.

\start
Date: Fri, 30 Jul 2004 09:32:29 -0700 (PDT)
From: Cliff Yapp
To: Stephen Wilson, Xin Li
Subject: Re: about compilation error on mandrake 1.0

> Xin, You need to edit lsp/Makefile.pamphlet line 300 (as of cvs 2-3
> days ago). It reads as:
> 
>  ./configure --enable-vssize=65536*2 --enable-statsysbfd
> --enable-maxpage=128*1024 ;
> 
> you should change this to:
> 
>  ./configure --enable-vssize=65536*2 --disable-statsysbfd
> --enable-locbfd \
>  --enable-maxpage=128*1024 ;

Which GCL is currently being used in Axiom?  Until recently I had to do
the same thing with GCL on Gentoo Linux, but I'm not sure if it was
system upgrades or a GCL upgrade which eliminated the need.  

\start
Date: Fri, 30 Jul 2004 13:27:49 -0400
From: Tim Daly
To: Cliff Yapp
Subject: Re: about compilation error on mandrake 1.0

CY,

The current GCLVERSION is gcl-2.6.3

\start
Date: Fri, 30 Jul 2004 13:06:07 -0400
From: Stephen Wilson
To: list
Subject: Re: about compilation error on mandrake 1.0

Hi Tim,
 
On Fri, Jul 30, 2004 at 01:00:37PM -0400, root wrote:
> > what is locbfd? i need to document it either in the FAQ or 
> > as a separate branch of the make.

Most of my understanding of this issue has been derived from reading
this list. GCL carries its own version of the BDF (Binary File
Descriptor) library which is a part of binutils. For gcl-2.6.3 as
packaged with Axiom, in gcl/binutils/bfd/README, there is a short
description:

   BFD is an object file library.  It permits applications to use the
   same routines to process object files regardless of their format.

   BFD is used by the GNU debugger, assembler, linker, and the binary
   utilities.

   The documentation on using BFD is scanty and may be occasionally
   incorrect.  Pointers to documentation problems, or an entirely
   rewritten manual, would be appreciated.

   There is some BFD internals documentation in doc/bfdint.texi which may
   help programmers who want to modify BFD.

   BFD is normally built as part of another package.  See the build
   instructions for that package, probably in a README file in the
   appropriate directory.


Now again, for gcl-2.6.3, ./configure --help yields:

 --enable-statsysbfd \
     uses a static sytem bfd library for loading and relocationing \
     object files.

 --enable-locbfd \
      uses a static bfd library built from this source tree for \
      loading and relocationing object files. 

So, my suggestion of --disable-statsysbfd --enable-locbfd seems to
imply "don't use the system bfd library, use the gcl based library
instead". 

I have next to zero understanding as to how gcl works internally. I do
not know under what system conditions the build fails w.r.t bfd. I
have built Axiom under Mandrake 10 and Slackware 9.1, and in both cases
I have had this same problem. I will try to build under Redhat 9, and
if the build succeeds, then perhaps I can start looking at the system
differences and get some idea as to what causes the failure. If there
are any suggestions as how one might better understand this problem, I
am more than willing to help in what ever way I can.

\start
Date: Sat, 31 Jul 2004 15:16:38 -0400
From: Bill Page
To: Bob McElrath
Subject: RE:  REDUCE on test.axiom-developer.org

Bob,

On Thursday, July 29, 2004 7:48 PM you wrote:

> ...
> > 
> > http://test.axiom-developer.org/Members/billpage/TestReduce
> > 
> 
> Neat!
> 
> I wonder if your last example on that page is correct...neither
> Maple nor Mathematica will do that integral.

I don't know. My only concern was the claim made often for Axiom
hat due to the nature of the algorithm for integration "it will
either give an answer or a demonstration that no answer exists".
In this rather simple case it failed. But as Tim said, this is
probably due to Axiom not (yet) handling a specific case. I
wonder if there are other missing cases and if so, I wonder if
there is anyone around with enough knowledge of the algorithm
to fill in these gaps?

> 
> I was thinking to separate your code into a different PageType.
> i.e. the PageType specifies what this document is *written* in.
> Separate from that is the presentation (i.e. png/mathml which
> should not be a page type -- as I have it now).

I agree but I do not yet have the skills to do this.

> Is the new Reduce stuff in your darcs repository?

Yes. It is here

  http://page.axiom-developer.org/repository/LatexWiki

The patch is named "Reduce interface".

> 
> But now we have two math backends...and it might be very 
> useful to have both in the same document.  So should we
> define a StructuredText+LaTeX+Math pagetype where 'Math'
> refers to any symbolic backend?

That makes sense to me. Whether specific programs such as
Axiom or Reduce are supported could be determined dynamically
based on whether the appropriate environment is installed.
If it is not installed, then a reference to a specific system
will just look like another user-defined LaTeX environment.
Perhaps I can define some default LaTeX coding in LatexTemplate
that would make these environments display appropriately even
when the necessary program is not available.

> It would also be useful to do a bit of stylesheet magic to
> differentiate between Axiom/Reduce/Maxima...  Perhaps some 
> small text in the UR corner that says what language this is.

I think that is a good idea. You can see an example of this
in the newest version of the code at

  http://test.axiom-developer.org/Members/billpage/TestReduce

Note also my comments there about using the Reduce tri package
(TeX) package rather than the rlfi package (LaTeX). The first
version used rlfi but I ran into a problem. And tri does seem
to have some advantages in terms of line breaking etc.





\end{verbatim}
\eject
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\cleardoublepage
%\phantomsection
\addcontentsline{toc}{chapter}{Bibliography}
\bibliographystyle{axiom}
\bibliography{axiom}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\cleardoublepage
%\phantomsection
\addcontentsline{toc}{chapter}{Index}
\printindex
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\end{document}
