\start
Date: Fri, 01 Aug 2003 18:33:54 +0200
From: David Mentre
To: list
Subject: Re: Bug database on savannah

Tim Daly writes:

>  The main thing you need to do is to be proactive about
> listening for bugs on the developer list and adding them (as well as
> encouraging developers to do it themselves). The other thing is to
> maintain a knownbugs.input file and fixedbugs.input file (see bugs.input
> in the src/input subdir).

ok, I'll try to do that.

\start
Date: Sat, 02 Aug 2003 12:43:01 +0200
From: David Mentre
To: Juergen Weiss
Subject: Re: serveral bugs in codebase

Hello Juergen,

Juergen Weiss writes:

> here is a list of bugs I found, with suggested fixes:

I have not added the bug you submitted in the bug database as Tim has
already review them and replied for each of them[1]. 

However, if you consider that they are still bugs, please resubmit them
and I'll add them to the bug database (or submit directly them on the
savannah bug system[2] :).

[1] http://mail.gnu.org/archive/html/axiom-developer/2003-07/msg00195.html
[2] http://savannah.nongnu.org/bugs/?func=addbug&group=axiom

\start
Date: Sat, 02 Aug 2003 11:47:00 +0200
From: David Mentre
To: Juergen Weiss
Subject: Re: axiom.input

"Weiss, Juergen" writes:

> my suggestion would be to rename the file to .axiom.input
> (or to additionally search to a file of that name) according
> to unix practices.

Added as bug #4579.
https://savannah.nongnu.org/bugs/?func=detailbug&bug_id=4579&group_id=2938

\start
Date: Sat, 02 Aug 2003 12:04:16 +0200
From: David Mentre
To: Camm Maguire
Subject: Re: [Gcl-devel] Re: serveral bugs in codebase

Camm Maguire writes:

> In any case, I've made some progress here (compiling with safety 3).

I have added the bug and your proposed solution as bug #4580.
 https://savannah.nongnu.org/bugs/?func=detailbug&bug_id=4580&group_id=2938

\start
Date: Sat, 02 Aug 2003 12:14:01 +0200
From: David Mentre
To: Jason White
Subject: Re: Axiom for Linux available

Jason White writes:

> (1) -> )summary
> cat: /home/jason/axiom/mnt/linux/lib/summary: No such file or directory

Added as bug #4581.

https://savannah.nongnu.org/bugs/?func=detailbug&bug_id=4581&group_id=2938

\start
Date: Sat, 02 Aug 2003 13:08:21 +0200
From: David Mentre
To: list
Subject: New bugs in bug database

Hello,

I have tried to store in the bug database all the bugs that have
popped-up (in fact, unpiling the tons of email I had stored). We have
currently 28 opened bugs.

I think that some of them are already Closed in Tim's tree. But right
know, I keep them open as we can't check.

For your information, here are some stats (from [1]):

== Open Bugs By 'Category'
interpreter (12)
build process (6)
algebra (7)
lisp system (2)

== Open Bugs By 'Bug Group'
bug (25)
feature request (2)

== Open Bugs By 'Assigned to'
camm (1)
None (26)


[1] https://savannah.nongnu.org/bugs/reporting/?group=axiom

\start
Date: Sat, 02 Aug 2003 15:19:52 +0200
From: David Mentre
To: Juergen Weiss
Subject: Re: axiom.input

Hello,

"Weiss, Juergen" writes:

> my suggestion would be to rename the file to .axiom.input
> (or to additionally search to a file of that name) according
> to unix practices.

This is fixed with the following patch:

--- src/interp/i-toplev.boot.pamphlet.orig	Thu Jul 31 23:27:32 2003
+++ src/interp/i-toplev.boot.pamphlet	Sat Aug  2 15:15:48 2003
@@ -79,12 +79,12 @@
   SETQ($CURRENT_-DIRECTORY,_*DEFAULT_-PATHNAME_-DEFAULTS_*)
   if null(l) then
     if $displayStartMsgs then
-      sayKeyedMsg("S2IZ0053",[namestring ['axiom,'input]])
+      sayKeyedMsg("S2IZ0053",[namestring ['_.axiom,'input]])
     readSpadProfileIfThere()
   if $displayStartMsgs then spadStartUpMsgs()
   if $OLDLINE then
     SAY fillerSpaces($LINELENGTH,'"=")
-    sayKeyedMsg("S2IZ0050",[namestring ['axiom,'input]])
+    sayKeyedMsg("S2IZ0050",[namestring ['_.axiom,'input]])
     if $OLDLINE ^= 'END__UNIT
       then
         centerAndHighlight($OLDLINE,$LINELENGTH,'" ")
@@ -99,7 +99,7 @@
 
 readSpadProfileIfThere() ==
   -- reads SPADPROF INPUT if it exists
-  file := ['axiom,'input]
+  file := ['_.axiom,'input]
   MAKE_-INPUT_-FILENAME file =>
     SETQ(_/EDITFILE,file)
     _/RQ ()


\start
Date: Sat, 2 Aug 2003 16:51:52 -0400
From: Tim Daly
To: Juergen Weiss, David Mentre
Subject: axiom.input renamed to .axiom.input

Juergen, David,

These two patches have been applied. I've also made a note in the
Makefile.pamphlet file as a FAQ item that the file has been renamed.
This is incompatible with previous Axiom versions but is a reasonable
change to follow convention.

The complete algebra build is coming together. I'm going to be on
vacation at my mom's for the coming weekend so I expect to get a
lot done over the vacation. A build-from-scratch algebra system is
within reach in that timeframe. I've only encountered 4 files that
won't build so far so things are looking very good.

\start
Date: Sat, 2 Aug 2003 16:10:05 -0400
From: Tim Daly
To: list
Subject: conference

*,

I'll be away at ISSAC for the week. It is unclear what network access
I will have on any given day so there may be some delay in replies.

\start
Date: Sat, 2 Aug 2003 10:54:22 -0400
From: Tim Daly
To: list
Subject: Re: Axiom for Linux available

David,

Good job. I'll review the bugs as soon as we return. -- Tim

\start
Date: Sun, 3 Aug 2003 09:38:40 -0400
From: Tim Daly
To: list
Subject: contacting Linux distributors

*,

We have a major "business" opportunity in the near future.
(No, this isn't spam but it sure starts out that way :-) )

RedHat is changing its distribution model so that they maintain less
of a distribution and accept more packages directly from the developers.
I'm unfamiliar with the details of this change but it gives us a chance
to reach a larger audience.

We need to make a coordinated effort to identify and contact the major
Linux distributors (at least RehHat, SUSE, Debian, etc) to 

(a) understand their policy for "accepting and blessing" a package
(b) understand their requirements for pacakging (rpm, apt, etc)
(c) understand their config requirements
(d) understand their user interface requirements
(e) understand their support requirements

we need to "market" to them that they have a "hole" in their "product
line" in that they do not have an industrial strength scientific
computation system. We need to explain that Mathematica, Maple, MuPAD,
etc. are widely used and that Axiom can be a free alternative.

It is still early in our "product cycle" but a stand-alone algebra build
is frightenly close to reality and the rest of the system is targeted
to be built by year end. At which point the first, major effort will be
completed. 

We need to find "distributors" and RedHat's changing business model is
a major opportunity. 

Is there anyone on the list who is interested in "taking the lead" 
in the "marketing" department and coordinating "vendor" contacts?
It would involve emailing, cold-calling, and coordinating vendors to
gather the above "market requirements" and then making a plan with
the vendors to coordinate becoming part of their distribution. It is
essential that we find the right people to talk to within each 
distributor, that we work closely with them to feed their requirements
to the developers, and that they generally have a positive and professional
experience when working with us.

I understand that the prevailing "business model" of open source projects
is "build it and they will come". I want to change that to "build it and
deliver it to everyone's desktop". Yes, I know not everyone needs it but
having just one major vendor like RedHat or SUSE would put us in every
school and business worlwide.

The personal advantage to you is that you get a list of contacts within
the major vendors. You could leverage this to represent other open source
products with the same model.

I will, unfortunately, be only partially available until Aug 10th, as
I'll be at a conference. So your "classwork" assignment is to discuss
this among yourselves and volunteer to set something up.

\start
Date: Sun, 3 Aug 2003 09:05:08 -0700 (PDT)
From: Cliff Yapp
To: list
Subject: Re: [Axiom-mail] contacting Linux distributors

--- Tim Daly wrote:

> We need to make a coordinated effort to identify and contact the
> major Linux distributors (at least RehHat, SUSE, Debian, etc) 

Gentoo :-).

\start
Date: 04 Aug 2003 10:18:06 -0400
From: Camm Maguire
To: David Mentre
Subject: Re: [Gcl-devel] Re: serveral bugs in codebase

Thanks David!  I hope to have a more elegant option using ffi soon.
Doesn't sound like the priority is too high here.

Take care,

David Mentre writes:

> Camm Maguire writes:
> 
> > In any case, I've made some progress here (compiling with safety 3).
> 
> I have added the bug and your proposed solution as bug #4580.
>  https://savannah.nongnu.org/bugs/?func=detailbug&bug_id=4580&group_id=2938
> 

\start
Date: Mon, 04 Aug 2003 14:05:59 +0200
From: David Mentre
To: list
Subject: Re: [Axiom-mail] contacting Linux distributors

Hello Tim,

Tim Daly writes:

> We need to make a coordinated effort to identify and contact the major
> Linux distributors (at least RehHat, SUSE, Debian, etc) to 

As far as Debian is concerned...

> (a) understand their policy for "accepting and blessing" a package

... you need to be an official Debian Developer (a long and not so easy
process)...

> (b) understand their requirements for pacakging (rpm, apt, etc)
> (c) understand their config requirements
> (d) understand their user interface requirements
> (e) understand their support requirements

... and, for (b) to (e), follow the Debian Policy Manual:
  http://www.fr.debian.org/doc/debian-policy/ 

That's said, for Debian there are two alternatives:

 1. Camm is an official debian developer, so he might be willing to
    package Axiom
 
 2. A friend of mine wants to make a debian package so he /might/ be
    interested in packaging Axiom. Of course, once made, the package
    will have to be "blessed" by an official debian developer. It's up
    to him now to decide if he wants to do it or no.


> we need to "market" to them that they have a "hole" in their "product
> line" in that they do not have an industrial strength scientific
> computation system. We need to explain that Mathematica, Maple, MuPAD,
> etc. are widely used and that Axiom can be a free alternative.

I personally think that explaining what is Axiom, compared to
Mathematica & Co., is the role of the main page of the Axiom website
(with screenshots, binaries, ...). We will have to present tutorials,
papers, etc.

I have stored all the references posted by Bill Page and links posted by
Jason White. That might be a good start for a web page.

By the way, friend of mine in Gulliver (the local Linux User Group here
in Rennes) and I are willing to provide Axiom's binaries for x86,
PowerPC and Linux-Sparc64.


> I understand that the prevailing "business model" of open source projects
> is "build it and they will come". I want to change that to "build it and
> deliver it to everyone's desktop". Yes, I know not everyone needs it but
> having just one major vendor like RedHat or SUSE would put us in every
> school and business worlwide.

I still do believe that "build it and they will come" is the right think
to do. Of course, we can ease the process by providing pre-build
packages. But I think that developers from major and minor linux
distribution will come if we can show the capabilities of Axiom.


Sorry to be so negative towards your initial proposal.

\start
Date: 04 Aug 2003 13:10:09 -0400
From: Camm Maguire
To: list
Subject: Re: contacting Linux distributors

Greetings!

Tim Daly writes:

> *,
> 
> We have a major "business" opportunity in the near future.
> (No, this isn't spam but it sure starts out that way :-) )
> 
> RedHat is changing its distribution model so that they maintain less
> of a distribution and accept more packages directly from the developers.
> I'm unfamiliar with the details of this change but it gives us a chance
> to reach a larger audience.
> 
> We need to make a coordinated effort to identify and contact the major
> Linux distributors (at least RehHat, SUSE, Debian, etc) to 
> 

I was planning on submitting/maintaining the Debian pakcage of axiom
when its released.  I'm already a Debian developer.  I maintain gcl,
maxima, and acl2 for Debian already.
 

> (a) understand their policy for "accepting and blessing" a package
> (b) understand their requirements for pacakging (rpm, apt, etc)
> (c) understand their config requirements
> (d) understand their user interface requirements
> (e) understand their support requirements
> 
> we need to "market" to them that they have a "hole" in their "product
> line" in that they do not have an industrial strength scientific
> computation system. We need to explain that Mathematica, Maple, MuPAD,
> etc. are widely used and that Axiom can be a free alternative.
> 
> It is still early in our "product cycle" but a stand-alone algebra build
> is frightenly close to reality and the rest of the system is targeted
> to be built by year end. At which point the first, major effort will be
> completed. 
> 
> We need to find "distributors" and RedHat's changing business model is
> a major opportunity. 
> 
> Is there anyone on the list who is interested in "taking the lead" 
> in the "marketing" department and coordinating "vendor" contacts?
> It would involve emailing, cold-calling, and coordinating vendors to
> gather the above "market requirements" and then making a plan with
> the vendors to coordinate becoming part of their distribution. It is
> essential that we find the right people to talk to within each 
> distributor, that we work closely with them to feed their requirements
> to the developers, and that they generally have a positive and professional
> experience when working with us.
> 
> I understand that the prevailing "business model" of open source projects
> is "build it and they will come". I want to change that to "build it and
> deliver it to everyone's desktop". Yes, I know not everyone needs it but
> having just one major vendor like RedHat or SUSE would put us in every
> school and business worlwide.
> 
> The personal advantage to you is that you get a list of contacts within
> the major vendors. You could leverage this to represent other open source
> products with the same model.
> 
> I will, unfortunately, be only partially available until Aug 10th, as
> I'll be at a conference. So your "classwork" assignment is to discuss
> this among yourselves and volunteer to set something up.

\start
Date: Fri, 08 Aug 2003 22:19:21 +0200
From: David Mentre
To: list
Subject: hacking-tips-n-tricks.input.pamphlet

Hello,

I have collected Tim's posts on this list regarding way to hack more
easily on Axiom. Here is the resulting .pamphlet file.

You can produce it with the following commands:
  noweave -delay hacking-tips-n-tricks.input.pamphlet  > hacking-tips-n-tricks.tex
  latex hacking-tips-n-tricks.tex 
  latex hacking-tips-n-tricks.tex 

(I suppose you have the noweb package installed somewhere)

Best regards,
d.

\documentclass{article}
\usepackage{noweb}
\begin{document}
\title{Tips \& tricks to hack on Axiom}
\author{Nicolas Bourbaki}
\date{8th of August, 2003}
\maketitle
\begin{abstract}
This short document gives some hints to hack on Axiom. All of those tips
come from posts by Tim Daly on axiom-developer mailing list during
July 2003.
\end{abstract}

\tableofcontents

\section{Playing with lisp in Axiom}

If you wish you can look at the [[.clisp]] (boot translation), [[.lisp]]
(hand written lisp) or [[.lsp]] (compiler output) files, modify them,
and reload them. All of the translated code is translated to common lisp
and the common lisp lies in [[int/algebra]] and its
subdirectories. Essentially you can consider the compiler/interpreter
sources to live in this subdirectory.

You can drop into lisp by typing:
<<axiom-prompt>>=
)fin
@ 
and return to the Axiom prompt by typing:
<<axiom-prompt>>=
(restart)
@ 

You can issue any lisp command (e.g. call the function foo) thus:
<<axiom-prompt>>=
)lisp (foo)
@ 

\section{Direct typing of lisp under Axiom's interpreter}

You can type

<<axiom-prompt>>=
)lisp (setq $DALYMODE t)
@ 

and then any line that begins with an open-paren at the Axiom
prompt will be given directly to the lisp. e.g. after setting
[[$dalymode]] above you can type:

<<axiom-prompt>>=
(pprint |$InteractiveFrame|)
@ 

directly to the Axiom prompt. It makes lisp debugging easier.

\section{Setting your startup preferences}

If you add a file in your home directory called ``[[axiom.input]]'' (or
``[[.axiom.input]]'', depending on your CVS version) it will be read and
executed when axiom starts. This is useful for various reasons including
setting various switches. Mine reads:

<<.axiom.input>>=
)lisp (pprint "running .axiom.input")
)set quit unprotected
)set message autoload off
)set message startup off
@ 

You can execute any command in [[.axiom.input]]. Be aware that this will
\emph{also} be run while you are doing a "make" in Axiom compilation so
be careful what you ask do.

\section{Knowing the current Axiom's version}

There is code (called yearweek) in [[src/interp/util.lisp.pamphlet]]
that \emph{timestamps} Axiom during the build process. The format of
Axiom's version number is (badly) documented in the file. It is also
documented in [[src/interp/Makefile.pamphlet]]. It is a variable of the
form:
\begin{quote}
  YYYYMMDDxxx where YYYY is the year, MM is the month, DD is the day
  and xxx is a unique number identifying a build.
\end{quote}

Every interpsys image should have a [[*yearweek*]] variable, thus:

<<axiom-prompt>>=
)lisp *yearweek*
@ 

should give you the current version of your Axiom.

\section{Controlling Axiom's break behavior}

You can control whether Axiom will stop on errors by typing
<<axiom-prompt>>=
)set break break
@ 

If you type:
<<axiom-prompt>>=
)set break
@ 
Axiom will show you the various options.

\section{Getting lisp code generated from boot code}

If you are making changes to boot code it is sometimes helpful to
check the generated lisp code to ensure it does what you want.
You can convert an individual boot file to common lisp using the
[[boottran::boottocl]] function:

<<axiom-prompt>>=
)fin       -- drop into common lisp
(boottran::boottocl "foo.boot") 
@

when you do this it creates a [[foo.clisp]] file in
[[../../int/interp]]. 

Alternatively if you work from the pamphlet file the process is
more painful as you have to do

<<axiom-prompt>>=
)cd (yourpath)/int/interp
)sys notangle ../../src/interp/foo.boot.pamphlet >foo.boot
)fin
(boottran::boottocl "foo.boot") 
(restart)
@ 

The [[)cd]] step tells axiom to cd to the int/interp subdirectory.

The [[)sys notangle...]] extracts the boot file from the pamphlet file

The [[)fin]] step drops into common lisp

The [[(bootran...]] converts the "foo.boot" file to "foo.clisp"

The [[(restart)]] re-enters the top level loop

\section{Getting lisp code from algebra code}

If you want to watch the domain-level functions get called from a
particular domain (e.g [[CHAR]]) you can look in the [[int/algebra]]
directory. You will find either [[CHAR.lsp]] or [[CHAR.NRLIB/code.lsp]].
That file will contain the lisp code that results from compiling the
domain. You can trace any (or all) functions from that domain.  (Indeed
there is a file called [[monitor.lisp.pamphlet]] that will do those kind
of things. It exists only for debugging reasons).

If you want to trace [[CHAR]] operations you can look at this lisp
code, load it as interpreted code, and watch it execute. type:

<<axiom-prompt>>=
)cd (yourpath)/int/algebra
)lisp (load "CHAR.NRLIB/code.lsp")
)lisp (trace |CHAR;=;2$B;1|)
)lisp (trace |CHAR;<;2$B;2|)
....
@ 

(look at the code.lsp file for the rest of the names).

Generally, for debugging I create a file called [[d.lisp]]
that contains a sequence of commands so I can rerun them
every time I restart Axiom. So, for instance, my current
file says things like:

<<d.lisp>>=
(in-package "BOOT")   ;;; where Axiom runs
#+:akcl
(defun S- (l1 l2)
 (reverse (set-difference l1 l2 :test #'equal)))
#-akcl
(defun S- (l1 l2)
 (reverse (set-difference l1 l2 :test #'equal)))
(load "RING.NRLIB/code.lsp")
... etc
@ 

Then when I start Axiom I type:

<<axiom-prompt>>=
)lisp (load "/tmp/d.lisp")
@ 

Additionally it is sometimes helpful to run debugsys rather than
interpsys. Common lisp gives you some debugging facilities. For example,
trace takes conditions that allow you to control what it does. Also
you can use the step function. So you can type:

<<axiom-prompt>>=
)lisp (step (+ (* 2 4) 5))
@ 

and watch each step of the evaluation. Since all of Axiom is really just
common lisp (boot files turn into [[int/interp/fn.clisp]] files, spad
files become [[int/interp/fn.NRLIB/code.lsp]] files and lisp files just
become [[int/interp/lisp]] files) you can watch anything execute.

The best place to look for the failure is likely in some subfunction
of [[|knownInfo|]]. You can watch this function execute by typing:

<<axiom-prompt>>=
)lisp (setq *print-arry* t)    ;; show the contents of vectors
)lisp (setq *print-circle* t)  ;; watch for circular structures
)lisp (setq *print-pretty* t)  ;; indent reasonably
)lisp (setq *print-length* 5)  ;; limit the length to some value
)lisp (setq *print-level* 5)   ;; limit the depth to some value
)lisp (trace |knownInfo|)
)co xpoly )con XPR           
@ 

\section{Observing the Axiom interpreter at work}

As a developer note you can see the interpreter searching for
operations by doing the following:

<<axiom-prompt>>=
)lisp (setq |$monitorNewWorld| t)
@ 

The messages are terse but you can more about what the interpreter
is trying to do.

\section{On Axiom's frames}

Axiom stores its variable bindings in a ``\emph{frame}'' which,
internally is an alist stored in the variable [[|$InteractiveFrame|]].

Suppose you have the following Axiom interpreter command:

<<axiom-prompt>>=
dom:=MonoidRing(Polynomial PrimeField 5, Permutation Integer)
@ 


If you create the 'dom' variable above you can see it by doing:

<<axiom-prompt>>=
)lisp (pprint |$InteractiveFrame|)
@ 

\section{Looking into dynamic lookups of Axiom}

Axiom creates arrays of functions and does a dynamic lookup using a
macro called [[SPADCALL]]. (Look at the [[.lsp]] files in the
subdirectories under [[int/algebra]]) To see this macro expanded you can
start up Axiom and type:
<<axiom-prompt>>=
)lisp (macroexpand '(spadcall a b))
@ 

Each algebra file has its own private vector and there is no central
place where recursion occurs. You can see this call-vector by doing:

<<axiom-prompt>>=
1
)lisp (setq *print-array* t)
)lisp (setq *print-circle* t)
)lisp (hget |$ConstructorCache| '|Integer|)
@ 
The Axiom compiler hard-codes indexes into the call vector using the
spadcall macro.

\end{document}

\start
Date: Sat, 9 Aug 2003 17:03:58 +0200
From: Juergen Weiss
To: list
Subject: compiling the algebra files with gcl

Hi,

I finally managed to get gcl compiled on a debian linux system. So
I tried to compile axiom with gcl as well.

I used the makefile and the small modifications to the algebra
files, which sucessfully compiled with cmu lisp. I ran into similar
problems as with the cmu build of the algebra, namely that the
database files distributed do not exactly fit the algebra
(especially with linear ordinary differential equations, but some others
as well). Compiling some files with some others manually 
preloaded and rebuilding the database files and the interpsys
image several times, I was finally able to compile all algebra
files. Right now, I try to compile all the algebra files from
scratch with the new database files. This will take a while
and I will report success or failure as soon as the compilation
will have finished.

\start
Date: 09 Aug 2003 21:48:42 -0400
From: Camm Maguire
To: Juergen Weiss
Subject: Re: compiling the algebra files with gcl

Greetings!

Great Juergen!  I'd especially be interested in the steps you've
taken, and in whether the duplicate set issue remains in your final
build.   Please drop me a line if you have the time.

Take care,

Juergen Weiss writes:

> Hi,
> 
> I finally managed to get gcl compiled on a debian linux system. So
> I tried to compile axiom with gcl as well.
> 
> I used the makefile and the small modifications to the algebra
> files, which sucessfully compiled with cmu lisp. I ran into similar
> problems as with the cmu build of the algebra, namely that the
> database files distributed do not exactly fit the algebra
> (especially with linear ordinary differential equations, but some others
> as well). Compiling some files with some others manually 
> preloaded and rebuilding the database files and the interpsys
> image several times, I was finally able to compile all algebra
> files. Right now, I try to compile all the algebra files from
> scratch with the new database files. This will take a while
> and I will report success or failure as soon as the compilation
> will have finished.

\start
Date: Sun, 10 Aug 2003 09:21:41 +0200
From: Juergen Weiss
To: Camm Maguire
Subject: RE: compiling the algebra files with gcl

Hi Camm,

the set issue does not occur anymore. I have put a tgz file
under http://www.uni-mainz.de/~weiss/axiom.algebra.jw.20030810.tgz
It contains the src/algebra (I did not include a diff, because I'm
uncertain about the base), the share/algebra database files,
and a Makefile.inc for the axiom root and a Makefile in the
src/algebra directory. You must fix the axiom root in Makefile.inc,
then you should be able to compile the algebra in src/algebra
directly. Sorry, but I do not have pamphlet files for the
Makefiles.

The interval.spad file (translated from interval.as) is incomplete
(and some parts are incorrect due to the incompletion), but it
compiles and it lets you compile the rest as well.


> Greetings!
> 
> Great Juergen!  I'd especially be interested in the steps you've
> taken, and in whether the duplicate set issue remains in your final
> build.   Please drop me a line if you have the time.
> 
> Take care,
> 
> Juergen Weiss writes:
> 
> > Hi,
> > 
> > I finally managed to get gcl compiled on a debian linux system. So
> > I tried to compile axiom with gcl as well.
> > 
> > I used the makefile and the small modifications to the algebra
> > files, which sucessfully compiled with cmu lisp. I ran into similar
> > problems as with the cmu build of the algebra, namely that the
> > database files distributed do not exactly fit the algebra
> > (especially with linear ordinary differential equations, 
> but some others
> > as well). Compiling some files with some others manually 
> > preloaded and rebuilding the database files and the interpsys
> > image several times, I was finally able to compile all algebra
> > files. Right now, I try to compile all the algebra files from
> > scratch with the new database files. This will take a while
> > and I will report success or failure as soon as the compilation
> > will have finished.

\start
Date: 11 Aug 2003 12:57:57 -0400
From: Camm Maguire
To: Juergen Weiss
Subject: Re: compiling the algebra files with gcl

Greetings, and thanks for this!

Please excuse me, but I am still a bit unclear.  After unpacking your
tree, do I need to insert these directories in place of their
counterparts in my copy of the full CVS tree, or can I unpack
elsewhere, and set variables to refer to my existing build where
needed?  

Take care,

Juergen Weiss writes:

> Hi Camm,
> 
> the set issue does not occur anymore. I have put a tgz file
> under http://www.uni-mainz.de/~weiss/axiom.algebra.jw.20030810.tgz
> It contains the src/algebra (I did not include a diff, because I'm
> uncertain about the base), the share/algebra database files,
> and a Makefile.inc for the axiom root and a Makefile in the
> src/algebra directory. You must fix the axiom root in Makefile.inc,
> then you should be able to compile the algebra in src/algebra
> directly. Sorry, but I do not have pamphlet files for the
> Makefiles.
> 
> The interval.spad file (translated from interval.as) is incomplete
> (and some parts are incorrect due to the incompletion), but it
> compiles and it lets you compile the rest as well.
> 
> 
> > Greetings!
> > 
> > Great Juergen!  I'd especially be interested in the steps you've
> > taken, and in whether the duplicate set issue remains in your final
> > build.   Please drop me a line if you have the time.
> > 
> > Take care,
> > 
> > Juergen Weiss writes:
> > 
> > > Hi,
> > > 
> > > I finally managed to get gcl compiled on a debian linux system. So
> > > I tried to compile axiom with gcl as well.
> > > 
> > > I used the makefile and the small modifications to the algebra
> > > files, which sucessfully compiled with cmu lisp. I ran into similar
> > > problems as with the cmu build of the algebra, namely that the
> > > database files distributed do not exactly fit the algebra
> > > (especially with linear ordinary differential equations, 
> > but some others
> > > as well). Compiling some files with some others manually 
> > > preloaded and rebuilding the database files and the interpsys
> > > image several times, I was finally able to compile all algebra
> > > files. Right now, I try to compile all the algebra files from
> > > scratch with the new database files. This will take a while
> > > and I will report success or failure as soon as the compilation
> > > will have finished.

\start
Date: 11 Aug 2003 15:51:07 -0400
From: Camm Maguire
To: Juergen Weiss
Subject: Re: compiling the algebra files with gcl

Hello again!  Just an update, I replace src/algebra with Juergen's
tree, installed and edited his Makefile.inc, and then attempted a
clean build.

Fails at this point:

=============================================================================
0 making /fix/t1/camm/axiom/axiom2/new/new/int/algebra/LODO1.NRLIB from /fix/t1/camm/axiom/axiom2/new/new/int/algebra/LODO1.spad

(AXIOM Sockets) The AXIOM server number is undefined.
-----------------------------------------------------------------------------
   Issue )copyright to view copyright notices.
   Issue )summary for a summary of useful system commands.
   Issue )quit to leave AXIOM and return to shell.
Monday July 28, 2003 at 18:57:13 
-----------------------------------------------------------------------------
 
(1) ->    Loading /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/apply.
   Loading /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/c-doc.
   Loading /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/c-util.
   Loading /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/profile.
   Loading /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/category.
   Loading /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/compiler.
   Loading /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/define.
   Loading /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/functor.
   Loading /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/info.
   Loading /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/iterator.
   Loading /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/modemap.
   Loading /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/nruncomp.
   Loading /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/package.
   Loading /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/htcheck.
   Loading /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/xruncomp.
   Compiling AXIOM source code from file 
      /fix/t1/camm/axiom/axiom2/new/new/int/algebra/LODO1.spad using 
      old system compiler.
   Loading /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/parsing.
   Loading /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/bootlex.
   Loading /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/def.
   Loading /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/fnewmeta.
   Loading /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/metalex.
   Loading /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/metameta.
   Loading /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/parse.
   Loading /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/postpar.
   Loading /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/postprop.
   Loading /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/preparse.
   LODO1 abbreviates domain LinearOrdinaryDifferentialOperator1 
****** comp fails at level 1 with expression: ******
((DEF (|LinearOrdinaryDifferentialOperator1| A)
      (NIL (|DifferentialRing|)) (NIL NIL)
      (|LinearOrdinaryDifferentialOperator| A
          (|elt| A |differentiate|))))
****** level 1  ******
$x:= (DEF (LinearOrdinaryDifferentialOperator1 A) (NIL (DifferentialRing)) (NIL NIL) (LinearOrdinaryDifferentialOperator A (elt A differentiate)))
$m:= $EmptyMode
$f:=
((((|$DomainsInScope| # #))))
 
   >> Apparent user error:
   bad == form 
   (DEF (LinearOrdinaryDifferentialOperator1 A) ( ) ( ) (LinearOrdinaryDifferentialOperator A (elt A differentiate)))

protected-symbol-warn called with (NIL)
(1) ->    Please enter y or yes if you really want to leave the interactive 
      environment and return to the operating system:
0 making /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/algebra/LODO1.o from /fix/t1/camm/axiom/axiom2/new/new/int/algebra/LODO1.NRLIB
cp: cannot stat `/fix/t1/camm/axiom/axiom2/new/new/int/algebra/LODO1.NRLIB/code.o': No such file or directory
=============================================================================

Take care,

Juergen Weiss writes:

> Hi Camm,
> 
> the set issue does not occur anymore. I have put a tgz file
> under http://www.uni-mainz.de/~weiss/axiom.algebra.jw.20030810.tgz
> It contains the src/algebra (I did not include a diff, because I'm
> uncertain about the base), the share/algebra database files,
> and a Makefile.inc for the axiom root and a Makefile in the
> src/algebra directory. You must fix the axiom root in Makefile.inc,
> then you should be able to compile the algebra in src/algebra
> directly. Sorry, but I do not have pamphlet files for the
> Makefiles.
> 
> The interval.spad file (translated from interval.as) is incomplete
> (and some parts are incorrect due to the incompletion), but it
> compiles and it lets you compile the rest as well.
> 

> > Greetings!
> > 
> > Great Juergen!  I'd especially be interested in the steps you've
> > taken, and in whether the duplicate set issue remains in your final
> > build.   Please drop me a line if you have the time.
> > 
> > Juergen Weiss writes:
> > 
> > > Hi,
> > > 
> > > I finally managed to get gcl compiled on a debian linux system. So
> > > I tried to compile axiom with gcl as well.
> > > 
> > > I used the makefile and the small modifications to the algebra
> > > files, which sucessfully compiled with cmu lisp. I ran into similar
> > > problems as with the cmu build of the algebra, namely that the
> > > database files distributed do not exactly fit the algebra
> > > (especially with linear ordinary differential equations, 
> > but some others
> > > as well). Compiling some files with some others manually 
> > > preloaded and rebuilding the database files and the interpsys
> > > image several times, I was finally able to compile all algebra
> > > files. Right now, I try to compile all the algebra files from
> > > scratch with the new database files. This will take a while
> > > and I will report success or failure as soon as the compilation
> > > will have finished.

\start
Date: Mon, 11 Aug 2003 15:57:11 -0400
From: Tim Daly
To: partner@redflag-linux.com
Subject: Red Flag package requirements

Gentlemen,

I was given this address as a contact point for the developers of
your Linux distribution.

My name is Tim Daly. I am the lead developer on the Axiom project
(http://savannah.nongnu.org/projects/axiom). Axiom is a computer
algebra system that was originally developed at IBM Research. It
was later sold commercially by the Numerical Algorithms Group. As
of September, 2002 it was withdrawn from the market and released
as free and open source code.

Axiom is a recognized, world-class computer algebra system similar
in scope to Mathematica and Maple. The released system is still being 
restructured but we expect to have an initial distribution, including
sources, by year end. The system is licensed under the Modified BSD.

Axiom's primary audience is academic with a strong following by
researchers, teachers, and students. These groups tend to be early
users of technology such as Linux.

We are planning to make Axiom run on all of the major operating
system distributions. Can you forward this mail to someone who can
provide technical requirements for working with your distribution?

We look forward to a mutually cooperative effort that will enhance
your distribution's value to your customers and provide Axiom with
a wider audience.

Please feel free to contact me at your convenience.

Thank you.

\start
Date: Mon, 11 Aug 2003 21:58:00 +0200
From: Juergen Weiss
To: Camm Maguire
Subject: RE: compiling the algebra files with gcl

Did you install the new database files (share/algebra) as
well and generated a fresh interpsys with that database?
The old database contains definitions, which conflict
with the distributed algebra sources. 

> Hello again!  Just an update, I replace src/algebra with Juergen's
> tree, installed and edited his Makefile.inc, and then attempted a
> clean build.
> 
> Fails at this point:
> 
> =
==========================
==========================
============
> ===============
> 0 making 
> /fix/t1/camm/axiom/axiom2/new/new/int/algebra/LODO1.NRLIB 
> from /fix/t1/camm/axiom/axiom2/new/new/int/algebra/LODO1.spad
> 
> (AXIOM Sockets) The AXIOM server number is undefined.
> --------------------------------------------------------------
> ---------------
>    Issue )copyright to view copyright notices.
>    Issue )summary for a summary of useful system commands.
>    Issue )quit to leave AXIOM and return to shell.
> Monday July 28, 2003 at 18:57:13 
> --------------------------------------------------------------
> ---------------
>  
> (1) ->    Loading 
> /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/apply.
>    Loading /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/c-doc.
>    Loading 
> /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/c-util.
>    Loading 
> /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/profile.
>    Loading 
> /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/category.
>    Loading 
> /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/compiler.
>    Loading 
> /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/define.
>    Loading 
> /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/functor.
>    Loading /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/info.
>    Loading 
> /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/iterator.
>    Loading 
> /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/modemap.
>    Loading 
> /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/nruncomp.
>    Loading 
> /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/package.
>    Loading 
> /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/htcheck.
>    Loading 
> /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/xruncomp.
>    Compiling AXIOM source code from file 
>       /fix/t1/camm/axiom/axiom2/new/new/int/algebra/LODO1.spad using 
>       old system compiler.
>    Loading 
> /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/parsing.
>    Loading 
> /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/bootlex.
>    Loading /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/def.
>    Loading 
> /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/fnewmeta.
>    Loading 
> /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/metalex.
>    Loading 
> /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/metameta.
>    Loading /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/parse.
>    Loading 
> /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/postpar.
>    Loading 
> /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/postprop.
>    Loading 
> /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/preparse.
>    LODO1 abbreviates domain LinearOrdinaryDifferentialOperator1 
> ****** comp fails at level 1 with expression: ******
> ((DEF (|LinearOrdinaryDifferentialOperator1| A)
>       (NIL (|DifferentialRing|)) (NIL NIL)
>       (|LinearOrdinaryDifferentialOperator| A
>           (|elt| A |differentiate|))))
> ****** level 1  ******
> $x:= (DEF (LinearOrdinaryDifferentialOperator1 A) (NIL 
> (DifferentialRing)) (NIL NIL) 
> (LinearOrdinaryDifferentialOperator A (elt A differentiate)))
> $m:= $EmptyMode
> $f:=
> ((((|$DomainsInScope| # #))))
>  
>    >> Apparent user error:
>    bad == form 
>    (DEF (LinearOrdinaryDifferentialOperator1 A) ( ) ( ) 
> (LinearOrdinaryDifferentialOperator A (elt A differentiate)))
> 
> protected-symbol-warn called with (NIL)
> (1) ->    Please enter y or yes if you really want to leave 
> the interactive 
>       environment and return to the operating system:
> 0 making 
> /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/algebra/LODO1.o 
> from /fix/t1/camm/axiom/axiom2/new/new/int/algebra/LODO1.NRLIB
> cp: cannot stat 
> `/fix/t1/camm/axiom/axiom2/new/new/int/algebra/LODO1.NRLIB/cod
> e.o': No such file or directory

> 
> > Hi Camm,
> > 
> > the set issue does not occur anymore. I have put a tgz file
> > under http://www.uni-mainz.de/~weiss/axiom.algebra.jw.20030810.tgz
> > It contains the src/algebra (I did not include a diff, because I'm
> > uncertain about the base), the share/algebra database files,
> > and a Makefile.inc for the axiom root and a Makefile in the
> > src/algebra directory. You must fix the axiom root in Makefile.inc,
> > then you should be able to compile the algebra in src/algebra
> > directly. Sorry, but I do not have pamphlet files for the
> > Makefiles.
> > 
> > The interval.spad file (translated from interval.as) is incomplete
> > (and some parts are incorrect due to the incompletion), but it
> > compiles and it lets you compile the rest as well.

> > > Greetings!
> > > 
> > > Great Juergen!  I'd especially be interested in the steps you've
> > > taken, and in whether the duplicate set issue remains in 
> your final
> > > build.   Please drop me a line if you have the time.
> > > 
> > > Take care,
> > > 
> > > Juergen Weiss writes:
> > > 
> > > > Hi,
> > > > 
> > > > I finally managed to get gcl compiled on a debian linux 
> system. So
> > > > I tried to compile axiom with gcl as well.
> > > > 
> > > > I used the makefile and the small modifications to the algebra
> > > > files, which sucessfully compiled with cmu lisp. I ran 
> into similar
> > > > problems as with the cmu build of the algebra, namely that the
> > > > database files distributed do not exactly fit the algebra
> > > > (especially with linear ordinary differential equations, 
> > > but some others
> > > > as well). Compiling some files with some others manually 
> > > > preloaded and rebuilding the database files and the interpsys
> > > > image several times, I was finally able to compile all algebra
> > > > files. Right now, I try to compile all the algebra files from
> > > > scratch with the new database files. This will take a while
> > > > and I will report success or failure as soon as the compilation
> > > > will have finished.

\start
Date: Mon, 11 Aug 2003 16:00:40 -0400
From: Tim Daly
To: Camm Maguire
Subject: Re: compiling the algebra files with gcl

Camm,

lodo.spad fails to compile. I think it is listed in the known bugs file.

Tim

\start
Date: Mon, 11 Aug 2003 20:13:08 -0400
From: Tim Daly
To: Juergen Weiss
Subject: make to ${MAKE}

Done. I forgot to fix the field that says "Won't fix". 
perhaps I was in a bad mood :-)
or perhaps I need training on how to fix bug reports. sigh.

\start
Date: 12 Aug 2003 10:13:34 -0400
From: Camm Maguire
To: Juergen Weiss
Subject: Re: compiling the algebra files with gcl

Greetings!

Juergen Weiss writes:

> Did you install the new database files (share/algebra) as
> well and generated a fresh interpsys with that database?
> The old database contains definitions, which conflict
> with the distributed algebra sources. 
> 

I hadn't -- thanks for pointing this out.  However, after moving
share/algebra over too, make clean, and then make, lodo1 still fails
to compile, as separately noted by Tim.  Do your changes resolve the
lodo1 compilation issue?

Take care,
> 

> > Hello again!  Just an update, I replace src/algebra with Juergen's
> > tree, installed and edited his Makefile.inc, and then attempted a
> > clean build.
> > 
> > Fails at this point:
> > 
> > ==============================================================
> > ===============
> > 0 making 
> > /fix/t1/camm/axiom/axiom2/new/new/int/algebra/LODO1.NRLIB 
> > from /fix/t1/camm/axiom/axiom2/new/new/int/algebra/LODO1.spad
> > 
> > (AXIOM Sockets) The AXIOM server number is undefined.
> > --------------------------------------------------------------
> > ---------------
> >    Issue )copyright to view copyright notices.
> >    Issue )summary for a summary of useful system commands.
> >    Issue )quit to leave AXIOM and return to shell.
> > Monday July 28, 2003 at 18:57:13 
> > --------------------------------------------------------------
> > ---------------
> >  
> > (1) ->    Loading 
> > /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/apply.
> >    Loading /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/c-doc.
> >    Loading 
> > /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/c-util.
> >    Loading 
> > /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/profile.
> >    Loading 
> > /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/category.
> >    Loading 
> > /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/compiler.
> >    Loading 
> > /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/define.
> >    Loading 
> > /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/functor.
> >    Loading /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/info.
> >    Loading 
> > /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/iterator.
> >    Loading 
> > /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/modemap.
> >    Loading 
> > /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/nruncomp.
> >    Loading 
> > /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/package.
> >    Loading 
> > /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/htcheck.
> >    Loading 
> > /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/xruncomp.
> >    Compiling AXIOM source code from file 
> >       /fix/t1/camm/axiom/axiom2/new/new/int/algebra/LODO1.spad using 
> >       old system compiler.
> >    Loading 
> > /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/parsing.
> >    Loading 
> > /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/bootlex.
> >    Loading /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/def.
> >    Loading 
> > /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/fnewmeta.
> >    Loading 
> > /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/metalex.
> >    Loading 
> > /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/metameta.
> >    Loading /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/parse.
> >    Loading 
> > /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/postpar.
> >    Loading 
> > /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/postprop.
> >    Loading 
> > /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/preparse.
> >    LODO1 abbreviates domain LinearOrdinaryDifferentialOperator1 
> > ****** comp fails at level 1 with expression: ******
> > ((DEF (|LinearOrdinaryDifferentialOperator1| A)
> >       (NIL (|DifferentialRing|)) (NIL NIL)
> >       (|LinearOrdinaryDifferentialOperator| A
> >           (|elt| A |differentiate|))))
> > ****** level 1  ******
> > $x:= (DEF (LinearOrdinaryDifferentialOperator1 A) (NIL 
> > (DifferentialRing)) (NIL NIL) 
> > (LinearOrdinaryDifferentialOperator A (elt A differentiate)))
> > $m:= $EmptyMode
> > $f:=
> > ((((|$DomainsInScope| # #))))
> >  
> >    >> Apparent user error:
> >    bad == form 
> >    (DEF (LinearOrdinaryDifferentialOperator1 A) ( ) ( ) 
> > (LinearOrdinaryDifferentialOperator A (elt A differentiate)))
> > 
> > protected-symbol-warn called with (NIL)
> > (1) ->    Please enter y or yes if you really want to leave 
> > the interactive 
> >       environment and return to the operating system:
> > 0 making 
> > /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/algebra/LODO1.o 
> > from /fix/t1/camm/axiom/axiom2/new/new/int/algebra/LODO1.NRLIB
> > cp: cannot stat 
> > `/fix/t1/camm/axiom/axiom2/new/new/int/algebra/LODO1.NRLIB/cod
> > e.o': No such file or directory
> > ==============================================================
> > ===============
> > 
> > Take care,
> > 
> > Juergen Weiss writes:
> > 
> > > Hi Camm,
> > > 
> > > the set issue does not occur anymore. I have put a tgz file
> > > under http://www.uni-mainz.de/~weiss/axiom.algebra.jw.20030810.tgz
> > > It contains the src/algebra (I did not include a diff, because I'm
> > > uncertain about the base), the share/algebra database files,
> > > and a Makefile.inc for the axiom root and a Makefile in the
> > > src/algebra directory. You must fix the axiom root in Makefile.inc,
> > > then you should be able to compile the algebra in src/algebra
> > > directly. Sorry, but I do not have pamphlet files for the
> > > Makefiles.
> > > 
> > > The interval.spad file (translated from interval.as) is incomplete
> > > (and some parts are incorrect due to the incompletion), but it
> > > compiles and it lets you compile the rest as well.
> > > 
> > > > 
> > > > Greetings!
> > > > 
> > > > Great Juergen!  I'd especially be interested in the steps you've
> > > > taken, and in whether the duplicate set issue remains in 
> > your final
> > > > build.   Please drop me a line if you have the time.
> > > > 
> > > > Take care,
> > > > 
> > > > Juergen Weiss writes:
> > > > 
> > > > > Hi,
> > > > > 
> > > > > I finally managed to get gcl compiled on a debian linux 
> > system. So
> > > > > I tried to compile axiom with gcl as well.
> > > > > 
> > > > > I used the makefile and the small modifications to the algebra
> > > > > files, which sucessfully compiled with cmu lisp. I ran 
> > into similar
> > > > > problems as with the cmu build of the algebra, namely that the
> > > > > database files distributed do not exactly fit the algebra
> > > > > (especially with linear ordinary differential equations, 
> > > > but some others
> > > > > as well). Compiling some files with some others manually 
> > > > > preloaded and rebuilding the database files and the interpsys
> > > > > image several times, I was finally able to compile all algebra
> > > > > files. Right now, I try to compile all the algebra files from
> > > > > scratch with the new database files. This will take a while
> > > > > and I will report success or failure as soon as the compilation
> > > > > will have finished.

\start
Date: Tue, 12 Aug 2003 17:44:56 +0200
From: Juergen Weiss
To: Camm Maguire
Subject: RE: compiling the algebra files with gcl

Hi,

yes, with the changes to the algebra files and the 
new database files I was able to compile all the
algebra files (with just a call to make in src/algebra). 

Did you do a make clean in the toplevel directory?


> Greetings!
> 
> Juergen Weiss writes:
> 
> > Did you install the new database files (share/algebra) as
> > well and generated a fresh interpsys with that database?
> > The old database contains definitions, which conflict
> > with the distributed algebra sources. 
> > 
> 
> I hadn't -- thanks for pointing this out.  However, after moving
> share/algebra over too, make clean, and then make, lodo1 still fails
> to compile, as separately noted by Tim.  Do your changes resolve the
> lodo1 compilation issue?
> 
> Take care,
> 
> > Juergen 
> 

\start
Date: Tue, 12 Aug 2003 12:03:09 -0400
From: Tim Daly
To: Juergen Weiss
Subject: Re: compiling the algebra files with gcl
Cc: Camm Maguire

GCL still seems to have a remaining issue. The following 5 domains 
won't compile: CPIMA COMBF D01AGNT d01WGTS INBFF

I'm still finishing the remaining 231 domains which should take another
30 hours or so. After that I'll look into the compile issue with these
domains.

\start
Date: Tue, 12 Aug 2003 18:21:18 +0200
From: Juergen Weiss
To: list
Subject: RE: compiling the algebra files with gcl
Cc: Camm Maguire

I was able to compile these files as well (with cmu and with gcl).

> 
> GCL still seems to have a remaining issue. The following 5 domains 
> won't compile: CPIMA COMBF D01AGNT d01WGTS INBFF
> 
> I'm still finishing the remaining 231 domains which should 
> take another
> 30 hours or so. After that I'll look into the compile issue with these
> domains.

\start
Date: Tue, 12 Aug 2003 19:03:58 +0200
From: David Mentre
To: list
Subject: Re: make to ${MAKE}

Hi Tim,

Glad to see you on board again. I hope we will see a new CVS snapshot
soon. It seems that we are close to a 0.1 release. :)

Tim Daly writes:

> Done. I forgot to fix the field that says "Won't fix". 
> perhaps I was in a bad mood :-)
> or perhaps I need training on how to fix bug reports. sigh.

By the way, could you next time say something like "changed 'make' in
'${MAKE}' in all Makefile.pamphlet" instead of "fixed" in your Follow-up
Comments to the bug? It's much easier for mere mortal to follow bug
fixing. Or maybe we should promote a literate bug report system. :)

\start
Date: Tue, 12 Aug 2003 13:18:44 -0400
From: Tim Daly
To: David Mentre
Subject: Re: make to ${MAKE}

actually, there were 2 "fixed" messages for that make bug report.
the first one had a comment attached that said changed make to ${MAKE}
but was classified as "won't fix".

the second one updated the first to change the "won't fix" to "fixed" status.

the usual "luser" error as i hadn't used savannah's bug tracker before.

the CVS for savannah is frightenly close. i have to finish the algebra
lattice (estimate 30 hours given the current rate of 8 per hour) and
automate the database build (est 8 hours). i'd also like to automate
the regression testing but that can wait.

there are a few domains that still won't compile but getting a version
up on savannah is more important. besides, then i can get you guys to
help debug :-)

version numbers, by the way, are going to be in "*yearweek*" format
which is printed (badly) at the initial command prompt. i don't find
the usual v3.1.4.1.5.9.2.6 version numbers useful. yearweek at least
tells you when the build was done.

if i can figure out the magic command to add tags to CVS files i plan
to tag each release so we can regress to the correct level for bug
testing.  i'll have to try out tagging on tenkan's cvs as i've never
done it before and cvs has a way of persisting my mistakes :-)

\start
Date: Tue, 12 Aug 2003 19:38:16 +0200
From: David Mentre
To: list
Subject: Tagging in CVS (was: Re: make to ${MAKE})

Tim,

It seems that your comment was lost at some point. Anyway, it doesn't
matter. 

Tim Daly writes:

> if i can figure out the magic command to add tags to CVS files i plan

Use the CVS 'rtag' command.

See section 3. in following documentation:

 CVS Branch and Tag Primer
 http://cepa.fnal.gov/CPD/CPD/cvs_branches.html

 3.1 Creating a Tag

      In order to name the current end of the main trunk of a module, use the command
      cvs rtag Tagname my_module 

      In order to name the current end of a branch of a module, use the command
      cvs rtag -r Branchname Tagname my_module


Otherwise, here is the official documentation:

 4.4 Tags--Symbolic revisions
 http://www.cvshome.org/docs/manual/cvs-1.11.6/cvs_4.html#SEC48

\start
Date: Tue, 12 Aug 2003 15:21:49 -0400
From: Tim Daly
To: James Amundson
Subject: Axiom and Maxima

Jim,

I had an interesting discussion with Richard Fateman about testing.
It appears that we can combine Axiom and Maxima in a single image.
It would then be possible to run a function in Axiom at the 
command prompt and also run the same function in Maxima from Axiom's
command prompt:

-> 2+2 => 4          <== execute in Axiom
-> )lisp (maxima)    <== the )lisp runs a lisp command
# 2+2 => 4           <== execute in Maxima
# quit               <== leave Maxima
-> 

This will greatly facilitate testing and also help the CATS effort along.
I'm not sure of the namespace collision issues but it seems like they
could all be worked out.

Camm, 

Do you know if Maxima will load into an Axiom workspace? 
What issues arise?

If this works we could easily make "cover domains" for Maxima's
functionality in Axiom. 

I already have plans "in place" (see the
savannah website) to merge ACL2 in a similar way. 

\start
Date: 13 Aug 2003 11:38:10 -0400
From: Camm Maguire
To: Juergen Weiss
Subject: Re: compiling the algebra files with gcl

Greetings!  Just a status update -- I tried again, rechecking
that Juergen's files were in place, make clean, and I do get much
further.  At first I was confused by messages of this type:

=============================================================================
      /fix/t1/camm/axiom/axiom2/new/new/int/algebra/LODO1.NRLIB/code

(1) ->    Please enter y or yes if you really want to leave the interactive 
      environment and return to the operating system:
 
   >> System error:
   %.EOF is not of type SEQUENCE.

protected-symbol-warn called with (NIL)
=============================================================================

but this seems to only be a missing 'y' in the input.  Now I get to
the following when comiling SFRTCAT.spad:

=============================================================================
   Loading /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/preparse.
   SFRTCAT abbreviates category SquareFreeRegularTriangularSetCategory 
------------------------------------------------------------------------
   initializing NRLIB SFRTCAT for SquareFreeRegularTriangularSetCategory 
   compiling into NRLIB SFRTCAT 

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

 
   >> System error:
   The function |RegularTriangularSetCategory| is undefined.
=============================================================================

Juergen, do you get past this point?  (I'm assuming yes).  If so, I'll
do some more checking.


Juergen Weiss writes:

> Hi,
> 
> yes, with the changes to the algebra files and the 
> new database files I was able to compile all the
> algebra files (with just a call to make in src/algebra). 
> 
> Did you do a make clean in the toplevel directory?
> 
> > 
> > Greetings!
> > 
> > Juergen Weiss writes:
> > 
> > > Did you install the new database files (share/algebra) as
> > > well and generated a fresh interpsys with that database?
> > > The old database contains definitions, which conflict
> > > with the distributed algebra sources. 
> > > 
> > 
> > I hadn't -- thanks for pointing this out.  However, after moving
> > share/algebra over too, make clean, and then make, lodo1 still fails
> > to compile, as separately noted by Tim.  Do your changes resolve the
> > lodo1 compilation issue?

\start
Date: Wed, 13 Aug 2003 13:08:38 -0400
From: Tim Daly
To: Camm Maguire
Subject: LODO* files won't compile

It appears, as Juergen points out, that the LODO* issue is due to a 
broken database. The databases were originally copied from the NAG
version but need to be updated. The NAG version appears to be broken.
Once I finish the lattice I'll be automating the rebuild of the
databases so this problem should go away.

\start
Date: Wed, 13 Aug 2003 19:10:52 +0200
From: Juergen Weiss
To: Camm Maguire
Subject: RE: compiling the algebra files with gcl

Hi,

yes, I have a axiom.input file in my home directory with
)set quit unprotected

I had problems with that domain as well, but I thought
I fixed them already with the current database. I will
have a look at it in more detail.

What you can do is a make -k, there should be only
a very few files where compilation will fail.

> 
> Greetings!  Just a status update -- I tried again, rechecking
> that Juergen's files were in place, make clean, and I do get much
> further.  At first I was confused by messages of this type:

>       /fix/t1/camm/axiom/axiom2/new/new/int/algebra/LODO1.NRLIB/code
> 
> (1) ->    Please enter y or yes if you really want to leave 
> the interactive 
>       environment and return to the operating system:
>  
>    >> System error:
>    %.EOF is not of type SEQUENCE.
> 
> protected-symbol-warn called with (NIL)

> 
> but this seems to only be a missing 'y' in the input.  Now I get to
> the following when comiling SFRTCAT.spad:
> 

>    Loading 
> /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/preparse.
>    SFRTCAT abbreviates category 
> SquareFreeRegularTriangularSetCategory 
> --------------------------------------------------------------
> ----------
>    initializing NRLIB SFRTCAT for 
> SquareFreeRegularTriangularSetCategory 
>    compiling into NRLIB SFRTCAT 
> 
> ;;;     ***       |SquareFreeRegularTriangularSetCategory| REDEFINED
> Time: 0.01 SEC.
> 
>  
>    >> System error:
>    The function |RegularTriangularSetCategory| is undefined.
> 
> Juergen, do you get past this point?  (I'm assuming yes).  If so, I'll
> do some more checking.
> 
> Take care,
> 
> Juergen Weiss writes:
> 
> > Hi,
> > 
> > yes, with the changes to the algebra files and the 
> > new database files I was able to compile all the
> > algebra files (with just a call to make in src/algebra). 
> > 
> > Did you do a make clean in the toplevel directory?
> > 

> > > Greetings!
> > > 
> > > Juergen Weiss writes:
> > > 
> > > > Did you install the new database files (share/algebra) as
> > > > well and generated a fresh interpsys with that database?
> > > > The old database contains definitions, which conflict
> > > > with the distributed algebra sources. 
> > > > 
> > > 
> > > I hadn't -- thanks for pointing this out.  However, after moving
> > > share/algebra over too, make clean, and then make, lodo1 
> still fails
> > > to compile, as separately noted by Tim.  Do your changes 
> resolve the
> > > lodo1 compilation issue?

\start
Date: Wed, 13 Aug 2003 19:14:10 +0200
From: Juergen Weiss
To: Camm Maguire
Subject: RE: LODO* files won't compile

There is actually a target in my Makefile. But the generation
of the database fails, because of a missing file. I just
TOUCHed the file, then the build did work.

> 
> It appears, as Juergen points out, that the LODO* issue is due to a 
> broken database. The databases were originally copied from the NAG
> version but need to be updated. The NAG version appears to be broken.
> Once I finish the lattice I'll be automating the rebuild of the
> databases so this problem should go away.
> 

\start
Date: Wed, 13 Aug 2003 13:30:22 -0400
From: Bill Page
To: Camm Maguire, Juergen Weiss
Subject: RE: compiling the algebra files with gcl

Camm, Tim, Juergen, et al.

I have just completed compiling the algebra source
provided by Juergen Weiss with no significant errors.
I now have a new running version of Axiom under
RedHat 8.0 that no longer fails the following test

> pgr := MonoidRing(Polynomial PrimeField 5, Permutation Integer)
> p:pgr := 1
> q:pgr := 1
> set [p,q]

What I did was:

 1) start with the old tenkan.org CVS version
 2) apply all the patches discussed to date on this list
    including the patch to bootsys discovered by Camm
 3) untar Juergen Weiss's version of the algebra files
    into the new axiom root directory
 4) modify the first line of the Makefile.inc to refer
    to the new root.
 5) issue a make from the root to build the whole system
 6) 11 hours later I have a new system.

I can send the log file containing the output of the make
if anyone is interested. The only errors that occured
were "%.EOF is not of type SEQUENCE" as noted below plus
numerous errors of the form "Unexpected HT command: \spad"
Apparently these are generated by the contents of some
comment lines like

  ++ \\spad{asinh(x)} returns the hyperbolic arc-sine ...

I will continue to test this new version against some
of the bugs that have been reported.

--------

I noticed that some of the floating bugs that I reported
a few weeks ago using the axiom.tenkan.org version are not
yet included at Savannah so I think I will start these.

---------

Tim, could you please send a few minutes and explain to
us the difference between what you are doing with the
new algebra makefile compared to what Juergen has done?

Thanks.

Bill Page.


> Greetings!  Just a status update -- I tried again, rechecking
> that Juergen's files were in place, make clean, and I do get much
> further.  At first I was confused by messages of this type:
> 
> ==============================================================
> ===============
>       /fix/t1/camm/axiom/axiom2/new/new/int/algebra/LODO1.NRLIB/code
> 
> (1) ->    Please enter y or yes if you really want to leave 
> the interactive 
>       environment and return to the operating system:
>  
>    >> System error:
>    %.EOF is not of type SEQUENCE.
> 
> protected-symbol-warn called with (NIL)
> ==============================================================
> ===============
> 
> but this seems to only be a missing 'y' in the input.  Now I get to
> the following when comiling SFRTCAT.spad:
> 
> ==============================================================
> ===============
>    Loading 
> /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/preparse.
>    SFRTCAT abbreviates category 
> SquareFreeRegularTriangularSetCategory 
> --------------------------------------------------------------
> ----------
>    initializing NRLIB SFRTCAT for 
> SquareFreeRegularTriangularSetCategory 
>    compiling into NRLIB SFRTCAT 
> 
> ;;;     ***       |SquareFreeRegularTriangularSetCategory| REDEFINED
> Time: 0.01 SEC.
> 
>  
>    >> System error:
>    The function |RegularTriangularSetCategory| is undefined.
> ==============================================================
> ===============
> 
> Juergen, do you get past this point?  (I'm assuming yes).  If so, I'll
> do some more checking.
> 
> 
> Juergen Weiss writes:
> 
> > Hi,
> > 
> > yes, with the changes to the algebra files and the 
> > new database files I was able to compile all the
> > algebra files (with just a call to make in src/algebra). 
> > 
> > Did you do a make clean in the toplevel directory?
> > 
> > Regards,
> > 
> > 
> > Juergen Weiss
> > 
> > Juergen Weiss	  | Universitaet Mainz, Zentrum fuer 
> Datenverarbeitung,
> > Juergen Weiss| 55099 Mainz, Tel: +49(6131)39-26361, FAX:
> > +49(6131)39-26407
> >  
> > 
> > > 
> > > Greetings!
> > > 
> > > Juergen Weiss writes:
> > > 
> > > > Did you install the new database files (share/algebra) as
> > > > well and generated a fresh interpsys with that database?
> > > > The old database contains definitions, which conflict
> > > > with the distributed algebra sources. 
> > > > 
> > > 
> > > I hadn't -- thanks for pointing this out.  However, after moving
> > > share/algebra over too, make clean, and then make, lodo1 
> still fails
> > > to compile, as separately noted by Tim.  Do your changes 
> resolve the
> > > lodo1 compilation issue?

\start
Date: Wed, 13 Aug 2003 13:34:20 -0400
From: Tim Daly
To: Juergen Weiss
Subject: Re: LODO* files won't compile
Cc: Camm Maguire

Yes, there is a database rebuild target already in the makefile 
but it needs review. I have implemented routines that rebuild the
algebra, rebuild the database, etc (see the code in util.lisp.pamphlet).
Once the system is built from scratch then parts of it can be remade
without trouble.

\start
Date: 13 Aug 2003 13:56:34 -0400
From: Camm Maguire
To: list
Subject: Re: [Gcl-devel] Axiom and Maxima
Cc: James Amundson

Greetings!

Tim Daly writes:

> Jim,
> 
> I had an interesting discussion with Richard Fateman about testing.
> It appears that we can combine Axiom and Maxima in a single image.
> It would then be possible to run a function in Axiom at the 
> command prompt and also run the same function in Maxima from Axiom's
> command prompt:
> 
> -> 2+2 => 4          <== execute in Axiom
> -> )lisp (maxima)    <== the )lisp runs a lisp command
> # 2+2 => 4           <== execute in Maxima
> # quit               <== leave Maxima
> -> 
> 
> This will greatly facilitate testing and also help the CATS effort along.
> I'm not sure of the namespace collision issues but it seems like they
> could all be worked out.
> 

An ambitious idea!

> Camm, 
> 
> Do you know if Maxima will load into an Axiom workspace? 
> What issues arise?
> 

I must confess I do not know much about Axiom workspaces.  If they are
like lisp packages, there should not be too much problem.

> If this works we could easily make "cover domains" for Maxima's
> functionality in Axiom. 
> 
> I already have plans "in place" (see the
> savannah website) to merge ACL2 in a similar way. 
> 

I was looking for this on the site, but could not see anything
pertinent.  What am I missing?

\start
Date: Wed, 13 Aug 2003 19:58:10 +0200
From: David Mentre
To: Bill Page
Subject: Re: compiling the algebra files with gcl
Cc: Camm Maguire

Bill Page writes:

> I noticed that some of the floating bugs that I reported
> a few weeks ago using the axiom.tenkan.org version are not
> yet included at Savannah so I think I will start these.

Oops. I'm sorry. I did my best to report all bugs but apparently I
missed some. Please do the report on savannah or send to me the emails
where you reported them.

\start
Date: Wed, 13 Aug 2003 20:05:28 +0200
From: David Mentre
To: Camm Maguire
Subject: re: [Gcl-devel] Axiom and Maxima
Cc: James Amundson

Hi Camm,

Camm Maguire writes:

> Tim:
>> I already have plans "in place" (see the
>> savannah website) to merge ACL2 in a similar way. 
>> 
>
> I was looking for this on the site, but could not see anything
> pertinent.  What am I missing?

I think Tim is refering to the following:

In http://www.nongnu.org/axiom/

 BOYER-MOORE THEOREM PROVER INTEGRATION
  Motivation: Computational logic is a branch of computer mathematics
              that is not currently available in Axiom. The Boyer-Moore
              theorem prover, written in common lisp, provides a good
              general purpose platform to study the interaction of the
              theorem proving systems with Axiom
-  Contact Boyer & Moore
-  Contact Chandy & Misra
-  Download ACL2
   Build ACL2
   Invoke ACL2 from Axiom
   Integrate ACL2 into Axiom
     Use Dijkstra's methods against SetCategory
   Draft research paper

\start
Date: Wed, 13 Aug 2003 14:36:13 -0400
From: Bill Page
To: David Mentre
Subject: RE: compiling the algebra files with gcl

David,

Ok, I've submitted the floating point bug as

  https://savannah.nongnu.org/bugs/?func=detailbug&bug_id=4733&group_id=2938

I hope I did it right. This is the first time I've used
Savannah this way. I was a little confused about the
used of some of the fields on the bug report form. Let
me know if you think I could have / should have done it
a little differently. Thanks.

> 
> Bill Page writes:
> 
> > I noticed that some of the floating bugs that I reported
> > a few weeks ago using the axiom.tenkan.org version are not
> > yet included at Savannah so I think I will start these.
> 
> Oops. I'm sorry. I did my best to report all bugs but apparently I
> missed some. Please do the report on savannah or send to me the emails
> where you reported them.

\start
Date: Wed, 13 Aug 2003 14:43:42 -0400
From: Tim Daly
To: Bill Page
Subject: Juergen's makefile
Cc: Camm Maguire

re: explaining the difference between Juergen's work and mine...

I've been continuing the build of the system and have only glanced at
Juergen's work so this is (a) not intended as criticism and (b) not
well founded and open to discussion.

First, there are dependencies beyond the 19 layers (I'm up to 21 so far)
but the compiles may be insensitive to these. I'm laying out the lattice
because without knowing these dependencies you can't build a system from
scratch. It is possible that after 19 layers there is no point in 
continuing but (a) I haven't proven that and (b) I'm nearly finished.
It would be good to figure out how many layers form the minimal set.

Second, remember that this Makefile is only really used to build the
system from scratch. Once the algebra code exists it is reasonably
insenstive to changes. In particular, changes to these original algebra 
files will have to be reviewed carefully before being made so once there
is a running version of the algebra all of this work is basically 
documenation. If you need to build the system from scratch on, say a 64
bit architecture, you really need to understand why it is built that way.

Third, Juergen's makefile looks a lot simpler as it is shorter and
less verbose. This is, in fact, the trend I'm trying hard to correct.
I'm simply unable to decode:

@ ( echo '1.$$s,${IN}/\(.*\)/.spad\.pamphlet:<<\(.*\)\.lsp .......

well, that's not strictly true but you get the idea. It is important
to remember that I have Makefiles that look like this from long ago.
I like the apparent brevity of the rules. However the machine doesn't care
if there are 3 or 300 rules but humans do and I need to work with Juergen
to reach some compromise. At the moment I'm just using very simple rule
forms rather than GNU make extensions. Dirt simple rules, in fact.

My main problem with the brief approach goes to the heart of the "new
Axiom".  Juergen's makefile includes less than a dozen comment
lines. But think carefully about what this Makefile is doing. It
bridges the gap between the algebra world (where the files are
organized into logical piles of categories, domains, and packages) and
the method of constructing the world from scratch. It contains an
ordering which is required but documented nowhere else. Why does this
ordering exist? What does it imply about the algebra? How will someone
30 years from now figure out what to change, what it affects, and why
it has that effect when the need to change the core algebra files?

Makefiles document how to build the system. One reason that it has
taken so long to get a running system from the NAG sources is that the
expertise of how to build the system (and it's associated makefiles)
was lost. (Another reason is that you used to need an Axiom to build
an Axiom.)  That is partially my fault from the past. I built
Makefiles just like Juergen (and everybody else) does. I wrote
Makefiles for the machine to read. But that is misguided. I can build
a system (witness the downloadable version).  But I'm trying to build
it so you guys can understand it, modify it, and maintain it. If we
don't document it then nobody will be able to do these things and
Axiom will die.

Juergen's makefile is basically a condensed version of mine and is
correct (modulo the other layers). Use it to build and test the algebra.
However, the CVS version is going to end up as a pamphlet file that
leans heavily on explanation. The current version you see has a great
deal of "scaffolding" as I'm keeping build notes in the same file.
These build notes are unnecessary and will be elided eventually.
I need them to form the lattice. 

Again, this isn't a criticism of Juergen's great work. 

\start
Date: Wed, 13 Aug 2003 15:13:39 -0400
From: Tim Daly
To: list
Subject: Re: ACL2 list

(journaling ACL2 note)

Matt,

The referenced web page item is mine, not David's. (I'm the lead
developer on Axiom.)  I worked with Nqthm years ago (trying to prove a
rule based program written in OPS5) and have recently tried to spin up
on ACL2. The misunderstandings are mine. We've emailed each other a
long time ago but the whole discussion died because I'm still buried
under making Axiom open source. The use and support of ACL2 in Axiom
is, as you can see, still on the todo list.

Axiom lacks two fundamental things.  First, Axiom does not support
proofs. I believe I can correct this issue in the next few years and
ACL2 seems like a well-founded system to use as a basis. Exactly how
this should be done is an open research question. I have some ideas
but I need a running Axiom system to do the research work.

Second, Axiom's algorithms are unproven.  It is going to take
considerable research to figure out how to match ACL2's model to
Axiom's model. I spent a fair amount of time reading ACL2 documents
and Dijkstra's work last summer (shortly after his death) and
pondering this question. At the moment it's all "on the shelf". If you
look at Axiom with a 30 year timeframe it is unacceptable that the
algorithms are unproven. The answers given will still be valid 30
years from now but how can we trust a system without at least
attempting to prove it correct?

It is true that Chandy and Misra have nothing to do with ACL2 but they
formed part of my background research on the subject. The latest piece
of background reading (unmentioned on the webpage) is on MetaPRL. 

My apologies for spamming the ACL2 list. 

=====================================================================
Date: Wed, 13 Aug 2003 13:26:04 -0500
From: Matt Kaufmann
To: David Mentre
Subject: ACL2 list
Cc: Camm Maguire, J Moore

Hi --

I notice that you just joined the ACL2 list.  Welcome!

I have probably been remiss in waiting to point something about about the ACL2
list.  I believe that most ACL2 users, while very interested in using GCL, are
not likely to be interested in GCL implementation/development issues.  It's
completely up to you (and Camm, and other GCL people) what to email to the ACL2
list, but I thought I should mention this.

On another note, you mention the following, and I have some comments below.

  In http://www.nongnu.org/axiom/

   BOYER-MOORE THEOREM PROVER INTEGRATION
    Motivation: Computational logic is a branch of computer mathematics
		that is not currently available in Axiom. The Boyer-Moore
		theorem prover, written in common lisp, provides a good
		general purpose platform to study the interaction of the
		theorem proving systems with Axiom
  -  Contact Boyer & Moore
  -  Contact Chandy & Misra
  -  Download ACL2
     Build ACL2
     Invoke ACL2 from Axiom
     Integrate ACL2 into Axiom
       Use Dijkstra's methods against SetCategory
     Draft research paper

The Boyer-Moore theorem prover, also called Nqthm, is indeed a product of Bob
Boyer and J Moore.  ACL2 is authored by me (Matt Kaufmann) and J Moore, albeit
with significant early contributions from Boyer, who however is no longer
involved (by his choice).

I believe that integrating ACL2 into Axiom could be an interesting project, and
if you succeed I (and others on the ACL2 list, I believe) would like to know
about it.  It would be especially interesting if Axiom could somehow contribute
to ACL2's proofs, but that may be a difficult problem (if for no other reason
than that their logics are presumably different).

By the way, I'm not aware of any connection that Chandy or Misra have to this
stuff.

\start
Date: Wed, 13 Aug 2003 21:46:20 +0200
From: Juergen Weiss
To: Bill Page
Subject: RE: Juergen's makefile
Cc: Camm Maguire

Actually, as I already noted, the ordering is mainly due
to Tim. I just went on with the missing files in alphabetical
order, tried to compile the files and if it failed,
I added the files after Tim's explicit list as layer 19. So 
what's in the makefile is an explicit list and the rest alphabetically
ordered. There may be dependencies between the alphabetically
listed files. If you know the dependencies, just extend
the explicit list. Not further changes necessary. 

My idea was to explicitly state the nontrival and let make
care for the rest. And I wanted the command to compile an
algebra file to be in one place, so that it is easy to
change. It's very difficult to understand a system,
were some nontrivial build information is found after
some thousand lines of ``trivial=B4=B4 commands. In my framework,
if you add a new algebra file, you just have to add 
the file to the list of .spad files and the modules
it defines at the right place in the modules list.

You can explicitly define groups of 
files and dependencies between them in my framework as
well. I wonder if this is really necessary. Make generates
the dependencies of a target sequentially and that's all
I used. Especially if as you suggest, the make file is
used only to build the system from scratch. Other
dependencies are necessary, if you change one file and
want to rebuild as few files as necessary. 

I know that my makefile needs some explanation. It was 
just a first version. Though I'm proud of the ed
hack :-), I know it is quite cryptic. But I did not
wanted to put any time in the makefiles, if they would
not pass peer review ;-). 

Juergen

> 
> re: explaining the difference between Juergen's work and mine...
> 
> I've been continuing the build of the system and have only glanced at
> Juergen's work so this is (a) not intended as criticism and (b) not
> well founded and open to discussion.
> 
> First, there are dependencies beyond the 19 layers (I'm up to 
> 21 so far)
> but the compiles may be insensitive to these. I'm laying out 
> the lattice
> because without knowing these dependencies you can't build a 
> system from
> scratch. It is possible that after 19 layers there is no point in 
> continuing but (a) I haven't proven that and (b) I'm nearly finished.
> It would be good to figure out how many layers form the minimal set.
> 
> Second, remember that this Makefile is only really used to build the
> system from scratch. Once the algebra code exists it is reasonably
> insenstive to changes. In particular, changes to these 
> original algebra 
> files will have to be reviewed carefully before being made so 
> once there
> is a running version of the algebra all of this work is basically 
> documenation. If you need to build the system from scratch 
> on, say a 64
> bit architecture, you really need to understand why it is 
> built that way.
> 
> Third, Juergen's makefile looks a lot simpler as it is shorter and
> less verbose. This is, in fact, the trend I'm trying hard to correct.
> I'm simply unable to decode:
> 
> @ ( echo '1.$$s,${IN}/\(.*\)/.spad\.pamphlet:<<\(.*\)\.lsp .......
> 
> well, that's not strictly true but you get the idea. It is important
> to remember that I have Makefiles that look like this from long ago.
> I like the apparent brevity of the rules. However the machine 
> doesn't care
> if there are 3 or 300 rules but humans do and I need to work 
> with Juergen
> to reach some compromise. At the moment I'm just using very 
> simple rule
> forms rather than GNU make extensions. Dirt simple rules, in fact.
> 
> My main problem with the brief approach goes to the heart of the "new
> Axiom".  Juergen's makefile includes less than a dozen comment
> lines. But think carefully about what this Makefile is doing. It
> bridges the gap between the algebra world (where the files are
> organized into logical piles of categories, domains, and packages) and
> the method of constructing the world from scratch. It contains an
> ordering which is required but documented nowhere else. Why does this
> ordering exist? What does it imply about the algebra? How will someone
> 30 years from now figure out what to change, what it affects, and why
> it has that effect when the need to change the core algebra files?
> 
> Makefiles document how to build the system. One reason that it has
> taken so long to get a running system from the NAG sources is that the
> expertise of how to build the system (and it's associated makefiles)
> was lost. (Another reason is that you used to need an Axiom to build
> an Axiom.)  That is partially my fault from the past. I built
> Makefiles just like Juergen (and everybody else) does. I wrote
> Makefiles for the machine to read. But that is misguided. I can build
> a system (witness the downloadable version).  But I'm trying to build
> it so you guys can understand it, modify it, and maintain it. If we
> don't document it then nobody will be able to do these things and
> Axiom will die.
> 
> Juergen's makefile is basically a condensed version of mine and is
> correct (modulo the other layers). Use it to build and test 
> the algebra.
> However, the CVS version is going to end up as a pamphlet file that
> leans heavily on explanation. The current version you see has a great
> deal of "scaffolding" as I'm keeping build notes in the same file.
> These build notes are unnecessary and will be elided eventually.
> I need them to form the lattice. 
> 
> Again, this isn't a criticism of Juergen's great work. 
> 

\start
Date: Wed, 13 Aug 2003 17:04:11 -0400
From: Tim Daly
To: list
Subject: testing axiom

*,

Assuming you use Juergen's makefile and get the world running
it would be valuable to run each of the input files and hand-check
the results for failures. Any bugs should be opened on the axiom
website so we can track them. Perhaps you can claim a*.input, b*.input, 
etc so the work isn't duplicated.

\start
Date: Thu, 14 Aug 2003 18:47:53 +0200
From: David Mentre
To: sal@kachinatech.com
Subject: Update for AXIOM web page on SAL

Hello,

While browsing SAL, I noticed your page on Axiom is not up-to-date:
  http://sal.kachinatech.com/A/1/AXIOM.html

Axiom is now a free software, under a BSD-like licence. Could you update
your page with following information? Thanks.


--The SAL  fields--


Axiom

AXIOM is a powerful computer algebra system which provides a complete
environment for anyone needing to manipulate and solve mathematical
formulae. Its application is wide-ranging, from pure mathematics
research through branches of physics, chemistry, biology and engineering
to financial modelling and cryptography.

Current Version:   unknown (no stable release yet)

License Type:   Free Software (BSD-like)

    Home Site: http://savannah.nongnu.org/projects/axiom/

Source Code Availability:
    Yes

    Available Binary Packages:

        * Debian Package: No
        * RedHat RPM Package: No
        * Other Packages: ??

Targeted Platforms:
    Unix, Windows

Software/Hardware Requirements:
    None

    Other Links: None

Mailing Lists/USENET News Groups:
    http://savannah.nongnu.org/mail/?group=axiom

    - axiom-mail@nongnu.org        General purpose conversation list
    - list   Discuss developer questions
    - axiom-legal@nongnu.org       License discussions


    User Comments:

  * None

See A Screen Shot? (Not Yet) 

\start
Date: Thu, 14 Aug 2003 19:29:59 +0200
From: David Mentre
To: Bill Page
Subject: Re: compiling the algebra files with gcl

Hello Bill,

Bill Page writes:

>  I was a little confused about the used of some of the fields on the
> bug report form.

I tried to follow Tim examples. It wasn't clear to me. :)

> Let me know if you think I could have / should have done it a little
> differently. 

It seems mostly correct to me. Some further clarification:

The "Example:" is intended to contain runnable Axiom code that would
serve as showing the bug or (once fixed) non-regression testing. In
other words, it is intended to construct bugs.pamphlet and
fixed.pamphlet that Tim wants. I do not know Axiom's language yet but it
would be nice to have some code like "if round(-3.77623) = -4 then print
'ok' else print 'error'" (or raise an exception or wathever the
non-regression infrastructure would need).

The "Explanation:" field is intended to contain the explanation of the
bug (i.e. the real cause of the bug), once the bug is fixed.

I recognized that some fields are overlaping.

I hope I am more clear. I'll try to refine savannah's bug report fields.

\start
Date: Thu, 14 Aug 2003 13:39:06 -0400
From: Tim Daly
To: David Mentre
Subject: Re: compiling the algebra files with gcl
Cc: Bill Page

David

Feel free to "fix" the bug report fields as you see fit.

\start
Date: Thu, 14 Aug 2003 14:37:36 -0400
From: Tim Daly
To: Juergen Weiss
Subject: generalized makefile rules

Juergen,

You're clearly much better at makefile syntax than I am. I want to 
generalize the following pattern so that FOO matches each file:

${OUT}/FOO.o: ${MID}/FOO.NRLIB
      echo making ${OUT}/FOO.o from ${MID}/FOO.NRLIB
      cp ${MID}/FOO.NRLIB/code.o ${OUT}/FOO.o

${MID}/FOO.NRLIB: ${MID}/FOO.spad
      echo making ${MID}/FOO.NRLIB from ${MID}/FOO.spad
      (cd ${MID} ; echo ')co FOO.spad' | ${INTERPSYS}

I remember that there is a generalized replacement variable that
matches the name of the expanding file but I don't know what it is.

\start
Date: Thu, 14 Aug 2003 21:09:01 +0200
From: David Mentre
To: list
Subject: Re: generalized makefile rules

Hello Tim,

I've not checked (i.e. executed) but I would write:

Tim Daly writes:

> ${OUT}/FOO.o: ${MID}/FOO.NRLIB
>       echo making ${OUT}/FOO.o from ${MID}/FOO.NRLIB
>       cp ${MID}/FOO.NRLIB/code.o ${OUT}/FOO.o

${OUT}/%.o: ${MID}/%.NRLIB
      echo making ${OUT}/$*.o from ${MID}/$*.NRLIB
      cp ${MID}/$*.NRLIB/code.o ${OUT}/$*.o


or (shorter version):

${OUT}/%.o: ${MID}/%.NRLIB
      echo making $@ from $<
      cp ${MID}/$*.NRLIB/code.o $@


> ${MID}/FOO.NRLIB: ${MID}/FOO.spad
>       echo making ${MID}/FOO.NRLIB from ${MID}/FOO.spad
>       (cd ${MID} ; echo ')co FOO.spad' | ${INTERPSYS}

${MID}/%.NRLIB: ${MID}/%.spad
      echo making ${MID}/$*.NRLIB from ${MID}/$*.spad
      (cd ${MID} ; echo ")co $*.spad" | ${INTERPSYS}

Note: Beware of quotes, I've changed above ' by ".

Or shorter version:

${MID}/%.NRLIB: ${MID}/%.spad
      echo making $@ from $<
      (cd ${MID} ; echo ")co $*.spad" | ${INTERPSYS}


> I remember that there is a generalized replacement variable that
> matches the name of the expanding file but I don't know what it is.

\start
Date: Thu, 14 Aug 2003 22:03:20 +0200
From: Juergen Weiss
To: list
Subject: RE: generalized makefile rules

Hi Tim,

David's suggestions should do what you want. In my makefile
I used "static pattern rules", that is the rules are
applied only to the files mentioned before the first :.
If you omit the first part, you get normal rules which
may get applied to matching targets. This may be even
more elegant. If you have serveral rules, which match 
the same target, make tries to find out, which prerequisites
exists or which can be generated by other rules. That is for
specific targets, you can have a general rule and a target specific
rule. The specific target specific. With static pattern rules
you get at least a warning. Details in the info file for
gnu make. I'm not really an expert in gnu make. I just
experimented a bit and read parts of the documentation.
 
> 
> Juergen,
> 
> You're clearly much better at makefile syntax than I am. I want to 
> generalize the following pattern so that FOO matches each file:
> 
> ${OUT}/FOO.o: ${MID}/FOO.NRLIB
>       echo making ${OUT}/FOO.o from ${MID}/FOO.NRLIB
>       cp ${MID}/FOO.NRLIB/code.o ${OUT}/FOO.o
> 
> ${MID}/FOO.NRLIB: ${MID}/FOO.spad
>       echo making ${MID}/FOO.NRLIB from ${MID}/FOO.spad
>       (cd ${MID} ; echo ')co FOO.spad' | ${INTERPSYS}
> 
> I remember that there is a generalized replacement variable that
> matches the name of the expanding file but I don't know what it is.
> 

\start
Date: Sun, 17 Aug 2003 12:48:51 -0400
From: Tim Daly
To: Juergen Weiss
Subject: Re: generalized makefile rules
Cc: Camm Maguire

Juergen,

Well, except for a few domains I've finished the lattice.
I've diffed your algebra versions with mine and I'm applying
your patches. I've found them quite useful as they fixed some
bugs I intended to chase. Excellent work on your part.

I see that you have rewritten interval.as to interval.spad.
I've rewritten the \author tags on all of the files to indicate
the actual authors wherever I know the authors. Did you write
interval.spad.pamphlet?

I also have algebra that has been recently written that I'm 
working on merging. 

I'm trying at the moment to rebuild the database but I'm getting
a value stack overflow in GCL while loading the domains. (Daly's
law: there is no such thing as a simple job.) Other than that
problem and a few remaining domains that I need to fix, the whole
Axiom world builds from scratch. I never thought I'd see the day
that would happen. 

Once I fix the value stack overflow I'll concentrate on getting
the world imported onto Savannah.

\start
Date: Sun, 17 Aug 2003 19:28:00 +0200
From: Juergen Weiss
To: list
Subject: RE: generalized makefile rules
Cc: Camm Maguire

Tim,

> 
> Juergen,
> 
> Well, except for a few domains I've finished the lattice.
> I've diffed your algebra versions with mine and I'm applying
> your patches. I've found them quite useful as they fixed some
> bugs I intended to chase. Excellent work on your part.

About 10 years ago I tried to figure out the algebra lattice
myself. I logged the files loaded by each compile and later
on tried to use tsort or something similar. It did not work
out and I gave up (too many circular dependencies). So I 
can at least partially appreciate what you have achieved. 

I got the impression, that in certain circumstances, the
content of the databases is enough to compile references
to some modules. In most cases the modules have to be
loaded. But I did not figure out, what the difference was.

> I see that you have rewritten interval.as to interval.spad.
> I've rewritten the \author tags on all of the files to indicate
> the actual authors wherever I know the authors. Did you write
> interval.spad.pamphlet?

I actually just changed the syntax of the original .as file.
So I would not call me the author. I have a newer version
of the file (two changes), which I will send you tonight.
With current database files, two function calls, which did
not compile, finally do.

> I also have algebra that has been recently written that I'm 
> working on merging. 
> 
> I'm trying at the moment to rebuild the database but I'm getting
> a value stack overflow in GCL while loading the domains. (Daly's
> law: there is no such thing as a simple job.) Other than that
> problem and a few remaining domains that I need to fix, the whole
> Axiom world builds from scratch. I never thought I'd see the day
> that would happen. 

This is strange indeed. I used the most recent cvs files and 
compiled under Debian (with the supplied gcl). I think I only
fixed the category vector copying. Have you rebuild interpsys
without any algebra files preloaded or with more recent ones? 

> Once I fix the value stack overflow I'll concentrate on getting
> the world imported onto Savannah

\start
Date: Sun, 17 Aug 2003 15:05:28 -0400
From: Tim Daly
To: Juergen Weiss
Subject: lattice
Cc: Camm Maguire

re: lattice

The lattice is quite subtle in places. The hardest part is the size
of the thing. ~1100 domains in ~375 files. Every time I set out to
do anything like change the authors which takes less than 1 minute
per file it turns into a several hour task. Some of the tasks took
over an hour per domain. I've been at this task since January.
I have much "back-checking" to do but I can do that after upload.
(e.g. I have to check that the bootstrap code is current, a painfully
slow process).

I did a partial analysis years ago. It helped me find the most
frequently loaded domains which are now preloaded at build time.
I wish I had kept the data from that analysis because it
would have come in handy now. I've separated out the scaffolding
data into a file called Lattice.pamphlet. This contains information
that allows us to compute several interesting answers to questions
like: what's the "thickness" of the "main trunk" of the tree of
files holding up the lattice. I observed over the last few months
that there are only a few key files that hold the whole lattice up.
I'm also thinking of writing a lattice domain as I can think of
several operations that might be interesting to compute. Also of
interest is that the lattice data tells us where optimizations will
have the most effect.

As a side-effect the Makefile.pamphlet has shrunk. Once I add in
David's change it should shrink again. You still won't be happy
with it though :-)

re: interval.spad.pamphlet

Your interval.spad.pamphlet file is not a trivial rewrite as far
as I can see. The file diffs are almost nowhere the same. My general
rule for "authorship" is to include the names of people who make
"intellectual changes" (that is, not just typos but rewrites or
handling special cases, etc) as authors. Credit is easy to share.
Once the file has more than 5 authors it'll switch over to the
generic "The Axiom Team". Currently 5 authors is the longest list.
 
I'm also looking to rewrite the .as files. It simplifies things
if the basic algebra is all .spad rather than a mixture. I've
ignored the .as files in the build for this reason. If you're
feeling ambitious you could look at the other few .as files.

re: value stack overflow

Yes, it is very strange that I get a value stack overflow because
I used to build the databases. Indeed, I rebuilt the databases for
the hand-built version. I'm going to back down a level in the GCL
build and see if that fixes it. If so I'll upload the world using
the backlevel lisp until we get a chance to debug it.

re savannah 

I'm working hard to get the savannah site set up so everybody is
working from the same set of mistakes :-) However, there is no
point in uploading mistakes I can easily fix. It is a tradeoff
but I'm leaning heavily toward the upload side now that the world
can be built from scratch.

\start
Date: Sun, 17 Aug 2003 17:52:20 -0400
From: Tim Daly
To: Juergen Weiss
Subject: subtle issue with generic rules

Using generic rules in Makefiles fail in a subtle way.
The rules that I've created go to great lengths to ensure
that only the minimum amount of work is done. So if you erase
a file from the INT directory (e.g. DLAGG.o) then only that 
file and ones that depend on it (e.g. the mnt/algebra version)
will be rebuilt. Caching the work is vital as Axiom can take
a LONG time to build.

If you use generic rules and touch the original source.spad.pamphlet
file the generic rules work fine. However if you remove the cached
files from the INT directory without touching the source pamphlet the
generic rules fail. They fail trying to remove the NRLIB directories
that are generated by INTERPSYS. My specific rules don't do this.
I've documented this behavior in the Makefile.pamphlet so nobody tries
to repeat the mistake.
 
\start
Date: Sun, 17 Aug 2003 17:52:39 -0400
From: Tim Daly
To: Juergen Weiss
Subject: subtle issue with generic rules

Thanks for the new version of interval.spad.pamphlet
 
\start
Date: Sun, 17 Aug 2003 22:33:42 +0200
From: Juergen Weiss
To: list
Subject: RE: interval.spad
Cc: Camm Maguire

> 
> re: interval.spad.pamphlet
> 
> Your interval.spad.pamphlet file is not a trivial rewrite as far
> as I can see. The file diffs are almost nowhere the same. My general
> rule for "authorship" is to include the names of people who make
> "intellectual changes" (that is, not just typos but rewrites or
> handling special cases, etc) as authors. Credit is easy to share.
> Once the file has more than 5 authors it'll switch over to the
> generic "The Axiom Team". Currently 5 authors is the longest list.

Most lines differ only by a semicolon. 
 
\start
Date: Mon, 18 Aug 2003 18:54:10 +0200
From: David Mentre
To: Juergen Weiss
Subject: About stack overflow in GCL (was: re: generalized makefile rules)
Cc: Camm Maguire

Hello Juergen and Tim,

Juergen Weiss writes:

>> I'm trying at the moment to rebuild the database but I'm getting
>> a value stack overflow in GCL while loading the domains. (Daly's
>> law: there is no such thing as a simple job.) Other than that
>> problem and a few remaining domains that I need to fix, the whole
>> Axiom world builds from scratch. I never thought I'd see the day
>> that would happen. 
>
> This is strange indeed. I used the most recent cvs files and 
> compiled under Debian (with the supplied gcl). 

Are you using woody or sid? If sid, then maybe Camm has uploaded an
updated version of GCL?


Anyway, for the value stack overflow, Camm proposed a patch to GCL which
is the bug database:
http://savannah.nongnu.org/bugs/?func=detailbug&bug_id=4584&group_id=2938

The proposed patch of Camm:
The C stack size is to limited. Apply following patch:

--- /fix/s/camm/gcl/o/main.c	Thu Feb 13 17:31:27 2003
+++ main.c	Thu Jul 17 16:30:18 2003
@@ -235,7 +235,7 @@
 
 #ifdef BSD
 #ifndef MAX_STACK_SIZE
-#define MAX_STACK_SIZE (1<<23) /* 8Mb */
+#define MAX_STACK_SIZE (1<<24) /* 16Mb */
 #endif
 #ifdef RLIMIT_STACK
 	getrlimit(RLIMIT_STACK, &rl);


I also suppose that you, Tim, have increased the VSSIZE.

The sources in a public CVS would definitely help track down bugs. ;)

\start
Date: Mon, 18 Aug 2003 13:15:06 -0400
From: Tim Daly
To: David Mentre
Subject: About stack overflow in GCL 
Cc: Camm Maguire

I've already applied the suggested patch. I don't believe the problem
is in GCL. I've built databases successfully before. I've tried to 
build the system using GCL 2.4 and GCL 2.5.2. Neither one works.

I believe the problem is isolated to the domains STRING and STRICAT
which I'm working to isolate. I'm not quite sure of the details of
the cause so I can't say how I'll fix it. 

\start
Date: Mon, 18 Aug 2003 19:15:39 +0200
From: David Mentre
To: list
Subject: Automation & algebra lattice (was: Re: lattice)

Hi Tim,

Tim Daly writes:

> The lattice is quite subtle in places. The hardest part is the size
> of the thing. ~1100 domains in ~375 files. Every time I set out to
> do anything like change the authors which takes less than 1 minute
> per file it turns into a several hour task. Some of the tasks took

I hope you use Perl to do such things like:

  perl -pi -e 's/Old Author/New Author/g' *.spad.pamphlet


> over an hour per domain. I've been at this task since January.
> I have much "back-checking" to do but I can do that after upload.
> (e.g. I have to check that the bootstrap code is current, a painfully
> slow process).

For such task (i.e. checking that bootstrap code is up-do-date regarding
generated .spad file), we could probably write some Perl scripts that
would automate it. I'm not saying it's easy, but it would be worth it
considering the size of the algebra.


BTW, regarding the algebra lattice, I have considered automatically
parsing .spad files to write dependencies in a file and then generate
the (currently cyclic) graph using free software tools like VCG
(Visualization of Compiler Graphs, [1]). The hairy
space-indentation-determines-code-blocks of SPAD files has stopped me
(and also my lack of knowledge in SPAD grammar) but, with a working
Axiom, it might be possible to hack the SPAD parser to output
dependencies. Producing the graph is then very easy.


[1] http://www.cs.uni-sb.de/RW/users/sander/html/gsvcg1.html

\start
Date: Mon, 18 Aug 2003 13:31:00 -0400
From: Tim Daly
To: David Mentre
Subject: Re: Automation & algebra lattice 

re: author automation

I previously used an automated script to change "Nicolas Bourbaki"
to "The Axiom Team" in all of the Axiom files. However the algebra
files contain real authors names and, where I was sure of the author,
I changed the \author line. This is somewhat bogus because I know that
other people have worked on the various files and never put their names
in the file while others did. That was the original motivation for the
"Bourbaki" name, a group of anonymous mathematicians. We'll try to track
this a little better in the future. Once a file exceeds 5 authors it will
revert to "The Axiom Team" again. Finding the real author's names required
a hand review of each of the 375 algebra files. I didn't see any reliable
way to automate it and I would have to hand-check it anyway.

re: automating algebra bootstrap 

I will eventually automate the bootstrap rebuild but I'm trying to get 
the system buildable as a first priority. I need to hand check the code
just to ensure that I didn't make a major mistake. No doubt I've made
several but a bootstrap mistake would be very hard to find.

re: lattice

I looked for tools that could compute and draw the lattice but found
none. I have a partial lattice as a DIA file but I haven't touched it
since april. Now that I have the dependency data there are several
things I can compute from it and I plan to write a lattice domain in
Axiom when time permits.

\start
Date: Mon, 18 Aug 2003 13:45:55 -0400
From: Bill Page
To: David Mentre
Subject: RE: Automation & algebra lattice (was: Re: lattice)

David, Tim,

About "parsing .spad files to write dependencies". I wrote
a Perl script that does this last week. Unfortunately the
code is sitting on a machine that is still in the black-out
zone following last week's power failure. I do have a print
out and it is quite short, so if you are interested I can
re-key it and send it. The parsing is a bit "heuristic" in
places because of the macro flexibility in spad, but I
think that it is at least 95% accurate.

The sorted list of dependencies is over 600 pages in length!
But maybe it might be of some use to Tim in verifying the
new make file?

Also, it occurs to me that this information aught to be
presented in an easier to obtain form, perhaps as ++
comments in the spad.pamphlet source. It seems perhaps
a design flaw of the spad language that these references
do not have to be declared explicitly. No?

Anyway, One thing I did try was to use the list with tsort
to find the cycles. And I found lots of cycles!

Another thing I noted was that there seemed to be a lot
of (possibly) duplicated code in files with the same name
but one in all upper case and one in all lower case. I am
not sure what is the cause of this yet. In some cases the
differences in the files seem obvious and both seem
required. In other cases I am not so sure.

Chhers

> 
> Hi Tim,
> 
> Tim Daly writes:
> 
> > The lattice is quite subtle in places. The hardest part is 
> the size of 
> > the thing. ~1100 domains in ~375 files. Every time I set out to do 
> > anything like change the authors which takes less than 1 minute per 
> > file it turns into a several hour task. Some of the tasks took
> 
> I hope you use Perl to do such things like:
> 
>   perl -pi -e 's/Old Author/New Author/g' *.spad.pamphlet
> 
> 
> > over an hour per domain. I've been at this task since 
> January. I have 
> > much "back-checking" to do but I can do that after upload. (e.g. I 
> > have to check that the bootstrap code is current, a painfully slow 
> > process).
> 
> For such task (i.e. checking that bootstrap code is 
> up-do-date regarding generated .spad file), we could probably 
> write some Perl scripts that would automate it. I'm not 
> saying it's easy, but it would be worth it considering the 
> size of the algebra.
> 
> 
> BTW, regarding the algebra lattice, I have considered 
> automatically parsing .spad files to write dependencies in a 
> file and then generate the (currently cyclic) graph using 
> free software tools like VCG (Visualization of Compiler 
> Graphs, [1]). The hairy 
> space-indentation-determines-code-blocks of SPAD files has 
> stopped me (and also my lack of knowledge in SPAD grammar) 
> but, with a working Axiom, it might be possible to hack the 
> SPAD parser to output dependencies. Producing the graph is 
> then very easy.
> 
> [1] http://www.cs.uni-sb.de/RW/users/sander/html/gsvcg1.html
> -- 

\start
Date: 18 Aug 2003 15:17:17 -0400
From: Camm Maguire
To: David Mentre
Subject: Re: About stack overflow in GCL (was: re: generalized makefile rules)

Greetings, David, and thanks!  I believe the patch you refer to below
was for a different situation, and is likely not relevant here.
Thanks for keeping such good track!

Take care,

David Mentre writes:

> Hello Juergen and Tim,
> 
> Juergen Weiss writes:
> 
> >> I'm trying at the moment to rebuild the database but I'm getting
> >> a value stack overflow in GCL while loading the domains. (Daly's
> >> law: there is no such thing as a simple job.) Other than that
> >> problem and a few remaining domains that I need to fix, the whole
> >> Axiom world builds from scratch. I never thought I'd see the day
> >> that would happen. 
> >
> > This is strange indeed. I used the most recent cvs files and 
> > compiled under Debian (with the supplied gcl). 
> 
> Are you using woody or sid? If sid, then maybe Camm has uploaded an
> updated version of GCL?
> 
> 
> Anyway, for the value stack overflow, Camm proposed a patch to GCL which
> is the bug database:
> http://savannah.nongnu.org/bugs/?func=detailbug&bug_id=4584&group_id=2938
> 
> The proposed patch of Camm:
> The C stack size is to limited. Apply following patch:
> 
> --- /fix/s/camm/gcl/o/main.c	Thu Feb 13 17:31:27 2003
> +++ main.c	Thu Jul 17 16:30:18 2003
> @@ -235,7 +235,7 @@
>  
>  #ifdef BSD
>  #ifndef MAX_STACK_SIZE
> -#define MAX_STACK_SIZE (1<<23) /* 8Mb */
> +#define MAX_STACK_SIZE (1<<24) /* 16Mb */
>  #endif
>  #ifdef RLIMIT_STACK
>  	getrlimit(RLIMIT_STACK, &rl);
> 
> 
> I also suppose that you, Tim, have increased the VSSIZE.
> 
> The sources in a public CVS would definitely help track down bugs. ;)

\start
Date: Mon, 18 Aug 2003 17:35:10 -0400
From: Tim Daly
To: list
Subject: [suse@suse.de: Ticket [20030811900000240]]

Well, I got the first response from a vendor. 

------- Start of forwarded message -------

Dear Mr. Daly,


> 
> We are planning to make Axiom run on all of the major operating
> system distributions. Can you forward this mail to someone who can
> provide technical requirements for working with your distribution?
> 
> We look forward to a mutually cooperative effort that will enhance
> your distribution's value to your customers and provide Axiom with
> a wider audience.
> 

The first step to becoming an Independent Software Vendor for SUSE Linux is to sign up with our Technology Partner program.  Please take a look at the website below and especially hte .pdf brochure:

http://www.suse.com/us/partner/become_partner/index.html

Once you have become a Technology Partner with SUSE, our development team will work with you on what is necessary to include your software with our distrobution.


> Please feel free to contact me at your convenience.
> 

Thanks for your interest in SUSE Linux!

Best Regards,

      your SuSE Linux-Team!
Marissa Krupa

\start
Date: Tue, 19 Aug 2003 03:11:11 -0400
From: Tim Daly
To: advi@pauillac.inria.fr
Subject: ADVI browser

I saw a presentation of ADVI at the Libre Software Meeting (Metz, France).

I'm the lead developer on the Axiom project. Axiom is an open source
computer algebra system that was originally a commercial product from
the Numerical Algorithms Group (NAG). One of the key changes between
the NAG version of Axiom and the free version of Axiom is that I've
recoded the whole system into a literate programming style. So each
source file, rather than being C, Lisp, Boot, or Spad code is now a
"pamphlet" file which is basically Latex with 2 additional tags. The
source code and the documentation are both extracted from these pamphlet
files automatically.

The documentation files are .dvi files. I've been trying to decide on
a long term strategy that will allow people to organize these hundreds
of dvi files into a reasonable hierarchy. Basically what I need is a
dvi "browser", similar to mozilla, that will allow me to create a
hyperlink from one dvi file to another and open the linked file either
in a "tabbed window" or as a separate window.  It appears that ADVI
"almost" has this ability. 

Is it possible to create html-style navigation among DVI files using
ADVI? If so, could you show me a trivial 2-file example? I have tried
and don't see how to do this. If not, how hard would it be to modify
ADVI to allow hyperlinks, tabbed panes, and a "back" button?

ADVI seems to be an ideal starting place for an Axiom documentation 
viewer. I'm impressed with its abilities so far.

\start
Date: Wed, 20 Aug 2003 15:29:49 +0200
From: David Mentre
To: list
Subject: Re: ADVI browser
Cc: advi@pauillac.inria.fr

Hello Tim and ADVI developers (Pierre Weis I suppose),

Tim Daly writes:

> If not, how hard would it be to modify
> ADVI to allow hyperlinks, tabbed panes, and a "back" button?

I would like to add that I know O'Caml and I would be pleased to code
this capability if needed, provided necessary pointer in ADVI code.

\start
Date: Wed, 20 Aug 2003 15:18:25 +0200
From: David Mentre
To: Bill Page
Subject: Re: Automation & algebra lattice

Hello Bill,

"Bill Page" <Bill Page> writes:

> About "parsing .spad files to write dependencies". I wrote
> a Perl script that does this last week. Unfortunately the
> code is sitting on a machine that is still in the black-out
> zone following last week's power failure. I do have a print
> out and it is quite short, so if you are interested I can
> re-key it and send it. The parsing is a bit "heuristic" in
> places because of the macro flexibility in spad, but I
> think that it is at least 95% accurate.

Yes, I would be very interested in such a script (or the dependencies in
a file). There's no hurry however, I can wait a few days that the
machine reboots. :)

\start
Date: Wed, 20 Aug 2003 10:01:28 -0400
From: Bill Page
To: David Mentre
Subject: RE: Automation & algebra lattice

This is a multi-part message in MIME format.

------=_NextPart_000_0001_01C36702.088C16E0
	charset="iso-8859-1"

David,

Here are the Perl and Bash scripts. Their usage should be
fairly obvious but if anything is unclear, please ask.

I put all of these scripts in the mnt/linux/bin directory.
Then I run them with the axiom root as the current directory,
specifying the set of spad files I want to analyzed like
this

  [axiom]% depends int/algebra/*.spad

The output goes to standard out. Because it takes a
while to execute (several hours unless you have a very
fast machine) you might prefer to do something like
the following;

  [axiom]% depends int/algebra/a*.spad int/algebra/A*.spad | tee a.dep
  [axiom]% depends int/algebra/b*.spad int/algebra/B*.spad | tee b.dep
  ...
  [axiom]% sort -u *.dep | unique
  [axiom]% cat *.spad | awk '{print $1" " $7;}' | sort -u | tsort 2>&1 |
tac

The "heuristic" algorithm that I used to find the dependecies
takes the list of exported functions from each domain in the
specified list of spad files and searches for these names
and the associated domains in all of the available spad and
pamphlet source files. I did it this way (sort of backwards)
in order to avoid having to really parse the spad source. I
think it produces fairly reliable results but perhaps not
100%.

Would you like me also to send you the complete dependency
file?

I am thinking of uploading these files to the savannah site
(not CVS, just auxillary related files) but I am not too
familiar how to do this. Your help and suggestions would be
appreciated.

Cheers,
Bill Page.

> Hello Bill,
> 
> "Bill Page" <Bill Page> writes:
> 
> > About "parsing .spad files to write dependencies". I wrote
> > a Perl script that does this last week. Unfortunately the code is 
> > sitting on a machine that is still in the black-out zone following 
> > last week's power failure. I do have a print out and it is quite 
> > short, so if you are interested I can re-key it and send it. The 
> > parsing is a bit "heuristic" in places because of the macro 
> > flexibility in spad, but I think that it is at least 95% accurate.
> 
> Yes, I would be very interested in such a script (or the 
> dependencies in a file). There's no hurry however, I can wait 
> a few days that the machine reboots. :)
> 
> Yours,
> d.
> -- 
>  David Mentre
> 

------=_NextPart_000_0001_01C36702.088C16E0
	name="unique"
	filename="unique"

#! /usr/bin/perl 
# unique 
# - suppress indentical initial fields in input 
# - assumes input is sorted 
# - repeated lines contain initial blanks where 
# - duplicate 
# Bill Page 14 August 2003 
# 
while (<>) { 
  $new = $_; 
  $b = 0; 
  for ($i=0;$i<length($new) and substr($new,$i,1) eq =
substr($old,$i,1);$i++) { 
    if (substr($new,$i,1) eq " ") { 
      substr($new,0,$i) =substr("                                     =
",0,$i); 
      last if ++$b ge 2; 
    }; 
  }; 
  print "$new"; 
  $old = $_; 
};  

------=_NextPart_000_0001_01C36702.088C16E0
	name="depends"
	filename="depends"

#! /usr/bin/perl 
# depends 
# - generate dependency list for algebra/*.spad files 
# Bill Page 14 August 2003 
# 
while ($target = shift) { 
  open(IN,"<$target") or die "No files $target\n"; # for each file 
  read(IN,$buf,100000); 
  close(IN); 
  $buf =~ s/\n *\n/\n/g; 
  $buf =~ s/\n *\+\+[^\n]*//g; 
  $buf =~ s/\n *\-\-[^\n]*//g; 
  while ($buf =~ s/.*\)abbrev\w* +(\w+) +(\w+) +(\w+)//) { 
    $type = $1; 
    $abbrev = $2; 
    $module = $3; 
    $buf =~ s/.*with(([^\n]*\n\ *)[^\n]*(\2[^\n]*)*)//; 
    $with = "$1\n"; # for each 'with' clause in the file 
#print "Debug: $type $abbrev $module\n"; 
    $pamphlet = `grep -l '\)abbrev  *$type  *$abbrev  *$module' =
src/algebra/*.spad.pamphlet`; 
    chop $pamphlet; 
    $name = ""; 
    $files = `fgrep -l -e ' $module ' -e '$module\n' =
int/algebra/*.spad`; 
    $files =~ s/\n/ /g; 
    while ($with =~ s/ *(\w+) *\:[^\n]*\n//) { 
      $name = $1; # for each 'exported' function 
      open(IN,"grep -l '$name\ *[^\:\ ]' $files |"); 
      while (<IN>) { 
        chop; 
        $spad = $_; 
# Only include those cross-references that contain the same module name 
# except if they are inside comments 
        $spad =~ s/int\/algebra\///; 
        $target =~ s/int\/algebra\///; 
        if ($spad ne $target) { 
          print "$spad uses $name from $module in $target ($pamphlet)\n"; 
        }; 
      }; 
      close(IN); 
    }; 
  }; 
}; 

------=_NextPart_000_0001_01C36702.088C16E0
	name="index"
	filename="index"

#! /bin/bash 
# Display an index of Axiom dependencies 
# Bill Page 
# 14 August 2003 
# 
export LC_ALL=C 
depends int/algebra/*.spad | sort -u | unique 

------=_NextPart_000_0001_01C36702.088C16E0
	name="order"
	filename="order"

#! /bin/bash
#  Use topological sort to determine a feasible order of
#  compilation. Loops are indicated by
#  tsort: x
#  tsort: y
#  tsort: loop 
#  Bill Page
#  14 August 2003

export LC_ALL=C
depends int/algebra/*.spad | awk '{print $1" " $7;}' | sort -u | tsort =
2>&1 | tac

------=_NextPart_000_0001_01C36702.088C16E0--

\start
Date: Wed, 20 Aug 2003 12:21:51 -0400
From: Tim Daly
To: Tim Daly Jr.
Subject: ADVI/Axiom connection
Cc: Jun Furuse, advi@pauillac.inria.fr

Tim,

I believe, if memory serves, that you had common lisp bindings for the
GTK. Is that correct? If so, how difficult would it be to make these
work in GCL? What's the URL for this work?

------- Start of forwarded message -------

Hi,

> The documentation files are .dvi files. I've been trying to decide on
> a long term strategy that will allow people to organize these hundreds
> of dvi files into a reasonable hierarchy. Basically what I need is a
> dvi "browser", similar to mozilla, that will allow me to create a
> hyperlink from one dvi file to another and open the linked file either
> in a "tabbed window" or as a separate window.  It appears that ADVI
> "almost" has this ability. 

Currently ADvi is built over the O'Caml's graphics library, which is
for simple bitmap based graphics. It lacks any gui-toolkit capability 
such as menus, tabs... And also, ADvi only handles one dvi document 
at a time. This makes difficult to have a tabbed browser which you
have mentioned. 

However, I think it is still possible to achieve your goal: with
rather smaller modifications, ADvi may work as an embeded dvi viewer
for existing web browsers such as mozilla.

Personally, I am now porting ADvi over gtk, so that it can have more
gui functionality. Maybe it can have tabs as you have mentioned.

- --
Jun
------- End of forwarded message -------

\start
Date: Wed, 20 Aug 2003 10:30:09 -0400
From: Tim Daly
To: David Mentre
Subject: Re: ADVI browser
Cc: advi@pauillac.inria.fr

David,

I might as well bore you with my long-term thoughts about pamphlets.

If you do the ADVI browser think of it as the front end to a new kind
of automated book. The browser is intended as a viewer for the dvi
files generated from pamphlets. (Ideally the browser would handle the
dvi generation from the pamphlets but you can assume that's been done)
But the pile of pamphlets will eventually provide an N-dimensional
matrix of information. We want to support at least 7 different views
off the same data in this big pamphlet matrix:

View 1 is a top-to-bottom path. At the top you start with a technical
paper that provides the mathematical description. For example, looking
at the area of integration starting with Barry Trager's Ph.D. thesis.
>From there you eventually work your way down to executable code. Thus
you move from theory to practice.

View 2 is a side-to-side path. Here you are staying at the same level
of abstraction. You would be exploring, for example, all of the matrix
capabilities provided by Axiom by looking at the mathematics of each one.
Or looking at the implementation of each one.

View 3, unlike View 1 and 2 which remain within the text area of the 
pamphlet files, would wander among the code area of the files, say, 
finding the pamphlet which contains the source code of a function 
called from the current pamphlet.

View 4 is a "threaded walk". ADVI allows embedded graphics and active
terminals. View 4 is intended to allow professors to develop course-related
paths thru the pamphlets.  A particular course, say commutative algebra,
could develop a "textbook" which visits subsections of pamphlet files
in a particular order. This would also be used to construct further
pamphlet files. These will also contain embeded active graphics for
explaining things in class.

View 5 is a "slide show" kind of presentation intended for classroom
or lecture use. This would visit code, pop up graphics and active
windows (hence use ADVI), etc so you could give a lecture using Axiom
within the slides.

View 6 follows "document structure" information such as following 
bibligraphic references to other pamphlets or combining index information
for cross-reference purposes. In general the browser will end up doing
searches (e.g. looking for the pamphlet containing a function for View 3)
and caching the results (e.g. building a file-based hashtable of 
function->pamphlet cross-references).

View 7 is a "concept map" form. This is the hardest to do as it
requires input from the user to construct. There is technology
available from the early 90s called KREP (Eric Mays's Knowledge
Representation) which, combined with OPS5 (Charles Forgy's thesis work
on rule based programming) forms a system called KROPS (my research
work at IBM). KROPS is a ( concept graph / rule graph ) that 
automatically classifies "concepts" based on subsumption. It "learns" 
as you add concepts to the graph. The long term use of this in Axiom 
is intended to support the ability to "shape" the pamphlet files matrix 
based on the understanding of the user of the system.  

There will be a large amount of mathematics in the pamphlet pile. We
need to control the complexity. So the idea is to watch what the user
visits and "learn" what he already knows. This gets added to a
"concept graph".  The "concept graph" of a linear algebra professor
would differ greatly from the concept graph of a group theory
professor. This learned information feeds rules to drive the
presentation of information. Note that this functionality is "a long
way off". However you can see that the "30 year view" of Axiom's
mathematics is somewhat beyond what is available today (but barely
uses the technology available in the 1990s. sigh).

So, in general, the pamphlet file is not intended to be a monolithic object.
It is rather a sequence of chunks, subsections, and references that can be
visited and recombined at will.

There needs to be some sort of a "construction" support which will record
visited or needed links into some sort of a tree structure. Think of it as
a method of dynamically constructing a book by ripping out sections of
other books, adding your own notes, and combining them to form another
booklet. It's the "big staple" method of construction. Take a bunch of
existing subsections and chunks and "staple" them together. This is
different from the standard "back button history" trace because you 
indicate things you want to keep and re-arrange. Ideally this would "save"
as a booklet file format for later hand-editing. Using this mechanism
authors can build on previous work and professors can construct class
notes from existing work.

Initially I don't expect any of these views to be supported. All we need
in the beginning is some sort of a book-like front end. The "top level"
file will just be a pamphlet file that is a table-of-contents containing
"pamphlet" chunks using the "booklet" function you created:

This is the first chapter
<<pamphlet:src/doc/first.pamphlet>>
This is the second chapter
<<dvi:src/doc/second.dvi>>
...

I laid out the various views to give you some idea of the needed
generality in the long term.

\start
Date: Wed, 20 Aug 2003 15:23:32 +0200
From: David Mentre
To: list
Subject: Re: Automation & algebra lattice

Hello Tim,

Tim Daly writes:

> re: automating algebra bootstrap 
>
> I will eventually automate the bootstrap rebuild but I'm trying to get 
> the system buildable as a first priority. I need to hand check the code
> just to ensure that I didn't make a major mistake. No doubt I've made
> several but a bootstrap mistake would be very hard to find.

At one point, we will probably have to write a bootstrap process close
to the one used in compilers: from the source, make a compiler C1 which
is used to build a compiler C2, then compare the produced binaries (or
the generated clisp in Axiom's case). 

> re: lattice
>
> I looked for tools that could compute and draw the lattice but found
> none. I have a partial lattice as a DIA file but I haven't touched it
> since april. Now that I have the dependency data there are several
> things I can compute from it and I plan to write a lattice domain in
> Axiom when time permits.

VCG is definitely the tool you want to automate graph (and tree)
drawing. And it is free as in free software (GPL license).


I would be very interested in the lattice you have.


\start
Date: Fri, 22 Aug 2003 04:46:21 -0400
From: Tim Daly
To: Bill Page
Subject: re: Automation & algebra lattice

Bill, David,

Axiom will tell you the exact dependencies of a domain.
Start a fresh Axiom, compile the domain (not the whole file),
save the console, look for the "Loading " messages and parse
out the domains. There is a file called exposed.lsp that
contains an association list of abbreviations and full domain
names.

fyi, I'm down to about 5 files that need compiling (down from 265).
The issues are a harder with these 5 files but I understand how to
fix them. 5 clean compiles and a database build and the system 
should be ready for alpha. you'll notice it is 4:45 a.m. here so
they probably won't get finished this morning :-)

\start
Date: Fri, 22 Aug 2003 14:56:10 +0200 (CEST)
From: Bertfried Fauser
To: Tim Daly
Subject: Re: ADVI browser
Cc: advi@pauillac.inria.fr

Hi,

I have not yet seen the ADVI browser / viewer, but reading the 7 views, I
would kindly like to add a few more meta remarks.

Regarding my current view on mathematics, ist far from beeing a static
sort of things. Many people do belife that methamatics is given as-is and
has only to be 'described' or 'explained'. However, I personally expect a
great reworking of many areas of mathematics in a more 'categorial' way.
Any documentation of a project like AXIOM should be capabal of such
reorganization, and you do indeed think about this.

QUESTION: How can descriptions be separated into an algorithmic part which
most likely does not change (unless the code is replaced) and the more
meta-mathematical aspects, like the decision what is 'basic' math and what
is derived.

Might there be a couple of mandatory tags for any AXIOM (algebra).spad
file which sepatates such information, perhaps by a new 'protocoll' like
<<synopsis:///...file1>>
<<algorithm:///...file2>>
However one would need such a thing as a math level, which may be
numbered, say "meta-mathNN", where NN is a number and 00--99 indicates the
increasing intricacy of the involved math. Such a 'rating' has to be
discussed, but would allow to extract a description of the AXIOM
capabilities on the user level. E.g. Maple has in undergraduate teaching
the problem that students don't know enough mathematics to appreciate that
Maple does not symilify an expression (say typically x^2=2) for such a
reason (e.g. x may be rational). Indeed one could even think about a
'named' or 'prohfiled' such numbering, specifying the needs of say
linear algebra, group theory, category theory, set theory to provide
specific views on the involved math.

Regarding the HTML protocoll, one does use currently sxearch engines like
google (ht-dig, for local purpose) It would be possibleto index all of
AXIOMS pamthlet files and even .spad files etc. However, it is quite
difficult to reate such hits and if you ask for ay quite common term you
will have too much hits to be able to retrieve the desired information.
Therefore the HTML protocoll shall be enlaged in future by the W3C to have
meta tags which describe the content. Such a thing woudl be very helpful
in reworking the wast amount of documentation needed for AXIOM. Such meta
tags might describe things like
definition, theorem, algorithm, but also a sophistication level, say once
more from 00--99

My own experience shows, that documentation of code takes away 2/3 of the
total amount of work needed and only 1/3 goes into codeing and testing.
Waht is clear to oneself has to be described very precicely in a
documentation and there has to be a mechanism guaranteeing that code and
documentation are recent and mutually related. Perhaps this is already
guaranteed by using literate programming. However, there is a notorious
tendency to make small hacks and 'forget' about documenting them, since
one thinks about doing this in the next major realeas.... which never
happens.

If someone of you invests work on extending / customizing ADVI such things
may be worth to be considered first.

\start
Date: Wed, 20 Aug 2003 16:42:26 -0400
From: Bill Page
To: David Mentre
Subject: RE: Automation & algebra lattice

David,

Ok, now I guess I am a Savannah file upload expert ... <grin>

After a lot of trouble trying to do things via Msys under
Windows, I finally gave up and went to Cygwin where these
sort of Unix things seem to work much better. As a result
I uploaded several files in the wrong place. So, after
learning to use scp in both Msys and Cygwin and then finding
that it is a well known problem that sftp doesn't always work
with Savannah, I had to learn to use rsync to delete the
stuff that I miss placed. I found the documentation on Savannah
confusing, insufficient and even wrong in some places.

Phew!

Anyway, the spad dependency Perl script and associated
files has (finally) been uploaded as you suggested below.

You can find the file here:

  http://savannah.nongnu.org/files/?group=axiom

Thanks for your suggestion to use the FileList system.

Cheers,
Bill Page.

> Hi Bill,
> 
> Thanks for the script. I have no time to test it this week 
> neither week-end but I will try it next week.
> 
> "Bill Page" <Bill Page> writes:
> 
> > I am thinking of uploading these files to the savannah site 
> (not CVS, 
> > just auxillary related files) but I am not too familiar how to do 
> > this. Your help and suggestions would be appreciated.
> 
> I have no more experience that you in that regard. If I where 
> you, I would follow the savannah FAQ[1]. As the savannah part 
> is not used a lot by a wide public, this is the right time to 
> make mistakes. :)
> 
> I think you should use the FileList system, with something 
> like: 
> /upload/axiom/algebra_depends.pkg/1.0.0/algebra_depends-1.0.0.tar.gz
> 
> Thus we will have proper sub-directories and nicely ordered versions.
> 
> 
> Yours,
> d.
> 
> [1] 
> http://savannah.gnu.org/faq/?group_id=11&question=How_do_I_add
_files_in_the_download_area.txt


\start
Date: 22 Aug 2003 08:16:21 +0200
From: Tim Daly, Jr.
To: list
Subject: Re: ADVI/Axiom connection
Cc: Jun Furuse, advi@pauillac.inria.fr

Tim Daly writes:

> Tim,
> 
> I believe, if memory serves, that you had common lisp bindings for the
> GTK. Is that correct? If so, how difficult would it be to make these
> work in GCL? What's the URL for this work?

The URL is http://tenkan.org/clgtk/ , where you can find the last
beta.  There's a cleaner version hanging around on my disk.

It's designed so that all any Lisp needs to provide is some way to
start a process and communicate with it via a pipe or socket.  So
porting is trivial. In fact, it used to work on GCL, but I've never
tried it since then.  

There has been no official release.  The code needs a good week's work
before I would use it in a production environment.  

\start
Date: Wed, 20 Aug 2003 21:37:50 -0400
From: Tim Daly
To: list
Subject: string.spad

One of the steps I took to break cycles in the algebra involved 
creating a separate file for each domain. Some spad files
contain several domains. 

Developers of algebra code have many styles. Some created macros
that only exist at the top of a spad file while others placed
macros at the start of each domain. 

The scope of a macro such as:

MINSTRINGINDEX ==> 1

is the whole file. When I broke the domains into separate files
I was careful to ensure that each "small" domain got a copy of
the macros included in the DOMAIN.spad file. That is the correct
behavior.

However, the side-effect of that copy changed the original source
code of the "big" spad file. So, for example, string.spad contains
5 domains (CHAR, CCLASS, ISTRING, STRICAT, and STRING). In the
original file the macro

MINSTRINGINDEX ==> 1

appears once. This was copied so it appears in each chunk and thus
in each domain. Compiling CHAR.spad, or STRING.spad sees only one
copy. However, when the whole string.spad file is extracted it
contains 5 copies of the macro.

The spad compiler gets a value stack overflow if you try to compile
string.spad. I don't yet know the cure. 

\start
Date: Fri, 22 Aug 2003 14:15:46 -0400
From: Tim Daly
To: Bertfried Fauser
Subject: Re: ADVI browser
Cc: advi@pauillac.inria.fr

Bertfried,

I like your idea of "synopsys" and "algorithm" tags.  Clearly the
pamphlet files need structure.  However I'm not sure that the chunk
tags are the right place for the structure. The chunk tags are 
intended to quote and embed code in a tex document. The booklet
extension allows the code to be in files which are "included" but
still has the idea that they embed code. We're beginning to evolve
the noweb idea. David Mentre took the first step with the booklet
code.

> Regarding my current view on mathematics, ist far from beeing a static
> sort of things. Many people do belife that methamatics is given as-is and
> has only to be 'described' or 'explained'. However, I personally expect a
> great reworking of many areas of mathematics in a more 'categorial' way.
> Any documentation of a project like AXIOM should be capabal of such
> reorganization, and you do indeed think about this.

Actually, Axiom's math evolves. Bill Sit has given me a newer version
of the PLEQN domain that includes later work. Several other people
have indicated that they also have later, improved work. I'm
struggling with the idea that Axiom should have an embedded CVS so you
can add new work while still referencing the old. And CVS solves the
problem of authors taking different directions with the same
mathematics. But I'd have to change the build structure to take this
into account so this idea is a long way off yet.

What you appear to suggest is that portions of the document might contain
tags, lists, or markers (TLM) that indicate the intended use of the
material.  The machinery for this would be easy to add. We simply need
to have a parameter on various tex tags (e.g. \section[synopsys]{The
Section}) What isn't clear, as you point out, is the meaning
associated with the TLMs. Perhaps a standard portion of the pamphlet
could exist (similar to an index) to carry this information. I have
a "concept index" for commutative algebra which I plan to use to
structure the booklet files once they come into existence.

My thoughts on the subject, clearly open to debate, are that the 
pamphlet files contain information that the author can structure
to explain a particular point. Think of these files as "technical
papers" which potentially contain code. A technical paper has a
certain assumed, but not required, structure by convention. It has
an abstract, background, new results, summary, and bibliography.
I think the pamphlet files will evolve structure by convention also.

This raw information can be used and viewed in many different ways.
My thought was that "booklet" files would be the organizers of information.
So to address your example of sophistication level I'd expect an author
to write a booklet file that includes portions of pamphlet files. Simple
booklets such as an intro to linear algebra would only include text from
the examples portions of pamphlets. Complex booklets about lie algebras
might include portions of the theory sections containing theorems. So
booklets are intended to organize the pamphlet information for a particular
purpose. Pamphlet files are for organizing raw information about the code
and its supporting mathematics. I'm not sure if this is (a) a clear division
of responsibility or (b) a workable solution to your issue. It needs more
discussion.

> My own experience shows, that documentation of code takes away 2/3 of the
> total amount of work needed and only 1/3 goes into codeing and testing.
> Waht is clear to oneself has to be described very precicely in a
> documentation and there has to be a mechanism guaranteeing that code and
> documentation are recent and mutually related. Perhaps this is already
> guaranteed by using literate programming. However, there is a notorious
> tendency to make small hacks and 'forget' about documenting them, since
> one thinks about doing this in the next major realeas.... which never
> happens.

Knuth and Dijkstra both made this observation and both decided that
literate programming was the technique most likely to attack the issue
of documenting the code. It is ultimately up to the programmer to document.
I'm hoping, by force of convention, to convince Axiom programmers that it
is worthwhile spending 2/3 of their time documenting. The saving grace
is that, at least in mathematics, you get professional recognition for
writing up your results so you can, at minimum, attach the technical
paper to the code and call it a "pamphlet". That allows later authors to
better structure the mixture. If we succeed in keeping the theory with
the code it will be a major improvement over the current situation. Of
course, I'm not satisfied with just mixing the two. I want to exploit
the collection and make it useful for broader purposes.

When the alpha version gets uploaded look at
src/algebra/dhmatrix.spad.pamphlet. I've combined the theory with the
code. Denavit-Hartenburg Matricies (DH Matricies) are 4x4 matricies
with special structure that enable them to describe rotations,
translations, scale, perspective, and skew operations. This domain was
used to create the graphics in the glossy pages of the Axiom book.  I
wrote the original spad code essentially without comments. The theory
comes from Richard Paul's Ph.D.  thesis (which he gave me permission
to use). I'm now trying to atone for my sins and document the domain
properly. Since this code will support graphics I'm hoping to use it
as an example domain to exploit ADVI's ability to embed active graphics.

ADVI seems like worthwhile technology as they have found a mechanism
that allows authors of tex documents to embed information into the
dvi file that ADVI can use. This allows Axiom to perform all kinds of
interesting magic which opens up new ways to construct "books", booklets,
pamphlets, slides, technical papers, etc. And it uses "standard technology"
(since Knuth anticipated this in the dvi file format).

The alpha release of Axiom will use an axiom.sty file that will eventually
allow us to embed ADVI information. ADVI has shown what's possible but we
need to do much more.

\start
Date: 22 Aug 2003 16:17:01 -0400
From: Camm Maguire
To: Bill Page
Subject: Re: compiling the algebra files with gcl

Greetings!  Is anyone interested in me releasing an experimental
Debian package for the unstable distribution only, presuming I can
reproduce the below, or is this still premature?

Take care,

Bill Page writes:

> Camm, Tim, Juergen, et al.
> 
> I have just completed compiling the algebra source
> provided by Juergen Weiss with no significant errors.
> I now have a new running version of Axiom under
> RedHat 8.0 that no longer fails the following test
> 
> > pgr := MonoidRing(Polynomial PrimeField 5, Permutation Integer)
> > p:pgr := 1
> > q:pgr := 1
> > set [p,q]
> 
> What I did was:
> 
>  1) start with the old tenkan.org CVS version
>  2) apply all the patches discussed to date on this list
>     including the patch to bootsys discovered by Camm
>  3) untar Juergen Weiss's version of the algebra files
>     into the new axiom root directory
>  4) modify the first line of the Makefile.inc to refer
>     to the new root.
>  5) issue a make from the root to build the whole system
>  6) 11 hours later I have a new system.
> 
> I can send the log file containing the output of the make
> if anyone is interested. The only errors that occured
> were "%.EOF is not of type SEQUENCE" as noted below plus
> numerous errors of the form "Unexpected HT command: \spad"
> Apparently these are generated by the contents of some
> comment lines like
> 
>   ++ \\spad{asinh(x)} returns the hyperbolic arc-sine ...
> 
> I will continue to test this new version against some
> of the bugs that have been reported.
> 
> --------
> 
> I noticed that some of the floating bugs that I reported
> a few weeks ago using the axiom.tenkan.org version are not
> yet included at Savannah so I think I will start these.
> 
> ---------
> 
> Tim, could you please send a few minutes and explain to
> us the difference between what you are doing with the
> new algebra makefile compared to what Juergen has done?
> 
> Thanks.
> 
> Bill Page.
> 
> > 
> > Greetings!  Just a status update -- I tried again, rechecking
> > that Juergen's files were in place, make clean, and I do get much
> > further.  At first I was confused by messages of this type:
> > 
> > ==============================================================
> > ===============
> >       /fix/t1/camm/axiom/axiom2/new/new/int/algebra/LODO1.NRLIB/code
> > 
> > (1) ->    Please enter y or yes if you really want to leave 
> > the interactive 
> >       environment and return to the operating system:
> >  
> >    >> System error:
> >    %.EOF is not of type SEQUENCE.
> > 
> > protected-symbol-warn called with (NIL)
> > ==============================================================
> > ===============
> > 
> > but this seems to only be a missing 'y' in the input.  Now I get to
> > the following when comiling SFRTCAT.spad:
> > 
> > ==============================================================
> > ===============
> >    Loading 
> > /fix/t1/camm/axiom/axiom2/new/new/mnt/linux/autoload/preparse.
> >    SFRTCAT abbreviates category 
> > SquareFreeRegularTriangularSetCategory 
> > --------------------------------------------------------------
> > ----------
> >    initializing NRLIB SFRTCAT for 
> > SquareFreeRegularTriangularSetCategory 
> >    compiling into NRLIB SFRTCAT 
> > 
> > ;;;     ***       |SquareFreeRegularTriangularSetCategory| REDEFINED
> > Time: 0.01 SEC.
> > 
> >  
> >    >> System error:
> >    The function |RegularTriangularSetCategory| is undefined.
> > ==============================================================
> > ===============
> > 
> > Juergen, do you get past this point?  (I'm assuming yes).  If so, I'll
> > do some more checking.
> > 
> > Take care,
> > 
> > 
> > 
> > 
> > Juergen Weiss writes:
> > 
> > > Hi,
> > > 
> > > yes, with the changes to the algebra files and the 
> > > new database files I was able to compile all the
> > > algebra files (with just a call to make in src/algebra). 
> > > 
> > > Did you do a make clean in the toplevel directory?
> > > 
> > > Juergen Weiss
> > > 
> > > > Greetings!
> > > > 
> > > > Juergen Weiss writes:
> > > > 
> > > > > Did you install the new database files (share/algebra) as
> > > > > well and generated a fresh interpsys with that database?
> > > > > The old database contains definitions, which conflict
> > > > > with the distributed algebra sources. 
> > > > > 
> > > > 
> > > > I hadn't -- thanks for pointing this out.  However, after moving
> > > > share/algebra over too, make clean, and then make, lodo1 
> > still fails
> > > > to compile, as separately noted by Tim.  Do your changes 
> > resolve the
> > > > lodo1 compilation issue?

\start
Date: 22 Aug 2003 16:06:11 -0400
From: Camm Maguire
To: list
Subject: Re: generalized makefile rules

Greetings!  Please forgive if this is a repost -- having some email
troubles.  If my help is needed with the value stack overflow, would
someone kindly let me know how to reproduce.  No need to reply if its
under control.

Take care,

Tim Daly writes:

> Juergen,
> 
> Well, except for a few domains I've finished the lattice.
> I've diffed your algebra versions with mine and I'm applying
> your patches. I've found them quite useful as they fixed some
> bugs I intended to chase. Excellent work on your part.
> 
> I see that you have rewritten interval.as to interval.spad.
> I've rewritten the \author tags on all of the files to indicate
> the actual authors wherever I know the authors. Did you write
> interval.spad.pamphlet?
> 
> I also have algebra that has been recently written that I'm 
> working on merging. 
> 
> I'm trying at the moment to rebuild the database but I'm getting
> a value stack overflow in GCL while loading the domains. (Daly's
> law: there is no such thing as a simple job.) Other than that
> problem and a few remaining domains that I need to fix, the whole
> Axiom world builds from scratch. I never thought I'd see the day
> that would happen. 
> 
> Once I fix the value stack overflow I'll concentrate on getting
> the world imported onto Savannah.

\start
Date: Fri, 22 Aug 2003 21:03:11 -0400
From: Tim Daly
To: Bill Page
Subject: re: Automation & algebra lattice

Bill,

I have a computer running XP and I've installed cygwin.
Can you give me some idea of what tools you've set up to 
compile Axiom?

\start
Date: Fri, 22 Aug 2003 21:38:52 -0400
From: Bill Page
To: list
Subject: Re: Automation & algebra lattice

Tim,

I don't use cygwin for Axiom anymore. I started out that way and
did manage to get CCL to compile some months back and then
I used it to compile (most of?) interpsys. But at that point you
decided to proceed first with GCL instead. Building GCL is
not supported under Cygwin. It should be fairly easy to do but
at this time there is no one who wants to take on the job of
debugging the build process. At this point I only use cygwin
when I need to talk directly with the Linux world, e.g. CVS,
ssh, rsync etc.

Instead, on the Windows platform the preferred build
environment for GCL is MinGW with MSYS. See

  http://www.mingw.org/

MSYS provides a build environment rather like Linux/cygwin
with most of the same tools. But MSYS does not depend on
the cygwin dll to emulate unix and the programs built this way
run as true native windows applications instead of like unix
applications with an windows interface layer.

Anyway, the 2.5.2 and later versions of GCL compile in the
usual manner under MinGW/MSYS to produce a windows
executable. The current Axiom Makefile system "almost"
works except that the extra C language extensions for file and
path management need to be re-written to work with Windows.
I think these can be ignored for now. The other problem with
the Windows version of GCL is the XDR. This was not
supported under windows until the most recent build candidate
GCL 2.5.4 which is supposed to compile under Windows with
the ONC version of rpc/XDR library. With Mike's help I did
manage to link the ONC rpc libraries to the earlier version
GCL 2.5.2 that is included in the Axiom CVS. I was just playing
with this when it *suddenly* became possible to actually build
a full Axiom system unded Linux and that has distracted me
for the last few weeks - so no more progress under windows.

Good luck with Windows. <grin> Please let me know how
I can help. 

Bill Page.

----- Original Message ----- 
From: Tim Daly
To: Bill Page
Sent: Friday, August 22, 2003 9:03 PM
Subject: Re: Automation & algebra lattice
Cc: David Mentre

> Bill,
> 
> I have a computer running XP and I've installed cygwin.
> Can you give me some idea of what tools you've set up to 
> compile Axiom?

\start
Date: Fri, 22 Aug 2003 22:03:47 -0400
From: Bill Page
To: list, David Mentre
Subject: dependency visualization with VCG

David,

About VCG. I downloaded an old Linux version of VCG which
shows

  xvcg -v

  VCG/XVCG - USAAR Visualization Tool V.1.3
   Revision 3.17 Date: 1995/02/08 11:11:14

(Where can I get a newer one??) I am running this on a fast
system with a lot of memory and Red Hat 9.0 Linux.

I played with VCG it to understand the graph input language
(gdl) and then I wrote a short Perl script (based on what I did
last week to find the spad file dependencies) to generate a gdl
file for Axiom.

Unfortunately when I tried to view it with xvcg, after a lot of grinding
of CPU, Linux finally crashed! (Hey, that's the first time I've crashed
Linux in a long time.) Anyway, the documentation did warn me that
the graph layout algorthm scaled exponentially with the size of the
graph...

The Axiom dependency graph that I tried to use with xvcg has
over 1040 nodes and more than 17,000 edges (dependencies).

Do you have any ideas about the size of graphs that can be
successfully manipulated with VCG? Do you have any suggestions
on where to go from here? Do you think of any way to segment
the Axiom dependency graph into smaller more managable
sub-graphs?

Cheers,
Bill Page.


> ... 
> > re: lattice
> >
> > I looked for tools that could compute and draw the lattice but found
> > none. I have a partial lattice as a DIA file but I haven't touched it
> > since april. Now that I have the dependency data there are several
> > things I can compute from it and I plan to write a lattice domain in
> > Axiom when time permits.
> 
> VCG is definitely the tool you want to automate graph (and tree)
> drawing. And it is free as in free software (GPL license).
> 
> 
> I would be very interested in the lattice you have.

\start
Date: Sat, 23 Aug 2003 04:50:26 -0400
From: Tim Daly
To: Bill Page
Subject: mingw

re: mingw. thanks. 

man, there are a lot of talented people out there. i kicked off a huge
download and now the sun is about to rise. We vampires must not be
caught out in the sun :-)

\start
Date: Sat, 23 Aug 2003 10:35:35 +0200
From: Juergen Weiss
To: list
Subject: RE: string.spad

I think I had the same problem at the beginning with the compiler. 
There must be an email in the mail archive. Problem is that the parser
macro expands the "left hand side" of macro definitions. One could
consider this a bug.

> 
> One of the steps I took to break cycles in the algebra involved 
> creating a separate file for each domain. Some spad files
> contain several domains. 
> 
> Developers of algebra code have many styles. Some created macros
> that only exist at the top of a spad file while others placed
> macros at the start of each domain. 
> 
> The scope of a macro such as:
> 
> MINSTRINGINDEX ==> 1
> 
> is the whole file. When I broke the domains into separate files
> I was careful to ensure that each "small" domain got a copy of
> the macros included in the DOMAIN.spad file. That is the correct
> behavior.
> 
> However, the side-effect of that copy changed the original source
> code of the "big" spad file. So, for example, string.spad contains
> 5 domains (CHAR, CCLASS, ISTRING, STRICAT, and STRING). In the
> original file the macro
> 
> MINSTRINGINDEX ==> 1
> 
> appears once. This was copied so it appears in each chunk and thus
> in each domain. Compiling CHAR.spad, or STRING.spad sees only one
> copy. However, when the whole string.spad file is extracted it
> contains 5 copies of the macro.
> 
> The spad compiler gets a value stack overflow if you try to compile
> string.spad. I don't yet know the cure. 

\start
Date: Sat, 23 Aug 2003 05:23:19 -0400
From: Tim Daly
To: Camm Maguire
Subject: Re: compiling the algebra files with gcl
Cc: Bill Page

Camm,

re: debian package.

The algebra code has 5 files which will not yet compile properly
(due to mismaintained INTERP.EXPOSED). I'm working to solve this
problem which has yet another subtle catch-22. I should have it
done shortly and then there will be a "build from scratch"
version on savannah.

Of course, we have to run tests against it, etc. 

You're welcome to build a debian package if you'd like. 
We also have to discuss how we plan to support things like 
apt and rpm files. I believe debian keeps them on their site
but we need to figure out how to keep binaries on the main
axiom site. Methinks Bill Page has already figured this out
so he's "the expert" :-)

\start
Date: Sat, 23 Aug 2003 05:18:22 -0400
From: Tim Daly
To: Bill Page
Subject: Re: dependency visualization with VCG

Bill,

Crashed linux. damn. that's a HUGE bug in that program. Can't imagine how
they do that.

I'd approach the problem somewhat differently. The lattice LEVEL order
is specified in the Makefile.pamphlet file. Given the first level as a
base you can graph the second level. Then iterate with the second level
as a base. The program should complain if it can find a file at level i
that can be pushed into level i-1 (which means I made a mistake). To find
the level of a file the steps were:

1) collect the files it depends upon
     this was the output of the compiler that I mentioned.
     each file in the makefile has a long list of other files it uses.
     call this the "depends on" list.
2) create a lisp association list that contains the bootstrap layer.
3) write a trivial lisp program (attached) that does:
     for each file in the "depends on" list 
       look up the height of the file in the lattice
       if the height doesn't exist
         then we can't compile this file yet -- fail
         else record the maximum of all the heights so far
     print the (max height) + 1
 
I've attached the lattice information.

Drawing this lattice involves taking an infinite 3-space of paper,
laying out the base level, adding the succeeding levels until done.
Next you have to project the 3-space to 2-space minimizing the 
crossings. This is hard (possibly theoretically hard). Search the
web for papers about "embedding data structures into trees". Very
old "flowchart" programs used to do this. (Flowcharts were a technology
before your time I imagine :-) ). The hack introduced with flowcharts
was "the connector box" which was just a pair of numbered boxes. You
break any line into two, number the inner ends with number boxes that
have unique equal numbers (so you can find them) and lay them out.
Create a numbered box at every line crossing.

(Theoretically a more interesting thing to do is to look upon the
cycle set as a "braid" structure and find the minimal cut).

One last step that I have yet to perform is to re-cast the bootstrap
code to its proper level in the lattice. It isn't necessary for the
compile that I do but each bootstrap files is part of a cycle. The
choice of which file to choose to break the cycle is arbitrary. However
using an arbitrary choice could make the bootstrap set larger. Why?

Consider two cycles A-B-C-D-E-A, F-G-A-F

If we choose A from both cycles then we only have 1 bootstrap file.
If we choose B from the first we need 2 bootstrap files.
I failed to do the complete analysis of this and we ought to.

In any case, it would make a nice algebra problem to solve using
Axiom. We could create a lattice domain which we use to construct
Axiom (creating yet one MORE instance of cyclic building behavior).
We can't be the first person to visit this problem so there must
be some general theory worth encoding. (Due next week. Show all
work. Use literate programming. Use #2 pencils :-) ).

Tim

(defun height (dependson)
 (let ((h -2))
 (dolist (dep dependson)
  (setq num (assoc dep lattice))
  (if (null num)
   (progn
    (format t "~a does not exist yet" dep)
    (break))
   (progn
    (setq h (max h (cdr (assoc dep lattice))))
    (format t "height=~a based on ~a~%" h dep))))
 (format t "put into layer ~a~%" (+ h 1))))

(setq lattice
 '(
( ABELGRP   . -1 )
( ABELGRP-  . -1 )
( ABELMON   . -1 )
( ABELMON-  . -1 )
( ABELSG    . -1 )
( ABELSG-   . -1 )
( ALAGG     . -1 )
( BOOLEAN   . -1 )
( CABMON    . -1 )
( CHAR      . -1 )
( CLAGG     . -1 )
( CLAGG-    . -1 )
( COMRING   . -1 )
( DFLOAT    . -1 )
( DIFRING   . -1 )
( DIFRING-  . -1 )
( DIVRING   . -1 )
( DIVRING-  . -1 )
( ENTIRER   . -1 )
( ES        . -1 )
( ES-       . -1 )
( EUCDOM    . -1 )
( EUCDOM-   . -1 )
( FFIELDC   . -1 )
( FFIELDC-  . -1 )
( FPS       . -1 )
( FPS-      . -1 )
( GCDDOM    . -1 )
( GCDDOM-   . -1 )
( HOAGG     . -1 )
( HOAGG-    . -1 )
( ILIST     . -1 )
( INS       . -1 )
( INS-      . -1 )
( INT       . -1 )
( INTDOM    . -1 )
( INTDOM-   . -1 )
( ISTRING   . -1 )
( LIST      . -1 )
( LNAGG     . -1 )
( LNAGG-    . -1 )
( LSAGG     . -1 )
( LSAGG-    . -1 )
( MONOID    . -1 )
( MONOID-   . -1 )
( MTSCAT    . -1 )
( NNI       . -1 )
( OINTDOM   . -1 )
( ORDRING   . -1 )
( ORDRING-  . -1 )
( OUTFORM   . -1 )
( PI        . -1 )
( PRIMARR   . -1 )
( POLYCAT   . -1 )
( POLYCAT-  . -1 )
( PSETCAT   . -1 )
( PSETCAT-  . -1 )
( QFCAT     . -1 )
( QFCAT-    . -1 )
( RCAGG     . -1 )
( RCAGG-    . -1 )
( REF       . -1 )
( RING      . -1 )
( RING-     . -1 )
( RNG       . -1 )
( RNS       . -1 )
( RNS-      . -1 )
( SETAGG    . -1 )
( SETAGG-   . -1 )
( SETCAT    . -1 )
( SETCAT-   . -1 )
( SINT      . -1 )
( STAGG     . -1 )
( STAGG-    . -1 )
( SYMBOL    . -1 )
( TSETCAT   . -1 )
( TSETCAT-  . -1 )
( UFD       . -1 )
( UFD-      . -1 )
( ULSCAT    . -1 )
( UPOLYC    . -1 )
( UPOLYC-   . -1 )
( URAGG     . -1 )
( URAGG-    . -1 )
( VECTOR    . -1 )
( AHYP      . 0 )
( ATTREG    . 0 )
( CFCAT     . 0 )
( ELTAB     . 0 )
( KOERCE    . 0 )
( KONVERT   . 0 )
( MSYSCMD   . 0 )
( ODEIFTBL  . 0 )
( OM        . 0 )
( OMCONN    . 0 )
( OMDEV     . 0 )
( OUT       . 0 )
( PRIMCAT   . 0 )
( PRINT     . 0 )
( PTRANFN   . 0 )
( SPFCAT    . 0 )
( TYPE      . 0 )
( ANY1      . 1 )
( COMBOPC   . 1 )
( DROPT1    . 1 )
( EQ2       . 1 )
( FORTCAT   . 1 )
( ITFUN2    . 1 )
( ITFUN3    . 1 )
( ITUPLE    . 1 )
( MKBCFUNC  . 1 )
( MKRECORD  . 1 )
( MKUCFUNC  . 1 )
( NONE1     . 1 )
( PATAB     . 1 )
( PLOT1     . 1 )
( PPCURVE   . 1 )
( PSCURVE   . 1 )
( REAL      . 1 )
( RESLATC   . 1 )
( RETRACT   . 1 )
( RETRACT-  . 1 )
( SEGBIND2  . 1 )
( SEGCAT    . 1 )
( STREAM1   . 1 )
( STREAM2   . 1 )
( STREAM3   . 1 )
( FMC       . 2 )
( FMFUN     . 2 )
( FORTFN    . 2 )
( FVC       . 2 )
( FVFUN     . 2 )
( INTRET    . 2 )
( SEGXCAT   . 2 )
( AGG       . 3 )
( AGG-      . 3 )
( BASTYPE   . 3 )
( BASTYPE-  . 3 )
( GRDEF     . 3 )
( LIST3     . 3 )
( MKFUNC    . 3 )
( ANON      . 4 )
( COLOR     . 4 )
( COMM      . 4 )
( COMPPROP  . 4 )
( ELTAGG    . 4 )
( ELTAGG-   . 4 )
( ESCONT1   . 4 )
( EXIT      . 4 )
( FAMONC    . 4 )
( FILECAT   . 4 )
( FINITE    . 4 )
( FNCAT     . 4 )
( FORMULA1  . 4 )
( IDPC      . 4 )
( IEVALAB   . 4 )
( IEVALAB-  . 4 )
( INTBIT    . 4 )
( LMODULE   . 4 )
( LOGIC     . 4 )
( LOGIC-    . 4 )
( MAPHACK1  . 4 )
( MAPHACK2  . 4 )
( MAPHACK3  . 4 )
( MAPPKG1   . 4 )
( MAPPKG2   . 4 )
( MAPPKG3   . 4 )
( MONAD     . 4 )
( MONAD-    . 4 )
( NIPROB    . 4 )
( NONE      . 4 )
( NUMINT    . 4 )
( ODECAT    . 4 )
( ODEPROB   . 4 )
( OMENC     . 4 )
( ONECOMP2  . 4 )
( OPTCAT    . 4 )
( OPTPROB   . 4 )
( ORDSET    . 4 )
( ORDSET-   . 4 )
( PALETTE   . 4 )
( PARPCURV  . 4 )
( PARPC2    . 4 )
( PARSCURV  . 4 )
( PARSC2    . 4 )
( PARSURF   . 4 )
( PARSU2    . 4 )
( PATMAB    . 4 )
( PATRES2   . 4 )
( PATTERN1  . 4 )
( PDECAT    . 4 )
( PDEPROB   . 4 )
( REPSQ     . 4 )
( REPDB     . 4 )
( RFDIST    . 4 )
( RIDIST    . 4 )
( RMODULE   . 4 )
( SEXCAT    . 4 )
( SGROUP    . 4 )
( SGROUP-   . 4 )
( SPACEC    . 4 )
( SPLNODE   . 4 )
( STEP      . 4 )
( SUCH      . 4 )
( TEX1      . 4 )
( UDVO      . 4 )
( YSTREAM   . 4 )
( ATRIG     . 5 )
( ATRIG-    . 5 )
( BMODULE   . 5 )
( CACHSET   . 5 )
( CHARNZ    . 5 )
( CHARZ     . 5 )
( DVARCAT   . 5 )
( DVARCAT-  . 5 )
( ELEMFUN   . 5 )
( ELEMFUN-  . 5 )
( ESTOOLS2  . 5 )
( EVALAB    . 5 )
( EVALAB-   . 5 )
( FCOMP     . 5 )
( FEVALAB   . 5 )
( FEVALAB-  . 5 )
( FPATMAB   . 5 )
( GROUP     . 5 )
( GROUP-    . 5 )
( IDPAM     . 5 )
( IDPO      . 5 )
( INCRMAPS  . 5 )
( IXAGG     . 5 )
( IXAGG-    . 5 )
( KERNEL2   . 5 )
( LALG      . 5 )
( LALG-     . 5 )
( LINEXP    . 5 )
( MODMONOM  . 5 )
( MONADWU   . 5 )
( MONADWU-  . 5 )
( MRF2      . 5 )
( NARNG     . 5 )
( NARNG-    . 5 )
( NSUP2     . 5 )
( OASGP     . 5 )
( ODVAR     . 5 )
( OPQUERY   . 5 )
( ORDFIN    . 5 )
( ORDMON    . 5 )
( PATMATCH  . 5 )
( PERMCAT   . 5 )
( PDRING    . 5 )
( PDRING-   . 5 )
( SDVAR     . 5 )
( SUP2      . 5 )
( TRIGCAT   . 5 )
( TRIGCAT-  . 5 )
( ULS2      . 5 )
( UP2       . 5 )
( AUTOMOR   . 6 )
( BGAGG     . 6 )
( BRAGG     . 6 )
( BRAGG-    . 6 )
( CARTEN2   . 6 )
( CHARPOL   . 6 )
( COMPLEX2  . 6 )
( DIFEXT    . 6 )
( DIFEXT-   . 6 )
( DLAGG     . 6 )
( ELAGG     . 6 )
( ELAGG-    . 6 )
( ES1       . 6 )
( ES2       . 6 )
( GRMOD     . 6 )
( GRMOD-    . 6 )
( HYPCAT    . 6 )
( HYPCAT-   . 6 )
( MKCHSET   . 6 )
( MODRING   . 6 )
( MODULE    . 6 )
( MODULE-   . 6 )
( NASRING   . 6 )
( NASRING-  . 6 )
( OAMON     . 6 )
( SORTPAK   . 6 )
( ZMOD      . 6 )
( ALGEBRA   . 7 )
( BTCAT     . 7 )
( FMCAT     . 7 )
( IDPOAM    . 7 )
( IFAMON    . 7 )
( GRALG     . 7 )
( GRALG-    . 7 )
( OCAMON    . 7 )
( PRQAGG    . 7 )
( QUAGG     . 7 )
( SKAGG     . 7 )
( BSTREE    . 8 )
( BTOURN    . 8 )
( CARD      . 8 )
( DRAWHACK  . 8 )
( DQAGG     . 8 )
( FACTFUNC  . 8 )
( FMTC      . 8 )
( FR2       . 8 )
( FRAC2     . 8 )
( FRUTIL    . 8 )
( ITAYLOR   . 8 )
( MLO       . 8 )
( NAALG     . 8 )
( NAALG-    . 8 )
( OAGROUP   . 8 )
( OAMONS    . 8 )
( OP        . 8 )
( ORDCOMP2  . 8 )
( PID       . 8 )
( RANDSRC   . 8 )
( UNISEG2   . 8 )
( XALG      . 8 )
( AMR       . 9 )
( AMR-      . 9 )
( DEGRED    . 9 )
( DLP       . 9 )
( EAB       . 9 )
( ESTOOLS1  . 9 )
( FAGROUP   . 9 )
( FAMONOID  . 9 )
( FIELD     . 9 )
( FIELD-    . 9 )
( FLAGG     . 9 )
( FLAGG-    . 9 )
( FLINEXP   . 9 )
( FLINEXP-  . 9 )
( FRETRCT   . 9 )
( FRETRCT-  . 9 )
( FSERIES   . 9 )
( FT        . 9 )
( IDPAG     . 9 )
( IDPOAMS   . 9 )
( INFINITY  . 9 )
( LA        . 9 )
( OMLO      . 9 )
( ORTHPOL   . 9 )
( PRODUCT   . 9 )
( PADICCT   . 9 )
( PMPRED    . 9 )
( PMASS     . 9 )
( PTFUNC2   . 9 )
( RADCAT    . 9 )
( RADCAT-   . 9 )
( RATRET    . 9 )
( RADUTIL   . 9 )
( UPXS2     . 9 )
( XFALG     . 9 )
( ZLINDEP   . 9 )
( A1AGG     . 10 )
( A1AGG-    . 10 )
( ARR2CAT   . 10 )
( ARR2CAT-  . 10 )
( ASP34     . 10 )
( BBTREE    . 10 )
( BFUNCT    . 10 )
( BPADIC    . 10 )
( BTREE     . 10 )
( CRAPACK   . 10 )
( DEQUEUE   . 10 )
( DLIST     . 10 )
( DRAWCX    . 10 )
( D01GBFA   . 10 )
( D02EJFA   . 10 )
( D03FAFA   . 10 )
( DRAWPT    . 10 )
( FAMR      . 10 )
( FAMR-     . 10 )
( FLASORT   . 10 )
( FLAGG2    . 10 )
( FGROUP    . 10 )
( FM        . 10 )
( FM1       . 10 )
( FPC       . 10 )
( FPC-      . 10 )
( FMONOID   . 10 )
( INDE      . 10 )
( IPADIC    . 10 )
( IROOT     . 10 )
( IR2       . 10 )
( LEXP      . 10 )
( LIECAT    . 10 )
( LIECAT-   . 10 )
( LIST2     . 10 )
( LIST2MAP  . 10 )
( LMOPS     . 10 )
( LZSTAGG   . 10 )
( LZSTAGG-  . 10 )
( MAGMA     . 10 )
( MESH      . 10 )
( MOEBIUS   . 10 )
( MODFIELD  . 10 )
( MODOP     . 10 )
( MRING     . 10 )
( MTHING    . 10 )
( NCNTFRAC  . 10 )
( NCODIV    . 10 )
( NUMTUBE   . 10 )
( ODR       . 10 )
( OFMONOID  . 10 )
( ONECOMP   . 10 )
( ORDCOMP   . 10 )
( OREPCAT   . 10 )
( OREPCAT-  . 10 )
( OWP       . 10 )
( PADIC     . 10 )
( PATTERN2  . 10 )
( PATLRES   . 10 )
( PARTPERM  . 10 )
( PBWLB     . 10 )
( PENDTREE  . 10 )
( PGE       . 10 )
( PGROEB    . 10 )
( PINTERP   . 10 )
( PLOTTOOL  . 10 )
( PFR       . 10 )
( PMDOWN    . 10 )
( PRTITION  . 10 )
( PMINS     . 10 )
( PMLSAGG   . 10 )
( PMTOOLS   . 10 )
( PSCAT     . 10 )
( PSCAT-    . 10 )
( QFORM     . 10 )
( QUEUE     . 10 )
( SCACHE    . 10 )
( SEG       . 10 )
( SEG2      . 10 )
( SEXOF     . 10 )
( STACK     . 10 )
( STTAYLOR  . 10 )
( TABLBUMP  . 10 )
( TABLEAU   . 10 )
( TOPSP     . 10 )
( TRANFUN   . 10 )
( TRANFUN-  . 10 )
( TUBE      . 10 )
( UDPO      . 10 )
( UNISEG    . 10 )
( VIEW      . 10 )
( VSPACE    . 10 )
( VSPACE-   . 10 )
( XPOLYC    . 10 )
( APPLYORE  . 11 )
( ARRAY1    . 11 )
( ARRAY12   . 11 )
( ARRAY2    . 11 )
( ASTACK    . 11 )
( BTAGG     . 11 )
( COMBINAT  . 11 )
( CSTTOOLS  . 11 )
( D01FCFA   . 11 )
( E04MBFA   . 11 )
( FARRAY    . 11 )
( FLALG     . 11 )
( GALUTIL   . 11 )
( HEAP      . 11 )
( IARRAY1   . 11 )
( IARRAY2   . 11 )
( IFARRAY   . 11 )
( INTCAT    . 11 )
( INTHEORY  . 11 )
( IRREDFFX  . 11 )
( LFCAT     . 11 )
( LODOCAT   . 11 )
( LODOCAT-  . 11 )
( LWORD     . 11 )
( MATCAT    . 11 )
( MATCAT-   . 11 )
( MATSTOR   . 11 )
( ORESUP    . 11 )
( OREPCTO   . 11 )
( OREUP     . 11 )
( PLOT3D    . 11 )
( PR        . 11 )
( PREASSOC  . 11 )
( PRIMARR2  . 11 )
( REDORDER  . 11 )
( SRAGG     . 11 )
( SRAGG-    . 11 )
( STREAM    . 11 )
( SYMPOLY   . 11 )
( TS        . 11 )
( TUPLE     . 11 )
( UPSCAT    . 11 )
( UPSCAT-   . 11 )
( VECTCAT   . 11 )
( VECTCAT-  . 11 )
( XDPOLY    . 11 )
( XEXPPKG   . 11 )
( XF        . 11 )
( XF-       . 11 )
( XPBWPOLY  . 11 )
( XPOLY     . 11 )
( XRPOLY    . 11 )
( BITS      . 12 )
( DIRPROD2  . 12 )
( IMATRIX   . 12 )
( IVECTOR   . 12 )
( LPOLY     . 12 )
( LSMP      . 12 )
( LSMP1     . 12 )
( MATCAT2   . 12 )
( PTCAT     . 12 )
( STRICAT   . 12 )
( TRIMAT    . 12 )
( ASSOCEQ   . 13 )
( CARTEN    . 13 )
( CLIF      . 13 )
( CLIP      . 13 )
( COORDSYS  . 13 )
( DBASE     . 13 )
( DHMATRIX  . 13 )
( DIOSP     . 13 )
( DIRPCAT   . 13 )
( DIRPCAT-  . 13 )
( D02BBFA   . 13 )
( D02BHFA   . 13 )
( D02CJFA   . 13 )
( FAXF      . 13 ) 
( FFPOLY2   . 13 )
( FNLA      . 13 )
( GRAY      . 13 )
( HB        . 13 )
( IRSN      . 13 )
( MCALCFN   . 13 )
( MHROWRED  . 13 )
( NUMODE    . 13 )
( NUMQUAD   . 13 )
( ODESYS    . 13 )
( ODETOOLS  . 13 )
( ORDFUNS   . 13 )
( PERMAN    . 13 )
( PFECAT    . 13 )
( PFECAT-   . 13 )
( POINT     . 13 )
( PSEUDLIN  . 13 )
( PTPACK    . 13 )
( REP2      . 13 )
( SETMN     . 13 )
( SEX       . 13 )
( STRING    . 13 )
( SYMFUNC   . 13 )
( VECTOR2   . 13 )
( ASP1      . 14 )
( ASP10     . 14 )
( ASP24     . 14 )
( ASP4      . 14 )
( ASP50     . 14 )
( ASP6      . 14 )
( ASP73     . 14 )
( BALFACT   . 14 )
( BEZOUT    . 14 )
( BINARY    . 14 )
( BINFILE   . 14 )
( BOUNDZRO  . 14 )
( BPADICRT  . 14 )
( BRILL     . 14 )
( CDEN      . 14 )
( CHVAR     . 14 )
( COMMUPC   . 14 )
( CONTFRAC  . 14 )
( CVMP      . 14 )
( CYCLOTOM  . 14 )
( CYCLES    . 14 )
( DDFACT    . 14 )
( DECIMAL   . 14 )
( DIOPS     . 14 )
( DIOPS-    . 14 )
( DIRPROD   . 14 )
( DISPLAY   . 14 )
( DMP       . 14 )
( DPMO      . 14 )
( DPOLCAT   . 14 )
( DPOLCAT-  . 14 )
( D01AJFA   . 14 )
( D01AKFA   . 14 )
( D01ALFA   . 14 )
( D01AMFA   . 14 )
( D01APFA   . 14 )
( D01AQFA   . 14 )
( EMR       . 14 )
( EQ        . 14 )
( ERROR     . 14 )
( EVALCYC   . 14 )
( E04DGFA   . 14 )
( E04FDFA   . 14 )
( E04GCFA   . 14 )
( E04JAFA   . 14 )
( FACUTIL   . 14 )
( FF        . 14 )
( FFCG      . 14 )
( FFCGX     . 14 )
( FFF       . 14 )
( FFHOM     . 14 )
( FFNB      . 14 )
( FFNBX     . 14 )
( FFPOLY    . 14 )
( FFSLPE    . 14 )
( FFX       . 14 )
( FGLMICPK  . 14 )
( FILE      . 14 )
( FINAALG   . 14 )
( FINRALG   . 14 )
( FLOATRP   . 14 )
( FNAME     . 14 )
( FOP       . 14 )
( FORMULA   . 14 )
( FORT      . 14 )
( FRAC      . 14 )
( FTEM      . 14 )
( GALFACTU  . 14 )
( GALPOLYU  . 14 )
( GB        . 14 )
( GBEUCLID  . 14 )
( GBF       . 14 )
( GBINTERN  . 14 )
( GENEEZ    . 14 )
( GENMFACT  . 14 )
( GENPGCD   . 14 )
( GHENSEL   . 14 )
( GMODPOL   . 14 )
( GOSPER    . 14 )
( GRIMAGE   . 14 )
( GROEBSOL  . 14 )
( HDMP      . 14 )
( HDP       . 14 )
( HEXADEC   . 14 )
( HEUGCD    . 14 )
( IBPTOOLS  . 14 )
( IBITS     . 14 )
( ICARD     . 14 )
( ICDEN     . 14 )
( IDECOMP   . 14 )
( IFF       . 14 )
( IIARRAY2  . 14 )
( IMATLIN   . 14 )
( IMATQF    . 14 )
( INMODGCD  . 14 )
( INNMFACT  . 14 )
( INPSIGN   . 14 )
( INTHERTR  . 14 )
( INTRAT    . 14 )
( INTRF     . 14 )
( INTSLPE   . 14 )
( INTTR     . 14 )
( ISUMP     . 14 )
( LAUPOL    . 14 )
( LEADCDET  . 14 )
( LGROBP    . 14 )
( LIMITRF   . 14 )
( LINDEP    . 14 )
( LO        . 14 )
( LPEFRAC   . 14 )
( LSPP      . 14 )
( MATLIN    . 14 )
( MCDEN     . 14 )
( MDDFACT   . 14 )
( MFINFACT  . 14 )
( MFLOAT    . 14 )
( MINT      . 14 )
( MLIFT     . 14 )
( MMAP      . 14 )
( MODMON    . 14 )
( MONOTOOL  . 14 )
( MPCPF     . 14 )
( MPC2      . 14 )
( MPC3      . 14 )
( MPOLY     . 14 )
( MPRFF     . 14 )
( MRATFAC   . 14 )
( MULTSQFR  . 14 )
( NORMRETR  . 14 )
( NPCOEF    . 14 )
( NSUP      . 14 )
( NTPOLFN   . 14 )
( ODP       . 14 )
( ODEPRIM   . 14 )
( ODEPRRIC  . 14 )
( OMPKG     . 14 )
( OMSERVER  . 14 )
( PADEPAC   . 14 )
( PADICRAT  . 14 )
( PADICRC   . 14 )
( PCOMP     . 14 )
( PDECOMP   . 14 )
( PF        . 14 )
( PFBR      . 14 )
( PFBRU     . 14 )
( PFOTOOLS  . 14 )
( PFRPAC    . 14 )
( PGCD      . 14 )
( PINTERPA  . 14 )
( PLEQN     . 14 )
( PMPLCAT   . 14 )
( PMQFCAT   . 14 )
( PNTHEORY  . 14 )
( POLUTIL   . 14 )
( POLTOPOL  . 14 )
( POLYCATQ  . 14 )
( POLYLIFT  . 14 )
( POLYROOT  . 14 )
( POLY2     . 14 )
( POLY2UP   . 14 )
( PRS       . 14 )
( PSQFR     . 14 )
( PUSHVAR   . 14 )
( QALGSET   . 14 )
( QFCAT2    . 14 )
( RADIX     . 14 )
( RATFACT   . 14 )
( RCFIELD   . 14 )
( RDETR     . 14 )
( RDETRS    . 14 )
( REAL0     . 14 )
( REAL0Q    . 14 )
( REALSOLV  . 14 )
( RESRING   . 14 )
( RETSOL    . 14 )
( RF        . 14 )
( RFFACTOR  . 14 )
( RMATCAT   . 14 )
( RRCC      . 14 )
( SCPKG     . 14 )
( SHDP      . 14 )
( SHP       . 14 )
( SIGNRF    . 14 )
( SMITH     . 14 )
( SMP       . 14 )
( SMTS      . 14 )
( SOLVEFOR  . 14 )
( SPLTREE   . 14 )
( STINPROD  . 14 )
( STTFNC    . 14 )
( SUBRESP   . 14 )
( SUMRF     . 14 )
( SUP       . 14 )
( SUPFRACF  . 14 )
( TANEXP    . 14 )
( TEMUTL    . 14 )
( TEX       . 14 )
( TEXTFILE  . 14 )
( TREE      . 14 )
( TWOFACT   . 14 )
( UNIFACT   . 14 )
( UP        . 14 )
( UPCDEN    . 14 )
( UPDECOMP  . 14 )
( UPDIVP    . 14 )
( UPMP      . 14 )
( UPOLYC2   . 14 )
( UPXSCAT   . 14 )
( VIEWDEF   . 14 )
( UPSQFREE  . 14 )
( VIEW2D    . 14 )
( VOID      . 14 )
( WEIER     . 14 )
( WP        . 14 )
( DIAGG     . 15 )
( DIAGG-    . 15 )
( DSMP      . 15 )
( EXPUPXS   . 15 )
( FRAMALG   . 15 )
( FRAMALG-  . 15 )
( MDAGG     . 15 )
( ODPOL     . 15 )
( PLOT      . 15 )
( RMCAT2    . 15 )
( ROIRC     . 15 )
( SDPOL     . 15 )
( SMATCAT   . 15 )
( SMATCAT-  . 15 )
( TUBETOOL  . 15 )
( UPXSCCA   . 15 )
( DPMM      . 16 )
( EFUPXS    . 16 )
( FFINTBAS  . 16 )
( FRIDEAL   . 16 )
( FRIDEAL2  . 16 )
( FRMOD     . 16 )
( FSAGG     . 16 )
( IBATOOL   . 16 )
( INTFACT   . 16 )
( KDAGG     . 16 )
( KDAGG-    . 16 )
( MSETAGG   . 16 )
( MONOGEN   . 16 )
( MONOGEN-  . 16 )
( NFINTBAS  . 16 )
( SPACE3    . 16 )
( CCLASS    . 17 )
( FSAGG2    . 17 )
( GALFACT   . 17 )
( IALGFACT  . 17 )
( IBACHIN   . 17 )
( NORMMA    . 17 )
( ODERED    . 17 )
( OMSAGG    . 17 )
( PERM      . 17 )
( PERMGRP   . 17 )
( PRIMES    . 17 )
( PWFFINTB  . 17 )
( RDIST     . 17 )
( SAE       . 17 )
( SAEFACT   . 17 )
( SAERFFC   . 17 )
( SGCF      . 17 )
( TBAGG     . 17 )
( VIEW3D    . 17 )
( ALIST     . 18 )
( EQTBL     . 18 )
( GSTBL     . 18 )
( HASHTBL   . 18 )
( INTABL    . 18 )
( INTFTBL   . 18 )
( INTPACK   . 18 )
( IPF       . 18 )
( KAFILE    . 18 )
( PATRES    . 18 )
( STBL      . 18 )
( STRTBL    . 18 )
( TABLE     . 18 )
( TBCMPPK   . 18 )
( ACF       . 19 )
( ACF-      . 19 )
( ACPLOT    . 19 )
( ANTISYM   . 19 )
( ANY       . 19 )
( ASP12     . 19 )
( ASP27     . 19 )
( ASP28     . 19 )
( ASP33     . 19 )
( ASP49     . 19 )
( ASP55     . 19 )
( ASP7      . 19 )
( ASP78     . 19 )
( ASP8      . 19 )
( ASP9      . 19 )
( ATTRBUT   . 19 )
( BOP       . 19 )
( BOP1      . 19 )
( COMMONOP  . 19 )
( COMPCAT   . 19 )
( COMPCAT-  . 19 )
( DRAW      . 19 )
( DRAWCFUN  . 19 )
( DROPT     . 19 )
( DROPT0    . 19 )
( D01ANFA   . 19 )
( D01ASFA   . 19 )
( D03AGNT   . 19 )
( EP        . 19 )
( E04AGNT   . 19 )
( FCPAK1    . 19 )
( FEXPR     . 19 )
( FFCAT     . 19 )
( FFCGP     . 19 )
( FFNBP     . 19 )
( FFP       . 19 )
( FLOAT     . 19 )
( FPARFRAC  . 19 )
( FR        . 19 )
( FRNAALG   . 19 )
( FS        . 19 )
( FST       . 19 )
( FUNCTION  . 19 )
( GDMP      . 19 )
( HACKPI    . 19 )
( IDEAL     . 19 )
( INFORM    . 19 )
( INFORM1   . 19 )
( IPRNTPK   . 19 )
( IR        . 19 )
( ISUPS     . 19 )
( KERNEL    . 19 )
( LIB       . 19 )
( LMDICT    . 19 )
( LODOOPS   . 19 )
( MATRIX    . 19 )
( MKFLCFN   . 19 )
( MSET      . 19 )
( M3D       . 19 )
( NAGC02    . 19 )
( NAGC05    . 19 )
( NAGC06    . 19 )
( NAGD03    . 19 )
( NAGE01    . 19 )
( NAGE02    . 19 )
( NAGE04    . 19 )
( NAGF07    . 19 )
( NAGS      . 19 )
( NAGSP     . 19 )
( NREP      . 19 )
( NUMFMT    . 19 )
( OC        . 19 )
( ODEPACK   . 19 )
( ODERAT    . 19 )
( OMERR     . 19 )
( OMERRK    . 19 )
( OPTPACK   . 19 )
( OSI       . 19 )
( OVAR      . 19 )
( PATTERN   . 19 )
( PMKERNEL  . 19 )
( PMSYM     . 19 )
( POLY      . 19 )
( PRIMELT   . 19 )
( QALGSET2  . 19 )
( QEQUAT    . 19 )
( QUATCAT   . 19 )
( RECLOS    . 19 )
( REP1      . 19 )
( RESULT    . 19 )
( RFFACT    . 19 )
( RMATRIX   . 19 )
( ROMAN     . 19 )
( ROUTINE   . 19 )
( RPOLCAT   . 19 )
( RULECOLD  . 19 )
( SAOS      . 19 )
( SEGBIND   . 19 )
( SET       . 19 )
( SPECOUT   . 19 )
( SQMATRIX  . 19 )
( SWITCH    . 19 )
( SYMS      . 19 )
( SYMTAB    . 19 )
( SYSSOLP   . 19 )
( UTSCAT    . 19 )
( VARIABLE  . 19 )
( WFFINTBS  . 19 )
( ACFS      . 20 )
( AF        . 20 )
( ALGFACT   . 20 )
( ALGFF     . 20 )
( ALGMANIP  . 20 )
( ALGMFACT  . 20 )
( ALGPKG    . 20 )
( ALGSC     . 20 )
( AN        . 20 )
( APPRULE   . 20 )
( ASP19     . 20 )
( ASP20     . 20 )
( ASP30     . 20 )
( ASP31     . 20 )
( ASP35     . 20 )
( ASP41     . 20 )
( ASP42     . 20 )
( ASP74     . 20 )
( ASP77     . 20 )
( ASP80     . 20 )
( ASP9      . 20 )
( CINTSLPE  . 20 )
( COMPFACT  . 20 )
( COMPLEX   . 20 )
( COMPLPAT  . 20 )
( CMPLXRT   . 20 )
( CPMATCH   . 20 )
( CRFP      . 20 )
( CTRIGMNP  . 20 )
( D02AGNT   . 20 )
( D03EEFA   . 20 )
( DBLRESP   . 20 )
( DERHAM    . 20 )
( DFSFUN    . 20 )
( DRAWCURV  . 20 )
( E04NAFA   . 20 )
( E04UCFA   . 20 )
( EF        . 20 )
( EFSTRUC   . 20 )
( ELFUTS    . 20 )
( ESTOOLS   . 20 )
( EXPEXPAN  . 20 )
( EXPRODE   . 20 )
( EXPRTUBE  . 20 )
( EXPR2     . 20 )
( FC        . 20 )
( FDIVCAT   . 20 )
( FDIV2     . 20 )
( FFCAT2    . 20 )
( FLOATCP   . 20 )
( FORDER    . 20 )
( FORTRAN   . 20 )
( FRNAAF2   . 20 )
( FSPECF    . 20 )
( FSRED     . 20 )
( FSUPFACT  . 20 )
( FS2       . 20 )
( FS2UPS    . 20 )
( GAUSSFAC  . 20 )
( GCNAALG   . 20 )
( GENUFACT  . 20 )
( GENUPS    . 20 )
( GTSET     . 20 )
( GPOLSET   . 20 )
( IAN       . 20 )
( INEP      . 20 )
( INFPROD0  . 20 )
( INFSP     . 20 )
( INPRODFF  . 20 )
( INPRODPF  . 20 )
( INTAF     . 20 )
( INTALG    . 20 )
( INTEF     . 20 )
( INTG0     . 20 )
( INTHERAL  . 20 )
( INTPAF    . 20 )
( INTPM     . 20 )
( INTTOOLS  . 20 )
( ITRIGMNP  . 20 )
( JORDAN    . 20 )
( KOVACIC   . 20 )
( LF        . 20 )
( LIE       . 20 )
( LODOF     . 20 )
( LSQM      . 20 )
( OMEXPR    . 20 )
( MCMPLX    . 20 )
( MULTFACT  . 20 )
( NAGD01    . 20 )
( NAGD02    . 20 )
( NAGF01    . 20 )
( NAGF02    . 20 )
( NAGF04    . 20 )
( NCEP      . 20 )
( NLINSOL   . 20 )
( NSMP      . 20 )
( NUMERIC   . 20 )
( OCT       . 20 )
( OCTCT2    . 20 )
( ODEPAL    . 20 )
( ODERTRIC  . 20 )
( PADE      . 20 )
( PAN2EXPR  . 20 )
( PDEPACK   . 20 )
( PFO       . 20 )
( PFOQ      . 20 )
( PICOERCE  . 20 )
( PMASSFS   . 20 )
( PMFS      . 20 )
( PMPREDFS  . 20 )
( PRIMELT   . 20 )
( PSETPK    . 20 )
( QUAT      . 20 )
( QUATCT2   . 20 )
( RADFF     . 20 )
( RDEEF     . 20 )
( RDEEFS    . 20 )
( RDIV      . 20 )
( RSETCAT   . 20 )
( RULE      . 20 )
( RULESET   . 20 )
( SIMPAN    . 20 )
( SFORT     . 20 )
( SOLVESER  . 20 )
( SUMFS     . 20 )
( SUTS      . 20 )
( TOOLSIGN  . 20 )
( TRIGMNIP  . 20 )
( TRMANIP   . 20 )
( ULSCCAT   . 20 )
( UPXSSING  . 20 )
( UTSODE    . 20 )
( UTSODETL  . 20 )
( UTS2      . 20 )
( WUTSET    . 20 )
( DEFINTEF  . 21 )
( DFINTTLS  . 21 )
( DEFINTRF  . 21 )
( D01TRNS   . 21 )
( EFULS     . 21 )
( ESCONT    . 21 )
( EXPR      . 21 )
( EXPR2UPS  . 21 )
( FDIV      . 21 )
( FSCINT    . 21 )
( FSINT     . 21 )
( FS2EXPXP  . 21 )
( GSERIES   . 21 )
( HELLFDIV  . 21 )
( INVLAPLA  . 21 )
( IR2F      . 21 )
( LAPLACE   . 21 )
( LIMITPS   . 21 )
( LODEEF    . 21 )
( NODE1     . 21 )
( ODECONST  . 21 )
( ODEINT    . 21 )
( REP       . 21 )
( SOLVERAD  . 21 )
( SULS      . 21 )
( SUPXS     . 21 )
( ULS       . 21 )
( ULSCONS   . 21 )
( UPXS      . 21 )
( UPXSCONS  . 21 )
( UTS       . 21 )
))

\start
Date: Sat, 23 Aug 2003 10:49:54 +0200
From: Frederic Lehobey
To: list
Subject: Re: compiling the algebra files with gcl

Dear Camm,

> Greetings!  Is anyone interested in me releasing an experimental
> Debian package for the unstable distribution only, presuming I can
> reproduce the below, or is this still premature?

  Yes. I would test it. David Mentr and I can even try to help to the
powerpc and sparc ports.

Best regards,
Frdric Lehobey

\start
Date: Sat, 23 Aug 2003 04:48:12 -0400
From: Tim Daly
To: Juergen Weiss
Subject: Re: string.spad

Yes, I see that the parser expands left hand sides and *I* do consider it
a bug. I'll fix it some other time as it isn't on the critical path. I added
it to the bug list to make sure it gets remembered. The failure causes a
stack overflow which is not a reasonable failure mode of a compiler.

\start
Date: Sat, 23 Aug 2003 05:28:10 -0400
From: Tim Daly
To: Camm Maguire
Subject: Stack overflow problem
Cc: Bill Page

Camm,

The stack overflow problem is caused by the Axiom preparser. It
scans for macros and expands BOTH sides of the macros based on
previous macros. The failure occcurs if there are 2 macros with
the same name in the same file. The expansion becomes:

env:   ()
macro: MAX ==> 1
env:   (MAX ==> 1)
macro: MAX ==> 1
env    (1 ==> 1, MAX ==> 1)
macro  1 + 1
  crash

It is considered (by me) a bug to expand the left hand side of the macro.
I don't know where this is done but it needs to be fixed. I fear the
"correct" fix will take me into the meta code using the meta compiler.

This is not a GCL failure (although GCL is particularly unhelpful 
when debugging stack overflows as :bt will crash GCL).

\start
Date: Sat, 23 Aug 2003 06:07:29 -0400
From: Tim Daly
To: Bill Page
Subject: graphing the lattice

More thought about this subject after closing my eyes for the evening:

You don't need a general 3-space layout. You can do it as a set of
parallel 2-space planes. Consider the following:

create a plane[0]
layout the bootstrap layer along the x axis.
layout the 0th layer above the bootstrap layer.
if a 0th layer item cannot be laid out without crossings
  then create a new plane, say plane[1]
       insert the new item into plane[1] connected with "lines"
              drawn back to plane[0]
layout the 1st layer above the 0th layer
if a 1st layer item cannot be laid out without crossings
  then create a new plane, say plane[2]
       insert the new item into plane[2] connected with "lines"
              drawn back to plane[0]
In general this may require quite a few planes. Only lines that
connect planes need connectors.

An optimization would be to lay out items in a "greedy" manner so 
that you only create plane[2] when a crossing occurs in plane[1].

\start
Date: Sat, 23 Aug 2003 11:43:52 +0200
From: Juergen Weiss
To: list
Subject: RE: Stack overflow problem
Cc: Bill Page

I have not really checked it, only looked at the code.
In compiler.boot the function compMacro calls the
function macroExpand with the complete form as an
argument. This seems to be wrong.

> Camm,
> 
> The stack overflow problem is caused by the Axiom preparser. It
> scans for macros and expands BOTH sides of the macros based on
> previous macros. The failure occcurs if there are 2 macros with
> the same name in the same file. The expansion becomes:
> 
> env:   ()
> macro: MAX ==> 1
> env:   (MAX ==> 1)
> macro: MAX ==> 1
> env    (1 ==> 1, MAX ==> 1)
> macro  1 + 1
>   crash
> 
> It is considered (by me) a bug to expand the left hand side 
> of the macro.
> I don't know where this is done but it needs to be fixed. I fear the
> "correct" fix will take me into the meta code using the meta compiler.
> 
> This is not a GCL failure (although GCL is particularly unhelpful 
> when debugging stack overflows as :bt will crash GCL).
> 
> Tim

\start
Date: 24 Aug 2003 21:29:45 -0400
From: Bill Page
To: list
Subject: RE: Automation & algebra lattice

Tim,

Well, it turns out that the newest version of VCG is called aiSee.

  http://www.aisee.com/

  [wspage@asus axiom2]$ aisee --
  aiSee V.2.1  AbsInt Angewandte Informatik GmbH
  Revision: 1.88    Date: 2003/06/23 15:24:52
  Usage:   /usr/local/bin/aisee.bin [options] [filename]
  Enter /usr/local/bin/aisee.bin -h  for help information.

This version seems to no longer be GPL but the binary is still
available at no cost for personal, academic and/or research use.
So I downloaded it to see if the newer version would fair any
better with the Axiom dependency graph.

  [wspage@asus axiom2]$ aisee -f all.gdl
  Wait....lSegmentation fault

Well, at least it didn't crash Linux this time!

There are lots of options to play with (-f above means use the
fastest layout option), so maybe I will find one that will work.
There is even an "automatic clustering" option. But perhaps
I will eventually be forced to use the more intellegent approach
that you suggest below.

I guess I could start by selecting from the whole dependency list
only those nodes in that are in layer 1 and add the "bootstrap"
nodes without their dependencies. The layer 1 nodes should not
depend on any spad files outside of layer 1 and the bootstrap,
right?

But really I would like to draw the *graph* including it's
cycles, not just the lattice that is implemented in the make
file. Hmmm....

Cheers,
Bill Page.

> Bill,
> 
> Crashed linux. damn. that's a HUGE bug in that program. Can't imagine
> how they do that.
> 
> I'd approach the problem somewhat differently. The lattice LEVEL order
> is specified in the Makefile.pamphlet file. Given the first level as a
> base you can graph the second level. Then iterate with the second
> level as a base. The program should complain if it can find a file
> at level i that can be pushed into level i-1 (which means I made a
> mistake).
> ...

\start
Date: Sun, 24 Aug 2003 21:57:28 -0400
From: Tim Daly
To: Bill Page
Subject: re: Automation & algebra lattice

well, several comments.

perhaps if they made aisee open source we could fix the bugs.

the difference between the makefile lattice and the full graph 
can be discovered by compiling the bootstrap domains as spad
files (use notangle to extract the spad code, not the bootstrap
code). Since you already have a running axiom with running algebra
the bootstrap domains should compile cleanly. Save the console
file from each compile, collect all of the Loading messages,
strip out their domains, and find out where the bootstrap files
occur in the lattice. In particular, find out where they occur
without the bootstrap files. Once you've successfully classified
the bootstrap domains you no longer need the bootstrap layer of
the lattice (and, in fact, it shouldn't be there any longer since
each domain in the bootstrap appears elsewhere in the graph).

as to the "two paper lattice layout algorithm" I mentioned earlier:
there is a subtle case that happens when you try to place two files
at the same lattice level in the plane. don't know if I can explain
this without pictures. suppose C depends on A and B. supposed D
depends on A and B. if you start the process and put A and B on the
bottom line at the same level you see:


    A    B

then you add C

      C                  -- layer 1 line
     / \
    /   \
   /     \
  A       B              -- layer 0 line

Now if you add D at the same "height" as C it can appear to the left
of C or the right of C. 

  D   C                  -- layer 1 line
     / \
    /   \
   /     \
  A       B              -- layer 0 line


In either case when you try to link D with A and B you are forced to 
have a pair of lines that cross. However, if the same "height" is an
area rather than a line you can add "slightly" above C:


      D                  --
                           > layer 1 "area"
      C                  --
     / \
    /   \
   /     \
  A       B              -- layer 0 line

and now it is possible to draw non-intersecting lines from D to A and B.
So the problem gets more complex if you allow an "area" for laying out
a single lattice level.

\start
Date: Sun, 24 Aug 2003 23:11:39 -0400
From: Tim Daly
To: Daniel Lazard
Subject: Axiom and the Lazard-Moreno Solving Package

Daniel,

I'm Tim Daly, the lead developer for Axiom which is now open source.
I'm not sure if you remember me from the past.  I used to work on
Axiom at IBM Research and am now working to make it publicly
available.  I'm cleaning up the last details of the algebra before
publishing the sources and I notice that there is a domain called
LazardMorenoSolvingPackage. This domain doesn't appear to exist
anywhere. Do you have a copy of the source and would you allow us to
add it to the open source version of the system?

\start
Date: 24 Aug 2003 22:00:33 -0400
From: Bill Page
To: Juergen Weiss
Subject: Patch to Juergen's Makefile

Here is a patch to Juergen's Makefile to eliminate unnecessary
.spad files with lower case names in the int/algebra directory.
If not eliminated, these files end up as extra nodes and edges
in the dependency graph.

----------


--- weiss/axiom2/src/algebra/Makefile   2003-08-20 22:23:37.000000000
-0400
+++ wspage/axiom2/src/algebra/Makefile  2003-08-22 20:08:04.000000000
-0400
@@ -631,8 +631,11 @@
  
 # original algebra source files combining several related modules
  
-SOURCE_FILES=  $(addprefix ${MID}/, $(SPADFILES:%=%.spad)) \
-               ${MID}/INTERP.EXPOSED ${MID}/exposed.lsp
+#SOURCE_FILES= $(addprefix ${MID}/, $(SPADFILES:%=%.spad)) \
+#              ${MID}/INTERP.EXPOSED ${MID}/exposed.lsp
+
+SOURCE_FILES=  ${MID}/INTERP.EXPOSED ${MID}/exposed.lsp
+
  
 # object files in build order

--------

\start
Date: Mon, 25 Aug 2003 10:46:46 +0200
From: Juergen Weiss
To: Bill Page
Subject: re: Automation & algebra lattice

Some domains may be preloaded at compile time of 
the interpsys executable. To get reliable dependencies,
you should generate an interpsys without preloaded
algebra modules.


> well, several comments.
> 
> perhaps if they made aisee open source we could fix the bugs.
> 
> the difference between the makefile lattice and the full graph 
> can be discovered by compiling the bootstrap domains as spad
> files (use notangle to extract the spad code, not the bootstrap
> code). Since you already have a running axiom with running algebra
> the bootstrap domains should compile cleanly. Save the console
> file from each compile, collect all of the Loading messages,
> strip out their domains, and find out where the bootstrap files
> occur in the lattice. In particular, find out where they occur
> without the bootstrap files. Once you've successfully classified
> the bootstrap domains you no longer need the bootstrap layer of
> the lattice (and, in fact, it shouldn't be there any longer since
> each domain in the bootstrap appears elsewhere in the graph).
> 
> as to the "two paper lattice layout algorithm" I mentioned earlier:
> there is a subtle case that happens when you try to place two files
> at the same lattice level in the plane. don't know if I can explain
> this without pictures. suppose C depends on A and B. supposed D
> depends on A and B. if you start the process and put A and B on the
> bottom line at the same level you see:
> 
> 
>     A    B
> 
> then you add C
> 
>       C                  -- layer 1 line
>      / \
>     /   \
>    /     \
>   A       B              -- layer 0 line
> 
> Now if you add D at the same "height" as C it can appear to the left
> of C or the right of C. 
> 
>   D   C                  -- layer 1 line
>      / \
>     /   \
>    /     \
>   A       B              -- layer 0 line
> 
> 
> In either case when you try to link D with A and B you are forced to 
> have a pair of lines that cross. However, if the same "height" is an
> area rather than a line you can add "slightly" above C:
> 
> 
>       D                  --
>                            > layer 1 "area"
>       C                  --
>      / \
>     /   \
>    /     \
>   A       B              -- layer 0 line
> 
> and now it is possible to draw non-intersecting lines from D 
> to A and B.
> So the problem gets more complex if you allow an "area" for laying out
> a single lattice level.
> 

\start
Date: Tue, 26 Aug 2003 12:39:51 -0400
From: Tim Daly
To: Ulrich Kortenkamp
Subject: Re: axiom letter
Cc: Tim Daly, Jr.

Ulli,

The Axiom homepage is at savannah.nongnu.org/projects/axiom.
There is currently nothing there at the moment but I expect to upload
the alpha versions of the sources tonight or tomorrow (depending on
whether the alpha particle emits). Long term plans are on the link
marked "Homepage".

The prior homepage contains a hand-built downloadable version which
runs on Redhat Linux 9 (my build platform). It is available at
axiom.tenkan.org.

The current state is that Axiom will build from scratch from the
sources, at least on my platform. The build has not yet been tested.
The testing process itself is undergoing rebuilding and generalization.
The build consists of the algebra/interpreter/compiler. It does not
yet contain the graphics or hyperdoc. 

\start
Date: Tue, 26 Aug 2003 13:08:06 -0400
From: Tim Daly
To: Juergen Weiss
Subject: interval.spad

Juergen,

Let me know if this succeeds or fails in your version:

start interpsys and type:

)co interval.spad )con INTRVL

\start
Date: Tue, 26 Aug 2003 20:31:51 +0200
From: David Mentre
To: Bill Page
Subject: Re: dependency visualization with VCG

Hi Bill,

Sorry for the late reply. My real life is interfering with my hacking
activities. ;-)

"Bill Page" <Bill Page> writes:

> The Axiom dependency graph that I tried to use with xvcg has
> over 1040 nodes and more than 17,000 edges (dependencies).

I'm currently trying with a smaller graph (just dependencies between
spad file generated by your script).

> Do you have any ideas about the size of graphs that can be
> successfully manipulated with VCG? Do you have any suggestions
> on where to go from here? Do you think of any way to segment
> the Axiom dependency graph into smaller more managable
> sub-graphs?

Sorry, I have no answer to all of your questions. I'm just a occasional
VCG user.

By the way, I think your script would be a good candidate for literate
programming. The conciseness of Perl makes some parts of your script
quite obscure. :)

In fact, the most missing part is an example that would explain what the
code is doing. 

In your perl script, how have you handle the case of macros?

\start
Date: Tue, 26 Aug 2003 21:25:06 +0200 (CEST)
From: Martin Rubey
To: list
Subject: Re: dependency visualization with VCG

I don't know whether that could help, but tulip is designed to process 
*very* large graphs. (and it is GPL)

http://www.tulip-software.org/

\start
Date: Tue, 26 Aug 2003 15:55:27 -0400
From: Bill Page
To: Juergen Weiss
Subject: RE: interval.spad

The compile of interval.spad seems to work on my
incarnation of Juergen's version. The axiom output
file is attached.

Cheers,
Bill Page.

> Juergen,
> 
> Let me know if this succeeds or fails in your version:
> 
> start interpsys and type:
> 
> )co interval.spad )con INTRVL
> 
> Tim

------_=_NextPart_000_01C36C0B.FEBB1760
	name="interval.log"
	filename="interval.log"

AXIOM=/home/bpage/axiom2/mnt/linux 
DAASE=/home/bpage/axiom2/mnt/linux/../../share 
 
(AXIOM Sockets) The AXIOM server number is undefined. 
------------------------------------------------------------------------=
----- 
   Issue )copyright to view copyright notices. 
   Issue )summary for a summary of useful system commands. 
   Issue )quit to leave AXIOM and return to shell. 
Wednesday August 13, 2003 at 02:07:33 
------------------------------------------------------------------------=
----- 
 
   Using local database =
/home/bpage/axiom2/mnt/linux/../../share/algebra/compress.daase..   =
Using local database =
/home/bpage/axiom2/mnt/linux/../../share/algebra/interp.daase.. 
   Using local database =
/home/bpage/axiom2/mnt/linux/../../share/algebra/operation.daase.. 
   Using local database =
/home/bpage/axiom2/mnt/linux/../../share/algebra/category.daase.. 
   Using local database =
/home/bpage/axiom2/mnt/linux/../../share/algebra/browse.daase.. 
(1) -> )co interval )con INTRVL 
   Loading /home/bpage/axiom2/mnt/linux/autoload/apply. 
   Loading /home/bpage/axiom2/mnt/linux/autoload/c-doc. 
   Loading /home/bpage/axiom2/mnt/linux/autoload/c-util. 
   Loading /home/bpage/axiom2/mnt/linux/autoload/profile. 
   Loading /home/bpage/axiom2/mnt/linux/autoload/category. 
   Loading /home/bpage/axiom2/mnt/linux/autoload/compiler. 
   Loading /home/bpage/axiom2/mnt/linux/autoload/define. 
   Loading /home/bpage/axiom2/mnt/linux/autoload/functor. 
   Loading /home/bpage/axiom2/mnt/linux/autoload/info. 
   Loading /home/bpage/axiom2/mnt/linux/autoload/iterator. 
   Loading /home/bpage/axiom2/mnt/linux/autoload/modemap. 
   Loading /home/bpage/axiom2/mnt/linux/autoload/nruncomp. 
   Loading /home/bpage/axiom2/mnt/linux/autoload/package. 
   Loading /home/bpage/axiom2/mnt/linux/autoload/htcheck. 
   Loading /home/bpage/axiom2/mnt/linux/autoload/xruncomp. 
   Compiling AXIOM source code from file 
      /home/bpage/axiom2/int/algebra/interval.spad using old system 
      compiler. 
   Loading /home/bpage/axiom2/mnt/linux/autoload/parsing. 
   Loading /home/bpage/axiom2/mnt/linux/autoload/bootlex. 
   Loading /home/bpage/axiom2/mnt/linux/autoload/def. 
   Loading /home/bpage/axiom2/mnt/linux/autoload/fnewmeta. 
   Loading /home/bpage/axiom2/mnt/linux/autoload/metalex. 
   Loading /home/bpage/axiom2/mnt/linux/autoload/metameta. 
   Loading /home/bpage/axiom2/mnt/linux/autoload/parse. 
   Loading /home/bpage/axiom2/mnt/linux/autoload/postpar. 
   Loading /home/bpage/axiom2/mnt/linux/autoload/postprop. 
   Loading /home/bpage/axiom2/mnt/linux/autoload/preparse. 
   INTCAT abbreviates category IntervalCategory 
   INTRVL abbreviates domain Interval 
------------------------------------------------------------------------=
 
   initializing NRLIB INTRVL for Interval 
   compiling into NRLIB INTRVL 
   Loading /home/bpage/axiom2/mnt/linux/algebra/INTCAT.o for =
category 
      IntervalCategory 
   Loading /home/bpage/axiom2/mnt/linux/algebra/GCDDOM.o for =
category 
      GcdDomain 
   Loading /home/bpage/axiom2/mnt/linux/algebra/INTDOM.o for =
category 
      IntegralDomain 
   Loading /home/bpage/axiom2/mnt/linux/algebra/COMRING.o for =
category 
      CommutativeRing 
   Loading /home/bpage/axiom2/mnt/linux/algebra/RING.o for category 
      Ring 
   Loading /home/bpage/axiom2/mnt/linux/algebra/RNG.o for category =
Rng 
   Loading /home/bpage/axiom2/mnt/linux/algebra/ABELGRP.o for =
category 
      AbelianGroup 
   Loading /home/bpage/axiom2/mnt/linux/algebra/CABMON.o for =
category 
      CancellationAbelianMonoid 
   Loading /home/bpage/axiom2/mnt/linux/algebra/ABELMON.o for =
category 
      AbelianMonoid 
   Loading /home/bpage/axiom2/mnt/linux/algebra/ABELSG.o for =
category 
      AbelianSemiGroup 
   Loading /home/bpage/axiom2/mnt/linux/algebra/SETCAT.o for =
category 
      SetCategory 
   Loading /home/bpage/axiom2/mnt/linux/algebra/BASTYPE.o for =
category 
      BasicType 
   Loading /home/bpage/axiom2/mnt/linux/algebra/KOERCE.o for =
category 
      CoercibleTo 
   Loading /home/bpage/axiom2/mnt/linux/algebra/SGROUP.o for =
category 
      SemiGroup 
   Loading /home/bpage/axiom2/mnt/linux/algebra/MONOID.o for =
category 
      Monoid 
   Loading /home/bpage/axiom2/mnt/linux/algebra/LMODULE.o for =
category 
      LeftModule 
   Loading /home/bpage/axiom2/mnt/linux/algebra/BMODULE.o for =
category 
      BiModule 
   Loading /home/bpage/axiom2/mnt/linux/algebra/RMODULE.o for =
category 
      RightModule 
   Loading /home/bpage/axiom2/mnt/linux/algebra/ALGEBRA.o for =
category 
      Algebra 
   Loading /home/bpage/axiom2/mnt/linux/algebra/MODULE.o for =
category 
      Module 
   Loading /home/bpage/axiom2/mnt/linux/algebra/ENTIRER.o for =
category 
      EntireRing 
   Loading /home/bpage/axiom2/mnt/linux/algebra/ORDSET.o for =
category 
      OrderedSet 
   Loading /home/bpage/axiom2/mnt/linux/algebra/TRANFUN.o for =
category 
      TranscendentalFunctionCategory 
   Loading /home/bpage/axiom2/mnt/linux/algebra/TRIGCAT.o for =
category 
      TrigonometricFunctionCategory 
   Loading /home/bpage/axiom2/mnt/linux/algebra/ATRIG.o for category 
      ArcTrigonometricFunctionCategory 
   Loading /home/bpage/axiom2/mnt/linux/algebra/HYPCAT.o for =
category 
      HyperbolicFunctionCategory 
   Loading /home/bpage/axiom2/mnt/linux/algebra/AHYP.o for category 
      ArcHyperbolicFunctionCategory 
   Loading /home/bpage/axiom2/mnt/linux/algebra/ELEMFUN.o for =
category 
      ElementaryFunctionCategory 
   Loading /home/bpage/axiom2/mnt/linux/algebra/RADCAT.o for =
category 
      RadicalCategory 
   Loading /home/bpage/axiom2/mnt/linux/algebra/RETRACT.o for =
category 
      RetractableTo 
   Loading /home/bpage/axiom2/mnt/linux/algebra/FPS.o for category 
      FloatingPointSystem 
   Loading /home/bpage/axiom2/mnt/linux/algebra/RNS.o for category 
      RealNumberSystem 
   Loading /home/bpage/axiom2/mnt/linux/algebra/FIELD.o for category 
      Field 
   Loading /home/bpage/axiom2/mnt/linux/algebra/EUCDOM.o for =
category 
      EuclideanDomain 
   Loading /home/bpage/axiom2/mnt/linux/algebra/PID.o for category 
      PrincipalIdealDomain 
   Loading /home/bpage/axiom2/mnt/linux/algebra/UFD.o for category 
      UniqueFactorizationDomain 
   Loading /home/bpage/axiom2/mnt/linux/algebra/DIVRING.o for =
category 
      DivisionRing 
   Loading /home/bpage/axiom2/mnt/linux/algebra/ORDRING.o for =
category 
      OrderedRing 
   Loading /home/bpage/axiom2/mnt/linux/algebra/OAGROUP.o for =
category 
      OrderedAbelianGroup 
   Loading /home/bpage/axiom2/mnt/linux/algebra/OCAMON.o for =
category 
      OrderedCancellationAbelianMonoid 
   Loading /home/bpage/axiom2/mnt/linux/algebra/OAMON.o for category 
      OrderedAbelianMonoid 
   Loading /home/bpage/axiom2/mnt/linux/algebra/OASGP.o for category 
      OrderedAbelianSemiGroup 
   Loading /home/bpage/axiom2/mnt/linux/algebra/REAL.o for category 
      RealConstant 
   Loading /home/bpage/axiom2/mnt/linux/algebra/KONVERT.o for =
category 
      ConvertibleTo 
   Loading /home/bpage/axiom2/mnt/linux/algebra/PATMAB.o for =
category 
      PatternMatchable 
   Loading /home/bpage/axiom2/mnt/linux/algebra/CHARZ.o for category 
      CharacteristicZero 
****** Domain: R already in scope 
   importing Integer 
   compiling local roundDown : R -> R 
   Loading /home/bpage/axiom2/mnt/linux/algebra/INT.o for domain 
      Integer 
Time: 0.45 SEC. 
 
   compiling local roundUp : R -> R 
Time: 0.01 SEC. 
 
   compiling local normaliseFloat : R -> R 
Time: 0.05 SEC. 
 
   compiling exported interval : (R,R) -> $ 
Time: 0 SEC. 
 
   compiling exported interval : R -> $ 
Time: 0.03 SEC. 
 
   compiling exported qinterval : (R,R) -> $ 
Time: 0.01 SEC. 
 
   compiling local exactInterval : (R,R) -> $ 
      INTRVL;exactInterval is replaced by CONS 
Time: 0 SEC. 
 
   compiling local exactSupInterval : (R,R) -> $ 
Time: 0 SEC. 
 
   compiling local exactInfInterval : (R,R) -> $ 
Time: 0.01 SEC. 
 
   compiling exported inf : $ -> R 
      INTRVL;inf;$R;10 is replaced by QCAR 
Time: 0 SEC. 
 
   compiling exported sup : $ -> R 
      INTRVL;sup;$R;11 is replaced by QCDR 
Time: 0 SEC. 
 
   compiling exported width : $ -> R 
Time: 0.01 SEC. 
 
   compiling exported contains? : ($,R) -> Boolean 
   Loading /home/bpage/axiom2/mnt/linux/algebra/BOOLEAN.o for domain 
      Boolean 
Time: 0.02 SEC. 
 
   compiling exported positive? : $ -> Boolean 
Time: 0.02 SEC. 
 
   compiling exported negative? : $ -> Boolean 
Time: 0.01 SEC. 
 
   compiling exported < : ($,$) -> Boolean 
Time: 0.04 SEC. 
 
   compiling exported + : ($,$) -> $ 
Time: 0.17 SEC. 
 
   compiling exported - : ($,$) -> $ 
Time: 0.01 SEC. 
 
   compiling exported * : ($,$) -> $ 
   Loading /home/bpage/axiom2/mnt/linux/algebra/LIST.o for domain =
List 
   Loading /home/bpage/axiom2/mnt/linux/algebra/ILIST.o for domain 
      IndexedList 
   Loading /home/bpage/axiom2/mnt/linux/algebra/LSAGG-.o for domain 
      ListAggregate& 
   Loading /home/bpage/axiom2/mnt/linux/algebra/STAGG-.o for domain 
      StreamAggregate& 
   Loading /home/bpage/axiom2/mnt/linux/algebra/ELAGG-.o for domain 
      ExtensibleLinearAggregate& 
   Loading /home/bpage/axiom2/mnt/linux/algebra/FLAGG-.o for domain 
      FiniteLinearAggregate& 
   Loading /home/bpage/axiom2/mnt/linux/algebra/URAGG-.o for domain 
      UnaryRecursiveAggregate& 
Time: 0.26 SEC. 
 
   compiling exported * : (Integer,$) -> $ 
Time: 0.02 SEC. 
 
   compiling exported * : (PositiveInteger,$) -> $ 
Time: 0.03 SEC. 
 
   compiling exported ** : ($,PositiveInteger) -> $ 
Time: 0.09 SEC. 
 
   compiling exported ^ : ($,PositiveInteger) -> $ 
Time: 0.18 SEC. 
 
   compiling exported - : $ -> $ 
Time: 0.01 SEC. 
 
   compiling exported = : ($,$) -> Boolean 
Time: 0.03 SEC. 
 
   compiling exported ~= : ($,$) -> Boolean 
Time: 0.02 SEC. 
 
   compiling exported One : () -> $ 
Time: 0 SEC. 
 
   compiling exported Zero : () -> $ 
Time: 0.01 SEC. 
 
   compiling exported recip : $ -> Union($,failed) 
Time: 0.05 SEC. 
 
   compiling exported unit? : $ -> Boolean 
Time: 0.12 SEC. 
 
   compiling exported exquo : ($,$) -> Union($,failed) 
Time: 0.06 SEC. 
 
   compiling exported gcd : ($,$) -> $ 
Time: 0.01 SEC. 
 
   compiling exported coerce : Integer -> $ 
Time: 0 SEC. 
 
   compiling exported interval : Fraction Integer -> $ 
   Loading /home/bpage/axiom2/mnt/linux/algebra/INS.o for category 
      IntegerNumberSystem 
   Loading /home/bpage/axiom2/mnt/linux/algebra/OINTDOM.o for =
category 
      OrderedIntegralDomain 
   Loading /home/bpage/axiom2/mnt/linux/algebra/DIFRING.o for =
category 
      DifferentialRing 
   Loading /home/bpage/axiom2/mnt/linux/algebra/LINEXP.o for =
category 
      LinearlyExplicitRingOver 
   Loading /home/bpage/axiom2/mnt/linux/algebra/CFCAT.o for category 
      CombinatorialFunctionCategory 
   Loading /home/bpage/axiom2/mnt/linux/algebra/STEP.o for category 
      StepThrough 
Time: 0.86 SEC. 
 
   compiling exported retractIfCan : $ -> Union(Integer,failed) 
Time: 0.02 SEC. 
 
   compiling exported retract : $ -> Integer 
Time: 0.03 SEC. 
 
   compiling exported coerce : $ -> OutputForm 
Time: 0.17 SEC. 
 
   compiling exported characteristic : () -> NonNegativeInteger 
   Loading /home/bpage/axiom2/mnt/linux/algebra/NNI.o for domain 
      NonNegativeInteger 
      INTRVL;characteristic;Nni;38 is replaced by 0 
Time: 0.01 SEC. 
 
   compiling exported pi : () -> $ 
Time: 0 SEC. 
 
   compiling exported log : $ -> $ 
Time: 0.03 SEC. 
 
   compiling exported exp : $ -> $ 
Time: 0 SEC. 
 
   compiling exported ** : ($,$) -> $ 
Time: 0.21 SEC. 
 
   compiling local hasTwoPiMultiple : (R,() -> R,$) -> Boolean 
   Loading /home/bpage/axiom2/mnt/linux/algebra/INS-.o for domain 
      IntegerNumberSystem& 
   Loading /home/bpage/axiom2/mnt/linux/algebra/EUCDOM-.o for domain 
      EuclideanDomain& 
   Loading /home/bpage/axiom2/mnt/linux/algebra/UFD-.o for domain 
      UniqueFactorizationDomain& 
   Loading /home/bpage/axiom2/mnt/linux/algebra/GCDDOM-.o for domain 
      GcdDomain& 
   Loading /home/bpage/axiom2/mnt/linux/algebra/INTDOM-.o for domain 
      IntegralDomain& 
   Loading /home/bpage/axiom2/mnt/linux/algebra/ALGEBRA-.o for =
domain 
      Algebra& 
   Loading /home/bpage/axiom2/mnt/linux/algebra/DIFRING-.o for =
domain 
      DifferentialRing& 
   Loading /home/bpage/axiom2/mnt/linux/algebra/ORDRING-.o for =
domain 
      OrderedRing& 
   Loading /home/bpage/axiom2/mnt/linux/algebra/MODULE-.o for domain 
      Module& 
   Loading /home/bpage/axiom2/mnt/linux/algebra/RING-.o for domain 
      Ring& 
   Loading /home/bpage/axiom2/mnt/linux/algebra/ABELGRP-.o for =
domain 
      AbelianGroup& 
   Loading /home/bpage/axiom2/mnt/linux/algebra/ABELMON-.o for =
domain 
      AbelianMonoid& 
Time: 0.21 SEC. 
 
   compiling local hasPiMultiple : (R,() -> R,$) -> Boolean 
Time: 0.03 SEC. 
 
   compiling exported sin : $ -> $ 
Time: 0.18 SEC. 
 
   compiling exported cos : $ -> $ 
Time: 0.10 SEC. 
 
   compiling exported tan : $ -> $ 
Time: 0.15 SEC. 
 
   compiling exported csc : $ -> $ 
Time: 0.25 SEC. 
 
   compiling exported sec : $ -> $ 
Time: 0.23 SEC. 
 
   compiling exported cot : $ -> $ 
Time: 0.15 SEC. 
 
   compiling exported asin : $ -> $ 
Time: 0.06 SEC. 
 
   compiling exported acos : $ -> $ 
Time: 0.06 SEC. 
 
   compiling exported atan : $ -> $ 
Time: 0 SEC. 
 
   compiling exported acot : $ -> $ 
Time: 0.01 SEC. 
 
   compiling exported acsc : $ -> $ 
Time: 0.20 SEC. 
 
   compiling exported asec : $ -> $ 
Time: 0.09 SEC. 
 
   compiling exported tanh : $ -> $ 
Time: 0 SEC. 
 
   compiling exported sinh : $ -> $ 
Time: 0 SEC. 
 
   compiling exported sech : $ -> $ 
Time: 0.17 SEC. 
 
   compiling exported cosh : $ -> $ 
Time: 0.07 SEC. 
 
   compiling exported csch : $ -> $ 
Time: 0.15 SEC. 
 
   compiling exported coth : $ -> $ 
Time: 0.03 SEC. 
 
   compiling exported acosh : $ -> $ 
Time: 0.05 SEC. 
 
   compiling exported acoth : $ -> $ 
Time: 0.22 SEC. 
 
   compiling exported acsch : $ -> $ 
Time: 0.03 SEC. 
 
   compiling exported asech : $ -> $ 
Time: 0.05 SEC. 
 
   compiling exported asinh : $ -> $ 
Time: 0.02 SEC. 
 
   compiling exported atanh : $ -> $ 
Time: 0.05 SEC. 
 
   compiling exported ** : ($,Fraction Integer) -> $ 
Time: 0.22 SEC. 
 
(time taken in buildFunctor:  4) 
 
;;;     ***       |Interval| REDEFINED 
 
;;;     ***       |Interval| REDEFINED 
Time: 0.16 SEC. 
 
 
   Warnings: 
      [1] roundDown: pretend(Integer) -- should replace by @ 
      [2] roundUp: pretend(Integer) -- should replace by @ 
      [3] normaliseFloat: pretend(Integer) -- should replace by @ 
      [4] **: pretend(Integer) -- should replace by @ 
      [5] ^: pretend(Integer) -- should replace by @ 
      [6] interval: pretend(Integer) -- should replace by @ 
      [7] sin:  hasOne? has no value 
      [8] sin:  hasMinusOne? has no value 
 
 
   Cumulative Statistics for Constructor Interval 
      Time: 6.00 seconds 
 
   Loading /home/bpage/axiom2/mnt/linux/autoload/bc-matrix. 
   Loading /home/bpage/axiom2/mnt/linux/autoload/bc-misc. 
   Loading /home/bpage/axiom2/mnt/linux/autoload/bc-solve. 
   Loading /home/bpage/axiom2/mnt/linux/autoload/bc-util. 
   Loading /home/bpage/axiom2/mnt/linux/autoload/ht-util. 
   Loading /home/bpage/axiom2/mnt/linux/autoload/htsetvar. 
   Loading /home/bpage/axiom2/mnt/linux/autoload/ht-root. 
   Loading /home/bpage/axiom2/mnt/linux/autoload/br-con. 
   Loading /home/bpage/axiom2/mnt/linux/autoload/br-data. 
   Loading /home/bpage/axiom2/mnt/linux/autoload/showimp. 
   Loading /home/bpage/axiom2/mnt/linux/autoload/br-op1. 
   Loading /home/bpage/axiom2/mnt/linux/autoload/br-op2. 
   Loading /home/bpage/axiom2/mnt/linux/autoload/br-search. 
   Loading /home/bpage/axiom2/mnt/linux/autoload/br-util. 
   Loading /home/bpage/axiom2/mnt/linux/autoload/topics. 
   Loading /home/bpage/axiom2/mnt/linux/autoload/br-prof. 
   Loading /home/bpage/axiom2/mnt/linux/autoload/br-saturn. 
   finalizing NRLIB INTRVL 
   Processing Interval for Browser database: 
--------constructor--------- 
Compiling /home/bpage/axiom2/int/algebra/./INTRVL.NRLIB/code.lsp. 
; (DEFUN |INTRVL;exactInterval| ...) is being compiled. 
;; Warning: The variable $ is not used. 
; (DEFUN |INTRVL;inf;$R;10| ...) is being compiled. 
;; Warning: The variable $ is not used. 
; (DEFUN |INTRVL;sup;$R;11| ...) is being compiled. 
;; Warning: The variable $ is not used. 
; (DEFUN |INTRVL;gcd;3$;32| ...) is being compiled. 
;; Warning: The variable |u| is not used. 
;; Warning: The variable |v| is not used. 
; (DEFUN |INTRVL;characteristic;Nni;38| ...) is being compiled. 
;; Warning: The variable $ is not used. 
; (DEFUN |INTRVL;sin;2$;45| ...) is being compiled. 
;; The variable |hasOne?| is undefined. 
;; The compiler will assume this variable is a global. 
;; The variable |hasMinusOne?| is undefined. 
;; The compiler will assume this variable is a global. 
End of Pass 1. 
; (DEFUN |INTRVL;hasTwoPiMultiple| ...) is being compiled. 
;; Warning:  INTRVL;hasTwoPiMultiple is proclaimed but not in =
*inline-functions* 
T1defun could not assure suitability of args for C call 
; (DEFUN |INTRVL;hasPiMultiple| ...) is being compiled. 
;; Warning:  INTRVL;hasPiMultiple is proclaimed but not in =
*inline-functions* 
T1defun could not assure suitability of args for C call 
; (DEFUN |INTRVL;cos;2$;46|) is being compiled. 
;; Warning: INTRVL;hasTwoPiMultiple called with 4 args, expected 0 
;; Warning: INTRVL;hasTwoPiMultiple called with 4 args, expected 0 
; (DEFUN |INTRVL;csc;2$;48|) is being compiled. 
;; Warning: INTRVL;hasPiMultiple called with 4 args, expected 0 
;; Warning: INTRVL;hasTwoPiMultiple called with 4 args, expected 0 
;; Warning: INTRVL;hasTwoPiMultiple called with 4 args, expected 0 
; (DEFUN |INTRVL;sec;2$;49|) is being compiled. 
;; Warning: INTRVL;hasPiMultiple called with 4 args, expected 0 
;; Warning: INTRVL;hasTwoPiMultiple called with 4 args, expected 0 
;; Warning: INTRVL;hasTwoPiMultiple called with 4 args, expected 0 
End of Pass 2. 
OPTIMIZE levels: Safety=0 (No runtime error checking), Space=0, =
Speed=3 
Finished compiling =
/home/bpage/axiom2/int/algebra/./INTRVL.NRLIB/code.lsp. 
------------------------------------------------------------------------=
 
   Interval is now explicitly exposed in frame initial 
   Interval will be automatically loaded when needed from 
      /home/bpage/axiom2/int/algebra/INTRVL.NRLIB/code 
 
(1) -> 

------_=_NextPart_000_01C36C0B.FEBB1760--

\start
Date: Tue, 26 Aug 2003 23:08:35 +0200
From: Juergen Weiss
To: Bill Page
Subject: RE: interval.spad

There is that strange error message of the C compiler in the log file...

> 
> Tim,
> 
> The compile of interval.spad seems to work on my
> incarnation of Juergen's version. The axiom output
> file is attached.
> 
> Cheers,
> Bill Page.
> 
> > 
> > Juergen,
> > 
> > Let me know if this succeeds or fails in your version:
> > 
> > start interpsys and type:
> > 
> > )co interval.spad )con INTRVL
> > 
> > Tim

\start
Date: Tue, 26 Aug 2003 17:43:48 -0400
From: Tim Daly
To: Bill Page
Subject: Re: interval.spad

Bill,

Try clipping the domain out of the interval.spad file
and storing it in INTRVL.spad. Then type (in a fresh
interpsys (this is important)):

)co INTRVL.spad

Tim

\start
Date: Tue, 26 Aug 2003 18:07:01 -0400
From: Bill Page
To: list
Subject: RE: interval.spad

Tim,

I already have a file called INTRVL.spad that contains the
code for the domain. I also have a file called INTCAT.spad
that contains the code for the category. Together they
constitute the contents of the file interval.spad. They
both had been compiled before as part of the algebra/Makefile.

As far as I can tell, the file interval.spad is generated
by a small over sight in Juergen's algebra/Makefile that
runs notangle without the -R option on all the named
(lowercase) spad files. This is not necessary for the
build of Axiom. I sent a patch the other day to eliminate
this extra .spad files with lowercase names.

The output of axiom is nearly the same as before (except
of course minus the output generated by compiling the
INTCAT code, but including the unusally warning messages:

-------

; (DEFUN |INTRVL;hasTwoPiMultiple| ...) is being compiled.
;; Warning:  INTRVL;hasTwoPiMultiple is proclaimed but not in
*inline-functions*
T1defun could not assure suitability of args for C call
; (DEFUN |INTRVL;hasPiMultiple| ...) is being compiled.
;; Warning:  INTRVL;hasPiMultiple is proclaimed but not in
*inline-functions*
T1defun could not assure suitability of args for C call

--------

which is perhaps what Juergen calls the "strange error
message of the C compiler"? (It is not clear to me that
it is generated by the gcc...)

Cheers,
Bill Page.


> 
> Bill,
> 
> Try clipping the domain out of the interval.spad file
> and storing it in INTRVL.spad. Then type (in a fresh
> interpsys (this is important)):
> 
> )co INTRVL.spad
> 
> Tim
> 

\start
Date: Tue, 26 Aug 2003 18:52:18 -0400
From: Tim Daly
To: Bill Page
Subject: Re: interval.spad

Yeah, this strangeness is something I'm chasing.
At the moment I've just put it "ont the shelf" to look at later.
Trying to get the final cleanup stages (whatever that means) done.
As usual there are a million little things to change. 

Thanks for the trials.
Tim

\start
Date: Wed, 27 Aug 2003 03:17:06 -0400
From: Bill Page
To: David Mentre
Subject: RE: dependency visualization with VCG

David,

About Perl hacking and literate programming. You are
right of course that I should have provided more
documentation with the Perl scripts. There is never
enough time! But I promise that I will move some of
the following description into a pamphlet file at
some point in the future if the scripts appear to
have any long term value.

The algorithm that I used in the 'depends' script is
as follows:

1) First depends is given a list of spad files as an
argument list. E.g. all the files beginning with
the letter X:

  % mnt/linux/bin/depends int/algebra/X*.spad

The contents of each file, in turn, is loaded into the
work space name $buf for further processing. Let's
denote a specific spad file by 'A'.

2) Within the $buf work space, a search is made
for the )ABBREV command that marks the beginning
of a module (domain, category or package). The names
from this command are saved. Let's denote the name
of a specific module by 'M'. Anything in the buffer
prior to this command is discarded. Each input spad
file 'A' may contains more than one module 'M'.

3) For each of these modules, we also look for the
pamphlet file that contains the module. Denote the
pamphlet file by 'P'.

4) After locating the )ABBREV command, another
pattern search is done to find the actual start of
the module definition continuing up to the 'with'
clause (which often appears as part of a macro).
Here we will find a list of all the functions which
this module "exports", i.e. potentially makes
available to other modules. Let's denote a specify
function by 'F'. There are usually many 'F' for
each 'M'.

5) For each of the functions 'F' in the with clause,
a search is done (using grep) for all other spad files
which contain a reference to the function name. Some
of these names will be "overloaded" so we also check
that the files we located also contain the name of
the module itself. Let's denote each of the spad files
that contains an 'M' qualified reference to 'F' by
the symbol 'B'.

6) For each of the spad files found by the above
search, we generate a line of output indicating an
edge in the dependency graph. I.e.

  'B' uses 'F' from 'M' in 'A' ('P')

7) Now this process is repeated with the next
module 'M' found within spad file 'A', starting
again at step 2) above. And so on with each file
in the argument list.

8) The resulting list of dependencies is in ordered
on the target spad files rather than the source
files, but this is easily remedied by use of the
Linux sort command. Also, there is the possibility
that the same dependency could be generated more
than once, so the sort option -u (unique) is also
useful.

9) A script called 'unique' is provided which after
sorting, suppresses the repeated source module names
to produce a more readable dependency list in the
usual format 'index' format.

---------

About handling macros. That is where the "heuristic"
comes into the algorithm. In fact, there is no attempt
to make use of the actual macro definitions per se.
The assumption is made that *if* a spad file contains
*both* a specific function name 'F' and the module
name 'M' anywhere in the same file, then there (very
probably) exists a reference to that function. All
such references are assumed to constitute dependencies.
Very often in the coding of the spad file, the module
name will be contained in the definition of a shorter
macro (say 'm') and it is that macro 'm' that appears
together with the function name 'F' as in F$m or in a
domain expression. It is possible however for the
algorithm to make mistakes, especially in the case of
short, multiply overloaded function names which some
times occur together in a module. This will sometimes
result in "extra" bogus dependencies, but it should
not miss any really existing dependencies.

Please let me know how you make out with your trails
with the VCG / aiSee graphics package. aiSee apparently
includes an experimental "clustering" algorithm that might
be interesting for finding "tight" cyclical dependencies.
But even if an automatic layout determination is not
possible, perhaps some manual effort will produce a useful
graphical representation.

But I am starting to think perhaps some other approach
might be desirable for producing the kind of "optimized"
layered structure that Tim has described. In that regard,
counting the number of cycles in which each module appears
in the simple output of the topological sort done in the
script I called 'order' might be of some interest. The
counts might be treated as "weights" assigned to each
module in terms of their value as bootstrap candidates.

Cheers,
Bill Page.


> 
> Hi Bill,
> 
> Sorry for the late reply. My real life is interfering with my hacking
> activities. ;-)
> 
> "Bill Page" <Bill Page> writes:
> 
> > The Axiom dependency graph that I tried to use with xvcg has
> > over 1040 nodes and more than 17,000 edges (dependencies).
> 
> I'm currently trying with a smaller graph (just dependencies between
> spad file generated by your script).
> 
> > Do you have any ideas about the size of graphs that can be
> > successfully manipulated with VCG? Do you have any suggestions
> > on where to go from here? Do you think of any way to segment
> > the Axiom dependency graph into smaller more manageable
> > sub-graphs?
> 
> Sorry, I have no answer to all of your questions. I'm just a 
> occasional
> VCG user.
> 
> By the way, I think your script would be a good candidate for literate
> programming. The conciseness of Perl makes some parts of your script
> quite obscure. :)
> 
> In fact, the most missing part is an example that would 
> explain what the
> code is doing. 
> 
> In your perl script, how have you handle the case of macros?
> 

\start
Date: Wed, 27 Aug 2003 03:34:08 -0400
From: Tim Daly
To: Bill Page
Subject: re: dependency visualization with VCG

With respect to the notion of optimizing the domain we choose for
the bootstrap list:

Consider that we have, say 30 loops, each between 1 (some files
self-refer) and 20 long. If we write each loop as a list then the goal
is to choose domains out of the lists so we minimize the total number
of bootstrap domains. Clearly the best first choice is "the most
frequent" domain mentioned across all of the lists. We can then
eliminate all of those lists since we now have a bootstrap file. Next
we choose the most frequent domain from the remaining lists. This may
not be optimal but it would be a better algorithm than the one I used
which was to just choose any domain.

I'm sure there is a wonderful mathematical name for the bootstrap
list (e.g. the "kernel"?) but I haven't yet cast it into either
graph theory or any other theory yet.

\start
Date: 27 Aug 2003 17:19:07 -0400
From: Camm Maguire
To: list
Subject: Re: Stack overflow problem
Cc: Bill Page

Greetings!

Tim Daly writes:

> Camm,
> 
> The stack overflow problem is caused by the Axiom preparser. It
> scans for macros and expands BOTH sides of the macros based on
> previous macros. The failure occcurs if there are 2 macros with
> the same name in the same file. The expansion becomes:
> 
> env:   ()
> macro: MAX ==> 1
> env:   (MAX ==> 1)
> macro: MAX ==> 1
> env    (1 ==> 1, MAX ==> 1)
> macro  1 + 1
>   crash
> 
> It is considered (by me) a bug to expand the left hand side of the macro.
> I don't know where this is done but it needs to be fixed. I fear the
> "correct" fix will take me into the meta code using the meta compiler.
> 
> This is not a GCL failure (although GCL is particularly unhelpful 
> when debugging stack overflows as :bt will crash GCL).
> 

OK, then this is what I need to look at, which I'll try to get to
soon. 

Take care,

\start
Date: 27 Aug 2003 17:29:38 -0400
From: Camm Maguire
To: list
Subject: Re: compiling the algebra files with gcl
Cc: Bill Page

Greetings!

Tim Daly writes:

> Camm,
> 
> re: debian package.
> 
> The algebra code has 5 files which will not yet compile properly
> (due to mismaintained INTERP.EXPOSED). I'm working to solve this
> problem which has yet another subtle catch-22. I should have it
> done shortly and then there will be a "build from scratch"
> version on savannah.
> 
> Of course, we have to run tests against it, etc. 
> 

Great!  I'd like it if possible if axiom can be built with an external
unpatched gcl-2.5.4, which I'm trying to release shortly.  When the
build from scratch is in place, I'd like to fold all necessary axiom
patches into gcl upstream.

> You're welcome to build a debian package if you'd like. 
> We also have to discuss how we plan to support things like 
> apt and rpm files. I believe debian keeps them on their site
> but we need to figure out how to keep binaries on the main
> axiom site. Methinks Bill Page has already figured this out
> so he's "the expert" :-)
> 

I have a little cron which installs the latest from the Debian site
onto ftp.gnu.org, then runs alien to make an rpm.  (ftp.gnu.org still
isn't back up after the security compromise :-().  The cron also pulls
a automatically generated solaris build on a machine at utexas.  Maybe
something similar would work?

I don't know if you think this is a good idea, but we could put a
debian subdir into the axiom source tree if you'd like.  Every Debian
package has one with the scripts and makefiles necessary to install
the package according to policy.  Normally this is maintained by the
Debian developer as a patch to the upstream source, but as you've
granted me rights on savannah, we could maintain this there via CVS.
Whatever you think is best of course.

\start
Date: Thu, 28 Aug 2003 05:24:21 -0400
From: Tim Daly
To: Camm Maguire
Subject: Re: compiling the algebra files with gcl
Cc: Bill Page

Camm,

re: gcl-2.5.4
I'd be happy to try the unpatched version.
Let me know when it is released and I'll download it.

re: debian package
The "standard" way to handle the various opsys/platform builds
is to change the AXIOM variable. The AXIOM variable's last
value (basename) selects the appropriate Makefile. Thus setting
AXIOM=/axiom/mnt/linux creates Makefile.linux. 

Since we plan to run on all of the linux distribs we can you
raise an interesting point. The basename should be more specific
than linux. If you look in Makefile.pamphlet you'll find a 
dozen or so potential basenames already. The top level Makefile.pamphlet
selects the appropriate one and makes a specific Makefile.

As to creating a debian subdir I'm a little reluctant. If it is
required than we can but I'd rather keep the system-specific
information in the Makefiles. What would go into the debian
subdir? If you consider the question in general rather than
specifically for debian is there a requirement for a new 
subdir to contain platform-build specific stuff? There is a
src/scripts subdir intended for this already. The 
src/scripts/Makefile.pamphlet could be customized for debian
and a debian subdir could occur there.

In any case, a new subdir should live under src, not at the root.
The idea of the src subdir is that you can clip off src and the
top level Makefile and have the whole distribution. You can clip
off mnt, move it anywhere, and have a working Axiom image.

\start
Date: Thu, 28 Aug 2003 20:18:19 +0200
From: David Mentre
To: Tim Daly
Subject: Re: compiling the algebra files with gcl

Hello Tim,

Tim Daly writes:

> Since we plan to run on all of the linux distribs we can you
> raise an interesting point. The basename should be more specific
> than linux.

I would suggest using a name along one used for building gnu packages,
something like :

  i686-linux

  or sparc64-sunos-5.8

In other terms : hardware_platform-OS[-OS_version]

[ In fact, GNU packages and more specifically configure script are using
  linux-gnu-i686, i.e. OS-vendor-hardware. I think the vendor part is
  not necessary. ]

My .02 euros.

\start
Date: 28 Aug 2003 19:28:13 -0400
From: Bill Page
To: Martin Rubey
Subject: Re: dependency visualization with VCG

Martin,

Thank you for your reference to the tulip package. I have downloaded
it (both as binary rpm and in source form) and tried to install in
under Linux RedHat 9.0, but I have run into problems in both cases.

In trying to install the binary package after first installing the
required lib files, I have one remaining dependency which I don't
seem to be able to resolve.

  [wspage@asus wspage]$ rpm -i tulip-1.2.4-1.i386.rpm
  error: Failed dependencies:
        libOSMesa.so.3 is needed by tulip-1.2.4-1

I have also installed Mesa 5.0.1 and I *do* have a file named

     /usr/local/lib/libOSMesa.so.4

I tried compiling and installing various older versions of Mesa but
even the "recommended" version 4.0.1 did not produce the required
libOSMesa.so.3 file.

So then I decided to try to resort to compiling Tulip from source.
>From the ./configure I discovered that I first had to recompile
qt from source because the version I got from the RedHat rpm did
not contain the header files. After getting qt to compile and
install, configure completed but way down in the make I got an
error during the compile:

...
source='PropertyDialogData.cpp' object='Tulip-PropertyDialogData.o'
libtool=no \depfile='.deps/Tulip-PropertyDialogData.Po'
tmpdepfile='.deps/Tulip-PropertyDialogData.TPo' \
depmode=gcc3 /bin/sh ../../../depcomp \
g++ -DHAVE_CONFIG_H -I. -I. -I../../.. -I./../include -I../include
-I../../../thirdparty/gzstream -I/usr/local/qt/include
-I../../../library/tulip/include -I../../../library/tulip-geo/include
-I../../../library/tulip-ogl/include
-I../../../library/tulip-qt/include   -DQT_THREAD_SUPPORT -D_REENTRANT
-DNDEBUG -O2 -pipe
-c -o Tulip-PropertyDialogData.o `test -f 'PropertyDialogData.cpp' ||
echo './'`PropertyDialogData.cpp
PropertyDialogData.cpp: In constructor
   `PropertyDialogData::PropertyDialogData(QWidget*, const char*,
unsigned
   int)':
PropertyDialogData.cpp:84: invalid use of undefined type `struct
   TulipPropertyTable'
../include/PropertyDialogData.h:24: forward declaration of `struct
   TulipPropertyTable'
PropertyDialogData.cpp:85: incomplete type `TulipPropertyTable' does not
have
   member `AlwaysOn'
PropertyDialogData.cpp:86: invalid use of undefined type `struct
   TulipPropertyTable'
../include/PropertyDialogData.h:24: forward declaration of `struct
   TulipPropertyTable'
PropertyDialogData.cpp:87: invalid use of undefined type `struct
   TulipPropertyTable'
../include/PropertyDialogData.h:24: forward declaration of `struct
   TulipPropertyTable'
PropertyDialogData.cpp:89: no matching function for call to
`QGridLayout::
   addWidget(TulipPropertyTable*&, int, int)'
/usr/local/qt/include/qlayout.h:331: candidates are: void
   QGridLayout::addWidget(QWidget*, int, int, int = 0)
PropertyDialogData.cpp:95: invalid use of undefined type `struct
   TulipPropertyTable'
../include/PropertyDialogData.h:24: forward declaration of `struct
   TulipPropertyTable'
PropertyDialogData.cpp:96: incomplete type `TulipPropertyTable' does not
have
   member `AlwaysOn'
PropertyDialogData.cpp:97: invalid use of undefined type `struct
   TulipPropertyTable'
../include/PropertyDialogData.h:24: forward declaration of `struct
   TulipPropertyTable'
PropertyDialogData.cpp:98: invalid use of undefined type `struct
   TulipPropertyTable'
../include/PropertyDialogData.h:24: forward declaration of `struct
   TulipPropertyTable'
PropertyDialogData.cpp:100: no matching function for call to
`QGridLayout::
   addWidget(TulipPropertyTable*&, int, int)'
/usr/local/qt/include/qlayout.h:331: candidates are: void
   QGridLayout::addWidget(QWidget*, int, int, int = 0)
make[5]: *** [Tulip-PropertyDialogData.o] Error 1
make[5]: Leaving directory `/home/wspage/tulip-1.2.4/software/Tulip/src'
make[4]: *** [all] Error 2
make[4]: Leaving directory `/home/wspage/tulip-1.2.4/software/Tulip/src'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/home/wspage/tulip-1.2.4/software/Tulip'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/wspage/tulip-1.2.4/software'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/wspage/tulip-1.2.4'
make: *** [all] Error 2

-----------

So finally, I decided to complete the original install using

  rpm --nodeps -i tulip-1.2.4-1.i386.rpm

to ignore the dependency error.

Now I have a version of Tulip that "sort of" runs. I can draw a
simple graph but some actions cause the program to abort. And I
find the controls rather confusing. Nor have I found an particularly
useful documentation or examples. For instance, I do not understand
how to import an externally defined graph (such as the axiom
dependency graph which I currently have in GDL - graph description
language - format).

Anyway, if you have any suggestions on what to do to solve these
problems, I would really appreciate it. In spite of these problems
what I have seen so far looks very interesting.

Cheers,
Bill Page.

On Tue, 2003-08-26 at 15:25, Martin RUBEY wrote:
> I don't know whether that could help, but tulip is designed to process 
> *very* large graphs. (and it is GPL)
> 
> http://www.tulip-software.org/
> 

\start
Date: Thu, 28 Aug 2003 21:49:33 -0400
From: Tim Daly
To: list
Subject: Axiom Availability Announcement

*,

Axiom exists as free and open source software.

The first version of the Axiom sources has been uploaded to the CVS at
http://savannah.gnu.org/projects/axiom. Congrats to all involved.
Many thanks to the Numerical Algorithms Group, the CAISS Institute at
City College of New York and to the people of these mailing lists.

This version contains (almost) all of the algebra, the interpreter,
and the spad compiler. This is the heart of Axiom. The graphics,
hyperdoc, documentation, numerical code, Axiom Journal papers,
openmath, and CATS test suite are in my source tree but are not ready
for distribution yet. I'll announce these parts as they become
available.

A gzipped-tar file of the sources will be available soon.
Debian apt and Redhat rpm files are under discussion.

The CVS version can be downloaded by anonymous CVS:

cvs -d:pserver:anoncvs@subversions.gnu.org:/cvsroot/savannah login
cvs -z3 -d:pserver:anoncvs@subversions.gnu.org:/cvsroot/savannah co axiom

NOTE: when prompted for a password for anoncvs simply press the Enter key

The primary documentation is in the Makefile.dvi file.

To build the system in a directory (e.g. /SPAD) you do:

cd /SPAD
export AXIOM=/SPAD/mnt/linux
make

The executable is (currently) found by doing:

export PATH=/SPAD/obj/linux/bin:/SPAD/mnt/linux/bin:$PATH
interpsys

The build takes about 2 hours and 15 minutes on a 2Ghz/1Gb machine.
You might want to do the build in an emacs shell buffer so you can
save the console output in case of trouble.

So far the build works properly on Redhat GNU/Linux 9. If you build it
on another system please let us know. A port to Windows is in process.

This is an alpha version of the system so expect (and report) bugs.
The savannah website has a bug reporting tool.

The algebra runs but has not yet been tested. This version has been
uploaded so we can all test from the same base. When reporting bugs
please use this version number printed at the top of your Axiom session.
It will look something like:
  Thursday, August 28, 2003, 2:31am

This version is a complete rebuild of Axiom. Many changes have been made.

First, the system has been rewritten using literate programming.
Each file is in "pamphlet" format (which is basically Latex with
two extra tags). The reason for this is explained in the top-level
Makefile.dvi file.

Second, the system has been ported to GCL. This is the first of many
common lisp ports where Axiom will exist.

Third, the makefile tree has been rewritten. Most of the documentation
that exists at the moment is in the various Makefile.dvi files.

Fourth, the algebra is built from scratch rather than pre-existing files.

The tenkan.org website and CVS is now obsolete and will be removed. 
Please use savannah for future development.

Much work needs to be done. Click on the homepage link to see some of
the future tasks.

Questions, comments, and snide remarks can be sent to me at:

\start
Date: Thu, 28 Aug 2003 20:46:40 -0700 (PDT)
From: Cliff Yapp
To: list
Subject: Re: [Axiom-mail] Axiom Availability Announcement

--- Tim Daly wrote:

> This is an alpha version of the system so expect (and report) bugs.
> The savannah website has a bug reporting tool.

Congrats on the release!  A very impressive achievement.

One question - is the file axiom/zips/XFree86-devel-4.2.0-72.i386.rpm
needed in the cvs tree?  Wouldn't that be something the distro would
provide?  

Thanks much for all your tremendous work.

CY

\start
Date: Fri, 29 Aug 2003 05:06:47 -0400
From: Tim Daly
To: list
Subject: sigh

Well, it appears that the CVS commands that I copied from the 
documentation on Savannah do not work. I'll figure it out and
post new instructions. There is no such thing as a simple job.

\start
Date: Fri, 29 Aug 2003 05:11:36 -0400
From: Tim Daly
To: list
Subject: sigh

These are the corrected instructions for downloading Axiom from CVS:


The CVS version can be downloaded by anonymous CVS:

cvs -d:pserver:anoncvs@subversions.gnu.org:/cvsroot/axiom login
cvs -z3 -d:pserver:anoncvs@subversions.gnu.org:/cvsroot/axiom co axiom

NOTE: when prompted for a password for anoncvs simply press the Enter key

\start
Date: Fri, 29 Aug 2003 19:26:13 +1000
From: Jason White
To: list
Subject: Re: sigh

Tim Daly writes:
 > Well, it appears that the CVS commands that I copied from the 
 > documentation on Savannah do not work. I'll figure it out and
 > post new instructions. There is no such thing as a simple job.
 > 
Only the CVSROOT was wrong. It should be:
:pserver:anoncvs@subversions.gnu.org:/cvsroot/axiom

\start
Date: Fri, 29 Aug 2003 05:29:39 -0400
From: Tim Daly
To: David Mentre
Subject: AXIOM platform naming conventions

David,

Schelter had a scheme for naming systems also. 
It was part of the add-defs function.
Since the name is arbitrary perhaps the string used to 
designate the name should also be arbitrary. It is only 
a way to select a chunk out of the Makefile anyway.

I need to add the name to the yearweek variable so it
becomes part of the version information. Axiom used to
have a )bug command that would format email and sent it
to me. I'll have to write (or exhume) that code again.

re: advi
I included advi in the zips directory because one of the
tasks is to generate documentation files, which the current
build skips. I'm muttering to myself about ways to organize
the documentation library. I'd especially like to combine
the top level structure of Axiom's booklet library (this
needs a new name also since 'library' means so many things
to programmers).

I'd like to rip-and-tear the old Hypertex machinery and
redo it in terms of an ADVI based machine. We have to think
carefully about the long term with such issues as platform
porting (e.g. does ADVI run on windows?).

\start
Date: Fri, 29 Aug 2003 19:06:54 +0200
From: David Mentre
To: list
Subject: Re: AXIOM platform naming conventions

Hello Tim,

Tim Daly writes:

> Schelter had a scheme for naming systems also. 
> It was part of the add-defs function.
> Since the name is arbitrary perhaps the string used to 
> designate the name should also be arbitrary. It is only 
> a way to select a chunk out of the Makefile anyway.

I think the name is not so arbitrary: it should help us to determined
quickly the platform on which the bug is occurring:

 - hardware

 - OS

 - common lisp used
 
 - version number when relevant

 - anything I have forget

So it would be "i686-linux-gcl" or "i686-linux-gcl/2.5.4" for
example. 


> I need to add the name to the yearweek variable so it
> becomes part of the version information. Axiom used to
> have a )bug command that would format email and sent it
> to me. I'll have to write (or exhume) that code again.

About the )bug command, please provide the option to format the bug
report and print it somewhere, instead of sending it
directly. Sometimes, the mail system is not configured (laptop) or has a
different API (windows platform).

\start
Date: 29 Aug 2003 13:26:46 -0400
From: Bill Page
To: list
Subject: Re: Axiom Availability Announcement

Tim,

On my first attempt to compile the new Axiom source from Savannah
I got the following error message:


-------
0 making /home/wspage/projects/axiom/int/algebra/AHYP.spad from
/home/wspage/projects/axiom/src/algebra/trigcat.spad.pamphlet
0 making /home/wspage/projects/axiom/int/algebra/AHYP.NRLIB from
/home/wspage/projects/axiom/int/algebra/AHYP.spad
 
(AXIOM Sockets) The AXIOM server number is undefined.
-----------------------------------------------------------------------------
   Issue )copyright to view copyright notices.
   Issue )summary for a summary of useful system commands.
   Issue )quit to leave AXIOM and return to shell.
Friday August 29, 2003 at 13:14:01
-----------------------------------------------------------------------------
  
   Using local database
/home/wspage/projects/axiom/src/share/algebra/compress.daase..   Using
local database
/home/wspage/projects/axiom/src/share/algebra/interp.daase..
   Using local database
/home/wspage/projects/axiom/src/share/algebra/operation.daase..
   Using local database
/home/wspage/projects/axiom/src/share/algebra/category.daase..
   Using local database
/home/wspage/projects/axiom/src/share/algebra/browse.daase..
(1) ->    Loading /projects/axiom/mnt/linux/autoload/apply.
  
   >> System error:
   Cannot open the file /projects/axiom/mnt/linux/autoload/apply.
 
protected-symbol-warn called with (NIL)
(1) -> 0 making /home/wspage/projects/axiom/mnt/linux/algebra/AHYP.o
from /home/wspage/projects/axiom/int/algebra/AHYP.NRLIB
cp: cannot stat
`/home/wspage/projects/axiom/int/algebra/AHYP.NRLIB/code.o': No
such file or directory
make[3]: *** [/home/wspage/projects/axiom/mnt/linux/algebra/AHYP.o]
Error 1
make[3]: Leaving directory `/home/wspage/projects/axiom/src/algebra'
make[2]: *** [algebradir] Error 2
make[2]: Leaving directory `/home/wspage/projects/axiom/src'
make[1]: *** [srcdir] Error 2
make[1]: Leaving directory `/home/wspage/projects/axiom'
make: *** [all] Error 2
[wspage@asus axiom]$


-------

Is there a problem with 'autoload/apply'??

Cheers,
Bill Page.


On Thu, 2003-08-28 at 21:49, Tim Daly wrote:
> *,
> 
> Axiom exists as free and open source software.
> 
> The first version of the Axiom sources has been uploaded to the CVS at
> http://savannah.gnu.org/projects/axiom. Congrats to all involved.
> Many thanks to the Numerical Algorithms Group, the CAISS Institute at
> City College of New York and to the people of these mailing lists.

...


\start
Date: Fri, 29 Aug 2003 17:02:34 -0400
From: Tim Daly
To: Bill Page
Subject: apply.boot autoload

Bill,

The autoload path is correct so that isn't the problem.
The AHYP compile is the first .spad compile so this is the first
time that the new Axiom started.
So it seems that apply.boot did not compile.
Check your console output for the apply.boot compile and see why it failed.

\start
Date: Fri, 29 Aug 2003 17:20:50 -0400
From: Bill Page
To: list
Subject: RE: apply.boot autoload

Tim,

Here is what I see for apply.boot in the build log. It
seems to have compiled normally. Any other ideas? Are
there any environment variables besides AXIOM that might
affect this?

----------
11 making /home/wspage/projects/axiom/int/interp/apply.clisp from
/home/wspage/projects/axiom/src/interp/apply.boot.pamphlet

>10 making /home/wspage/projects/axiom/obj/linux/interp/apply.o from
/home/wspage/projects/axiom/int/interp/apply.clisp

>
Compiling /home/wspage/projects/axiom/int/interp/apply.clisp.
; (DEFUN |compApplication| ...) is being compiled.
;; The variable |$op| is undefined.
;; The compiler will assume this variable is a global.
; (DEFUN |compApplyModemap| ...) is being compiled.
;; The variable |$bindings| is undefined.
;; The compiler will assume this variable is a global.
; (DEFUN |compMapCondFun| ...) is being compiled.
;; Warning: The variable |op| is not used.
;; Warning: The variable |dc| 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/wspage/projects/axiom/obj/linux/interp/apply.o.
9 making /home/wspage/projects/axiom/mnt/linux/autoload/apply.o from
/home/wspage/projects/axiom/obj/linux/interp/apply.o
---------

Cheers,
Bill Page.

> 
> Bill,
> 
> The autoload path is correct so that isn't the problem.
> The AHYP compile is the first .spad compile so this is the 
> first time that the new Axiom started. So it seems that 
> apply.boot did not compile. Check your console output for the 
> apply.boot compile and see why it failed.
> 

\start
Date: 29 Aug 2003 17:58:14 -0400
From: Bill Page
To: list
Subject: re: apply.boot autoload

Tim,

The odd thing is this: I just returned to my 'projects/axiom'
directory and typed 'make' again. Now it seems to be able to
find apply and the compile continues...

Right now I can't explain this. I haven't changed anything
since the first attempt. I did not start from 'make clean'
however. I just tried to reproduce the error by having make
carrying on where it left off. But it didn't work - or rather
it *is* now working, unexpectedly.

Anyway, I let you know in a couple of hours if it completes
properly.

Cheers,
Bill page.


On Fri, 2003-08-29 at 17:20, Bill Page wrote:
> Tim,
> 
> Here is what I see for apply.boot in the build log. It
> seems to have compiled normally. Any other ideas? Are
> there any environment variables besides AXIOM that might
> affect this?
> ...

\start
Date: Fri, 29 Aug 2003 18:26:37 -0400
From: Tim Daly
To: Bill Page
Subject: re: apply.boot autoload

Bill,

I'm unable to figure this one out. Perhaps we should talk on the phone and
we can look over the details. 

\start
Date: Sat, 30 Aug 2003 00:17:05 -0400
From: William Sit
To: list
Subject: re: dependency visualization with VCG
Cc: Bill Page

Tim:

As I understand this, the problem is to find a linear ordering (for
compilation) on the set of Axiom "domains" (here in this paragraph,
"domain" means either a category or domain constructor, or a package)
such that if domain A precedes domain B in the linear order, then the
compiling of A does not depend on B and only on what precedes A. You
propose a heuristic method to generate this linear order using the
idea of a kernel (set of bootstrap domains) and then the most
frequently depended-on domain among the rest of the domains.

To formulate the problem in terms of graph theory, a few
clarifications are needed. Here (in first paragraph), the set V of
vertices are the set of category constructors, domain constructors and
packages. It is not at all clear one should just limit vertices to
these three objects; it can also be argued that the set of vertices
include the set of functions as defined in these three objects; but
from your email, I'll assume the above is your intention.  For
simplicity, let's refer to elements of V as a vertex rather than a
domain so as not to cause confusion; and at the same time, if the
meaning of vertex changes, the discussion below remains valid when
suitably interpreted.

First, let's specify precisely the binary relation "depend on", that
is, the set E of directed edges (also called arcs). When we say there
is a directed edge from vertex A to vertex B if B "depends on" A
(note: a more intuitive term would be A "comes before" B, with the
understanding that cycles are allowed), do we mean some function or
reference (such as using the "with" clause) in B calls, with some
appropriate set C of parameters for A, either the construction of A
(if A is a category or domain constructor) and/or, in all cases, calls
a function from A?  This seems to Bill Page's working definition.
If so, by this definition, it should be true that
B also "depends on" any vertex in the set C AND the vertices to which
any member of C belongs (that is, a parameter in C need not be a
vertex; for example, it could be an integer).

I believe that Bill Page's algorithm may miss such a dependence as
well as adding dependences that are not real dependences (of course,
there is no harm in the latter case; but it may affect the solution to
the graph-theoretic problem).  But I have to study this more to be
sure.  Bill himself is aware of a number of problems.  In general, I
do not agree with ONLY using the source file with text matching to
decide dependencies (even though that may be a good first
approximation).  One should rely on the compiler itself (assuming it
has no bugs) to discover the dependencies.  But this creates a
catch-22 situation.  An example of a function that the compiler will
catch, but not easily caught by simple pattern matching from the spad
source is something like a + b.  With all the notation embeded in a
pamphlet file, signs like + or - appear everywhere in all sorts of
context.  Even in pure spad files, one cannot easily decide the
meaning of say the minus sign without understanding the context
where it appears.  Observe that the appearance of a declaration for
ELEMENTS in a domain, or DOMAIN in a category is enough to decide a
dependence because operations, functions, or domain constructor must
all involve operands or parameters that belong to domains or
categories.  As far as the problem of is dependence among vertices in
V, exactly which function demonstrates the dependence is not
important.  Thus, it may be reasonable to revise the "depends on" to
mean:  a vertex B depends on a vertex A if an element of A is declared
in the code for B.  Here a category is considered as the set of
domains belonging to the category; a domain is the mathematical set
defined by the construction, and a package is the set of its exported
AND private functions.

At this point, this discussion is a digression but related to how the
multi-digraph of the "depends on" relation is computed and the
subsequent efficiency.  With that in mind, let me continue with the
theoretical version.

Once this multi-digraph G = (V, E) is defined, because of possible
cycles (the word "loop" in digraph is reserved to mean
"self-dependency" in our context, that is, a directed edge from a
vertex to itself), it need not be anti-symmetric and so it is not a
partial ordering. One needs to "break" the cycles. We can easily
simplify the multi-digraph to just a di-graph (that is, we can
eliminate multiple directed edges from A to B for all pairs of
vertices (A, B).  (Bill Page used sorting to accomplish this).
We may put weights on the parallel arcs to reflect some measure of
dependency, so that we can choose the one with the least weight.

Now let's ease up a bit and consider only undirected graphs. To break
the cycles means finding a spanning forest (a forest is a disjoint
union of trees). The depth-first search algorithm accomplishes this as
well as decomposing the graph into its connected components.  If the
graph is weighted, then we can even find minimum spanning forests by
finding a minimum spanning tree for each component.  For example
Kruskal's or Prim's algorithm will do that.  Here, a minimum spanning
tree is one that minimizes the sum of all weights in the tree.

Now the depth-first search algorithm can be modified for digraphs.
The definitions for a few terms will be recalled.  A digraph is
asymmetric if there is at most one arc between any two vertices.  A
directed tree is an asymmetric digraph whose underlying graph (where
arcs become edges) is a tree.  A directed tree that contains exactly
one vertex with indegree 0 is called an out-tree.  A directed forest
is a digraph each of whose components is a directed tree.  A theorem
then states that an out-tree is a rooted-tree whose root is the unique
vertex with indegree 0.  Using an adjacency list for vertices, the
depth-first search produces a spanning directed forest each of whose
components is an out-tree. It is easy to draw the graphs of out-trees and then
to add in the remaining arcs of the digraph.

Once we have the out-trees forming components of the digraph, it is an
easy matter to embed each out-tree (as a relation on vertices) into
a linear order (say list the vertices by the distances from the root,
starting with the root (distance 0); vertices the same distances from
the root may be listed in any order.)

The bootstrap set of vertices are then the roots of the out-trees.
Note that this bootstrap set may change if the digraph grows as Axiom
adds more vertices. However, most of the original structure should
remain unless a very fundamental domain or category is created.

All the algorithms as well as concepts on digraphs may be found in:
Gary Chartrand and Ortrud R. Oellermann, "Applied and Algorithmic
Graph Theory", McGraw Hill, 1993, New York. The depth-first search for digraph
is Algorithm 11.1 on pp. 317-318.

William


Tim Daly wrote:
> 
> With respect to the notion of optimizing the domain we choose for
> the bootstrap list:
> 
> Consider that we have, say 30 loops, each between 1 (some files
> self-refer) and 20 long. If we write each loop as a list then the goal
> is to choose domains out of the lists so we minimize the total number
> of bootstrap domains. Clearly the best first choice is "the most
> frequent" domain mentioned across all of the lists. We can then
> eliminate all of those lists since we now have a bootstrap file. Next
> we choose the most frequent domain from the remaining lists. This may
> not be optimal but it would be a better algorithm than the one I used
> which was to just choose any domain.
> 
> I'm sure there is a wonderful mathematical name for the bootstrap
> list (e.g. the "kernel"?) but I haven't yet cast it into either
> graph theory or any other theory yet.
> 

\start
Date: Sat, 30 Aug 2003 00:20:34 -0400
From: Tim Daly
To: Bill Page
Subject: mingw

Bill,

Well, Windows XP lives.
MinGW lives.
Hello, World works.
Any advice?

\start
Date: Sat, 30 Aug 2003 00:34:08 -0400
From: Tim Daly
To: list
Subject: running?

If anyone gets the system to compile and run please let me know.

\start
Date: Sat, 30 Aug 2003 00:33:04 -0400
From: Tim Daly
To: William Sit
Subject: Re: dependency visualization with VCG
Cc: Bill Page

Bill Sit,

The linear order exists and is documented in the file 
src/algebra/Lattice.pamphlet. The compiler will tell
you all of the dependencies at compile time. The subtle
part is to find the bootstrap set since, in the beginning,
nothing will compile. That's part of what took so long.
The other part is that computing the correct location in
the lattice for all 1100 categories, domains, and packages
was tedious and time consuming. But it's done.

I believe the lattice can be further optimized but that's
just an academic exercise. The reason the lattice has to
exist in any form is that you need to compile from scratch.
Once that happens the lattice is worthless.

I'd like to see it graphed just so I can stare at the beast
that ate 8 months of my life.

\start
Date: 30 Aug 2003 02:38:13 -0400
From: Bill Page
To: list
Subject: Re: running?

Tim,

In spite of the "hick-up" that we discussed earlier regarding
apply.boot, I have now compiled a running system from your
Savannah source files. It has passed a few simple tests and
seems to be fully functional. Great work!

I noticed, one thing during the compile. Your make file (like
Juergen's) produces extra unnecessary intermediate algebra files
(lowercase.spad files) by running notangle on the *.spad.pamphlet
files without specifying a root chunk (-R). So there are about
400+ extra unnecessary files in the int/algebra directory. This
has no effect on the actual result of the build but it is quite
easily eliminated and it does simplify the algebra/Makefile a
little. I will send you a patch sometime tomorrow to fix this.

Cheers,
Bill Page.


On Sat, 2003-08-30 at 00:34, Tim Daly wrote:
> If anyone gets the system to compile and run please let me know.
> 
> Tim

\start
Date: 30 Aug 2003 04:09:01 -0400
From: Bill Page
To: list
Subject: re: dependency visualization with VCG

Tim, William;

I think an accurate algebra dependency di-graph has more than
just a curiosity value.

William, I think the analysis and formalism in your previous
message is relevant, however the problem is somewhat simplier
than you suggest. The vertices of the di-graph are just the
*.spad files themselves. These are a subset of the files
contained in the int/algebra and are derived (many to one)
from the *.spad.pamphlet files in src/algebra. The directed
edges between vertices represent pre-conditions for compilation.
Specifically, an edge directed from vertex A to vertex B states
that file B.spad contains some element (function) that is
needed in the compilation of A.spad. (Of course the opposite
convention for the orientation of the edges is also possible.)

Although I admit that you do correctly point out that my
current method of finding these dependencies is deficient in
some respects. I agree with you and Tim that the most accurate
way to obtain this dependency di-graph would be to analyze
the output of the compilation process itself. Now that we
have a full compilation of Axiom that runs to completion,
this is easily achievable.

It is one of the unusual properties of Axiom that the algebra
dependency di-graph may contain cycles. This means that it
is not possible to compile Axiom in the way that most complex
computer systems are compiled. The presence of cycles means that
no linear order of compilation exists. Instead, one must find a
way to *solve* (satisfy) the set of cyclically dependent vertices,
separately from those that follow in a linear manner. We call
a cycle "satisfied" if all of the spad files in the cycle can
be compiled in a self-consistent manner, that is, in such a
way that all the dependencies in the cycle are satisfied.
Operationally, this means that given such a solution for a
cycle, we could repeatedly compile each spad file in turn going
around the cycle with no change in the internal code that is
produced. In other words, the solution is a "fixed-point" for
the cycle.

In this respect the Axiom code is not strictly "imperative" but
rather it is a specification of a system that may or may not
have a solution. And if a solution exists, it may not be unique.

Bertfried Fauser has pointed out that there is good reason to
suppose that this sort of cyclical dependency is inherent in
the underlying mathematics that Axiom attempts to represent. I
think this has a rather large importance in the philosophy of
mathematics. But that is subject that is beyond the scope of
the current discussion

The solution algorthm that Tim has employed in the new open
source version of Axiom starts with a choice of "bootstrap"
vertices. The compiled code for these vertices is given "out
of the blue", that is through some external process (in this
case it is derived from the intermediate LISP code of a previous
version of Axiom). The dependency di-graph is *cut* by
temporarily ignoring all the outward directed edges of these
vertices. The choice of bootstrap vertices is made in such
a way as to produce an acyclic di-graph (lattice) that covers
the orginal dependency di-graph.

Tim is right that *any* viable selection (quite possiblity
sub-optimal) of "bootstrap" vertices together with a linear
ordering is sufficient to build a working version of Axiom -
and this is hard enough. But really we are not done when we
have just produced a runnable program. We really need to
complete the bootstrap cycles and compile each of the
previously choosen bootstrap spad files as well. Then we will
compare the newly generated internal code (LISP) for each
bootstrap file to the bootstrap code with which that we
started. If there is a semantic difference between the orginal
and the new bootstrap code, then we need to repeat the build
process again, using the new bootstrap code. In principle we
have to iterate until we reach the desired fixed point for
all of the bootstrap vertices. Achieving this fixed point
means that our internal code for Axiom no longer depends on
the particular starting bootstrap code and it does not
depend on how many times we have repeated the iterations
after the fixed point is achieved.

I say "in principle" because in actual fact, change in the
bootstrap code with each iteration may not be that significant.
On the other hand, it is not clear to me what are the pre-
onditions on the initial bootstrap code might have to be in
order to guarrantee the existence of a fixed point solution
by iteration. It is also not clear that such a solution is
necessarily unique. So perhaps it is not really possible to
completely eliminate the dependence of Axiom on the initial
choice of bootstrap code.

But in preparing the algebra makefile for Axiom, I think we
should be even more ambitious. I think it is very desirable to
design a makefile script that directly incorporates the specific
dependencies and not just a viable linear ordering. The make
program is designed to perform a "lazy evaluation" on a lattice
of such specific dependencies. If I make a change to coding in
one spad file (by editing a spad.pamphlet file), I want the
make program to use the information in the Makefile to re-compile
only those spad files which are affected (both directly and
indirectly) by my change. This would (usually) be a very short
process compared to recompiling the whole set of well over
1000 files.

The second problem to which Tim has referred, namely attempting
to find an optimal set of bootstrap files also deserves some
attention. Presumably a smaller set of bootstrap files will
converge to a fixed point more quickly that a larger set. And
it is also desirable to have a smaller set in order to reduce
the effort reguired to evaluate the correctness of the initial
bootstrap code.

I hope I have not taken us too far afield in this discussion.

Cheers,
Bill Page.


On Sat, 2003-08-30 at 00:33, Tim Daly wrote:
> Bill Sit,
> 
> The linear order exists and is documented in the file 
> src/algebra/Lattice.pamphlet. The compiler will tell
> you all of the dependencies at compile time. The subtle
> part is to find the bootstrap set since, in the beginning,
> nothing will compile. That's part of what took so long.
> The other part is that computing the correct location in
> the lattice for all 1100 categories, domains, and packages
> was tedious and time consuming. But it's done.
> 
> I believe the lattice can be further optimized but that's
> just an academic exercise. The reason the lattice has to
> exist in any form is that you need to compile from scratch.
> Once that happens the lattice is worthless.
> 
> I'd like to see it graphed just so I can stare at the beast
> that ate 8 months of my life.
> 

\start
Date: Sat, 30 Aug 2003 10:12:11 -0400
From: Tim Daly
To: Bill Page
Subject: re: dependency visualization with VCG

> In this respect the Axiom code is not strictly "imperative" but
> rather it is a specification of a system that may or may not
> have a solution. And if a solution exists, it may not be unique.
> 
> Bertfried Fauser has pointed out that there is good reason to
> suppose that this sort of cyclical dependency is inherent in
> the underlying mathematics that Axiom attempts to represent. I
> think this has a rather large importance in the philosophy of
> mathematics. But that is subject that is beyond the scope of
> the current discussion

I've added a new mailing list, axiom-math@nongnu.org, because
such discussions of math theory and philosophy of Axiom's math
are important and need a proper forum. It should be available
today and I'll announce it to the lists once it exists. Once it
exists lets move the discussion over there.

Philosophically speaking, I'm beginning to think that computational
mathematics (as opposed to pencil mathematics) will begin to uncover
new "axioms" that further refine the mathematical theory. So, for
instance, we might discover that the category division of RNG and RING
exists because there is a logical requirement that has never been
formally stated. The Axiom book contains an algebra hierarchy on the
front flyleaf. Somebody needs to write the corresponding axioms that
underlie each domain. It would be very interesting to see the RNG vs
RING axioms.

(On a side note: I once saw a Venn diagram that showed the relationship
between groups, rings, integral domains, fields, etc. in a book. I'm
unable to find that again. If anyone ever sees it please send me the
name of the book. I want to use that diagram to explain the algebra
hierarchy and I can't find it again.)


> Tim is right that *any* viable selection (quite possiblity
> sub-optimal) of "bootstrap" vertices together with a linear
> ordering is sufficient to build a working version of Axiom -
> and this is hard enough. But really we are not done when we
> have just produced a runnable program. We really need to
> complete the bootstrap cycles and compile each of the
> previously choosen bootstrap spad files as well.             

Actually, if you look at the <<order>> chunk in the makefile you'll
see that a chunk exists after all of the levels. This chunk recompiles
the bootstrap layer code using the compiler. 

This should cover the case where the bootstrap lisp code is not
semantically the same. This will not work in general as significant
changes to the files containing the bootstrap code (e.g. deleting
functions) will break everything.  However, the pamphlet files for the
bootstrap code contain warnings that you have to regenerate and
re-embed the lisp code if you change the algebra.

>                                                  Then we will
> compare the newly generated internal code (LISP) for each
> bootstrap file to the bootstrap code with which that we
> started. If there is a semantic difference between the orginal
> and the new bootstrap code, then we need to repeat the build
> process again, using the new bootstrap code. In principle we
> have to iterate until we reach the desired fixed point for
> all of the bootstrap vertices. Achieving this fixed point
> means that our internal code for Axiom no longer depends on
> the particular starting bootstrap code and it does not
> depend on how many times we have repeated the iterations
> after the fixed point is achieved.

The recompile hack mentioned above will recover from "small" errors
but does not cover the "fixed point" case you mention. However if
the fixed point is not achieved within the one iteration within the
makefile I'd consider the build badly broken.

> But in preparing the algebra makefile for Axiom, I think we
> should be even more ambitious. I think it is very desirable to
> design a makefile script that directly incorporates the specific
> dependencies and not just a viable linear ordering. The make

I originally agreed with you on this and, if you look in the previous
Makefile.pamphlet you'll see that the layer0 files were being added to
each file they depended on. That is, if foo.spad depended on int.spad
I wrote:

foo.NRLIB: int.o foo.spad

This is very fragile as modifications to the lattice had to be propagated
into all of the rule stanzas. So the next "hack" was to generalize the
dependence to the layer thus:

foo.NRLIB: ${LAYER0} foo.spad

Thus any change in the layer 0 files would cause foo to be rebuilt.
This is more robust but causes a HUGE increase in the number of 
recompiles. 

Axiom's algebra is reasonably stable in the face of changes. I don't
expect that people will be making many changes to the "standard library"
that is shipped with Axiom. Code that IS changed or added will have to
be reviewed. In particular the "standard library" code will have to 
build from scratch anyway so changes that break the algebra will show
up (well, mumble, mumble, mutter, mumble) in the build.

> I hope I have not taken us too far afield in this discussion.

It's very relevant discussion but perhaps not of interest to all of
the developers. The lattice solution has caused me to "circle the coffee
table" quite a few times as it was not clear how to solve the bootstrap
problem. Discussions like this would have helped.

There are still more problems that need this kind of discussion such as:

generalization of simplification, 
making simplification "domain controlled",
adding provisos (e.g. saying 1/x provided x != 0), 
proving the algorithms correct, 
adding ACL2 or MetaPRL style computation to the standard library, 
mathematically justifying the computational mathematics (e.g. why RNG and RING?)
taxonomiically ordering the algebra by subject,
...

Indeed, each of these topics and more should eventually become Axiom Journal
articles. Once we figure out the correct way to represent the lattice we
should consider writing up a paper for submission to the Axiom Journal.
Then we can argue over what the "rules" for submission are (e.g. what
is required in a "literate paper", who reviews these things, how to
get such a Journal recognized by ACM or Springer, etc).

In any case, sometime this afternoon there will be an "axiom-math" 
mailing list. I'll forward these mailings to it. Lets continue the 
discussion there. I'm very interested in the result.

\start
Date: Sat, 30 Aug 2003 11:21:22 -0400
From: William Sit
To: list
Subject: Re: dependency visualization with VCG
Cc: Bill Page

Tim and Bill:

I just got Bill's comments, which I think agrees with my comments below (written
before I read Bill's comments), and are also more practical than the abstract
version I present. My original analysis was an attempt (I am no graph theory
expert) to relate the practical to if you will a mathematical model using known
algorithms from graph theory. This in no way diminishes the accomplishment Tim
and other great hackers have achieved.

William
----------

Tim Daly wrote:
> 
> The linear order exists and is documented in the file
> src/algebra/Lattice.pamphlet. The compiler will tell
> you all of the dependencies at compile time. The subtle
> part is to find the bootstrap set since, in the beginning,
> nothing will compile. That's part of what took so long.
> The other part is that computing the correct location in
> the lattice for all 1100 categories, domains, and packages
> was tedious and time consuming. 

But this is a catch-22 situation. Your problem, however, is to be able to
compile from scratch, even if in order to find the linear order, you have to do
some "test" compiling (or rely on "information" from the NAG compilation -- this
is NOT equivalent to relying on the "compiled object files"). One can use ANY
means to obtain the dependency adjacent list on vertices, including manually
analysing all spad sources, which you probably did.  From that, one can identify
the bootstrap set (the set of roots of out-trees in the components of the
digraphs). I think they are just those vertices with indegree 0. 


> But it's done.

> I believe the lattice can be further optimized but that's
> just an academic exercise. The reason the lattice has to
> exist in any form is that you need to compile from scratch.
> Once that happens the lattice is worthless.

I agree that the lattice can be, and should be, further optimized. It's not just
an academic exercise. Further, I do not agree the lattice is worthless. I know
that "it's done", but each time a full (or even partial) compilation is done, a
more accurate (or up-to-date) dependency adjacent list is found that can feed
the next compilation from scratch. Right now, you have a static library of spad
sources. This is going to become dynamic as more spad sources are added.

> I'd like to see it graphed just so I can stare at the beast
> that ate 8 months of my life.

Your initial great effort is much appreciated. It is part of the "collection of
data" for the dependency digraph. However you did it, you did a fantastic job.
What I was pointing out was that when Bill Page wrote the routine to graph the
dependency digraph, it seems to me he started afresh from the spad sources to
derive the dependency digraph. Isn't it true that you already have the digraph
and you only need to display it visually? I am probably missing something
subtle.

Actually, I just note that the analysis I gave has a small mistake. That is,
even though we obtain a directed forest of out-trees for the digraph, and a
linear order extending each out-tree, it is not the case that the compilation of
any vertex A just depend on what precedes it. (In other words, this property
cannot be satisfied if there are cycles).

There is a further extension of the depth-first search algorithm that computes
what is called the condensation of a digraph. Roughly speaking, the condensation
is an acyclic digraph whose vertices are the strong components of the digraph (a
strong component is a maximally strongly connected sub-digraph where there is a
directed path between any two vertices) and whose arcs reflect the arcs between
strong components. 

It seems the graph you want to see is the condensation and the strong components
of the dependency digraph.

William

\start
Date: Sat, 30 Aug 2003 15:57:34 -0400
From: Tim Daly
To: list
Subject: new mailing list

I've set up a new mailing list, axiom-math@nongnu.org, for the purpose
of discussing mathematical and philosophical issues with Axiom. The
developer's mailing list is intended for more specific coding and
debugging tasks.

\start
Date: 30 Aug 2003 16:34:56 -0400
From: Bill Page
To: list
Subject: Re: mingw

Tim,

I would suggest that you obtain GCL 2.5.4 from the CVS and next
attempt to compile and install it under Windows using MinGW and
MSYS. Although it is still pre-release, it should compile with
no problems. 2.5.4 is supposed to include support for the XDR
extensions under windows (which is needed for Axiom) but you
must first install the ONC version of XDR. I can send this to
you. I successfully installed XDR under 2.5.3 on Windows, but
it was a little involved.

Once you have a running version of GCL with XDR under Windows,
you will be almost ready to attempt to build Axiom. But you
most add the GCL dir so that the Axiom Makefile does not
attempt to build a new version of GCL from the older sources
and also arrange that GCL can be run from the place that
the Axiom Makefile expects to find it.

All this isn't particulary hard, but if you really are new
to Windows you will no doubt find the transition to this
environment a little frustrating. Let me know if you have
questions.

Bill Page.


On Sat, 2003-08-30 at 00:20, Tim Daly wrote:
> Bill,
> 
> Well, Windows XP lives.
> MinGW lives.
> Hello, World works.
> Any advice?
> 
> Tim

\start
Date: 30 Aug 2003 16:50:51 -0400
From: Bill Page
To: list
Subject: Re: [Axiom-mail] new mailing list

Tim,

The url

  http://mail.gnu.org/archive/html/axiom-math

Gives the message:

Not Found
The requested URL /archive/html/axiom-math was not found on this server.

Perhsps the list is not yet fully set up?

I think your idea of creating this list is a good one!

Cheers,
Bill Page.


On Sat, 2003-08-30 at 15:57, Tim Daly wrote:
> I've set up a new mailing list, axiom-math@nongnu.org, for the purpose
> of discussing mathematical and philosophical issues with Axiom. The
> developer's mailing list is intended for more specific coding and
> debugging tasks.

\start
Date: Sat, 30 Aug 2003 16:55:03 -0400
From: Tim Daly
To: Bill Page
Subject: Re: [Axiom-mail] new mailing list

I was able to subscribe to the list without a problem.
Try once more and let me know if you succeed or fail.

\start
Date: 30 Aug 2003 17:06:18 -0400
From: Bill Page
To: list
Subject: Re: [Axiom-mail] new mailing list

Tim,

I sucessfully subscribed, I am just not yet able to access the
archives for the new list. It should be at

  http://mail.gnu.org/archive/html/axiom-math

but I get an error message.

Bill.

On Sat, 2003-08-30 at 16:55, Tim Daly wrote:
> I was able to subscribe to the list without a problem.
> Try once more and let me know if you succeed or fail.
> 

\start
Date: Sat, 30 Aug 2003 23:08:49 +0200
From: Juergen Weiss
To: list
Subject: RE: running?

I compiled the system under debian woody. Because I did not have
binutils installed I configured gcl with the locally supplied bdf
library. It was not possible to compile the system without latex
installed. With latex every thing seemed to work as expected.

Good job.

> 
> If anyone gets the system to compile and run please let me know.
> 

\start
Date: Sat, 30 Aug 2003 17:16:51 -0400
From: Tim Daly
To: Juergen Weiss
Subject: Re: running?

Juergen,

Try the following experiment:

Clip out the domain INTRVL from interval.spad and call it INTRVL.spad
Start the system and try:

)co INTRVL.spad

Let me know the results.

\start
Date: Sat, 30 Aug 2003 22:49:56 -0400
From: Tim Daly
To: Bill Page
Subject: interval.spad INTRVL

re: lowercase spad files.

These were put there for the purpose of testing. They are in the
int directory and would not be part of a "shipped" image (which
all resides under the mnt directory). It is convenient to be able
to )co foo.spad or )co foo.spad )con bar without having to do the
notangle. One thing I need to do is try to recompile all of the
lowercase.spad files to ensure I haven't broken the original code.
I did that earlier but it needs to be redone for the latest changes.

Additionally the long term will have the interpreter do the notangle
under the covers directly from the pamphlet file. At that time we
can eliminate the lowercase.spad files. I didn't have time to write
this before shipping the Thursday system.

re: INTRVL

The reason it works in Juergen's version is that the interval.spad
file is compiled as one file rather than as a category and a domain.

If you start the Thursday version and do:

)co INTCAT
)co INTRVL

then the compiles succeed. This is the same behavior as compiling
all of interval.spad. The compile of INTCAT implicitly makes the
|IntervalCategory| function available. However, if you compile 
the two files in separate interpsys sessions then the compile of
INTRVL fails because it cannot find INTCAT.

The databases are indeed bent. There is a another layer of cycle 
in the game as follows:

In order to build the first interpsys you need the database files.
These are gotten from the src/share/algebra/*.daase files which are
the original NAG databases. This magic occurs because there is a
shell variable ($DAASE) that is asserted during the build (see the
./Makefile.pamphlet file).

Once the build is complete (which also builds new databases) the
databases are fetched from mnt/linux/algebra/*.daase. (You can
change which databases it uses by setting or unsetting the DAASE
shell variable. Note that the shell variable has /algebra automatically
appended so DAASE=/foo/bar becomes /foo/bar/algebra)

The interval.spad file was rewritten by Juergen and is not part
of the NAG database but interval.as is. Somehow building INTRVL
with the NAG databases causes the compile to fail. I'm chasing it
now but I don't understand it fully yet.

re: SIGNEF

The nature of that problem is that SIGNEF uses INTRVL.

==================================================================

Tim,

I am now in the middle of third re-compile with a modified
Makefile.pamphlet that eliminates the extra lowercase.spad
files and adds a few of the modules which were not yet
included in your make file, including INTRVL. I found that
when a attempted to evaluate


 -> integrate(exp(sin(x)),x)

that Axiom complained that it could not load COMBF.o and
then SIGNEF.o. When I tried to compile SIGNEF.o, I got an
error saying that it couldn't find Interval.

The interesting thing is that this works under Juergen's
version. (It loads all of the required algebra, but Axiom
returns the expression unevaluated.)

Could it be that there is still a problem with the databases?
Are these being re-built in your newest version of the
Makefile?

Cheers,
Bill Page.

On Sat, 2003-08-30 at 21:00, Tim Daly wrote:
> The INTCAT category is not being autoloaded. I'm not sure why.

\start
Date: Sun, 31 Aug 2003 01:50:55 -0400
From: Dylan Thurston
To: list
Subject: Re: running?

On Sat, Aug 30, 2003 at 12:34:08AM -0400, Tim Daly wrote:
> If anyone gets the system to compile and run please let me know.

It compiled for me with no problems.

(However, there are several files, particularly in the 'zips' directory,
that don't seem like they belong under CVS control.)

\start
Date: 31 Aug 2003 03:10:36 -0400
From: Bill Page
To: list
Subject: Re: interval.spad INTRVL

Tim,

On Sat, 2003-08-30 at 22:49, you wrote:
> re: lowercase spad files.
> 
> These were put there for the purpose of testing. They are in the
> int directory and would not be part of a "shipped" image (which
> all resides under the mnt directory). It is convenient to be able
> to )co foo.spad or )co foo.spad )con bar without having to do the
> notangle.

Perhaps. But I understood that your goal was one category, domain
or package per spad file, presumably so that the dependencies
could be more "fine grained". Otherwise you could just build
with the lowercase files and throw away the upper case ones. No?

In any case, as you say the duplication does no harm.

> One thing I need to do is try to recompile all of the
> lowercase.spad files to ensure I haven't broken the original
> code. I did that earlier but it needs to be redone for the
> latest changes.
> 
> Additionally the long term will have the interpreter do the
> notangle under the covers directly from the pamphlet file. At
> that time we can eliminate the lowercase.spad files. I didn't
> have time to write this before shipping the Thursday system.

It seems you would be eliminating the upper case ones as well
and would depend directly on the pamphlet files. I can see the
advantage of this in other circumstances, e.g. user application
files.

> 
> re: INTRVL
> 
> The reason it works in Juergen's version is that the interval.spad
> file is compiled as one file rather than as a category and a domain.

No, look again. That is not what happens in Juergen's makefile.
All of the pamphlet files including interval.spad.pamphlet are
split into upper case name files containing individual modules
with named by their abbreviations and also as a combined module
file with a lower case name the same as the pamphlet. *Only*
the upper case files are compiled. In fact, in my variant of
Juergen's makefile I have eliminated all of the files with
lowercase names.

There must be some other explanation.

> If you start the Thursday version and do:
> 
> )co INTCAT
> )co INTRVL
> 
> then the compiles succeed. This is the same behavior as compiling
> all of interval.spad. The compile of INTCAT implicitly makes the
> |IntervalCategory| function available. However, if you compile 
> the two files in separate interpsys sessions then the compile of
> INTRVL fails because it cannot find INTCAT.
> 

These two files are compiled separately in Juergen's version.

> The databases are indeed bent. There is a another layer of cycle 
> in the game as follows:
> 
> In order to build the first interpsys you need the database files.
> These are gotten from the src/share/algebra/*.daase files which are
> the original NAG databases.

Juergen re-built the src/share/algebra/*.daase files. These
re-built files are used to build the first version.


>  This magic occurs because there is a
> shell variable ($DAASE) that is asserted during the build
> (see the /Makefile.pamphlet file).
> 
> Once the build is complete (which also builds new databases)
> the databases are fetched from mnt/linux/algebra/*.daase.

Juergen's version does not build new database files. It
continues to use the ones from share.

> (You can
> change which databases it uses by setting or unsetting the
> DAASE shell variable. Note that the shell variable has /algebra
> automatically appended so DAASE=/foo/bar becomes /foo/bar/algebra)
> 
> The interval.spad file was rewritten by Juergen and is not part
> of the NAG database but interval.as is. Somehow building INTRVL
> with the NAG databases causes the compile to fail. I'm chasing it
> now but I don't understand it fully yet.
> 

Me neither! <grin> But I don't trust those database files!

This reminds me to ask about the other ALDOR files that are
included in the build but apparently not compiled. Are you
planning that these will at some point be compiled by ALDOR?
(which is now a separate non-BSD licensed? package) How
difficult is it for a user to encorporate ALDOR if they so
wished? There would likely be a considerable speed and memory
advantage for certain routines. Right?

Another thing that has happened since Aldor separated from
Axiom is that a very large part of the algegbra has been
re-written and apparently improved. Do you think that in
the medium to long term the Axiom and Aldor algebra libraries
should be made compatible? How practical (and legal?) would
it be for Axiom (at least as a option) to implement the
same library. Is it difficult to convert to spad. Or is
there any advantage if ALDOR can be easily linked with
Axiom?

> re: SIGNEF
> 
> The nature of that problem is that SIGNEF uses INTRVL.
> 

With the Thursday version if I compile INTCAT, INTRVL and
SIGNEF in the same session (and in that order), I get an
error

--------constructor---------
Compiling /home/wspage/projects/axiom2/./SIGNEF.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 /home/wspage/projects/axiom2/./SIGNEF.NRLIB/code.lsp.
------------------------------------------------------------------------
  
   >> System error:
   Caught fatal error [memory may be damaged]
 
protected-symbol-warn called with (NIL)

--------

Ho hum ... time to get a little sleep.

Cheers,
Bill Page.


> ==================================================================
> 
> Tim,
> 
> I am now in the middle of third re-compile with a modified
> Makefile.pamphlet that eliminates the extra lowercase.spad
> files and adds a few of the modules which were not yet
> included in your make file, including INTRVL. I found that
> when a attempted to evaluate
> 
> 
>  -> integrate(exp(sin(x)),x)
> 
> that Axiom complained that it could not load COMBF.o and
> then SIGNEF.o. When I tried to compile SIGNEF.o, I got an
> error saying that it couldn't find Interval.
> 
> The interesting thing is that this works under Juergen's
> version. (It loads all of the required algebra, but Axiom
> returns the expression unevaluated.)
> 
> Could it be that there is still a problem with the databases?
> Are these being re-built in your newest version of the
> Makefile?
> 
> Cheers,
> Bill Page.
> 
> On Sat, 2003-08-30 at 21:00, Tim Daly wrote:
> > The INTCAT category is not being autoloaded. I'm not sure why.

\start
Date: Sun, 31 Aug 2003 03:38:02 -0400
From: Tim Daly
To: Bill Page
Subject: Re: interval.spad INTRVL

> > re: lowercase spad files.
> > 
> > These were put there for the purpose of testing. They are in the
> > int directory and would not be part of a "shipped" image (which
> > all resides under the mnt directory). It is convenient to be able
> > to )co foo.spad or )co foo.spad )con bar without having to do the
> > notangle.
> 
> Perhaps. But I understood that your goal was one category, domain
> or package per spad file, presumably so that the dependencies
> could be more "fine grained". Otherwise you could just build
> with the lowercase files and throw away the upper case ones. No?
> 
> In any case, as you say the duplication does no harm.

Actually the organization of a pamphlet file is likely to have
several category/domain/packages (CDP) in it. In fact, most newly
contributed algebra is likely to be packaged that way. It is
not a problem because newly contributed algebra does not need
to be bootstrapped. I prefer the single-CDP per file style but
others do not.

However, in the bootstrap situation you need to have much finer
grain control of which CDP you are building. I found that there
was no possible order that could build the "lowercase" spad files
so I needed to break them apart.

In any case the "user level" presentation of the algebra will be
the "lowercase" spad file pamphlets. This is too ingrained to change.
So consider the "uppercase" spad files to be part of the internal
machinery of the build.


> It seems you would be eliminating the upper case ones as well
> and would depend directly on the pamphlet files. I can see the
> advantage of this in other circumstances, e.g. user application
> files.

Remember that the user will see nothing from the int and obj
directories.  These are purely compiler and makefile caches. They
contain no useful information for the user. However they seriously
reduce the rebuild time and allow optimization to occur (watch for the
warning messages about duplicate functions. that comes from the
special second-pass optimizer based on the .fn files in the int
directory). 

The user will see the "lowercase" spad.pamphlet files
(hopefully with better documentation). In particular, the user should
be able to type:

)co interval

and have the interval.spad file extracted, compiled, and installed.
In the longer term the compiler will be hidden and the user will just type:

)add interval

which will rip the pamphlet into code, compile it, rip out the test cases,
test them, rip out the documentation and integrate it into the system, 
chase biblio references and include them, run included proofs, install
examples, and shine your sneakers. This will take a few weeks to implement
so the scaffolding is still showing thru.

> > 
> > re: INTRVL
> > 
> > The reason it works in Juergen's version is that the interval.spad
> > file is compiled as one file rather than as a category and a domain.
> 
> No, look again. That is not what happens in Juergen's makefile.
> All of the pamphlet files including interval.spad.pamphlet are
> split into upper case name files containing individual modules
> with named by their abbreviations and also as a combined module
> file with a lower case name the same as the pamphlet. *Only*
> the upper case files are compiled. In fact, in my variant of
> Juergen's makefile I have eliminated all of the files with
> lowercase names.
> 
> There must be some other explanation.

Interesting. That's another clue. I missed that.

> > In order to build the first interpsys you need the database files.
> > These are gotten from the src/share/algebra/*.daase files which are
> > the original NAG databases.
> 
> Juergen re-built the src/share/algebra/*.daase files. These
> re-built files are used to build the first version.

Hmmm, yet another clue. I'll look into that also.


> This reminds me to ask about the other ALDOR files that are
> included in the build but apparently not compiled. Are you
> planning that these will at some point be compiled by ALDOR?
> (which is now a separate non-BSD licensed? package) How
> difficult is it for a user to encorporate ALDOR if they so
> wished? There would likely be a considerable speed and memory
> advantage for certain routines. Right?
> 
> Another thing that has happened since Aldor separated from
> Axiom is that a very large part of the algegbra has been
> re-written and apparently improved. Do you think that in
> the medium to long term the Axiom and Aldor algebra libraries
> should be made compatible? How practical (and legal?) would
> it be for Axiom (at least as a option) to implement the
> same library. Is it difficult to convert to spad. Or is
> there any advantage if ALDOR can be easily linked with
> Axiom?

mumble

> > The nature of that problem is that SIGNEF uses INTRVL.
> > 
> 
> With the Thursday version if I compile INTCAT, INTRVL and
> SIGNEF in the same session (and in that order), I get an
> error
> 
> --------constructor---------
> Compiling /home/wspage/projects/axiom2/./SIGNEF.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 /home/wspage/projects/axiom2/./SIGNEF.NRLIB/code.lsp.
> ------------------------------------------------------------------------
>   
>    >> System error:
>    Caught fatal error [memory may be damaged]
>  
> protected-symbol-warn called with (NIL)
> 
> --------
> 
> Ho hum ... time to get a little sleep.
> 

sleep? at a time like this? where's your dedication, man! Why it's only
3:30am. Sleep. cheese. you'll have time to sleep after you die.

\start
Date: Sun, 31 Aug 2003 10:07:29 +0200
From: Juergen Weiss
To: Bill Page
Subject: RE: interval.spad INTRVL

Axiom remembers in the database files, if the source was an aldor
or spad file and behaves differently. So if you distributed the old
database, it does not work. Did not work for me either ;-).

> > > re: INTRVL
> > > 
> > > The reason it works in Juergen's version is that the interval.spad
> > > file is compiled as one file rather than as a category 
> and a domain.
> > 
> > No, look again. That is not what happens in Juergen's makefile.
> > All of the pamphlet files including interval.spad.pamphlet are
> > split into upper case name files containing individual modules
> > with named by their abbreviations and also as a combined module
> > file with a lower case name the same as the pamphlet. *Only*
> > the upper case files are compiled. In fact, in my variant of
> > Juergen's makefile I have eliminated all of the files with
> > lowercase names.
> > 
> > There must be some other explanation.
> 
> Interesting. That's another clue. I missed that.
> 
> > > In order to build the first interpsys you need the database files.
> > > These are gotten from the src/share/algebra/*.daase files 
> which are
> > > the original NAG databases.
> > 
> > Juergen re-built the src/share/algebra/*.daase files. These
> > re-built files are used to build the first version.
> 
> Hmmm, yet another clue. I'll look into that also.
> 
> 
> > This reminds me to ask about the other ALDOR files that are
> > included in the build but apparently not compiled. Are you
> > planning that these will at some point be compiled by ALDOR?
> > (which is now a separate non-BSD licensed? package) How
> > difficult is it for a user to encorporate ALDOR if they so
> > wished? There would likely be a considerable speed and memory
> > advantage for certain routines. Right?
> > 
> > Another thing that has happened since Aldor separated from
> > Axiom is that a very large part of the algegbra has been
> > re-written and apparently improved. Do you think that in
> > the medium to long term the Axiom and Aldor algebra libraries
> > should be made compatible? How practical (and legal?) would
> > it be for Axiom (at least as a option) to implement the
> > same library. Is it difficult to convert to spad. Or is
> > there any advantage if ALDOR can be easily linked with
> > Axiom?
> 
> mumble
> 
> > > The nature of that problem is that SIGNEF uses INTRVL.
> > > 
> > 
> > With the Thursday version if I compile INTCAT, INTRVL and
> > SIGNEF in the same session (and in that order), I get an
> > error
> > 
> > --------constructor---------
> > Compiling /home/wspage/projects/axiom2/./SIGNEF.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 
> /home/wspage/projects/axiom2/./SIGNEF.NRLIB/code.lsp.
> > 
> --------------------------------------------------------------
> ----------
> >   
> >    >> System error:
> >    Caught fatal error [memory may be damaged]
> >  
> > protected-symbol-warn called with (NIL)
> > 
> > --------
> > 
> > Ho hum ... time to get a little sleep.
> > 
> 
> sleep? at a time like this? where's your dedication, man! Why 
> it's only
> 3:30am. Sleep. cheese. you'll have time to sleep after you die.
> 

\start
Date: Sun, 31 Aug 2003 04:14:33 -0400
From: Tim Daly
To: Juergen Weiss
Subject: Re: interval.spad INTRVL
Cc: Bill Page

> Axiom remembers in the database files, if the source was an aldor
> or spad file and behaves differently. So if you distributed the old
> database, it does not work. Did not work for me either ;-).
> 

yaknow i wrote that code. sure wish i'd have commented it. sigh.
at least i get to re-document it. poetic justice, eh? :-)

\start
Date: Sun, 31 Aug 2003 11:07:49 +0200
From: Juergen Weiss
To: Bill Page
Subject: Aldor files -- was: interval.spad INTRVL

> This reminds me to ask about the other ALDOR files that are
> included in the build but apparently not compiled. Are you
> planning that these will at some point be compiled by ALDOR?
> (which is now a separate non-BSD licensed? package) How
> difficult is it for a user to encorporate ALDOR if they so
> wished? There would likely be a considerable speed and memory
> advantage for certain routines. Right?

The ALDOR files besides interval.spad seem to be interesting
only to users of the link to the NAG mathematical library. At
least there are no SPAD files, which depend on them.

ALDOR was able to genereate LISP or C code. I don't know if this
is still the case. You could load the LISP code into AXIOM.
This should still be possible, though probably untested. I would not
expect any performance difference.

I was never directly connected to the AXIOM project, but from
hearsay I concluded, that at the  beginning of the '90s,
there was an old algebra compiler (the compiler which is still
used) and a new one, which was buggy, largely undocumented
and kind of unfixable. Stephen Watt and Knut Wolf and maybe 
others started to write a new algebra compiler from scatch
in C -- ALDOR. The ALDOR compiler has slightly different
syntax and semantic. I think the algebra (SPAD) files where never
ported to the ALDOR compiler. 

> Another thing that has happened since Aldor separated from
> Axiom is that a very large part of the algegbra has been
> re-written and apparently improved. Do you think that in
> the medium to long term the Axiom and Aldor algebra libraries
> should be made compatible? How practical (and legal?) would
> it be for Axiom (at least as a option) to implement the
> same library. Is it difficult to convert to spad. Or is
> there any advantage if ALDOR can be easily linked with
> Axiom?

Manuel Bronstein, at that time a main contributor to the 
algebra (integration, ODE) told me once, that he prefered 
a noninteractive system for the implementation
of his algorithms. So I think he adopted ALDOR and 
developped quite a bit of algebra in that language. I never
had a look at the algebra, which is available for ALDOR.
So I do not really know of which parts of mathematics
it consists and who contributed them.

At that time the machines where much slower and since then 
there were some optimizations in AXIOM as well. So the
development cycle of algebra code on AXIOM was quite time
consuming. The old compiler has its weaknesses too -- 
this was the reason the write the new compiler and the
ALDOR compiler in the first place. 

I think the compiler history is kind of symptomatic of
AXIOM as a whole. We have two parsers, the old one 
still used with the old compiler, and a new one now
used for the interpreter with some extended features
(parsing of rules for example). And I think this is
similar in other parts of the system.

After some history we should have a look at the future.
In which direction are we going? 

A few thoughts:

Though the system should be open (that is modular) so that
it allows the addition or the replacement of parts by developpers
who want AXIOM as a testbed for new ideas, the core
system should contain only one parser, one compiler etc...
Having everything at least twice increases comlexity beyond
the point where we are able to manage the sources.

There are parts of the AXIOM interpreter (graphics, hypertext, etc)
which I would consider optional components. The core system 
should run on any common lisp system without any additional
functionality which is now provided by C code. For example
the core system does not need xdr functions. This would make
initial porting to for example Windows much easier. 

\start
Date: Sun, 31 Aug 2003 11:49:42 +0200
From: Juergen Weiss
To: Juergen Weiss, Bill Page
Subject: RE: Aldor files -- was: interval.spad INTRVL

> A few thoughts:
> 
> Though the system should be open (that is modular) so that
> it allows the addition or the replacement of parts by developpers
> who want AXIOM as a testbed for new ideas, the core
> system should contain only one parser, one compiler etc...
> Having everything at least twice increases comlexity beyond
> the point where we are able to manage the sources.
> 
> There are parts of the AXIOM interpreter (graphics, hypertext, etc)
> which I would consider optional components. The core system 
> should run on any common lisp system without any additional
> functionality which is now provided by C code. For example
> the core system does not need xdr functions. This would make
> initial porting to for example Windows much easier. 

Some other thoughts:

Axiom is written in boot and lisp. The original lisp seems
to be a lisp on an IBM mainframe. There is a glue layer for
common lisp -- sometimes only renaming functions. Where do
we go from here? Use common lisp as the lisp language and elimiate
most of the glue? Write in common lisp or in boot? It seems
that some more recent files have been written in common lisp.

\start
Date: 31 Aug 2003 08:35:30 -0400
From: Bill Page
To: list
Subject: INTCAT INTRVL and SIGNEH

Tim,

Overnight I set my computer to re-build Axiom from the
Thursday sources modified to include the INTRVL and
SIGNEH but overwriting the databases in src/share/algebra
with the same files from Juergin Weiss' version. I was
pleasantly surprized this morning that it completed without
errors and successfully evaluates

  integrate(exp(sin(x)),x)

SO ... I would definitely conclude that there is something
wrong with the databases in the share directory of the
Thursay version. It seems likely that this is the cause
of many of the problems you have seen.

Now I don't know exactly what magic Juergen included in
his version of the database files, but a diff shows that
they are very different than the ones in share. I did
find however to have a completely functional version
I still had to run database rebuild. I tried first without
doing that by just setting DAASE to the share directory.
But some things fails, e.g. certain commands did not
produce any output such as the test integration above.
After running the database rebuild and unset DAASE, this
work properly.

Perhaps it would be sufficient to replace the contents
of src/share/algebra with the result of the database
rebuild and then re-compile Axiom? Or perhaps Juergen
can explain in more detail to us his database rebuild
procedure.

By the way, not counting any of the lowercase.spad files,
Juergen's version has 1040 spad files while the Thursday
version with INTRVL and SIGNEH has only 1011. Here are
the differences

+ASP29.spad
+CPIMA.spad
+D01AGNT.spad
-DHMATRIX.spad
+FSPRMELT.spad
+INBFF.spad
+IRURPK.spad
+LAZM3PK.spad
+LEXTRIPK.spad
+LODO.spad
+LODO1.spad
+LODO2.spad
+NORMPK.spad
+NTSCAT.spad
+ODEEF.spad
+QCMPACK.spad
+REGSET.spad
+RGCHAIN.spad
+RSDCMPK.spad
+RSETGCD.spad
+RURPK.spad
+SFQCMPK.spad
+SFRGCD.spad
+SFRTCAT.spad
+SNTSCAT.spad
+SOLVETRA.spad
+SRDCMPK.spad
+SREGSET.spad
+STTF.spad
+SUBSPACE.spad
+ZDSOLVE.spad

where + means the file is missing from the Thursday version
and - means missing from Juergen's version.

Are there really 29 files which are not yet compiled or does
Juergen's list include some that are obsolete?

\start
Date: 31 Aug 2003 10:30:52 -0400
From: Bill Page
To: list
Subject: No lower case files patch

Tim,

I have attached to this message a patch to modify

 src/algebra/Makefile.pamphlet

which removes the lowercase.spad files and adds COMBF,
INTRV and SIGNEH. It was a lot of work to take the
lowercase stuff out so I am passing this on to you
although I know that you might still find the lowercase
files useful and so may choose not to use this patch.

For the things that I am doing with the dependency graph,
the lower case files tend to get in the way since they
duplicate all of the algebra code. Of course there are
other things that I could use to avoid these files instead
of not generating them, e.g. a grep filter etc. So I can
cope... <grin>.

\start
Date: Sun, 31 Aug 2003 13:41:55 -0400
From: Tim Daly
To: Bill Page
Subject: Re: INTCAT INTRVL and SIGNEH

Bill,

Use cvs to check in your .daase files over the files that exist in
src/share/algebra.

\start
Date: Sun, 31 Aug 2003 19:59:33 +0200
From: Juergen Weiss
To: Bill Page
Subject: RE: INTCAT INTRVL and SIGNEH

Actually there was no magic involved. If you have 
let's say module A and B where B depends on A and
the database entries of A and B are wrong, just 
compile A and B in the same AXIOM process and 
rebuild the database afterwards. That's all. Of
course you could rebuild the database after
every file compiled, but that would take too long.
Information about loaded modules has precedence
over information in the databases.

The structure of pamphlet file for DHMATRIX is 
different from the rest, so the instructions to
generate some parts of the Makefile automatically
did not generate anything.

> Tim,
> 
> Overnight I set my computer to re-build Axiom from the
> Thursday sources modified to include the INTRVL and
> SIGNEH but overwriting the databases in src/share/algebra
> with the same files from Juergin Weiss' version. I was
> pleasantly surprized this morning that it completed without
> errors and successfully evaluates
> 
>   integrate(exp(sin(x)),x)
> 
> SO ... I would definitely conclude that there is something
> wrong with the databases in the share directory of the
> Thursay version. It seems likely that this is the cause
> of many of the problems you have seen.
> 
> Now I don't know exactly what magic Juergen included in
> his version of the database files, but a diff shows that
> they are very different than the ones in share. I did
> find however to have a completely functional version
> I still had to run database rebuild. I tried first without
> doing that by just setting DAASE to the share directory.
> But some things fails, e.g. certain commands did not
> produce any output such as the test integration above.
> After running the database rebuild and unset DAASE, this
> work properly.
> 
> Perhaps it would be sufficient to replace the contents
> of src/share/algebra with the result of the database
> rebuild and then re-compile Axiom? Or perhaps Juergen
> can explain in more detail to us his database rebuild
> procedure.
> 
> By the way, not counting any of the lowercase.spad files,
> Juergen's version has 1040 spad files while the Thursday
> version with INTRVL and SIGNEH has only 1011. Here are
> the differences
> 
> +ASP29.spad
> +CPIMA.spad
> +D01AGNT.spad
> -DHMATRIX.spad
> +FSPRMELT.spad
> +INBFF.spad
> +IRURPK.spad
> +LAZM3PK.spad
> +LEXTRIPK.spad
> +LODO.spad
> +LODO1.spad
> +LODO2.spad
> +NORMPK.spad
> +NTSCAT.spad
> +ODEEF.spad
> +QCMPACK.spad
> +REGSET.spad
> +RGCHAIN.spad
> +RSDCMPK.spad
> +RSETGCD.spad
> +RURPK.spad
> +SFQCMPK.spad
> +SFRGCD.spad
> +SFRTCAT.spad
> +SNTSCAT.spad
> +SOLVETRA.spad
> +SRDCMPK.spad
> +SREGSET.spad
> +STTF.spad
> +SUBSPACE.spad
> +ZDSOLVE.spad
> 
> where + means the file is missing from the Thursday version
> and - means missing from Juergen's version.
> 
> Are there really 29 files which are not yet compiled or does
> Juergen's list include some that are obsolete?

\start
Date: Sun, 31 Aug 2003 15:55:34 -0400
From: Tim Daly
To: Juergen Weiss
Subject: Axiom Language and History tidbits.

Juergen,

Yes, Axiom is written in boot and common lisp. I wrote most, if not all,
of the common lisp. I found the boot syntax (which is basically lisp
except that parens are replaced by indentation) was impossible for me
to use. However other people on the project hate parens. It was a
religious difference that never got solved.

Boot has some nice features. It was basically Python before Python existed.
The key flaw in Boot (and Python) is that programs are not data. That is,
(print (eval (read "sourcefile"))) is broken. And there is no documentation
as it is a perfectly obvious language (sarcasm optional).

But, being a religious debate, the issue can never be resolved.  If
I'm not mistaken (but memory fails) Bill Burge added a "feature" to
boot to allow "nopile" (indented code was called "piled" code).  that
relied on syntax rather than spaces. It caused quite a stir about like
having the Pope decide to require all catholic females to wear a burka.
(Or Lisp programmers to code in Boot, which is far worse :-) )

There is a third language used in the system called Meta. (Which is why
meta.tar exists in zips). This code is not part of the bootstrap but
needs to be at some point. Changing the meta parser (see metameta.lisp,
fnewmeta.lisp, and metalex.lisp) would surely cause havoc. In the 
distributed system I replaced the Meta code with common lisp.

There is a fourth language called CHARYBDIS used in the printing subsystem.
This was a project at MIT around the time that IBM was working on MODLisp.
I'm not sure how they got co-mingled but I believe Dave Barton and Joel
Moses (MIT) worked with Dick Jenks, Jim Griesmer, and Fred Blair (IBM).

There is a fifth unnamed language, a psuedo-tex-html language (see
src/share/doc/hypertex/pages/util.ht) that is used by the hypertex
system (which is a browser before browser existed). You can see this
language stick up into the world in the comments section of the algebra
files. Notice the \axiom{}. That's the TeX-used-as-HTML language.
Scott Morrison invented this language to drive Hypertex, also his work.

In fact, if you do ")set output script on " you'll find support for
IBM's internal TeX-like language called Script. Technical papers
were written in Script before Knuth's TeX caught on. This isn't a
new language within the system but it is another language that is still
supported by the system. )set output fortran also works.
 
There is a sixth language, called spad, which is used to implement the
.spad algebra files. There were several spad languages. Each time we
redesigned the language we renamed the old language "old spad". We were
talking about old-old-old-spad at one point in the project. These 
languages are now dead but you can still find code to support them
Look for "old" and "new" in the sources. Bill Burge, our parser guy,
used "old" and "new" as the spad and boot languages evolved. It caused
no confusion in any given week but caused massive confusion in the code.

You can still see the confusion. Build Axiom then rebuild Axiom. 

(digression: I have a second-build function-calling optimizer that
Bill Schelter and I worked on.  We needed to make function calling
faster. There isn't enough information on the first compile. So if you
look in src/interp/util.lisp in the function make-depsys you'll see
the load of "/cmpnew/collectfn". This is code Schelter and I worked
on. When you compile a lisp file for the first time (say foo.lisp) it
spits out a file (foo.fn). If foo.fn exists and you recompile the
foo.lisp file it will optimize the function calling code (fast-pathing
the code) since it has "perfect information" about how many arguments
and what type the arguments are. This is a significant improvement.
So Axiom is much faster after the second build. I have to automate this
in the build but haven't yet. It works if you hand-build Axiom twice).

On the second build of Axiom the function-optimizer has the .fn files.
It will complain that duplicate code exists. The reason for this duplicate
code is that some of it is "old^N" code (where N is ambiguous) and the
duplicate code is "layered" on top of the old code. I have to go thru
the system and decide which code is correct and elide the "old" code.
I have marked all of the duplicates in the sources (look for "---->")
but stopped that effort in order to get the code uploaded. 

In any case this is an example of the "confusion" as we frequently
needed to run "old" BOOT and spad code until I rewrote it into the
"new" BOOT and spad code. Shortly before Axiom was given to NAG I
spent several weeks rewriting all of the algebra files into the 
"new" A# (AxiomXL, Aldor) compatible language so that the spad compiler
and the Aldor compiler used the same language.

There is a seventh language, originally A#, then AxiomXL, now Aldor
which is a minor variant of spad. It allows the use of { } pairs 
instead of indentation making it a philosophical cross between the
lisp and boot religions. (Bill Burge's "nopile" option exists in Aldor).
(It also uses ";" which is an abmonination but that might be a religious
opinion :-) )

There is an 8th language called SHOE (search for SHOE) which was a
replacement for BOOT. Bill Burge liked puns. SHOE was a "more refined"
BOOT. BOOT was a bootstrap language written in BOOT. Once Burge got
a language "in the air" he was quite fond of losing the scaffolding
that got it there. As a consequence BOOT and spad could not be built
from scratch and required a running BOOT and spad compiler. This is
fixed in the released version. This fix took the bulk of the last
8 months which is why it took so long to deliver an open-source
version of a product (NAG already had a running Axiom and didn't need
to build from scratch but I'm not allowed to distribute a runnable 
Axiom so I had to fix this fundamental problem). The fix is horrible
and I'll rewrite it all from scratch eventually. However if you had
to wait for me to "clean up" all the issues you'd have to wait a
few years. Release early, release often is going to be my mantra.

There are even languages within languages. If you look at the common
lisp you'll find such things as (from g-opt.boot.pamphlet):
EVALANDFILEACTQ which is VMLisp/370 (nee LispVM, nee Lisp/360)
a product of Fred Blair, Cyril Alberga, and Mark Wegman (which, by
the way I need to add to the kudos list since Fred, Cyril, and Mark
were heavily consulted during the translation from VMLisp). Most of
the MACLisp and VMLisp rewrites are in vmlisp.spad.pamphlet.

Looking even deeper into the common lisp you'll find MODLisp, which
was an effort by Dick Jenks, Dave Barton, and a few others. Bits of
it still survive. It predated and fathered Scratchpad/Scratchpad II.

And there are even MACLisp primitives still around like subrp (see
src/interp/vmlisp.lisp.pamphlet).

I rewrote large portions of old code trying hard to eliminate these
old languages but found that the newer languages didn't have a name
for all of the old concepts (e.g. EVALANDFILEACTQ) or the new name
didn't match the meaning of the old name (e.g. subrp vs compiled-function-p)
exactly so I had to write cover macros/functions. Over time I eliminated
the semantic differences and some of the cover functions/macros are now
simply renames (e.g. subrp is now just a rename and should be removed).
We sold Axiom before I could completely clean up the system. Now I get
a second chance (of course I wish the filmy bastard (i.e. me) had DOCUMENTED
some of this code :-( )

When dealing with languages it is very hard to do a rewrite. Usually the
original programmer was an expert in his language (e.g. MACLisp) and the
rewrite-programmer is not. When the rewrite happens subtle things break.
My special talent on the project was deep expertise in anything lispish
as I worked in MACLisp, VMLisp, Common Lisp, SpiceLisp ZetaLisp, PSL,
Scheme, Standard Lisp, NIL,  and my own implementation (living quietly
under code that runs IBM's and Unimation's industrial robots) and every 
other variant that I could find. I even have a lisp implemented in fortran.
Thus you will hear me say (and not realize the religious nature of the 
comment) that "Axiom is just Lisp". 

Clearly there is much more to do.

Anyway, this history lesson is brought to you by the letters Alpha and
Omega, and the numbers pi and e.

Tim, the wizard (from Monty Python)

\start
Date: Sun, 31 Aug 2003 22:55:16 -0400
From: Tim Daly
To: Bill Page
Subject: Re: No lower case files patch

Thanks for the patch file.
Did you get a chance to CVS the *.daase files?

\start
Date: 31 Aug 2003 22:37:07 -0400
From: Bill Page
To: list
Subject: Re: No lower case files patch

Oops. Here's the file.

--- axiom/src/algebra/Makefile.pamphlet	2003-08-30 15:21:16.000000000 -0400
+++ axiom2/src/algebra/Makefile.pamphlet	2003-08-31 10:12:23.000000000 -0400
@@ -9,6 +9,13 @@
 \eject
 \tableofcontents
 \eject
+\section{Change Notes}
+August 31, 2003 Bill Page
+\begin{enumerate}
+\item removed lowercase.spad files
+\item added COMBF, INTRVL and SIGNEH
+\item removed note about INTRVL compile problem
+\end{enumerate}
 \section{Adding new algebra}
 This is a complex process by its very nature. Developers and Maintainers
 who undertake the process need to understand quite a lot of detail. The
@@ -480,6 +487,7 @@
 <<layer12>>=
 LAYER12=\
  ${OUT}/BITS.o    ${OUT}/DIRPROD2.o ${OUT}/IMATRIX.o  ${OUT}/IVECTOR.o \
+ ${OUT}/INTRVL.o \
  ${OUT}/LPOLY.o   ${OUT}/LSMP.o     ${OUT}/LSMP1.o    ${OUT}/MATCAT2.o \
  ${OUT}/PTCAT.o   ${OUT}/STRICAT.o  ${OUT}/TRIMAT.o 
 
@@ -965,7 +973,8 @@
   ${OUT}/PMPREDFS.o ${OUT}/PRIMELT.o  ${OUT}/PSETPK.o   ${OUT}/QUAT.o     \
   ${OUT}/QUATCT2.o  ${OUT}/RADFF.o    ${OUT}/RDEEF.o    ${OUT}/RDEEFS.o   \
   ${OUT}/RDIV.o     ${OUT}/RSETCAT.o  ${OUT}/RSETCAT-.o ${OUT}/RULE.o     \
-  ${OUT}/RULESET.o  ${OUT}/SIMPAN.o   ${OUT}/SFORT.o    ${OUT}/SOLVESER.o \
+  ${OUT}/RULESET.o  ${OUT}/SIGNEF.o \
+  ${OUT}/SIMPAN.o   ${OUT}/SFORT.o    ${OUT}/SOLVESER.o \
   ${OUT}/SUMFS.o    ${OUT}/SUTS.o     ${OUT}/TOOLSIGN.o ${OUT}/TRIGMNIP.o \
   ${OUT}/TRMANIP.o  ${OUT}/ULSCCAT.o  ${OUT}/ULSCCAT-.o ${OUT}/UPXSSING.o \
   ${OUT}/UTSODE.o   ${OUT}/UTSODETL.o ${OUT}/UTS2.o     ${OUT}/WUTSET.o 
@@ -1004,6 +1013,7 @@
 
 <<layer21>>=
 LAYER21=\
+  ${OUT}/COMBF.o \
   ${OUT}/DEFINTEF.o ${OUT}/DFINTTLS.o ${OUT}/DEFINTRF.o ${OUT}/D01TRNS.o  \
   ${OUT}/EFULS.o    ${OUT}/ESCONT.o   ${OUT}/EXPR.o     ${OUT}/EXPR2UPS.o \
   ${OUT}/FDIV.o     ${OUT}/FSCINT.o   ${OUT}/FSINT.o    ${OUT}/FS2EXPXP.o \
@@ -1030,7 +1040,6 @@
 These files need to be added.
 \begin{verbatim}
 
-limitps    SIGNEF
 primelt    FSPRMELT
 nsregset   LAZM3PK
 nregset    NORMPK
@@ -1048,7 +1057,6 @@
 nregset    NTSCAT
 sregset    SFRTCAT
 algcat     CPIMA
-combfunc   COMBF
 ffnb       INBFF
 lodo       LODO
 lodo       LODO1
@@ -1085,12 +1093,7 @@
 
 These files won't compile yet
 \begin{verbatim}
-${OUT}/INTRVL.o  (from layer 12)
-  cannot produce category object:
-  (|IntervalCategory| R)
-  finalizing NRLIB INTRVL
-  Internal Error
-  Unexpected error in call to system function getSlotFromFunctor
+
 \end{verbatim}
 
 \section{The Environment}
@@ -1186,7 +1189,7 @@
  ${MID}/ideal.spad ${MID}/idecomp.spad ${MID}/indexedp.spad \
  ${MID}/infprod.spad ${MID}/intaf.spad ${MID}/intalg.spad \
  ${MID}/intaux.spad ${MID}/intclos.spad ${MID}/intef.spad \
- ${MID}/integer.spad ${MID}/integrat.spad ${MID}/INTERP.EXPOSED \
+ ${MID}/integer.spad ${MID}/integrat.spad \
  ${MID}/interval.spad \
  ${MID}/intfact.spad ${MID}/intpm.spad \
  ${MID}/intrf.spad \
@@ -1580,13 +1583,6 @@
  
 
 \subsection{acplot.spad \cite{1}}
-<<acplot.spad (SPAD from IN)>>=
-${MID}/acplot.spad: ${IN}/acplot.spad.pamphlet
-	@ echo 0 making ${MID}/acplot.spad from ${IN}/acplot.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/acplot.spad.pamphlet >acplot.spad )
-
-@
 <<ACPLOT.o (O from NRLIB)>>=
 ${OUT}/ACPLOT.o: ${MID}/ACPLOT.NRLIB
 	@ echo 0 making ${OUT}/ACPLOT.o from ${MID}/ACPLOT.NRLIB
@@ -1639,13 +1635,6 @@
 
 @
 \subsection{aggcat2.spad \cite{1}}
-<<aggcat2.spad (SPAD from IN)>>=
-${MID}/aggcat2.spad: ${IN}/aggcat2.spad.pamphlet
-	@ echo 0 making ${MID}/aggcat2.spad from ${IN}/aggcat2.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/aggcat2.spad.pamphlet >aggcat2.spad )
-
-@
 <<FLAGG2.o (O from NRLIB)>>=
 ${OUT}/FLAGG2.o: ${MID}/FLAGG2.NRLIB
 	@ echo 0 making ${OUT}/FLAGG2.o from ${MID}/FLAGG2.NRLIB
@@ -1698,13 +1687,6 @@
 
 @
 \subsection{aggcat.spad \cite{1}}
-<<aggcat.spad (SPAD from IN)>>=
-${MID}/aggcat.spad: ${IN}/aggcat.spad.pamphlet
-	@ echo 0 making ${MID}/aggcat.spad from ${IN}/aggcat.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/aggcat.spad.pamphlet >aggcat.spad )
-
-@
 <<ALAGG.o (O from NRLIB)>>=
 ${OUT}/ALAGG.o: ${MID}/ALAGG.NRLIB
 	@ echo 0 making ${OUT}/ALAGG.o from ${MID}/ALAGG.NRLIB
@@ -2942,13 +2924,6 @@
 
 @
 \subsection{algcat.spad \cite{1}}
-<<algcat.spad (SPAD from IN)>>=
-${MID}/algcat.spad: ${IN}/algcat.spad.pamphlet
-	@ echo 0 making ${MID}/algcat.spad from ${IN}/algcat.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/algcat.spad.pamphlet >algcat.spad )
-
-@
 <<CPIMA.o (O from NRLIB)>>=
 ${OUT}/CPIMA.o: ${MID}/CPIMA.NRLIB
 	@ echo 0 making ${OUT}/CPIMA.o from ${MID}/CPIMA.NRLIB
@@ -3097,13 +3072,6 @@
 
 @
 \subsection{algext.spad \cite{1}}
-<<algext.spad (SPAD from IN)>>=
-${MID}/algext.spad: ${IN}/algext.spad.pamphlet
-	@ echo 0 making ${MID}/algext.spad from ${IN}/algext.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/algext.spad.pamphlet >algext.spad )
-
-@
 <<SAE.o (O from NRLIB)>>=
 ${OUT}/SAE.o: ${MID}/SAE.NRLIB
 	@ echo 0 making ${OUT}/SAE.o from ${MID}/SAE.NRLIB
@@ -3136,13 +3104,6 @@
 
 @
 \subsection{algfact.spad \cite{1}}
-<<algfact.spad (SPAD from IN)>>=
-${MID}/algfact.spad: ${IN}/algfact.spad.pamphlet
-	@ echo 0 making ${MID}/algfact.spad from ${IN}/algfact.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/algfact.spad.pamphlet >algfact.spad )
-
-@
 <<ALGFACT.o (O from NRLIB)>>=
 ${OUT}/ALGFACT.o: ${MID}/ALGFACT.NRLIB
 	@ echo 0 making ${OUT}/ALGFACT.o from ${MID}/ALGFACT.NRLIB
@@ -3255,13 +3216,6 @@
 
 @
 \subsection{algfunc.spad \cite{1}}
-<<algfunc.spad (SPAD from IN)>>=
-${MID}/algfunc.spad: ${IN}/algfunc.spad.pamphlet
-	@ echo 0 making ${MID}/algfunc.spad from ${IN}/algfunc.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/algfunc.spad.pamphlet >algfunc.spad )
-
-@
 <<ACF-.o (O from NRLIB)>>=
 ${OUT}/ACF-.o: ${MID}/ACF.NRLIB
 	@ echo 0 making ${OUT}/ACF-.o from ${MID}/ACF-.NRLIB
@@ -3358,13 +3312,6 @@
 
 @
 \subsection{allfact.spad \cite{1}}
-<<allfact.spad (SPAD from IN)>>=
-${MID}/allfact.spad: ${IN}/allfact.spad.pamphlet
-	@ echo 0 making ${MID}/allfact.spad from ${IN}/allfact.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/allfact.spad.pamphlet >allfact.spad )
-
-@
 <<GENMFACT.o (O from NRLIB)>>=
 ${OUT}/GENMFACT.o: ${MID}/GENMFACT.NRLIB
 	@ echo 0 making ${OUT}/GENMFACT.o from ${MID}/GENMFACT.NRLIB
@@ -3497,13 +3444,6 @@
 
 @
 \subsection{alql.spad \cite{1}}
-<<alql.spad (SPAD from IN)>>=
-${MID}/alql.spad: ${IN}/alql.spad.pamphlet
-	@ echo 0 making ${MID}/alql.spad from ${IN}/alql.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/alql.spad.pamphlet >alql.spad )
-
-@
 <<DBASE.o (O from NRLIB)>>=
 ${OUT}/DBASE.o: ${MID}/DBASE.NRLIB
 	@ echo 0 making ${OUT}/DBASE.o from ${MID}/DBASE.NRLIB
@@ -3636,13 +3576,6 @@
 
 @
 \subsection{annacat.spad \cite{1}}
-<<annacat.spad (SPAD from IN)>>=
-${MID}/annacat.spad: ${IN}/annacat.spad.pamphlet
-	@ echo 0 making ${MID}/annacat.spad from ${IN}/annacat.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/annacat.spad.pamphlet >annacat.spad )
-
-@
 <<NIPROB.o (O from NRLIB)>>=
 ${OUT}/NIPROB.o: ${MID}/NIPROB.NRLIB
 	@ echo 0 making ${OUT}/NIPROB.o from ${MID}/NIPROB.NRLIB
@@ -3815,13 +3748,6 @@
 
 @
 \subsection{any.spad \cite{1}}
-<<any.spad (SPAD from IN)>>=
-${MID}/any.spad: ${IN}/any.spad.pamphlet
-	@ echo 0 making ${MID}/any.spad from ${IN}/any.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/any.spad.pamphlet >any.spad )
-
-@
 <<ANY.o (O from NRLIB)>>=
 ${OUT}/ANY.o: ${MID}/ANY.NRLIB
 	@ echo 0 making ${OUT}/ANY.o from ${MID}/ANY.NRLIB
@@ -3914,13 +3840,6 @@
 
 @
 \subsection{array1.spad \cite{1}}
-<<array1.spad (SPAD from IN)>>=
-${MID}/array1.spad: ${IN}/array1.spad.pamphlet
-	@ echo 0 making ${MID}/array1.spad from ${IN}/array1.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/array1.spad.pamphlet >array1.spad )
-
-@
 <<ARRAY1.o (O from NRLIB)>>=
 ${OUT}/ARRAY1.o: ${MID}/ARRAY1.NRLIB
 	@ echo 0 making ${OUT}/ARRAY1.o from ${MID}/ARRAY1.NRLIB
@@ -4110,13 +4029,6 @@
 
 @
 \subsection{array2.spad \cite{1}}
-<<array2.spad (SPAD from IN)>>=
-${MID}/array2.spad: ${IN}/array2.spad.pamphlet
-	@ echo 0 making ${MID}/array2.spad from ${IN}/array2.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/array2.spad.pamphlet >array2.spad )
-
-@
 <<ARRAY2.o (O from NRLIB)>>=
 ${OUT}/ARRAY2.o: ${MID}/ARRAY2.NRLIB
 	@ echo 0 making ${OUT}/ARRAY2.o from ${MID}/ARRAY2.NRLIB
@@ -4221,13 +4133,6 @@
 
 @
 \subsection{asp.spad \cite{1}}
-<<asp.spad (SPAD from IN)>>=
-${MID}/asp.spad: ${IN}/asp.spad.pamphlet
-	@ echo 0 making ${MID}/asp.spad from ${IN}/asp.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/asp.spad.pamphlet >asp.spad )
-
-@
 <<ASP1.o (O from NRLIB)>>=
 ${OUT}/ASP1.o: ${MID}/ASP1.NRLIB
 	@ echo 0 making ${OUT}/ASP1.o from ${MID}/ASP1.NRLIB
@@ -4820,13 +4725,6 @@
 
 @
 \subsection{attreg.spad \cite{1}}
-<<attreg.spad (SPAD from IN)>>=
-${MID}/attreg.spad: ${IN}/attreg.spad.pamphlet
-	@ echo 0 making ${MID}/attreg.spad from ${IN}/attreg.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/attreg.spad.pamphlet >attreg.spad )
-
-@
 <<ATTREG.o (O from NRLIB)>>=
 ${OUT}/ATTREG.o: ${MID}/ATTREG.NRLIB
 	@ echo 0 making ${OUT}/ATTREG.o from ${MID}/ATTREG.NRLIB
@@ -4866,6 +4764,7 @@
 	${SPADBIN}/notangle ${IN}/axtimer.as.pamphlet >axtimer.as )
 
 @
+
 <<axtimer.as.dvi (DOC from IN)>>=
 ${DOC}/axtimer.as.dvi: ${IN}/axtimer.as.pamphlet
 	@ echo 0 making ${DOC}/axtimer.as.dvi from ${IN}/axtimer.as.pamphlet
@@ -4878,13 +4777,6 @@
 
 @
 \subsection{bags.spad \cite{1}}
-<<bags.spad (SPAD from IN)>>=
-${MID}/bags.spad: ${IN}/bags.spad.pamphlet
-	@ echo 0 making ${MID}/bags.spad from ${IN}/bags.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/bags.spad.pamphlet >bags.spad )
-
-@
 <<ASTACK.o (O from NRLIB)>>=
 ${OUT}/ASTACK.o: ${MID}/ASTACK.NRLIB
 	@ echo 0 making ${OUT}/ASTACK.o from ${MID}/ASTACK.NRLIB
@@ -4997,13 +4889,6 @@
 
 @
 \subsection{bezout.spad \cite{1}}
-<<bezout.spad (SPAD from IN)>>=
-${MID}/bezout.spad: ${IN}/bezout.spad.pamphlet
-	@ echo 0 making ${MID}/bezout.spad from ${IN}/bezout.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/bezout.spad.pamphlet >bezout.spad )
-
-@
 <<BEZOUT.o (O from NRLIB)>>=
 ${OUT}/BEZOUT.o: ${MID}/BEZOUT.NRLIB
 	@ echo 0 making ${OUT}/BEZOUT.o from ${MID}/BEZOUT.NRLIB
@@ -5036,13 +4921,6 @@
 
 @
 \subsection{boolean.spad \cite{1}}
-<<boolean.spad (SPAD from IN)>>=
-${MID}/boolean.spad: ${IN}/boolean.spad.pamphlet
-	@ echo 0 making ${MID}/boolean.spad from ${IN}/boolean.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/boolean.spad.pamphlet >boolean.spad )
-
-@
 <<BITS.o (O from NRLIB)>>=
 ${OUT}/BITS.o: ${MID}/BITS.NRLIB
 	@ echo 0 making ${OUT}/BITS.o from ${MID}/BITS.NRLIB
@@ -5201,13 +5079,6 @@
 
 @
 \subsection{brill.spad \cite{1}}
-<<brill.spad (SPAD from IN)>>=
-${MID}/brill.spad: ${IN}/brill.spad.pamphlet
-	@ echo 0 making ${MID}/brill.spad from ${IN}/brill.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/brill.spad.pamphlet >brill.spad )
-
-@
 <<BRILL.o (O from NRLIB)>>=
 ${OUT}/BRILL.o: ${MID}/BRILL.NRLIB
 	@ echo 0 making ${OUT}/BRILL.o from ${MID}/BRILL.NRLIB
@@ -5240,13 +5111,6 @@
 
 @
 \subsection{c02.spad \cite{1}}
-<<c02.spad (SPAD from IN)>>=
-${MID}/c02.spad: ${IN}/c02.spad.pamphlet
-	@ echo 0 making ${MID}/c02.spad from ${IN}/c02.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/c02.spad.pamphlet >c02.spad )
-
-@
 <<NAGC02.o (O from NRLIB)>>=
 ${OUT}/NAGC02.o: ${MID}/NAGC02.NRLIB
 	@ echo 0 making ${OUT}/NAGC02.o from ${MID}/NAGC02.NRLIB
@@ -5279,13 +5143,6 @@
 
 @
 \subsection{c05.spad \cite{1}}
-<<c05.spad (SPAD from IN)>>=
-${MID}/c05.spad: ${IN}/c05.spad.pamphlet
-	@ echo 0 making ${MID}/c05.spad from ${IN}/c05.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/c05.spad.pamphlet >c05.spad )
-
-@
 <<NAGC05.o (O from NRLIB)>>=
 ${OUT}/NAGC05.o: ${MID}/NAGC05.NRLIB
 	@ echo 0 making ${OUT}/NAGC05.o from ${MID}/NAGC05.NRLIB
@@ -5318,13 +5175,6 @@
 
 @
 \subsection{c06.spad \cite{1}}
-<<c06.spad (SPAD from IN)>>=
-${MID}/c06.spad: ${IN}/c06.spad.pamphlet
-	@ echo 0 making ${MID}/c06.spad from ${IN}/c06.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/c06.spad.pamphlet >c06.spad )
-
-@
 <<NAGC06.o (O from NRLIB)>>=
 ${OUT}/NAGC06.o: ${MID}/NAGC06.NRLIB
 	@ echo 0 making ${OUT}/NAGC06.o from ${MID}/NAGC06.NRLIB
@@ -5357,13 +5207,6 @@
 
 @
 \subsection{card.spad \cite{1}}
-<<card.spad (SPAD from IN)>>=
-${MID}/card.spad: ${IN}/card.spad.pamphlet
-	@ echo 0 making ${MID}/card.spad from ${IN}/card.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/card.spad.pamphlet >card.spad )
-
-@
 <<CARD.o (O from NRLIB)>>=
 ${OUT}/CARD.o: ${MID}/CARD.NRLIB
 	@ echo 0 making ${OUT}/CARD.o from ${MID}/CARD.NRLIB
@@ -5396,13 +5239,6 @@
 
 @
 \subsection{carten.spad \cite{1}}
-<<carten.spad (SPAD from IN)>>=
-${MID}/carten.spad: ${IN}/carten.spad.pamphlet
-	@ echo 0 making ${MID}/carten.spad from ${IN}/carten.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/carten.spad.pamphlet >carten.spad )
-
-@
 <<CARTEN.o (O from NRLIB)>>=
 ${OUT}/CARTEN.o: ${MID}/CARTEN.NRLIB
 	@ echo 0 making ${OUT}/CARTEN.o from ${MID}/CARTEN.NRLIB
@@ -5519,13 +5355,6 @@
 
 @
 \subsection{catdef.spad \cite{1}}
-<<catdef.spad (SPAD from IN)>>=
-${MID}/catdef.spad: ${IN}/catdef.spad.pamphlet
-	@ echo 0 making ${MID}/catdef.spad from ${IN}/catdef.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/catdef.spad.pamphlet >catdef.spad )
-
-@
 <<ABELGRP-.o (O from NRLIB)>>=
 ${OUT}/ABELGRP-.o: ${MID}/ABELGRP.NRLIB
 	@ echo 0 making ${OUT}/ABELGRP-.o from ${MID}/ABELGRP-.NRLIB
@@ -7285,13 +7114,6 @@
 
 @
 \subsection{cden.spad \cite{1}}
-<<cden.spad (SPAD from IN)>>=
-${MID}/cden.spad: ${IN}/cden.spad.pamphlet
-	@ echo 0 making ${MID}/cden.spad from ${IN}/cden.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/cden.spad.pamphlet >cden.spad )
-
-@
 <<CDEN.o (O from NRLIB)>>=
 ${OUT}/CDEN.o: ${MID}/CDEN.NRLIB
 	@ echo 0 making ${OUT}/CDEN.o from ${MID}/CDEN.NRLIB
@@ -7384,13 +7206,6 @@
 
 @
 \subsection{clifford.spad \cite{1}}
-<<clifford.spad (SPAD from IN)>>=
-${MID}/clifford.spad: ${IN}/clifford.spad.pamphlet
-	@ echo 0 making ${MID}/clifford.spad from ${IN}/clifford.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/clifford.spad.pamphlet >clifford.spad )
-
-@
 <<CLIF.o (O from NRLIB)>>=
 ${OUT}/CLIF.o: ${MID}/CLIF.NRLIB
 	@ echo 0 making ${OUT}/CLIF.o from ${MID}/CLIF.NRLIB
@@ -7443,13 +7258,6 @@
 
 @
 \subsection{clip.spad \cite{1}}
-<<clip.spad (SPAD from IN)>>=
-${MID}/clip.spad: ${IN}/clip.spad.pamphlet
-	@ echo 0 making ${MID}/clip.spad from ${IN}/clip.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/clip.spad.pamphlet >clip.spad )
-
-@
 <<CLIP.o (O from NRLIB)>>=
 ${OUT}/CLIP.o: ${MID}/CLIP.NRLIB
 	@ echo 0 making ${OUT}/CLIP.o from ${MID}/CLIP.NRLIB
@@ -7482,13 +7290,6 @@
 
 @
 \subsection{cmplxrt.spad \cite{1}}
-<<cmplxrt.spad (SPAD from IN)>>=
-${MID}/cmplxrt.spad: ${IN}/cmplxrt.spad.pamphlet
-	@ echo 0 making ${MID}/cmplxrt.spad from ${IN}/cmplxrt.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/cmplxrt.spad.pamphlet >cmplxrt.spad )
-
-@
 <<CMPLXRT.o (O from NRLIB)>>=
 ${OUT}/CMPLXRT.o: ${MID}/CMPLXRT.NRLIB
 	@ echo 0 making ${OUT}/CMPLXRT.o from ${MID}/CMPLXRT.NRLIB
@@ -7522,13 +7323,6 @@
 @
 \subsection{coerce.spad \cite{1}}
 Builds KOERCE KONVERT RETRACT- RETRACT TYPE
-<<coerce.spad (SPAD from IN)>>=
-${MID}/coerce.spad: ${IN}/coerce.spad.pamphlet
-	@ echo 0 making ${MID}/coerce.spad from ${IN}/coerce.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/coerce.spad.pamphlet >coerce.spad )
-
-@
 <<KOERCE.o (O from NRLIB)>>=
 ${OUT}/KOERCE.o: ${MID}/KOERCE.NRLIB
 	@ echo 0 making ${OUT}/KOERCE.o from ${MID}/KOERCE.NRLIB
@@ -7630,13 +7424,6 @@
 
 @
 \subsection{color.spad \cite{1}}
-<<color.spad (SPAD from IN)>>=
-${MID}/color.spad: ${IN}/color.spad.pamphlet
-	@ echo 0 making ${MID}/color.spad from ${IN}/color.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/color.spad.pamphlet >color.spad )
-
-@
 <<COLOR.o (O from NRLIB)>>=
 ${OUT}/COLOR.o: ${MID}/COLOR.NRLIB
 	@ echo 0 making ${OUT}/COLOR.o from ${MID}/COLOR.NRLIB
@@ -7689,13 +7476,6 @@
 
 @
 \subsection{combfunc.spad \cite{1}}
-<<combfunc.spad (SPAD from IN)>>=
-${MID}/combfunc.spad: ${IN}/combfunc.spad.pamphlet
-	@ echo 0 making ${MID}/combfunc.spad from ${IN}/combfunc.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/combfunc.spad.pamphlet >combfunc.spad )
-
-@
 <<COMBF.o (O from NRLIB)>>=
 ${OUT}/COMBF.o: ${MID}/COMBF.NRLIB
 	@ echo 0 making ${OUT}/COMBF.o from ${MID}/COMBF.NRLIB
@@ -7788,13 +7568,6 @@
 
 @
 \subsection{combinat.spad \cite{1}}
-<<combinat.spad (SPAD from IN)>>=
-${MID}/combinat.spad: ${IN}/combinat.spad.pamphlet
-	@ echo 0 making ${MID}/combinat.spad from ${IN}/combinat.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/combinat.spad.pamphlet >combinat.spad )
-
-@
 <<COMBINAT.o (O from NRLIB)>>=
 ${OUT}/COMBINAT.o: ${MID}/COMBINAT.NRLIB
 	@ echo 0 making ${OUT}/COMBINAT.o from ${MID}/COMBINAT.NRLIB
@@ -7827,13 +7600,6 @@
 
 @
 \subsection{complet.spad \cite{1}}
-<<complet.spad (SPAD from IN)>>=
-${MID}/complet.spad: ${IN}/complet.spad.pamphlet
-	@ echo 0 making ${MID}/complet.spad from ${IN}/complet.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/complet.spad.pamphlet >complet.spad )
-
-@
 <<INFINITY.o (O from NRLIB)>>=
 ${OUT}/INFINITY.o: ${MID}/INFINITY.NRLIB
 	@ echo 0 making ${OUT}/INFINITY.o from ${MID}/INFINITY.NRLIB
@@ -7946,13 +7712,6 @@
 
 @
 \subsection{constant.spad \cite{1}}
-<<constant.spad (SPAD from IN)>>=
-${MID}/constant.spad: ${IN}/constant.spad.pamphlet
-	@ echo 0 making ${MID}/constant.spad from ${IN}/constant.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/constant.spad.pamphlet >constant.spad )
-
-@
 <<AN.o (O from NRLIB)>>=
 ${OUT}/AN.o: ${MID}/AN.NRLIB
 	@ echo 0 making ${OUT}/AN.o from ${MID}/AN.NRLIB
@@ -8005,13 +7764,6 @@
 
 @
 \subsection{contfrac.spad \cite{1}}
-<<contfrac.spad (SPAD from IN)>>=
-${MID}/contfrac.spad: ${IN}/contfrac.spad.pamphlet
-	@ echo 0 making ${MID}/contfrac.spad from ${IN}/contfrac.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/contfrac.spad.pamphlet >contfrac.spad )
-
-@
 <<CONTFRAC.o (O from NRLIB)>>=
 ${OUT}/CONTFRAC.o: ${MID}/CONTFRAC.NRLIB
 	@ echo 0 making ${OUT}/CONTFRAC.o from ${MID}/CONTFRAC.NRLIB
@@ -8064,13 +7816,6 @@
 
 @
 \subsection{cont.spad \cite{1}}
-<<cont.spad (SPAD from IN)>>=
-${MID}/cont.spad: ${IN}/cont.spad.pamphlet
-	@ echo 0 making ${MID}/cont.spad from ${IN}/cont.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/cont.spad.pamphlet >cont.spad )
-
-@
 <<ESCONT.o (O from NRLIB)>>=
 ${OUT}/ESCONT.o: ${MID}/ESCONT.NRLIB
 	@ echo 0 making ${OUT}/ESCONT.o from ${MID}/ESCONT.NRLIB
@@ -8123,13 +7868,6 @@
 
 @
 \subsection{coordsys.spad \cite{1}}
-<<coordsys.spad (SPAD from IN)>>=
-${MID}/coordsys.spad: ${IN}/coordsys.spad.pamphlet
-	@ echo 0 making ${MID}/coordsys.spad from ${IN}/coordsys.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/coordsys.spad.pamphlet >coordsys.spad )
-
-@
 <<COORDSYS.o (O from NRLIB)>>=
 ${OUT}/COORDSYS.o: ${MID}/COORDSYS.NRLIB
 	@ echo 0 making ${OUT}/COORDSYS.o from ${MID}/COORDSYS.NRLIB
@@ -8162,13 +7900,6 @@
 
 @
 \subsection{cra.spad \cite{1}}
-<<cra.spad (SPAD from IN)>>=
-${MID}/cra.spad: ${IN}/cra.spad.pamphlet
-	@ echo 0 making ${MID}/cra.spad from ${IN}/cra.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/cra.spad.pamphlet >cra.spad )
-
-@
 <<CRAPACK.o (O from NRLIB)>>=
 ${OUT}/CRAPACK.o: ${MID}/CRAPACK.NRLIB
 	@ echo 0 making ${OUT}/CRAPACK.o from ${MID}/CRAPACK.NRLIB
@@ -8201,13 +7932,6 @@
 
 @
 \subsection{crfp.spad \cite{1}}
-<<crfp.spad (SPAD from IN)>>=
-${MID}/crfp.spad: ${IN}/crfp.spad.pamphlet
-	@ echo 0 making ${MID}/crfp.spad from ${IN}/crfp.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/crfp.spad.pamphlet >crfp.spad )
-
-@
 <<CRFP.o (O from NRLIB)>>=
 ${OUT}/CRFP.o: ${MID}/CRFP.NRLIB
 	@ echo 0 making ${OUT}/CRFP.o from ${MID}/CRFP.NRLIB
@@ -8240,13 +7964,6 @@
 
 @
 \subsection{curve.spad \cite{1}}
-<<curve.spad (SPAD from IN)>>=
-${MID}/curve.spad: ${IN}/curve.spad.pamphlet
-	@ echo 0 making ${MID}/curve.spad from ${IN}/curve.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/curve.spad.pamphlet >curve.spad )
-
-@
 <<ALGFF.o (O from NRLIB)>>=
 ${OUT}/ALGFF.o: ${MID}/ALGFF.NRLIB
 	@ echo 0 making ${OUT}/ALGFF.o from ${MID}/ALGFF.NRLIB
@@ -8391,13 +8108,6 @@
 
 @
 \subsection{cycles.spad \cite{1}}
-<<cycles.spad (SPAD from IN)>>=
-${MID}/cycles.spad: ${IN}/cycles.spad.pamphlet
-	@ echo 0 making ${MID}/cycles.spad from ${IN}/cycles.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/cycles.spad.pamphlet >cycles.spad )
-
-@
 <<CYCLES.o (O from NRLIB)>>=
 ${OUT}/CYCLES.o: ${MID}/CYCLES.NRLIB
 	@ echo 0 making ${OUT}/CYCLES.o from ${MID}/CYCLES.NRLIB
@@ -8450,13 +8160,6 @@
 
 @
 \subsection{cyclotom.spad \cite{1}}
-<<cyclotom.spad (SPAD from IN)>>=
-${MID}/cyclotom.spad: ${IN}/cyclotom.spad.pamphlet
-	@ echo 0 making ${MID}/cyclotom.spad from ${IN}/cyclotom.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/cyclotom.spad.pamphlet >cyclotom.spad )
-
-@
 <<CYCLOTOM.o (O from NRLIB)>>=
 ${OUT}/CYCLOTOM.o: ${MID}/CYCLOTOM.NRLIB
 	@ echo 0 making ${OUT}/CYCLOTOM.o from ${MID}/CYCLOTOM.NRLIB
@@ -8489,13 +8192,6 @@
 
 @
 \subsection{d01agents.spad \cite{1}}
-<<d01agents.spad (SPAD from IN)>>=
-${MID}/d01agents.spad: ${IN}/d01agents.spad.pamphlet
-	@ echo 0 making ${MID}/d01agents.spad from ${IN}/d01agents.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/d01agents.spad.pamphlet >d01agents.spad )
-
-@
 <<D01AGNT.o (O from NRLIB)>>=
 ${OUT}/D01AGNT.o: ${MID}/D01AGNT.NRLIB
 	@ echo 0 making ${OUT}/D01AGNT.o from ${MID}/D01AGNT.NRLIB
@@ -8548,13 +8244,6 @@
 
 @
 \subsection{d01Package.spad \cite{1}}
-<<d01Package.spad (SPAD from IN)>>=
-${MID}/d01Package.spad: ${IN}/d01Package.spad.pamphlet
-	@ echo 0 making ${MID}/d01Package.spad from ${IN}/d01Package.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/d01Package.spad.pamphlet >d01Package.spad )
-
-@
 <<INTPACK.o (O from NRLIB)>>=
 ${OUT}/INTPACK.o: ${MID}/INTPACK.NRLIB
 	@ echo 0 making ${OUT}/INTPACK.o from ${MID}/INTPACK.NRLIB
@@ -8587,13 +8276,6 @@
 
 @
 \subsection{d01routine.spad \cite{1}}
-<<d01routine.spad (SPAD from IN)>>=
-${MID}/d01routine.spad: ${IN}/d01routine.spad.pamphlet
-	@ echo 0 making ${MID}/d01routine.spad from ${IN}/d01routine.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/d01routine.spad.pamphlet >d01routine.spad )
-
-@
 <<D01AJFA.o (O from NRLIB)>>=
 ${OUT}/D01AJFA.o: ${MID}/D01AJFA.NRLIB
 	@ echo 0 making ${OUT}/D01AJFA.o from ${MID}/D01AJFA.NRLIB
@@ -8806,13 +8488,6 @@
 
 @
 \subsection{d01.spad \cite{1}}
-<<d01.spad (SPAD from IN)>>=
-${MID}/d01.spad: ${IN}/d01.spad.pamphlet
-	@ echo 0 making ${MID}/d01.spad from ${IN}/d01.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/d01.spad.pamphlet >d01.spad )
-
-@
 <<NAGD01.o (O from NRLIB)>>=
 ${OUT}/NAGD01.o: ${MID}/NAGD01.NRLIB
 	@ echo 0 making ${OUT}/NAGD01.o from ${MID}/NAGD01.NRLIB
@@ -8845,13 +8520,6 @@
 
 @
 \subsection{d01transform.spad \cite{1}}
-<<d01transform.spad (SPAD from IN)>>=
-${MID}/d01transform.spad: ${IN}/d01transform.spad.pamphlet
-	@ echo 0 making ${MID}/d01transform.spad from ${IN}/d01transform.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/d01transform.spad.pamphlet >d01transform.spad )
-
-@
 <<D01TRNS.o (O from NRLIB)>>=
 ${OUT}/D01TRNS.o: ${MID}/D01TRNS.NRLIB
 	@ echo 0 making ${OUT}/D01TRNS.o from ${MID}/D01TRNS.NRLIB
@@ -8884,13 +8552,6 @@
 
 @
 \subsection{d01weights.spad \cite{1}}
-<<d01weights.spad (SPAD from IN)>>=
-${MID}/d01weights.spad: ${IN}/d01weights.spad.pamphlet
-	@ echo 0 making ${MID}/d01weights.spad from ${IN}/d01weights.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/d01weights.spad.pamphlet >d01weights.spad )
-
-@
 <<D01WGTS.o (O from NRLIB)>>=
 ${OUT}/D01WGTS.o: ${MID}/D01WGTS.NRLIB
 	@ echo 0 making ${OUT}/D01WGTS.o from ${MID}/D01WGTS.NRLIB
@@ -8923,13 +8584,6 @@
 
 @
 \subsection{d02agents.spad \cite{1}}
-<<d02agents.spad (SPAD from IN)>>=
-${MID}/d02agents.spad: ${IN}/d02agents.spad.pamphlet
-	@ echo 0 making ${MID}/d02agents.spad from ${IN}/d02agents.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/d02agents.spad.pamphlet >d02agents.spad )
-
-@
 <<D02AGNT.o (O from NRLIB)>>=
 ${OUT}/D02AGNT.o: ${MID}/D02AGNT.NRLIB
 	@ echo 0 making ${OUT}/D02AGNT.o from ${MID}/D02AGNT.NRLIB
@@ -8982,13 +8636,6 @@
 
 @
 \subsection{d02Package.spad \cite{1}}
-<<d02Package.spad (SPAD from IN)>>=
-${MID}/d02Package.spad: ${IN}/d02Package.spad.pamphlet
-	@ echo 0 making ${MID}/d02Package.spad from ${IN}/d02Package.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/d02Package.spad.pamphlet >d02Package.spad )
-
-@
 <<ODEPACK.o (O from NRLIB)>>=
 ${OUT}/ODEPACK.o: ${MID}/ODEPACK.NRLIB
 	@ echo 0 making ${OUT}/ODEPACK.o from ${MID}/ODEPACK.NRLIB
@@ -9021,13 +8668,6 @@
 
 @
 \subsection{d02routine.spad \cite{1}}
-<<d02routine.spad (SPAD from IN)>>=
-${MID}/d02routine.spad: ${IN}/d02routine.spad.pamphlet
-	@ echo 0 making ${MID}/d02routine.spad from ${IN}/d02routine.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/d02routine.spad.pamphlet >d02routine.spad )
-
-@
 <<D02BBFA.o (O from NRLIB)>>=
 ${OUT}/D02BBFA.o: ${MID}/D02BBFA.NRLIB
 	@ echo 0 making ${OUT}/D02BBFA.o from ${MID}/D02BBFA.NRLIB
@@ -9120,13 +8760,6 @@
 
 @
 \subsection{d02.spad \cite{1}}
-<<d02.spad (SPAD from IN)>>=
-${MID}/d02.spad: ${IN}/d02.spad.pamphlet
-	@ echo 0 making ${MID}/d02.spad from ${IN}/d02.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/d02.spad.pamphlet >d02.spad )
-
-@
 <<NAGD02.o (O from NRLIB)>>=
 ${OUT}/NAGD02.o: ${MID}/NAGD02.NRLIB
 	@ echo 0 making ${OUT}/NAGD02.o from ${MID}/NAGD02.NRLIB
@@ -9159,13 +8792,6 @@
 
 @
 \subsection{d03agents.spad \cite{1}}
-<<d03agents.spad (SPAD from IN)>>=
-${MID}/d03agents.spad: ${IN}/d03agents.spad.pamphlet
-	@ echo 0 making ${MID}/d03agents.spad from ${IN}/d03agents.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/d03agents.spad.pamphlet >d03agents.spad )
-
-@
 <<D03AGNT.o (O from NRLIB)>>=
 ${OUT}/D03AGNT.o: ${MID}/D03AGNT.NRLIB
 	@ echo 0 making ${OUT}/D03AGNT.o from ${MID}/D03AGNT.NRLIB
@@ -9198,13 +8824,6 @@
 
 @
 \subsection{d03Package.spad \cite{1}}
-<<d03Package.spad (SPAD from IN)>>=
-${MID}/d03Package.spad: ${IN}/d03Package.spad.pamphlet
-	@ echo 0 making ${MID}/d03Package.spad from ${IN}/d03Package.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/d03Package.spad.pamphlet >d03Package.spad )
-
-@
 <<PDEPACK.o (O from NRLIB)>>=
 ${OUT}/PDEPACK.o: ${MID}/PDEPACK.NRLIB
 	@ echo 0 making ${OUT}/PDEPACK.o from ${MID}/PDEPACK.NRLIB
@@ -9237,13 +8856,6 @@
 
 @
 \subsection{d03routine.spad \cite{1}}
-<<d03routine.spad (SPAD from IN)>>=
-${MID}/d03routine.spad: ${IN}/d03routine.spad.pamphlet
-	@ echo 0 making ${MID}/d03routine.spad from ${IN}/d03routine.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/d03routine.spad.pamphlet >d03routine.spad )
-
-@
 <<D03EEFA.o (O from NRLIB)>>=
 ${OUT}/D03EEFA.o: ${MID}/D03EEFA.NRLIB
 	@ echo 0 making ${OUT}/D03EEFA.o from ${MID}/D03EEFA.NRLIB
@@ -9296,13 +8908,6 @@
 
 @
 \subsection{d03.spad \cite{1}}
-<<d03.spad (SPAD from IN)>>=
-${MID}/d03.spad: ${IN}/d03.spad.pamphlet
-	@ echo 0 making ${MID}/d03.spad from ${IN}/d03.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/d03.spad.pamphlet >d03.spad )
-
-@
 <<NAGD03.o (O from NRLIB)>>=
 ${OUT}/NAGD03.o: ${MID}/NAGD03.NRLIB
 	@ echo 0 making ${OUT}/NAGD03.o from ${MID}/NAGD03.NRLIB
@@ -9335,13 +8940,6 @@
 
 @
 \subsection{ddfact.spad \cite{1}}
-<<ddfact.spad (SPAD from IN)>>=
-${MID}/ddfact.spad: ${IN}/ddfact.spad.pamphlet
-	@ echo 0 making ${MID}/ddfact.spad from ${IN}/ddfact.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/ddfact.spad.pamphlet >ddfact.spad )
-
-@
 <<DDFACT.o (O from NRLIB)>>=
 ${OUT}/DDFACT.o: ${MID}/DDFACT.NRLIB
 	@ echo 0 making ${OUT}/DDFACT.o from ${MID}/DDFACT.NRLIB
@@ -9374,13 +8972,6 @@
 
 @
 \subsection{defaults.spad \cite{1}}
-<<defaults.spad (SPAD from IN)>>=
-${MID}/defaults.spad: ${IN}/defaults.spad.pamphlet
-	@ echo 0 making ${MID}/defaults.spad from ${IN}/defaults.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/defaults.spad.pamphlet >defaults.spad )
-
-@
 <<FLASORT.o (O from NRLIB)>>=
 ${OUT}/FLASORT.o: ${MID}/FLASORT.NRLIB
 	@ echo 0 making ${OUT}/FLASORT.o from ${MID}/FLASORT.NRLIB
@@ -9453,13 +9044,6 @@
 
 @
 \subsection{defintef.spad \cite{1}}
-<<defintef.spad (SPAD from IN)>>=
-${MID}/defintef.spad: ${IN}/defintef.spad.pamphlet
-	@ echo 0 making ${MID}/defintef.spad from ${IN}/defintef.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/defintef.spad.pamphlet >defintef.spad )
-
-@
 <<DEFINTEF.o (O from NRLIB)>>=
 ${OUT}/DEFINTEF.o: ${MID}/DEFINTEF.NRLIB
 	@ echo 0 making ${OUT}/DEFINTEF.o from ${MID}/DEFINTEF.NRLIB
@@ -9492,13 +9076,6 @@
 
 @
 \subsection{defintrf.spad \cite{1}}
-<<defintrf.spad (SPAD from IN)>>=
-${MID}/defintrf.spad: ${IN}/defintrf.spad.pamphlet
-	@ echo 0 making ${MID}/defintrf.spad from ${IN}/defintrf.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/defintrf.spad.pamphlet >defintrf.spad )
-
-@
 <<DEFINTRF.o (O from NRLIB)>>=
 ${OUT}/DEFINTRF.o: ${MID}/DEFINTRF.NRLIB
 	@ echo 0 making ${OUT}/DEFINTRF.o from ${MID}/DEFINTRF.NRLIB
@@ -9551,13 +9128,6 @@
 
 @
 \subsection{degred.spad \cite{1}}
-<<degred.spad (SPAD from IN)>>=
-${MID}/degred.spad: ${IN}/degred.spad.pamphlet
-	@ echo 0 making ${MID}/degred.spad from ${IN}/degred.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/degred.spad.pamphlet >degred.spad )
-
-@
 <<DEGRED.o (O from NRLIB)>>=
 ${OUT}/DEGRED.o: ${MID}/DEGRED.NRLIB
 	@ echo 0 making ${OUT}/DEGRED.o from ${MID}/DEGRED.NRLIB
@@ -9590,13 +9160,6 @@
 
 @
 \subsection{derham.spad \cite{1}}
-<<derham.spad (SPAD from IN)>>=
-${MID}/derham.spad: ${IN}/derham.spad.pamphlet
-	@ echo 0 making ${MID}/derham.spad from ${IN}/derham.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/derham.spad.pamphlet >derham.spad )
-
-@
 <<ANTISYM.o (O from NRLIB)>>=
 ${OUT}/ANTISYM.o: ${MID}/ANTISYM.NRLIB
 	@ echo 0 making ${OUT}/ANTISYM.o from ${MID}/ANTISYM.NRLIB
@@ -9701,13 +9264,6 @@
 
 @
 \subsection{dhmatrix.spad \cite{1}}
-<<dhmatrix.spad (SPAD from IN)>>=
-${MID}/dhmatrix.spad: ${IN}/dhmatrix.spad.pamphlet
-	@ echo 0 making ${MID}/dhmatrix.spad from ${IN}/dhmatrix.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/dhmatrix.spad.pamphlet >dhmatrix.spad )
-
-@
 <<DHMATRIX.o (O from NRLIB)>>=
 ${OUT}/DHMATRIX.o: ${MID}/DHMATRIX.NRLIB
 	@ echo 0 making ${OUT}/DHMATRIX.o from ${MID}/DHMATRIX.NRLIB
@@ -9740,13 +9296,6 @@
 
 @
 \subsection{divisor.spad \cite{1}}
-<<divisor.spad (SPAD from IN)>>=
-${MID}/divisor.spad: ${IN}/divisor.spad.pamphlet
-	@ echo 0 making ${MID}/divisor.spad from ${IN}/divisor.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/divisor.spad.pamphlet >divisor.spad )
-
-@
 <<FDIV2.o (O from NRLIB)>>=
 ${OUT}/FDIV2.o: ${MID}/FDIV2.NRLIB
 	@ echo 0 making ${OUT}/FDIV2.o from ${MID}/FDIV2.NRLIB
@@ -9931,13 +9480,6 @@
 
 @
 \subsection{dpolcat.spad \cite{1}}
-<<dpolcat.spad (SPAD from IN)>>=
-${MID}/dpolcat.spad: ${IN}/dpolcat.spad.pamphlet
-	@ echo 0 making ${MID}/dpolcat.spad from ${IN}/dpolcat.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/dpolcat.spad.pamphlet >dpolcat.spad )
-
-@
 <<SDPOL.o (O from NRLIB)>>=
 ${OUT}/SDPOL.o: ${MID}/SDPOL.NRLIB
 	@ echo 0 making ${OUT}/SDPOL.o from ${MID}/SDPOL.NRLIB
@@ -10114,13 +9656,6 @@
 
 @
 \subsection{drawopt.spad \cite{1}}
-<<drawopt.spad (SPAD from IN)>>=
-${MID}/drawopt.spad: ${IN}/drawopt.spad.pamphlet
-	@ echo 0 making ${MID}/drawopt.spad from ${IN}/drawopt.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/drawopt.spad.pamphlet >drawopt.spad )
-
-@
 <<DROPT.o (O from NRLIB)>>=
 ${OUT}/DROPT.o: ${MID}/DROPT.NRLIB
 	@ echo 0 making ${OUT}/DROPT.o from ${MID}/DROPT.NRLIB
@@ -10193,13 +9728,6 @@
 
 @
 \subsection{drawpak.spad \cite{1}}
-<<drawpak.spad (SPAD from IN)>>=
-${MID}/drawpak.spad: ${IN}/drawpak.spad.pamphlet
-	@ echo 0 making ${MID}/drawpak.spad from ${IN}/drawpak.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/drawpak.spad.pamphlet >drawpak.spad )
-
-@
 <<DRAWCX.o (O from NRLIB)>>=
 ${OUT}/DRAWCX.o: ${MID}/DRAWCX.NRLIB
 	@ echo 0 making ${OUT}/DRAWCX.o from ${MID}/DRAWCX.NRLIB
@@ -10232,13 +9760,6 @@
 
 @
 \subsection{draw.spad \cite{1}}
-<<draw.spad (SPAD from IN)>>=
-${MID}/draw.spad: ${IN}/draw.spad.pamphlet
-	@ echo 0 making ${MID}/draw.spad from ${IN}/draw.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/draw.spad.pamphlet >draw.spad )
-
-@
 <<DRAW.o (O from NRLIB)>>=
 ${OUT}/DRAW.o: ${MID}/DRAW.NRLIB
 	@ echo 0 making ${OUT}/DRAW.o from ${MID}/DRAW.NRLIB
@@ -10331,13 +9852,6 @@
 
 @
 \subsection{e01.spad \cite{1}}
-<<e01.spad (SPAD from IN)>>=
-${MID}/e01.spad: ${IN}/e01.spad.pamphlet
-	@ echo 0 making ${MID}/e01.spad from ${IN}/e01.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/e01.spad.pamphlet >e01.spad )
-
-@
 <<NAGE01.o (O from NRLIB)>>=
 ${OUT}/NAGE01.o: ${MID}/NAGE01.NRLIB
 	@ echo 0 making ${OUT}/NAGE01.o from ${MID}/NAGE01.NRLIB
@@ -10370,13 +9884,6 @@
 
 @
 \subsection{e02.spad \cite{1}}
-<<e02.spad (SPAD from IN)>>=
-${MID}/e02.spad: ${IN}/e02.spad.pamphlet
-	@ echo 0 making ${MID}/e02.spad from ${IN}/e02.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/e02.spad.pamphlet >e02.spad )
-
-@
 <<NAGE02.o (O from NRLIB)>>=
 ${OUT}/NAGE02.o: ${MID}/NAGE02.NRLIB
 	@ echo 0 making ${OUT}/NAGE02.o from ${MID}/NAGE02.NRLIB
@@ -10409,13 +9916,6 @@
 
 @
 \subsection{e04agents.spad \cite{1}}
-<<e04agents.spad (SPAD from IN)>>=
-${MID}/e04agents.spad: ${IN}/e04agents.spad.pamphlet
-	@ echo 0 making ${MID}/e04agents.spad from ${IN}/e04agents.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/e04agents.spad.pamphlet >e04agents.spad )
-
-@
 <<E04AGNT.o (O from NRLIB)>>=
 ${OUT}/E04AGNT.o: ${MID}/E04AGNT.NRLIB
 	@ echo 0 making ${OUT}/E04AGNT.o from ${MID}/E04AGNT.NRLIB
@@ -10448,13 +9948,6 @@
 
 @
 \subsection{e04Package.spad \cite{1}}
-<<e04Package.spad (SPAD from IN)>>=
-${MID}/e04Package.spad: ${IN}/e04Package.spad.pamphlet
-	@ echo 0 making ${MID}/e04Package.spad from ${IN}/e04Package.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/e04Package.spad.pamphlet >e04Package.spad )
-
-@
 <<OPTPACK.o (O from NRLIB)>>=
 ${OUT}/OPTPACK.o: ${MID}/OPTPACK.NRLIB
 	@ echo 0 making ${OUT}/OPTPACK.o from ${MID}/OPTPACK.NRLIB
@@ -10487,13 +9980,6 @@
 
 @
 \subsection{e04routine.spad \cite{1}}
-<<e04routine.spad (SPAD from IN)>>=
-${MID}/e04routine.spad: ${IN}/e04routine.spad.pamphlet
-	@ echo 0 making ${MID}/e04routine.spad from ${IN}/e04routine.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/e04routine.spad.pamphlet >e04routine.spad )
-
-@
 <<E04DGFA.o (O from NRLIB)>>=
 ${OUT}/E04DGFA.o: ${MID}/E04DGFA.NRLIB
 	@ echo 0 making ${OUT}/E04DGFA.o from ${MID}/E04DGFA.NRLIB
@@ -10646,13 +10132,6 @@
 
 @
 \subsection{e04.spad \cite{1}}
-<<e04.spad (SPAD from IN)>>=
-${MID}/e04.spad: ${IN}/e04.spad.pamphlet
-	@ echo 0 making ${MID}/e04.spad from ${IN}/e04.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/e04.spad.pamphlet >e04.spad )
-
-@
 <<NAGE04.o (O from NRLIB)>>=
 ${OUT}/NAGE04.o: ${MID}/NAGE04.NRLIB
 	@ echo 0 making ${OUT}/NAGE04.o from ${MID}/NAGE04.NRLIB
@@ -10685,13 +10164,6 @@
 
 @
 \subsection{efstruc.spad \cite{1}}
-<<efstruc.spad (SPAD from IN)>>=
-${MID}/efstruc.spad: ${IN}/efstruc.spad.pamphlet
-	@ echo 0 making ${MID}/efstruc.spad from ${IN}/efstruc.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/efstruc.spad.pamphlet >efstruc.spad )
-
-@
 <<CTRIGMNP.o (O from NRLIB)>>=
 ${OUT}/CTRIGMNP.o: ${MID}/CTRIGMNP.NRLIB
 	@ echo 0 making ${OUT}/CTRIGMNP.o from ${MID}/CTRIGMNP.NRLIB
@@ -10824,13 +10296,6 @@
 
 @
 \subsection{efuls.spad \cite{1}}
-<<efuls.spad (SPAD from IN)>>=
-${MID}/efuls.spad: ${IN}/efuls.spad.pamphlet
-	@ echo 0 making ${MID}/efuls.spad from ${IN}/efuls.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/efuls.spad.pamphlet >efuls.spad )
-
-@
 <<EFULS.o (O from NRLIB)>>=
 ${OUT}/EFULS.o: ${MID}/EFULS.NRLIB
 	@ echo 0 making ${OUT}/EFULS.o from ${MID}/EFULS.NRLIB
@@ -10863,13 +10328,6 @@
 
 @
 \subsection{efupxs.spad \cite{1}}
-<<efupxs.spad (SPAD from IN)>>=
-${MID}/efupxs.spad: ${IN}/efupxs.spad.pamphlet
-	@ echo 0 making ${MID}/efupxs.spad from ${IN}/efupxs.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/efupxs.spad.pamphlet >efupxs.spad )
-
-@
 <<EFUPXS.o (O from NRLIB)>>=
 ${OUT}/EFUPXS.o: ${MID}/EFUPXS.NRLIB
 	@ echo 0 making ${OUT}/EFUPXS.o from ${MID}/EFUPXS.NRLIB
@@ -10902,13 +10360,6 @@
 
 @
 \subsection{eigen.spad \cite{1}}
-<<eigen.spad (SPAD from IN)>>=
-${MID}/eigen.spad: ${IN}/eigen.spad.pamphlet
-	@ echo 0 making ${MID}/eigen.spad from ${IN}/eigen.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/eigen.spad.pamphlet >eigen.spad )
-
-@
 <<CHARPOL.o (O from NRLIB)>>=
 ${OUT}/CHARPOL.o: ${MID}/CHARPOL.NRLIB
 	@ echo 0 making ${OUT}/CHARPOL.o from ${MID}/CHARPOL.NRLIB
@@ -10961,13 +10412,6 @@
 
 @
 \subsection{elemntry.spad \cite{1}}
-<<elemntry.spad (SPAD from IN)>>=
-${MID}/elemntry.spad: ${IN}/elemntry.spad.pamphlet
-	@ echo 0 making ${MID}/elemntry.spad from ${IN}/elemntry.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/elemntry.spad.pamphlet >elemntry.spad )
-
-@
 <<EF.o (O from NRLIB)>>=
 ${OUT}/EF.o: ${MID}/EF.NRLIB
 	@ echo 0 making ${OUT}/EF.o from ${MID}/EF.NRLIB
@@ -11000,13 +10444,6 @@
 
 @
 \subsection{elfuts.spad \cite{1}}
-<<elfuts.spad (SPAD from IN)>>=
-${MID}/elfuts.spad: ${IN}/elfuts.spad.pamphlet
-	@ echo 0 making ${MID}/elfuts.spad from ${IN}/elfuts.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/elfuts.spad.pamphlet >elfuts.spad )
-
-@
 <<ELFUTS.o (O from NRLIB)>>=
 ${OUT}/ELFUTS.o: ${MID}/ELFUTS.NRLIB
 	@ echo 0 making ${OUT}/ELFUTS.o from ${MID}/ELFUTS.NRLIB
@@ -11040,13 +10477,6 @@
 
 @
 \subsection{equation1.spad \cite{1}}
-<<equation1.spad (SPAD from IN)>>=
-${MID}/equation1.spad: ${IN}/equation1.spad.pamphlet
-	@ echo 0 making ${MID}/equation1.spad from ${IN}/equation1.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/equation1.spad.pamphlet >equation1.spad )
-
-@
 <<EVALAB-.o (O from NRLIB)>>=
 ${OUT}/EVALAB-.o: ${MID}/EVALAB.NRLIB
 	@ echo 0 making ${OUT}/EVALAB-.o from ${MID}/EVALAB-.NRLIB
@@ -11123,13 +10553,6 @@
 
 @
 \subsection{equation2.spad \cite{1}}
-<<equation2.spad (SPAD from IN)>>=
-${MID}/equation2.spad: ${IN}/equation2.spad.pamphlet
-	@ echo 0 making ${MID}/equation2.spad from ${IN}/equation2.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/equation2.spad.pamphlet >equation2.spad )
-
-@
 <<EQ.o (O from NRLIB)>>=
 ${OUT}/EQ.o: ${MID}/EQ.NRLIB
 	@ echo 0 making ${OUT}/EQ.o from ${MID}/EQ.NRLIB
@@ -11214,13 +10637,6 @@
 
 @
 \subsection{error.spad \cite{1}}
-<<error.spad (SPAD from IN)>>=
-${MID}/error.spad: ${IN}/error.spad.pamphlet
-	@ echo 0 making ${MID}/error.spad from ${IN}/error.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/error.spad.pamphlet >error.spad )
-
-@
 <<ERROR.o (O from NRLIB)>>=
 ${OUT}/ERROR.o: ${MID}/ERROR.NRLIB
 	@ echo 0 making ${OUT}/ERROR.o from ${MID}/ERROR.NRLIB
@@ -11253,13 +10669,6 @@
 
 @
 \subsection{expexpan.spad \cite{1}}
-<<expexpan.spad (SPAD from IN)>>=
-${MID}/expexpan.spad: ${IN}/expexpan.spad.pamphlet
-	@ echo 0 making ${MID}/expexpan.spad from ${IN}/expexpan.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/expexpan.spad.pamphlet >expexpan.spad )
-
-@
 <<EXPEXPAN.o (O from NRLIB)>>=
 ${OUT}/EXPEXPAN.o: ${MID}/EXPEXPAN.NRLIB
 	@ echo 0 making ${OUT}/EXPEXPAN.o from ${MID}/EXPEXPAN.NRLIB
@@ -11349,13 +10758,6 @@
 
 @
 \subsection{expr2ups.spad \cite{1}}
-<<expr2ups.spad (SPAD from IN)>>=
-${MID}/expr2ups.spad: ${IN}/expr2ups.spad.pamphlet
-	@ echo 0 making ${MID}/expr2ups.spad from ${IN}/expr2ups.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/expr2ups.spad.pamphlet >expr2ups.spad )
-
-@
 <<EXPR2UPS.o (O from NRLIB)>>=
 ${OUT}/EXPR2UPS.o: ${MID}/EXPR2UPS.NRLIB
 	@ echo 0 making ${OUT}/EXPR2UPS.o from ${MID}/EXPR2UPS.NRLIB
@@ -11388,13 +10790,6 @@
 
 @
 \subsection{exprode.spad \cite{1}}
-<<exprode.spad (SPAD from IN)>>=
-${MID}/exprode.spad: ${IN}/exprode.spad.pamphlet
-	@ echo 0 making ${MID}/exprode.spad from ${IN}/exprode.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/exprode.spad.pamphlet >exprode.spad )
-
-@
 <<EXPRODE.o (O from NRLIB)>>=
 ${OUT}/EXPRODE.o: ${MID}/EXPRODE.NRLIB
 	@ echo 0 making ${OUT}/EXPRODE.o from ${MID}/EXPRODE.NRLIB
@@ -11427,13 +10822,6 @@
 
 @
 \subsection{expr.spad \cite{1}}
-<<expr.spad (SPAD from IN)>>=
-${MID}/expr.spad: ${IN}/expr.spad.pamphlet
-	@ echo 0 making ${MID}/expr.spad from ${IN}/expr.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/expr.spad.pamphlet >expr.spad )
-
-@
 <<EXPR.o (O from NRLIB)>>=
 ${OUT}/EXPR.o: ${MID}/EXPR.NRLIB
 	@ echo 0 making ${OUT}/EXPR.o from ${MID}/EXPR.NRLIB
@@ -11626,13 +11014,6 @@
 
 @
 \subsection{f01.spad \cite{1}}
-<<f01.spad (SPAD from IN)>>=
-${MID}/f01.spad: ${IN}/f01.spad.pamphlet
-	@ echo 0 making ${MID}/f01.spad from ${IN}/f01.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/f01.spad.pamphlet >f01.spad )
-
-@
 <<NAGF01.o (O from NRLIB)>>=
 ${OUT}/NAGF01.o: ${MID}/NAGF01.NRLIB
 	@ echo 0 making ${OUT}/NAGF01.o from ${MID}/NAGF01.NRLIB
@@ -11665,13 +11046,6 @@
 
 @
 \subsection{f02.spad \cite{1}}
-<<f02.spad (SPAD from IN)>>=
-${MID}/f02.spad: ${IN}/f02.spad.pamphlet
-	@ echo 0 making ${MID}/f02.spad from ${IN}/f02.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/f02.spad.pamphlet >f02.spad )
-
-@
 <<NAGF02.o (O from NRLIB)>>=
 ${OUT}/NAGF02.o: ${MID}/NAGF02.NRLIB
 	@ echo 0 making ${OUT}/NAGF02.o from ${MID}/NAGF02.NRLIB
@@ -11704,13 +11078,6 @@
 
 @
 \subsection{f04.spad \cite{1}}
-<<f04.spad (SPAD from IN)>>=
-${MID}/f04.spad: ${IN}/f04.spad.pamphlet
-	@ echo 0 making ${MID}/f04.spad from ${IN}/f04.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/f04.spad.pamphlet >f04.spad )
-
-@
 <<NAGF04.o (O from NRLIB)>>=
 ${OUT}/NAGF04.o: ${MID}/NAGF04.NRLIB
 	@ echo 0 making ${OUT}/NAGF04.o from ${MID}/NAGF04.NRLIB
@@ -11743,13 +11110,6 @@
 
 @
 \subsection{f07.spad \cite{1}}
-<<f07.spad (SPAD from IN)>>=
-${MID}/f07.spad: ${IN}/f07.spad.pamphlet
-	@ echo 0 making ${MID}/f07.spad from ${IN}/f07.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/f07.spad.pamphlet >f07.spad )
-
-@
 <<NAGF07.o (O from NRLIB)>>=
 ${OUT}/NAGF07.o: ${MID}/NAGF07.NRLIB
 	@ echo 0 making ${OUT}/NAGF07.o from ${MID}/NAGF07.NRLIB
@@ -11782,13 +11142,6 @@
 
 @
 \subsection{facutil.spad \cite{1}}
-<<facutil.spad (SPAD from IN)>>=
-${MID}/facutil.spad: ${IN}/facutil.spad.pamphlet
-	@ echo 0 making ${MID}/facutil.spad from ${IN}/facutil.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/facutil.spad.pamphlet >facutil.spad )
-
-@
 <<FACUTIL.o (O from NRLIB)>>=
 ${OUT}/FACUTIL.o: ${MID}/FACUTIL.NRLIB
 	@ echo 0 making ${OUT}/FACUTIL.o from ${MID}/FACUTIL.NRLIB
@@ -11841,13 +11194,6 @@
 
 @
 \subsection{ffcat.spad \cite{1}}
-<<ffcat.spad (SPAD from IN)>>=
-${MID}/ffcat.spad: ${IN}/ffcat.spad.pamphlet
-	@ echo 0 making ${MID}/ffcat.spad from ${IN}/ffcat.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/ffcat.spad.pamphlet >ffcat.spad )
-
-@
 <<DLP.o (O from NRLIB)>>=
 ${OUT}/DLP.o: ${MID}/DLP.NRLIB
 	@ echo 0 making ${OUT}/DLP.o from ${MID}/DLP.NRLIB
@@ -12062,13 +11408,6 @@
 
 @
 \subsection{ffcg.spad \cite{1}}
-<<ffcg.spad (SPAD from IN)>>=
-${MID}/ffcg.spad: ${IN}/ffcg.spad.pamphlet
-	@ echo 0 making ${MID}/ffcg.spad from ${IN}/ffcg.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/ffcg.spad.pamphlet >ffcg.spad )
-
-@
 <<FFCG.o (O from NRLIB)>>=
 ${OUT}/FFCG.o: ${MID}/FFCG.NRLIB
 	@ echo 0 making ${OUT}/FFCG.o from ${MID}/FFCG.NRLIB
@@ -12141,13 +11480,6 @@
 
 @
 \subsection{fff.spad \cite{1}}
-<<fff.spad (SPAD from IN)>>=
-${MID}/fff.spad: ${IN}/fff.spad.pamphlet
-	@ echo 0 making ${MID}/fff.spad from ${IN}/fff.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/fff.spad.pamphlet >fff.spad )
-
-@
 <<FFF.o (O from NRLIB)>>=
 ${OUT}/FFF.o: ${MID}/FFF.NRLIB
 	@ echo 0 making ${OUT}/FFF.o from ${MID}/FFF.NRLIB
@@ -12180,13 +11512,6 @@
 
 @
 \subsection{ffhom.spad \cite{1}}
-<<ffhom.spad (SPAD from IN)>>=
-${MID}/ffhom.spad: ${IN}/ffhom.spad.pamphlet
-	@ echo 0 making ${MID}/ffhom.spad from ${IN}/ffhom.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/ffhom.spad.pamphlet >ffhom.spad )
-
-@
 <<FFHOM.o (O from NRLIB)>>=
 ${OUT}/FFHOM.o: ${MID}/FFHOM.NRLIB
 	@ echo 0 making ${OUT}/FFHOM.o from ${MID}/FFHOM.NRLIB
@@ -12219,13 +11544,6 @@
 
 @
 \subsection{ffnb.spad \cite{1}}
-<<ffnb.spad (SPAD from IN)>>=
-${MID}/ffnb.spad: ${IN}/ffnb.spad.pamphlet
-	@ echo 0 making ${MID}/ffnb.spad from ${IN}/ffnb.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/ffnb.spad.pamphlet >ffnb.spad )
-
-@
 <<FFNB.o (O from NRLIB)>>=
 ${OUT}/FFNB.o: ${MID}/FFNB.NRLIB
 	@ echo 0 making ${OUT}/FFNB.o from ${MID}/FFNB.NRLIB
@@ -12318,13 +11636,6 @@
 
 @
 \subsection{ffpoly2.spad \cite{1}}
-<<ffpoly2.spad (SPAD from IN)>>=
-${MID}/ffpoly2.spad: ${IN}/ffpoly2.spad.pamphlet
-	@ echo 0 making ${MID}/ffpoly2.spad from ${IN}/ffpoly2.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/ffpoly2.spad.pamphlet >ffpoly2.spad )
-
-@
 <<FFPOLY2.o (O from NRLIB)>>=
 ${OUT}/FFPOLY2.o: ${MID}/FFPOLY2.NRLIB
 	@ echo 0 making ${OUT}/FFPOLY2.o from ${MID}/FFPOLY2.NRLIB
@@ -12357,13 +11668,6 @@
 
 @
 \subsection{ffpoly.spad \cite{1}}
-<<ffpoly.spad (SPAD from IN)>>=
-${MID}/ffpoly.spad: ${IN}/ffpoly.spad.pamphlet
-	@ echo 0 making ${MID}/ffpoly.spad from ${IN}/ffpoly.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/ffpoly.spad.pamphlet >ffpoly.spad )
-
-@
 <<FFPOLY.o (O from NRLIB)>>=
 ${OUT}/FFPOLY.o: ${MID}/FFPOLY.NRLIB
 	@ echo 0 making ${OUT}/FFPOLY.o from ${MID}/FFPOLY.NRLIB
@@ -12396,13 +11700,6 @@
 
 @
 \subsection{ffp.spad \cite{1}}
-<<ffp.spad (SPAD from IN)>>=
-${MID}/ffp.spad: ${IN}/ffp.spad.pamphlet
-	@ echo 0 making ${MID}/ffp.spad from ${IN}/ffp.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/ffp.spad.pamphlet >ffp.spad )
-
-@
 <<IFF.o (O from NRLIB)>>=
 ${OUT}/IFF.o: ${MID}/IFF.NRLIB
 	@ echo 0 making ${OUT}/IFF.o from ${MID}/IFF.NRLIB
@@ -12514,13 +11811,6 @@
 
 @
 \subsection{ffx.spad \cite{1}}
-<<ffx.spad (SPAD from IN)>>=
-${MID}/ffx.spad: ${IN}/ffx.spad.pamphlet
-	@ echo 0 making ${MID}/ffx.spad from ${IN}/ffx.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/ffx.spad.pamphlet >ffx.spad )
-
-@
 <<IRREDFFX.o (O from NRLIB)>>=
 ${OUT}/IRREDFFX.o: ${MID}/IRREDFFX.NRLIB
 	@ echo 0 making ${OUT}/IRREDFFX.o from ${MID}/IRREDFFX.NRLIB
@@ -12553,13 +11843,6 @@
 
 @
 \subsection{files.spad \cite{1}}
-<<files.spad (SPAD from IN)>>=
-${MID}/files.spad: ${IN}/files.spad.pamphlet
-	@ echo 0 making ${MID}/files.spad from ${IN}/files.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/files.spad.pamphlet >files.spad )
-
-@
 <<BINFILE.o (O from NRLIB)>>=
 ${OUT}/BINFILE.o: ${MID}/BINFILE.NRLIB
 	@ echo 0 making ${OUT}/BINFILE.o from ${MID}/BINFILE.NRLIB
@@ -12692,13 +11975,6 @@
 
 @
 \subsection{float.spad \cite{1}}
-<<float.spad (SPAD from IN)>>=
-${MID}/float.spad: ${IN}/float.spad.pamphlet
-	@ echo 0 making ${MID}/float.spad from ${IN}/float.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/float.spad.pamphlet >float.spad )
-
-@
 <<FLOAT.o (O from NRLIB)>>=
 ${OUT}/FLOAT.o: ${MID}/FLOAT.NRLIB
 	@ echo 0 making ${OUT}/FLOAT.o from ${MID}/FLOAT.NRLIB
@@ -12731,13 +12007,6 @@
 
 @
 \subsection{fmod.spad \cite{1}}
-<<fmod.spad (SPAD from IN)>>=
-${MID}/fmod.spad: ${IN}/fmod.spad.pamphlet
-	@ echo 0 making ${MID}/fmod.spad from ${IN}/fmod.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/fmod.spad.pamphlet >fmod.spad )
-
-@
 <<ZMOD.o (O from NRLIB)>>=
 ${OUT}/ZMOD.o: ${MID}/ZMOD.NRLIB
 	@ echo 0 making ${OUT}/ZMOD.o from ${MID}/ZMOD.NRLIB
@@ -12770,13 +12039,6 @@
 
 @
 \subsection{fname.spad \cite{1}}
-<<fname.spad (SPAD from IN)>>=
-${MID}/fname.spad: ${IN}/fname.spad.pamphlet
-	@ echo 0 making ${MID}/fname.spad from ${IN}/fname.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/fname.spad.pamphlet >fname.spad )
-
-@
 <<FNAME.o (O from NRLIB)>>=
 ${OUT}/FNAME.o: ${MID}/FNAME.NRLIB
 	@ echo 0 making ${OUT}/FNAME.o from ${MID}/FNAME.NRLIB
@@ -12829,13 +12091,6 @@
 
 @
 \subsection{fnla.spad \cite{1}}
-<<fnla.spad (SPAD from IN)>>=
-${MID}/fnla.spad: ${IN}/fnla.spad.pamphlet
-	@ echo 0 making ${MID}/fnla.spad from ${IN}/fnla.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/fnla.spad.pamphlet >fnla.spad )
-
-@
 <<COMM.o (O from NRLIB)>>=
 ${OUT}/COMM.o: ${MID}/COMM.NRLIB
 	@ echo 0 making ${OUT}/COMM.o from ${MID}/COMM.NRLIB
@@ -12928,13 +12183,6 @@
 
 @
 \subsection{formula.spad \cite{1}}
-<<formula.spad (SPAD from IN)>>=
-${MID}/formula.spad: ${IN}/formula.spad.pamphlet
-	@ echo 0 making ${MID}/formula.spad from ${IN}/formula.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/formula.spad.pamphlet >formula.spad )
-
-@
 <<FORMULA.o (O from NRLIB)>>=
 ${OUT}/FORMULA.o: ${MID}/FORMULA.NRLIB
 	@ echo 0 making ${OUT}/FORMULA.o from ${MID}/FORMULA.NRLIB
@@ -12987,13 +12235,6 @@
 
 @
 \subsection{fortcat.spad \cite{1}}
-<<fortcat.spad (SPAD from IN)>>=
-${MID}/fortcat.spad: ${IN}/fortcat.spad.pamphlet
-	@ echo 0 making ${MID}/fortcat.spad from ${IN}/fortcat.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/fortcat.spad.pamphlet >fortcat.spad )
-
-@
 <<FMTC.o (O from NRLIB)>>=
 ${OUT}/FMTC.o: ${MID}/FMTC.NRLIB
 	@ echo 0 making ${OUT}/FMTC.o from ${MID}/FMTC.NRLIB
@@ -13146,13 +12387,6 @@
 
 @
 \subsection{fortmac.spad \cite{1}}
-<<fortmac.spad (SPAD from IN)>>=
-${MID}/fortmac.spad: ${IN}/fortmac.spad.pamphlet
-	@ echo 0 making ${MID}/fortmac.spad from ${IN}/fortmac.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/fortmac.spad.pamphlet >fortmac.spad )
-
-@
 <<MCMPLX.o (O from NRLIB)>>=
 ${OUT}/MCMPLX.o: ${MID}/MCMPLX.NRLIB
 	@ echo 0 making ${OUT}/MCMPLX.o from ${MID}/MCMPLX.NRLIB
@@ -13225,13 +12459,6 @@
 
 @
 \subsection{fortpak.spad \cite{1}}
-<<fortpak.spad (SPAD from IN)>>=
-${MID}/fortpak.spad: ${IN}/fortpak.spad.pamphlet
-	@ echo 0 making ${MID}/fortpak.spad from ${IN}/fortpak.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/fortpak.spad.pamphlet >fortpak.spad )
-
-@
 <<FCPAK1.o (O from NRLIB)>>=
 ${OUT}/FCPAK1.o: ${MID}/FCPAK1.NRLIB
 	@ echo 0 making ${OUT}/FCPAK1.o from ${MID}/FCPAK1.NRLIB
@@ -13364,13 +12591,6 @@
 
 @
 \subsection{fortran.spad \cite{1}}
-<<fortran.spad (SPAD from IN)>>=
-${MID}/fortran.spad: ${IN}/fortran.spad.pamphlet
-	@ echo 0 making ${MID}/fortran.spad from ${IN}/fortran.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/fortran.spad.pamphlet >fortran.spad )
-
-@
 <<FC.o (O from NRLIB)>>=
 ${OUT}/FC.o: ${MID}/FC.NRLIB
 	@ echo 0 making ${OUT}/FC.o from ${MID}/FC.NRLIB
@@ -13543,13 +12763,6 @@
 
 @
 \subsection{forttyp.spad \cite{1}}
-<<forttyp.spad (SPAD from IN)>>=
-${MID}/forttyp.spad: ${IN}/forttyp.spad.pamphlet
-	@ echo 0 making ${MID}/forttyp.spad from ${IN}/forttyp.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/forttyp.spad.pamphlet >forttyp.spad )
-
-@
 <<FST.o (O from NRLIB)>>=
 ${OUT}/FST.o: ${MID}/FST.NRLIB
 	@ echo 0 making ${OUT}/FST.o from ${MID}/FST.NRLIB
@@ -13642,13 +12855,6 @@
 
 @
 \subsection{fourier.spad \cite{1}}
-<<fourier.spad (SPAD from IN)>>=
-${MID}/fourier.spad: ${IN}/fourier.spad.pamphlet
-	@ echo 0 making ${MID}/fourier.spad from ${IN}/fourier.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/fourier.spad.pamphlet >fourier.spad )
-
-@
 <<FCOMP.o (O from NRLIB)>>=
 ${OUT}/FCOMP.o: ${MID}/FCOMP.NRLIB
 	@ echo 0 making ${OUT}/FCOMP.o from ${MID}/FCOMP.NRLIB
@@ -13701,13 +12907,6 @@
 
 @
 \subsection{fparfrac.spad \cite{1}}
-<<fparfrac.spad (SPAD from IN)>>=
-${MID}/fparfrac.spad: ${IN}/fparfrac.spad.pamphlet
-	@ echo 0 making ${MID}/fparfrac.spad from ${IN}/fparfrac.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/fparfrac.spad.pamphlet >fparfrac.spad )
-
-@
 <<FPARFRAC.o (O from NRLIB)>>=
 ${OUT}/FPARFRAC.o: ${MID}/FPARFRAC.NRLIB
 	@ echo 0 making ${OUT}/FPARFRAC.o from ${MID}/FPARFRAC.NRLIB
@@ -13740,13 +12939,6 @@
 
 @
 \subsection{fraction.spad \cite{1}}
-<<fraction.spad (SPAD from IN)>>=
-${MID}/fraction.spad: ${IN}/fraction.spad.pamphlet
-	@ echo 0 making ${MID}/fraction.spad from ${IN}/fraction.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/fraction.spad.pamphlet >fraction.spad )
-
-@
 <<FRAC.o (O from NRLIB)>>=
 ${OUT}/FRAC.o: ${MID}/FRAC.NRLIB
 	@ echo 0 making ${OUT}/FRAC.o from ${MID}/FRAC.NRLIB
@@ -13945,13 +13137,6 @@
 
 @
 \subsection{free.spad \cite{1}}
-<<free.spad (SPAD from IN)>>=
-${MID}/free.spad: ${IN}/free.spad.pamphlet
-	@ echo 0 making ${MID}/free.spad from ${IN}/free.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/free.spad.pamphlet >free.spad )
-
-@
 <<FAGROUP.o (O from NRLIB)>>=
 ${OUT}/FAGROUP.o: ${MID}/FAGROUP.NRLIB
 	@ echo 0 making ${OUT}/FAGROUP.o from ${MID}/FAGROUP.NRLIB
@@ -14104,13 +13289,6 @@
 
 @
 \subsection{fr.spad \cite{1}}
-<<fr.spad (SPAD from IN)>>=
-${MID}/fr.spad: ${IN}/fr.spad.pamphlet
-	@ echo 0 making ${MID}/fr.spad from ${IN}/fr.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/fr.spad.pamphlet >fr.spad )
-
-@
 <<FR.o (O from NRLIB)>>=
 ${OUT}/FR.o: ${MID}/FR.NRLIB
 	@ echo 0 making ${OUT}/FR.o from ${MID}/FR.NRLIB
@@ -14183,13 +13361,6 @@
 
 @
 \subsection{fs2expxp.spad \cite{1}}
-<<fs2expxp.spad (SPAD from IN)>>=
-${MID}/fs2expxp.spad: ${IN}/fs2expxp.spad.pamphlet
-	@ echo 0 making ${MID}/fs2expxp.spad from ${IN}/fs2expxp.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/fs2expxp.spad.pamphlet >fs2expxp.spad )
-
-@
 <<FS2EXPXP.o (O from NRLIB)>>=
 ${OUT}/FS2EXPXP.o: ${MID}/FS2EXPXP.NRLIB
 	@ echo 0 making ${OUT}/FS2EXPXP.o from ${MID}/FS2EXPXP.NRLIB
@@ -14222,13 +13393,6 @@
 
 @
 \subsection{fs2ups.spad \cite{1}}
-<<fs2ups.spad (SPAD from IN)>>=
-${MID}/fs2ups.spad: ${IN}/fs2ups.spad.pamphlet
-	@ echo 0 making ${MID}/fs2ups.spad from ${IN}/fs2ups.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/fs2ups.spad.pamphlet >fs2ups.spad )
-
-@
 <<FS2UPS.o (O from NRLIB)>>=
 ${OUT}/FS2UPS.o: ${MID}/FS2UPS.NRLIB
 	@ echo 0 making ${OUT}/FS2UPS.o from ${MID}/FS2UPS.NRLIB
@@ -14261,13 +13425,6 @@
 
 @
 \subsection{fspace.spad \cite{1}}
-<<fspace.spad (SPAD from IN)>>=
-${MID}/fspace.spad: ${IN}/fspace.spad.pamphlet
-	@ echo 0 making ${MID}/fspace.spad from ${IN}/fspace.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/fspace.spad.pamphlet >fspace.spad )
-
-@
 <<ES-.o (O from NRLIB)>>=
 ${OUT}/ES-.o: ${MID}/ES.NRLIB
 	@ echo 0 making ${OUT}/ES-.o from ${MID}/ES-.NRLIB
@@ -14438,13 +13595,6 @@
 
 @
 \subsection{funcpkgs.spad \cite{1}}
-<<funcpkgs.spad (SPAD from IN)>>=
-${MID}/funcpkgs.spad: ${IN}/funcpkgs.spad.pamphlet
-	@ echo 0 making ${MID}/funcpkgs.spad from ${IN}/funcpkgs.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/funcpkgs.spad.pamphlet >funcpkgs.spad )
-
-@
 <<FSUPFACT.o (O from NRLIB)>>=
 ${OUT}/FSUPFACT.o: ${MID}/FSUPFACT.NRLIB
 	@ echo 0 making ${OUT}/FSUPFACT.o from ${MID}/FSUPFACT.NRLIB
@@ -14477,13 +13627,6 @@
 
 @
 \subsection{functions.spad \cite{1}}
-<<functions.spad (SPAD from IN)>>=
-${MID}/functions.spad: ${IN}/functions.spad.pamphlet
-	@ echo 0 making ${MID}/functions.spad from ${IN}/functions.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/functions.spad.pamphlet >functions.spad )
-
-@
 <<BFUNCT.o (O from NRLIB)>>=
 ${OUT}/BFUNCT.o: ${MID}/BFUNCT.NRLIB
 	@ echo 0 making ${OUT}/BFUNCT.o from ${MID}/BFUNCT.NRLIB
@@ -14516,13 +13659,6 @@
 
 @
 \subsection{galfact.spad \cite{1}}
-<<galfact.spad (SPAD from IN)>>=
-${MID}/galfact.spad: ${IN}/galfact.spad.pamphlet
-	@ echo 0 making ${MID}/galfact.spad from ${IN}/galfact.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/galfact.spad.pamphlet >galfact.spad )
-
-@
 <<GALFACT.o (O from NRLIB)>>=
 ${OUT}/GALFACT.o: ${MID}/GALFACT.NRLIB
 	@ echo 0 making ${OUT}/GALFACT.o from ${MID}/GALFACT.NRLIB
@@ -14555,13 +13691,6 @@
 
 @
 \subsection{galfactu.spad \cite{1}}
-<<galfactu.spad (SPAD from IN)>>=
-${MID}/galfactu.spad: ${IN}/galfactu.spad.pamphlet
-	@ echo 0 making ${MID}/galfactu.spad from ${IN}/galfactu.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/galfactu.spad.pamphlet >galfactu.spad )
-
-@
 <<GALFACTU.o (O from NRLIB)>>=
 ${OUT}/GALFACTU.o: ${MID}/GALFACTU.NRLIB
 	@ echo 0 making ${OUT}/GALFACTU.o from ${MID}/GALFACTU.NRLIB
@@ -14594,13 +13723,6 @@
 
 @
 \subsection{galpolyu.spad \cite{1}}
-<<galpolyu.spad (SPAD from IN)>>=
-${MID}/galpolyu.spad: ${IN}/galpolyu.spad.pamphlet
-	@ echo 0 making ${MID}/galpolyu.spad from ${IN}/galpolyu.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/galpolyu.spad.pamphlet >galpolyu.spad )
-
-@
 <<GALPOLYU.o (O from NRLIB)>>=
 ${OUT}/GALPOLYU.o: ${MID}/GALPOLYU.NRLIB
 	@ echo 0 making ${OUT}/GALPOLYU.o from ${MID}/GALPOLYU.NRLIB
@@ -14633,13 +13755,6 @@
 
 @
 \subsection{galutil.spad \cite{1}}
-<<galutil.spad (SPAD from IN)>>=
-${MID}/galutil.spad: ${IN}/galutil.spad.pamphlet
-	@ echo 0 making ${MID}/galutil.spad from ${IN}/galutil.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/galutil.spad.pamphlet >galutil.spad )
-
-@
 <<GALUTIL.o (O from NRLIB)>>=
 ${OUT}/GALUTIL.o: ${MID}/GALUTIL.NRLIB
 	@ echo 0 making ${OUT}/GALUTIL.o from ${MID}/GALUTIL.NRLIB
@@ -14672,13 +13787,6 @@
 
 @
 \subsection{gaussfac.spad \cite{1}}
-<<gaussfac.spad (SPAD from IN)>>=
-${MID}/gaussfac.spad: ${IN}/gaussfac.spad.pamphlet
-	@ echo 0 making ${MID}/gaussfac.spad from ${IN}/gaussfac.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/gaussfac.spad.pamphlet >gaussfac.spad )
-
-@
 <<GAUSSFAC.o (O from NRLIB)>>=
 ${OUT}/GAUSSFAC.o: ${MID}/GAUSSFAC.NRLIB
 	@ echo 0 making ${OUT}/GAUSSFAC.o from ${MID}/GAUSSFAC.NRLIB
@@ -14711,13 +13819,6 @@
 
 @
 \subsection{gaussian.spad \cite{1}}
-<<gaussian.spad (SPAD from IN)>>=
-${MID}/gaussian.spad: ${IN}/gaussian.spad.pamphlet
-	@ echo 0 making ${MID}/gaussian.spad from ${IN}/gaussian.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/gaussian.spad.pamphlet >gaussian.spad )
-
-@
 <<CINTSLPE.o (O from NRLIB)>>=
 ${OUT}/CINTSLPE.o: ${MID}/CINTSLPE.NRLIB
 	@ echo 0 making ${OUT}/CINTSLPE.o from ${MID}/CINTSLPE.NRLIB
@@ -14882,13 +13983,6 @@
 
 @
 \subsection{gbeuclid.spad \cite{1}}
-<<gbeuclid.spad (SPAD from IN)>>=
-${MID}/gbeuclid.spad: ${IN}/gbeuclid.spad.pamphlet
-	@ echo 0 making ${MID}/gbeuclid.spad from ${IN}/gbeuclid.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/gbeuclid.spad.pamphlet >gbeuclid.spad )
-
-@
 <<GBEUCLID.o (O from NRLIB)>>=
 ${OUT}/GBEUCLID.o: ${MID}/GBEUCLID.NRLIB
 	@ echo 0 making ${OUT}/GBEUCLID.o from ${MID}/GBEUCLID.NRLIB
@@ -14921,13 +14015,6 @@
 
 @
 \subsection{gbintern.spad \cite{1}}
-<<gbintern.spad (SPAD from IN)>>=
-${MID}/gbintern.spad: ${IN}/gbintern.spad.pamphlet
-	@ echo 0 making ${MID}/gbintern.spad from ${IN}/gbintern.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/gbintern.spad.pamphlet >gbintern.spad )
-
-@
 <<GBINTERN.o (O from NRLIB)>>=
 ${OUT}/GBINTERN.o: ${MID}/GBINTERN.NRLIB
 	@ echo 0 making ${OUT}/GBINTERN.o from ${MID}/GBINTERN.NRLIB
@@ -14960,13 +14047,6 @@
 
 @
 \subsection{gb.spad \cite{1}}
-<<gb.spad (SPAD from IN)>>=
-${MID}/gb.spad: ${IN}/gb.spad.pamphlet
-	@ echo 0 making ${MID}/gb.spad from ${IN}/gb.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/gb.spad.pamphlet >gb.spad )
-
-@
 <<GB.o (O from NRLIB)>>=
 ${OUT}/GB.o: ${MID}/GB.NRLIB
 	@ echo 0 making ${OUT}/GB.o from ${MID}/GB.NRLIB
@@ -14999,13 +14079,6 @@
 
 @
 \subsection{gdirprod.spad \cite{1}}
-<<gdirprod.spad (SPAD from IN)>>=
-${MID}/gdirprod.spad: ${IN}/gdirprod.spad.pamphlet
-	@ echo 0 making ${MID}/gdirprod.spad from ${IN}/gdirprod.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/gdirprod.spad.pamphlet >gdirprod.spad )
-
-@
 <<HDP.o (O from NRLIB)>>=
 ${OUT}/HDP.o: ${MID}/HDP.NRLIB
 	@ echo 0 making ${OUT}/HDP.o from ${MID}/HDP.NRLIB
@@ -15098,13 +14171,6 @@
 
 @
 \subsection{gdpoly.spad \cite{1}}
-<<gdpoly.spad (SPAD from IN)>>=
-${MID}/gdpoly.spad: ${IN}/gdpoly.spad.pamphlet
-	@ echo 0 making ${MID}/gdpoly.spad from ${IN}/gdpoly.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/gdpoly.spad.pamphlet >gdpoly.spad )
-
-@
 <<DMP.o (O from NRLIB)>>=
 ${OUT}/DMP.o: ${MID}/DMP.NRLIB
 	@ echo 0 making ${OUT}/DMP.o from ${MID}/DMP.NRLIB
@@ -15177,13 +14243,6 @@
 
 @
 \subsection{geneez.spad \cite{1}}
-<<geneez.spad (SPAD from IN)>>=
-${MID}/geneez.spad: ${IN}/geneez.spad.pamphlet
-	@ echo 0 making ${MID}/geneez.spad from ${IN}/geneez.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/geneez.spad.pamphlet >geneez.spad )
-
-@
 <<GENEEZ.o (O from NRLIB)>>=
 ${OUT}/GENEEZ.o: ${MID}/GENEEZ.NRLIB
 	@ echo 0 making ${OUT}/GENEEZ.o from ${MID}/GENEEZ.NRLIB
@@ -15216,13 +14275,6 @@
 
 @
 \subsection{generic.spad \cite{1}}
-<<generic.spad (SPAD from IN)>>=
-${MID}/generic.spad: ${IN}/generic.spad.pamphlet
-	@ echo 0 making ${MID}/generic.spad from ${IN}/generic.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/generic.spad.pamphlet >generic.spad )
-
-@
 <<CVMP.o (O from NRLIB)>>=
 ${OUT}/CVMP.o: ${MID}/CVMP.NRLIB
 	@ echo 0 making ${OUT}/CVMP.o from ${MID}/CVMP.NRLIB
@@ -15275,13 +14327,6 @@
 
 @
 \subsection{genufact.spad \cite{1}}
-<<genufact.spad (SPAD from IN)>>=
-${MID}/genufact.spad: ${IN}/genufact.spad.pamphlet
-	@ echo 0 making ${MID}/genufact.spad from ${IN}/genufact.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/genufact.spad.pamphlet >genufact.spad )
-
-@
 <<GENUFACT.o (O from NRLIB)>>=
 ${OUT}/GENUFACT.o: ${MID}/GENUFACT.NRLIB
 	@ echo 0 making ${OUT}/GENUFACT.o from ${MID}/GENUFACT.NRLIB
@@ -15314,13 +14359,6 @@
 
 @
 \subsection{genups.spad \cite{1}}
-<<genups.spad (SPAD from IN)>>=
-${MID}/genups.spad: ${IN}/genups.spad.pamphlet
-	@ echo 0 making ${MID}/genups.spad from ${IN}/genups.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/genups.spad.pamphlet >genups.spad )
-
-@
 <<GENUPS.o (O from NRLIB)>>=
 ${OUT}/GENUPS.o: ${MID}/GENUPS.NRLIB
 	@ echo 0 making ${OUT}/GENUPS.o from ${MID}/GENUPS.NRLIB
@@ -15353,13 +14391,6 @@
 
 @
 \subsection{ghensel.spad \cite{1}}
-<<ghensel.spad (SPAD from IN)>>=
-${MID}/ghensel.spad: ${IN}/ghensel.spad.pamphlet
-	@ echo 0 making ${MID}/ghensel.spad from ${IN}/ghensel.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/ghensel.spad.pamphlet >ghensel.spad )
-
-@
 <<GHENSEL.o (O from NRLIB)>>=
 ${OUT}/GHENSEL.o: ${MID}/GHENSEL.NRLIB
 	@ echo 0 making ${OUT}/GHENSEL.o from ${MID}/GHENSEL.NRLIB
@@ -15392,13 +14423,6 @@
 
 @
 \subsection{gpgcd.spad \cite{1}}
-<<gpgcd.spad (SPAD from IN)>>=
-${MID}/gpgcd.spad: ${IN}/gpgcd.spad.pamphlet
-	@ echo 0 making ${MID}/gpgcd.spad from ${IN}/gpgcd.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/gpgcd.spad.pamphlet >gpgcd.spad )
-
-@
 <<GENPGCD.o (O from NRLIB)>>=
 ${OUT}/GENPGCD.o: ${MID}/GENPGCD.NRLIB
 	@ echo 0 making ${OUT}/GENPGCD.o from ${MID}/GENPGCD.NRLIB
@@ -15431,13 +14455,6 @@
 
 @
 \subsection{gpol.spad \cite{1}}
-<<gpol.spad (SPAD from IN)>>=
-${MID}/gpol.spad: ${IN}/gpol.spad.pamphlet
-	@ echo 0 making ${MID}/gpol.spad from ${IN}/gpol.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/gpol.spad.pamphlet >gpol.spad )
-
-@
 <<LAUPOL.o (O from NRLIB)>>=
 ${OUT}/LAUPOL.o: ${MID}/LAUPOL.NRLIB
 	@ echo 0 making ${OUT}/LAUPOL.o from ${MID}/LAUPOL.NRLIB
@@ -15470,13 +14487,6 @@
 
 @
 \subsection{grdef.spad \cite{1}}
-<<grdef.spad (SPAD from IN)>>=
-${MID}/grdef.spad: ${IN}/grdef.spad.pamphlet
-	@ echo 0 making ${MID}/grdef.spad from ${IN}/grdef.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/grdef.spad.pamphlet >grdef.spad )
-
-@
 <<GRDEF.o (O from NRLIB)>>=
 ${OUT}/GRDEF.o: ${MID}/GRDEF.NRLIB
 	@ echo 0 making ${OUT}/GRDEF.o from ${MID}/GRDEF.NRLIB
@@ -15509,13 +14519,6 @@
 
 @
 \subsection{groebf.spad \cite{1}}
-<<groebf.spad (SPAD from IN)>>=
-${MID}/groebf.spad: ${IN}/groebf.spad.pamphlet
-	@ echo 0 making ${MID}/groebf.spad from ${IN}/groebf.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/groebf.spad.pamphlet >groebf.spad )
-
-@
 <<GBF.o (O from NRLIB)>>=
 ${OUT}/GBF.o: ${MID}/GBF.NRLIB
 	@ echo 0 making ${OUT}/GBF.o from ${MID}/GBF.NRLIB
@@ -15548,13 +14551,6 @@
 
 @
 \subsection{groebsol.spad \cite{1}}
-<<groebsol.spad (SPAD from IN)>>=
-${MID}/groebsol.spad: ${IN}/groebsol.spad.pamphlet
-	@ echo 0 making ${MID}/groebsol.spad from ${IN}/groebsol.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/groebsol.spad.pamphlet >groebsol.spad )
-
-@
 <<GROEBSOL.o (O from NRLIB)>>=
 ${OUT}/GROEBSOL.o: ${MID}/GROEBSOL.NRLIB
 	@ echo 0 making ${OUT}/GROEBSOL.o from ${MID}/GROEBSOL.NRLIB
@@ -15587,13 +14583,6 @@
 
 @
 \subsection{gseries.spad \cite{1}}
-<<gseries.spad (SPAD from IN)>>=
-${MID}/gseries.spad: ${IN}/gseries.spad.pamphlet
-	@ echo 0 making ${MID}/gseries.spad from ${IN}/gseries.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/gseries.spad.pamphlet >gseries.spad )
-
-@
 <<GSERIES.o (O from NRLIB)>>=
 ${OUT}/GSERIES.o: ${MID}/GSERIES.NRLIB
 	@ echo 0 making ${OUT}/GSERIES.o from ${MID}/GSERIES.NRLIB
@@ -15645,13 +14634,6 @@
 
 @
 \subsection{ideal.spad \cite{1}}
-<<ideal.spad (SPAD from IN)>>=
-${MID}/ideal.spad: ${IN}/ideal.spad.pamphlet
-	@ echo 0 making ${MID}/ideal.spad from ${IN}/ideal.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/ideal.spad.pamphlet >ideal.spad )
-
-@
 <<IDEAL.o (O from NRLIB)>>=
 ${OUT}/IDEAL.o: ${MID}/IDEAL.NRLIB
 	@ echo 0 making ${OUT}/IDEAL.o from ${MID}/IDEAL.NRLIB
@@ -15684,13 +14666,6 @@
 
 @
 \subsection{idecomp.spad \cite{1}}
-<<idecomp.spad (SPAD from IN)>>=
-${MID}/idecomp.spad: ${IN}/idecomp.spad.pamphlet
-	@ echo 0 making ${MID}/idecomp.spad from ${IN}/idecomp.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/idecomp.spad.pamphlet >idecomp.spad )
-
-@
 <<IDECOMP.o (O from NRLIB)>>=
 ${OUT}/IDECOMP.o: ${MID}/IDECOMP.NRLIB
 	@ echo 0 making ${OUT}/IDECOMP.o from ${MID}/IDECOMP.NRLIB
@@ -15723,13 +14698,6 @@
 
 @
 \subsection{indexedp.spad \cite{1}}
-<<indexedp.spad (SPAD from IN)>>=
-${MID}/indexedp.spad: ${IN}/indexedp.spad.pamphlet
-	@ echo 0 making ${MID}/indexedp.spad from ${IN}/indexedp.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/indexedp.spad.pamphlet >indexedp.spad )
-
-@
 <<IDPAG.o (O from NRLIB)>>=
 ${OUT}/IDPAG.o: ${MID}/IDPAG.NRLIB
 	@ echo 0 making ${OUT}/IDPAG.o from ${MID}/IDPAG.NRLIB
@@ -15862,13 +14830,6 @@
 
 @
 \subsection{infprod.spad \cite{1}}
-<<infprod.spad (SPAD from IN)>>=
-${MID}/infprod.spad: ${IN}/infprod.spad.pamphlet
-	@ echo 0 making ${MID}/infprod.spad from ${IN}/infprod.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/infprod.spad.pamphlet >infprod.spad )
-
-@
 <<INFPROD0.o (O from NRLIB)>>=
 ${OUT}/INFPROD0.o: ${MID}/INFPROD0.NRLIB
 	@ echo 0 making ${OUT}/INFPROD0.o from ${MID}/INFPROD0.NRLIB
@@ -15961,13 +14922,6 @@
 
 @
 \subsection{intaf.spad \cite{1}}
-<<intaf.spad (SPAD from IN)>>=
-${MID}/intaf.spad: ${IN}/intaf.spad.pamphlet
-	@ echo 0 making ${MID}/intaf.spad from ${IN}/intaf.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/intaf.spad.pamphlet >intaf.spad )
-
-@
 <<INTAF.o (O from NRLIB)>>=
 ${OUT}/INTAF.o: ${MID}/INTAF.NRLIB
 	@ echo 0 making ${OUT}/INTAF.o from ${MID}/INTAF.NRLIB
@@ -16040,13 +14994,6 @@
 
 @
 \subsection{intalg.spad \cite{1}}
-<<intalg.spad (SPAD from IN)>>=
-${MID}/intalg.spad: ${IN}/intalg.spad.pamphlet
-	@ echo 0 making ${MID}/intalg.spad from ${IN}/intalg.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/intalg.spad.pamphlet >intalg.spad )
-
-@
 <<DBLRESP.o (O from NRLIB)>>=
 ${OUT}/DBLRESP.o: ${MID}/DBLRESP.NRLIB
 	@ echo 0 making ${OUT}/DBLRESP.o from ${MID}/DBLRESP.NRLIB
@@ -16119,13 +15066,6 @@
 
 @
 \subsection{intaux.spad \cite{1}}
-<<intaux.spad (SPAD from IN)>>=
-${MID}/intaux.spad: ${IN}/intaux.spad.pamphlet
-	@ echo 0 making ${MID}/intaux.spad from ${IN}/intaux.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/intaux.spad.pamphlet >intaux.spad )
-
-@
 <<IR.o (O from NRLIB)>>=
 ${OUT}/IR.o: ${MID}/IR.NRLIB
 	@ echo 0 making ${OUT}/IR.o from ${MID}/IR.NRLIB
@@ -16178,13 +15118,6 @@
 
 @
 \subsection{intclos.spad \cite{1}}
-<<intclos.spad (SPAD from IN)>>=
-${MID}/intclos.spad: ${IN}/intclos.spad.pamphlet
-	@ echo 0 making ${MID}/intclos.spad from ${IN}/intclos.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/intclos.spad.pamphlet >intclos.spad )
-
-@
 <<IBATOOL.o (O from NRLIB)>>=
 ${OUT}/IBATOOL.o: ${MID}/IBATOOL.NRLIB
 	@ echo 0 making ${OUT}/IBATOOL.o from ${MID}/IBATOOL.NRLIB
@@ -16297,13 +15230,6 @@
 
 @
 \subsection{intef.spad \cite{1}}
-<<intef.spad (SPAD from IN)>>=
-${MID}/intef.spad: ${IN}/intef.spad.pamphlet
-	@ echo 0 making ${MID}/intef.spad from ${IN}/intef.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/intef.spad.pamphlet >intef.spad )
-
-@
 <<INTEF.o (O from NRLIB)>>=
 ${OUT}/INTEF.o: ${MID}/INTEF.NRLIB
 	@ echo 0 making ${OUT}/INTEF.o from ${MID}/INTEF.NRLIB
@@ -16336,13 +15262,6 @@
 
 @
 \subsection{integer.spad \cite{1}}
-<<integer.spad (SPAD from IN)>>=
-${MID}/integer.spad: ${IN}/integer.spad.pamphlet
-	@ echo 0 making ${MID}/integer.spad from ${IN}/integer.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/integer.spad.pamphlet >integer.spad )
-
-@
 <<INT.o (O from NRLIB)>>=
 ${OUT}/INT.o: ${MID}/INT.NRLIB
 	@ echo 0 making ${OUT}/INT.o from ${MID}/INT.NRLIB
@@ -16506,13 +15425,6 @@
 
 @
 \subsection{integrat.spad \cite{1}}
-<<integrat.spad (SPAD from IN)>>=
-${MID}/integrat.spad: ${IN}/integrat.spad.pamphlet
-	@ echo 0 making ${MID}/integrat.spad from ${IN}/integrat.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/integrat.spad.pamphlet >integrat.spad )
-
-@
 <<FSCINT.o (O from NRLIB)>>=
 ${OUT}/FSCINT.o: ${MID}/FSCINT.NRLIB
 	@ echo 0 making ${OUT}/FSCINT.o from ${MID}/FSCINT.NRLIB
@@ -16603,13 +15515,6 @@
 
 @
 \subsection{interval.spad \cite{1}}
-<<interval.spad (SPAD from IN)>>=
-${MID}/interval.spad: ${IN}/interval.spad.pamphlet
-	@ echo 0 making ${MID}/interval.spad from ${IN}/interval.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/interval.spad.pamphlet >interval.spad )
-
-@
 <<INTCAT.o (O from NRLIB)>>=
 ${OUT}/INTCAT.o: ${MID}/INTCAT.NRLIB
 	@ echo 0 making ${OUT}/INTCAT.o from ${MID}/INTCAT.NRLIB
@@ -16662,13 +15567,6 @@
 
 @
 \subsection{intfact.spad \cite{1}}
-<<intfact.spad (SPAD from IN)>>=
-${MID}/intfact.spad: ${IN}/intfact.spad.pamphlet
-	@ echo 0 making ${MID}/intfact.spad from ${IN}/intfact.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/intfact.spad.pamphlet >intfact.spad )
-
-@
 <<INTFACT.o (O from NRLIB)>>=
 ${OUT}/INTFACT.o: ${MID}/INTFACT.NRLIB
 	@ echo 0 making ${OUT}/INTFACT.o from ${MID}/INTFACT.NRLIB
@@ -16741,13 +15639,6 @@
 
 @
 \subsection{intpm.spad \cite{1}}
-<<intpm.spad (SPAD from IN)>>=
-${MID}/intpm.spad: ${IN}/intpm.spad.pamphlet
-	@ echo 0 making ${MID}/intpm.spad from ${IN}/intpm.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/intpm.spad.pamphlet >intpm.spad )
-
-@
 <<INTPM.o (O from NRLIB)>>=
 ${OUT}/INTPM.o: ${MID}/INTPM.NRLIB
 	@ echo 0 making ${OUT}/INTPM.o from ${MID}/INTPM.NRLIB
@@ -16780,13 +15671,6 @@
 
 @
 \subsection{intrf.spad \cite{1}}
-<<intrf.spad (SPAD from IN)>>=
-${MID}/intrf.spad: ${IN}/intrf.spad.pamphlet
-	@ echo 0 making ${MID}/intrf.spad from ${IN}/intrf.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/intrf.spad.pamphlet >intrf.spad )
-
-@
 <<INTHERTR.o (O from NRLIB)>>=
 ${OUT}/INTHERTR.o: ${MID}/INTHERTR.NRLIB
 	@ echo 0 making ${OUT}/INTHERTR.o from ${MID}/INTHERTR.NRLIB
@@ -16983,6 +15867,7 @@
 	${SPADBIN}/notangle ${IN}/invutils.as.pamphlet >invutils.as )
 
 @
+
 <<invutils.as.dvi (DOC from IN)>>=
 ${DOC}/invutils.as.dvi: ${IN}/invutils.as.pamphlet
 	@ echo 0 making ${DOC}/invutils.as.dvi from ${IN}/invutils.as.pamphlet
@@ -16995,13 +15880,6 @@
 
 @
 \subsection{irexpand.spad \cite{1}}
-<<irexpand.spad (SPAD from IN)>>=
-${MID}/irexpand.spad: ${IN}/irexpand.spad.pamphlet
-	@ echo 0 making ${MID}/irexpand.spad from ${IN}/irexpand.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/irexpand.spad.pamphlet >irexpand.spad )
-
-@
 <<IR2F.o (O from NRLIB)>>=
 ${OUT}/IR2F.o: ${MID}/IR2F.NRLIB
 	@ echo 0 making ${OUT}/IR2F.o from ${MID}/IR2F.NRLIB
@@ -17054,13 +15932,6 @@
 
 @
 \subsection{irsn.spad \cite{1}}
-<<irsn.spad (SPAD from IN)>>=
-${MID}/irsn.spad: ${IN}/irsn.spad.pamphlet
-	@ echo 0 making ${MID}/irsn.spad from ${IN}/irsn.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/irsn.spad.pamphlet >irsn.spad )
-
-@
 <<IRSN.o (O from NRLIB)>>=
 ${OUT}/IRSN.o: ${MID}/IRSN.NRLIB
 	@ echo 0 making ${OUT}/IRSN.o from ${MID}/IRSN.NRLIB
@@ -17093,13 +15964,6 @@
 
 @
 \subsection{ituple.spad \cite{1}}
-<<ituple.spad (SPAD from IN)>>=
-${MID}/ituple.spad: ${IN}/ituple.spad.pamphlet
-	@ echo 0 making ${MID}/ituple.spad from ${IN}/ituple.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/ituple.spad.pamphlet >ituple.spad )
-
-@
 <<ITFUN2.o (O from NRLIB)>>=
 ${OUT}/ITFUN2.o: ${MID}/ITFUN2.NRLIB
 	@ echo 0 making ${OUT}/ITFUN2.o from ${MID}/ITFUN2.NRLIB
@@ -17191,13 +16055,6 @@
 
 @
 \subsection{kl.spad \cite{1}}
-<<kl.spad (SPAD from IN)>>=
-${MID}/kl.spad: ${IN}/kl.spad.pamphlet
-	@ echo 0 making ${MID}/kl.spad from ${IN}/kl.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/kl.spad.pamphlet >kl.spad )
-
-@
 <<CACHSET.o (O from NRLIB)>>=
 ${OUT}/CACHSET.o: ${MID}/CACHSET.NRLIB
 	@ echo 0 making ${OUT}/CACHSET.o from ${MID}/CACHSET.NRLIB
@@ -17310,13 +16167,6 @@
 
 @
 \subsection{kovacic.spad \cite{1}}
-<<kovacic.spad (SPAD from IN)>>=
-${MID}/kovacic.spad: ${IN}/kovacic.spad.pamphlet
-	@ echo 0 making ${MID}/kovacic.spad from ${IN}/kovacic.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/kovacic.spad.pamphlet >kovacic.spad )
-
-@
 <<KOVACIC.o (O from NRLIB)>>=
 ${OUT}/KOVACIC.o: ${MID}/KOVACIC.NRLIB
 	@ echo 0 making ${OUT}/KOVACIC.o from ${MID}/KOVACIC.NRLIB
@@ -17349,13 +16199,6 @@
 
 @
 \subsection{laplace.spad \cite{1}}
-<<laplace.spad (SPAD from IN)>>=
-${MID}/laplace.spad: ${IN}/laplace.spad.pamphlet
-	@ echo 0 making ${MID}/laplace.spad from ${IN}/laplace.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/laplace.spad.pamphlet >laplace.spad )
-
-@
 <<INVLAPLA.o (O from NRLIB)>>=
 ${OUT}/INVLAPLA.o: ${MID}/INVLAPLA.NRLIB
 	@ echo 0 making ${OUT}/INVLAPLA.o from ${MID}/INVLAPLA.NRLIB
@@ -17408,13 +16251,6 @@
 
 @
 \subsection{laurent.spad \cite{1}}
-<<laurent.spad (SPAD from IN)>>=
-${MID}/laurent.spad: ${IN}/laurent.spad.pamphlet
-	@ echo 0 making ${MID}/laurent.spad from ${IN}/laurent.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/laurent.spad.pamphlet >laurent.spad )
-
-@
 <<ULS.o (O from NRLIB)>>=
 ${OUT}/ULS.o: ${MID}/ULS.NRLIB
 	@ echo 0 making ${OUT}/ULS.o from ${MID}/ULS.NRLIB
@@ -17519,13 +16355,6 @@
 
 @
 \subsection{leadcdet.spad \cite{1}}
-<<leadcdet.spad (SPAD from IN)>>=
-${MID}/leadcdet.spad: ${IN}/leadcdet.spad.pamphlet
-	@ echo 0 making ${MID}/leadcdet.spad from ${IN}/leadcdet.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/leadcdet.spad.pamphlet >leadcdet.spad )
-
-@
 <<LEADCDET.o (O from NRLIB)>>=
 ${OUT}/LEADCDET.o: ${MID}/LEADCDET.NRLIB
 	@ echo 0 making ${OUT}/LEADCDET.o from ${MID}/LEADCDET.NRLIB
@@ -17558,13 +16387,6 @@
 
 @
 \subsection{lie.spad \cite{1}}
-<<lie.spad (SPAD from IN)>>=
-${MID}/lie.spad: ${IN}/lie.spad.pamphlet
-	@ echo 0 making ${MID}/lie.spad from ${IN}/lie.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/lie.spad.pamphlet >lie.spad )
-
-@
 <<JORDAN.o (O from NRLIB)>>=
 ${OUT}/JORDAN.o: ${MID}/JORDAN.NRLIB
 	@ echo 0 making ${OUT}/JORDAN.o from ${MID}/JORDAN.NRLIB
@@ -17637,13 +16459,6 @@
 
 @
 \subsection{limitps.spad \cite{1}}
-<<limitps.spad (SPAD from IN)>>=
-${MID}/limitps.spad: ${IN}/limitps.spad.pamphlet
-	@ echo 0 making ${MID}/limitps.spad from ${IN}/limitps.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/limitps.spad.pamphlet >limitps.spad )
-
-@
 <<LIMITPS.o (O from NRLIB)>>=
 ${OUT}/LIMITPS.o: ${MID}/LIMITPS.NRLIB
 	@ echo 0 making ${OUT}/LIMITPS.o from ${MID}/LIMITPS.NRLIB
@@ -17696,13 +16511,6 @@
 
 @
 \subsection{lindep.spad \cite{1}}
-<<lindep.spad (SPAD from IN)>>=
-${MID}/lindep.spad: ${IN}/lindep.spad.pamphlet
-	@ echo 0 making ${MID}/lindep.spad from ${IN}/lindep.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/lindep.spad.pamphlet >lindep.spad )
-
-@
 <<LINDEP.o (O from NRLIB)>>=
 ${OUT}/LINDEP.o: ${MID}/LINDEP.NRLIB
 	@ echo 0 making ${OUT}/LINDEP.o from ${MID}/LINDEP.NRLIB
@@ -17755,13 +16563,6 @@
 
 @
 \subsection{lingrob.spad \cite{1}}
-<<lingrob.spad (SPAD from IN)>>=
-${MID}/lingrob.spad: ${IN}/lingrob.spad.pamphlet
-	@ echo 0 making ${MID}/lingrob.spad from ${IN}/lingrob.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/lingrob.spad.pamphlet >lingrob.spad )
-
-@
 <<LGROBP.o (O from NRLIB)>>=
 ${OUT}/LGROBP.o: ${MID}/LGROBP.NRLIB
 	@ echo 0 making ${OUT}/LGROBP.o from ${MID}/LGROBP.NRLIB
@@ -17794,13 +16595,6 @@
 
 @
 \subsection{liouv.spad \cite{1}}
-<<liouv.spad (SPAD from IN)>>=
-${MID}/liouv.spad: ${IN}/liouv.spad.pamphlet
-	@ echo 0 making ${MID}/liouv.spad from ${IN}/liouv.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/liouv.spad.pamphlet >liouv.spad )
-
-@
 <<LF.o (O from NRLIB)>>=
 ${OUT}/LF.o: ${MID}/LF.NRLIB
 	@ echo 0 making ${OUT}/LF.o from ${MID}/LF.NRLIB
@@ -17833,13 +16627,6 @@
 
 @
 \subsection{listgcd.spad \cite{1}}
-<<listgcd.spad (SPAD from IN)>>=
-${MID}/listgcd.spad: ${IN}/listgcd.spad.pamphlet
-	@ echo 0 making ${MID}/listgcd.spad from ${IN}/listgcd.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/listgcd.spad.pamphlet >listgcd.spad )
-
-@
 <<HEUGCD.o (O from NRLIB)>>=
 ${OUT}/HEUGCD.o: ${MID}/HEUGCD.NRLIB
 	@ echo 0 making ${OUT}/HEUGCD.o from ${MID}/HEUGCD.NRLIB
@@ -17872,13 +16659,6 @@
 
 @
 \subsection{list.spad \cite{1}}
-<<list.spad (SPAD from IN)>>=
-${MID}/list.spad: ${IN}/list.spad.pamphlet
-	@ echo 0 making ${MID}/list.spad from ${IN}/list.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/list.spad.pamphlet >list.spad )
-
-@
 <<ILIST.o (O from NRLIB)>>=
 ${OUT}/ILIST.o: ${MID}/ILIST.NRLIB
 	@ echo 0 making ${OUT}/ILIST.o from ${MID}/ILIST.NRLIB
@@ -18045,13 +16825,6 @@
 
 @
 \subsection{lmdict.spad \cite{1}}
-<<lmdict.spad (SPAD from IN)>>=
-${MID}/lmdict.spad: ${IN}/lmdict.spad.pamphlet
-	@ echo 0 making ${MID}/lmdict.spad from ${IN}/lmdict.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/lmdict.spad.pamphlet >lmdict.spad )
-
-@
 <<LMDICT.o (O from NRLIB)>>=
 ${OUT}/LMDICT.o: ${MID}/LMDICT.NRLIB
 	@ echo 0 making ${OUT}/LMDICT.o from ${MID}/LMDICT.NRLIB
@@ -18084,13 +16857,6 @@
 
 @
 \subsection{lodof.spad \cite{1}}
-<<lodof.spad (SPAD from IN)>>=
-${MID}/lodof.spad: ${IN}/lodof.spad.pamphlet
-	@ echo 0 making ${MID}/lodof.spad from ${IN}/lodof.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/lodof.spad.pamphlet >lodof.spad )
-
-@
 <<ASSOCEQ.o (O from NRLIB)>>=
 ${OUT}/ASSOCEQ.o: ${MID}/ASSOCEQ.NRLIB
 	@ echo 0 making ${OUT}/ASSOCEQ.o from ${MID}/ASSOCEQ.NRLIB
@@ -18183,13 +16949,6 @@
 
 @
 \subsection{lodop.spad \cite{1}}
-<<lodop.spad (SPAD from IN)>>=
-${MID}/lodop.spad: ${IN}/lodop.spad.pamphlet
-	@ echo 0 making ${MID}/lodop.spad from ${IN}/lodop.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/lodop.spad.pamphlet >lodop.spad )
-
-@
 <<DPMO.o (O from NRLIB)>>=
 ${OUT}/DPMO.o: ${MID}/DPMO.NRLIB
 	@ echo 0 making ${OUT}/DPMO.o from ${MID}/DPMO.NRLIB
@@ -18322,13 +17081,6 @@
 
 @
 \subsection{lodo.spad \cite{1}}
-<<lodo.spad (SPAD from IN)>>=
-${MID}/lodo.spad: ${IN}/lodo.spad.pamphlet
-	@ echo 0 making ${MID}/lodo.spad from ${IN}/lodo.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/lodo.spad.pamphlet >lodo.spad )
-
-@
 <<LODO.o (O from NRLIB)>>=
 ${OUT}/LODO.o: ${MID}/LODO.NRLIB
 	@ echo 0 making ${OUT}/LODO.o from ${MID}/LODO.NRLIB
@@ -18453,13 +17205,6 @@
 
 @
 \subsection{manip.spad \cite{1}}
-<<manip.spad (SPAD from IN)>>=
-${MID}/manip.spad: ${IN}/manip.spad.pamphlet
-	@ echo 0 making ${MID}/manip.spad from ${IN}/manip.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/manip.spad.pamphlet >manip.spad )
-
-@
 <<ALGMANIP.o (O from NRLIB)>>=
 ${OUT}/ALGMANIP.o: ${MID}/ALGMANIP.NRLIB
 	@ echo 0 making ${OUT}/ALGMANIP.o from ${MID}/ALGMANIP.NRLIB
@@ -18572,13 +17317,6 @@
 
 @
 \subsection{mappkg.spad \cite{1}}
-<<mappkg.spad (SPAD from IN)>>=
-${MID}/mappkg.spad: ${IN}/mappkg.spad.pamphlet
-	@ echo 0 making ${MID}/mappkg.spad from ${IN}/mappkg.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/mappkg.spad.pamphlet >mappkg.spad )
-
-@
 <<MAPHACK1.o (O from NRLIB)>>=
 ${OUT}/MAPHACK1.o: ${MID}/MAPHACK1.NRLIB
 	@ echo 0 making ${OUT}/MAPHACK1.o from ${MID}/MAPHACK1.NRLIB
@@ -18711,13 +17449,6 @@
 
 @
 \subsection{matcat.spad \cite{1}}
-<<matcat.spad (SPAD from IN)>>=
-${MID}/matcat.spad: ${IN}/matcat.spad.pamphlet
-	@ echo 0 making ${MID}/matcat.spad from ${IN}/matcat.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/matcat.spad.pamphlet >matcat.spad )
-
-@
 <<MATCAT-.o (O from NRLIB)>>=
 ${OUT}/MATCAT-.o: ${MID}/MATCAT.NRLIB
 	@ echo 0 making ${OUT}/MATCAT-.o from ${MID}/MATCAT-.NRLIB
@@ -18826,13 +17557,6 @@
 
 @
 \subsection{matfuns.spad \cite{1}}
-<<matfuns.spad (SPAD from IN)>>=
-${MID}/matfuns.spad: ${IN}/matfuns.spad.pamphlet
-	@ echo 0 making ${MID}/matfuns.spad from ${IN}/matfuns.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/matfuns.spad.pamphlet >matfuns.spad )
-
-@
 <<IMATLIN.o (O from NRLIB)>>=
 ${OUT}/IMATLIN.o: ${MID}/IMATLIN.NRLIB
 	@ echo 0 making ${OUT}/IMATLIN.o from ${MID}/IMATLIN.NRLIB
@@ -18945,13 +17669,6 @@
 
 @
 \subsection{matrix.spad \cite{1}}
-<<matrix.spad (SPAD from IN)>>=
-${MID}/matrix.spad: ${IN}/matrix.spad.pamphlet
-	@ echo 0 making ${MID}/matrix.spad from ${IN}/matrix.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/matrix.spad.pamphlet >matrix.spad )
-
-@
 <<IMATRIX.o (O from NRLIB)>>=
 ${OUT}/IMATRIX.o: ${MID}/IMATRIX.NRLIB
 	@ echo 0 making ${OUT}/IMATRIX.o from ${MID}/IMATRIX.NRLIB
@@ -19044,13 +17761,6 @@
 
 @
 \subsection{matstor.spad \cite{1}}
-<<matstor.spad (SPAD from IN)>>=
-${MID}/matstor.spad: ${IN}/matstor.spad.pamphlet
-	@ echo 0 making ${MID}/matstor.spad from ${IN}/matstor.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/matstor.spad.pamphlet >matstor.spad )
-
-@
 <<MATSTOR.o (O from NRLIB)>>=
 ${OUT}/MATSTOR.o: ${MID}/MATSTOR.NRLIB
 	@ echo 0 making ${OUT}/MATSTOR.o from ${MID}/MATSTOR.NRLIB
@@ -19083,13 +17793,6 @@
 
 @
 \subsection{mesh.spad \cite{1}}
-<<mesh.spad (SPAD from IN)>>=
-${MID}/mesh.spad: ${IN}/mesh.spad.pamphlet
-	@ echo 0 making ${MID}/mesh.spad from ${IN}/mesh.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/mesh.spad.pamphlet >mesh.spad )
-
-@
 <<MESH.o (O from NRLIB)>>=
 ${OUT}/MESH.o: ${MID}/MESH.NRLIB
 	@ echo 0 making ${OUT}/MESH.o from ${MID}/MESH.NRLIB
@@ -19122,13 +17825,6 @@
 
 @
 \subsection{mfinfact.spad \cite{1}}
-<<mfinfact.spad (SPAD from IN)>>=
-${MID}/mfinfact.spad: ${IN}/mfinfact.spad.pamphlet
-	@ echo 0 making ${MID}/mfinfact.spad from ${IN}/mfinfact.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/mfinfact.spad.pamphlet >mfinfact.spad )
-
-@
 <<MFINFACT.o (O from NRLIB)>>=
 ${OUT}/MFINFACT.o: ${MID}/MFINFACT.NRLIB
 	@ echo 0 making ${OUT}/MFINFACT.o from ${MID}/MFINFACT.NRLIB
@@ -19161,13 +17857,6 @@
 
 @
 \subsection{misc.spad \cite{1}}
-<<misc.spad (SPAD from IN)>>=
-${MID}/misc.spad: ${IN}/misc.spad.pamphlet
-	@ echo 0 making ${MID}/misc.spad from ${IN}/misc.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/misc.spad.pamphlet >misc.spad )
-
-@
 <<SAOS.o (O from NRLIB)>>=
 ${OUT}/SAOS.o: ${MID}/SAOS.NRLIB
 	@ echo 0 making ${OUT}/SAOS.o from ${MID}/SAOS.NRLIB
@@ -19200,13 +17889,6 @@
 
 @
 \subsection{mkfunc.spad \cite{1}}
-<<mkfunc.spad (SPAD from IN)>>=
-${MID}/mkfunc.spad: ${IN}/mkfunc.spad.pamphlet
-	@ echo 0 making ${MID}/mkfunc.spad from ${IN}/mkfunc.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/mkfunc.spad.pamphlet >mkfunc.spad )
-
-@
 <<INFORM.o (O from NRLIB)>>=
 ${OUT}/INFORM.o: ${MID}/INFORM.NRLIB
 	@ echo 0 making ${OUT}/INFORM.o from ${MID}/INFORM.NRLIB
@@ -19339,13 +18021,6 @@
 
 @
 \subsection{mkrecord.spad \cite{1}}
-<<mkrecord.spad (SPAD from IN)>>=
-${MID}/mkrecord.spad: ${IN}/mkrecord.spad.pamphlet
-	@ echo 0 making ${MID}/mkrecord.spad from ${IN}/mkrecord.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/mkrecord.spad.pamphlet >mkrecord.spad )
-
-@
 <<MKRECORD.o (O from NRLIB)>>=
 ${OUT}/MKRECORD.o: ${MID}/MKRECORD.NRLIB
 	@ echo 0 making ${OUT}/MKRECORD.o from ${MID}/MKRECORD.NRLIB
@@ -19378,13 +18053,6 @@
 
 @
 \subsection{mlift.spad.jhd \cite{1}}
-<<mlift.spad.jhd (SPAD from IN)>>=
-${MID}/mlift.spad.jhd: ${IN}/mlift.spad.jhd.pamphlet
-	@ echo 0 making ${MID}/mlift.spad.jhd from ${IN}/mlift.spad.jhd.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/mlift.spad.jhd.pamphlet >mlift.spad.jhd )
-
-@
 <<mlift.spad.jhd.dvi (DOC from IN)>>=
 ${DOC}/mlift.spad.jhd.dvi: ${IN}/mlift.spad.jhd.pamphlet
 	@ echo 0 making ${DOC}/mlift.spad.jhd.dvi from ${IN}/mlift.spad.jhd.pamphlet
@@ -19397,13 +18065,6 @@
 
 @
 \subsection{mlift.spad \cite{1}}
-<<mlift.spad (SPAD from IN)>>=
-${MID}/mlift.spad: ${IN}/mlift.spad.pamphlet
-	@ echo 0 making ${MID}/mlift.spad from ${IN}/mlift.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/mlift.spad.pamphlet >mlift.spad )
-
-@
 <<MLIFT.o (O from NRLIB)>>=
 ${OUT}/MLIFT.o: ${MID}/MLIFT.NRLIB
 	@ echo 0 making ${OUT}/MLIFT.o from ${MID}/MLIFT.NRLIB
@@ -19436,13 +18097,6 @@
 
 @
 \subsection{moddfact.spad \cite{1}}
-<<moddfact.spad (SPAD from IN)>>=
-${MID}/moddfact.spad: ${IN}/moddfact.spad.pamphlet
-	@ echo 0 making ${MID}/moddfact.spad from ${IN}/moddfact.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/moddfact.spad.pamphlet >moddfact.spad )
-
-@
 <<MDDFACT.o (O from NRLIB)>>=
 ${OUT}/MDDFACT.o: ${MID}/MDDFACT.NRLIB
 	@ echo 0 making ${OUT}/MDDFACT.o from ${MID}/MDDFACT.NRLIB
@@ -19475,13 +18129,6 @@
 
 @
 \subsection{modgcd.spad \cite{1}}
-<<modgcd.spad (SPAD from IN)>>=
-${MID}/modgcd.spad: ${IN}/modgcd.spad.pamphlet
-	@ echo 0 making ${MID}/modgcd.spad from ${IN}/modgcd.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/modgcd.spad.pamphlet >modgcd.spad )
-
-@
 <<INMODGCD.o (O from NRLIB)>>=
 ${OUT}/INMODGCD.o: ${MID}/INMODGCD.NRLIB
 	@ echo 0 making ${OUT}/INMODGCD.o from ${MID}/INMODGCD.NRLIB
@@ -19514,13 +18161,6 @@
 
 @
 \subsection{modmonom.spad \cite{1}}
-<<modmonom.spad (SPAD from IN)>>=
-${MID}/modmonom.spad: ${IN}/modmonom.spad.pamphlet
-	@ echo 0 making ${MID}/modmonom.spad from ${IN}/modmonom.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/modmonom.spad.pamphlet >modmonom.spad )
-
-@
 <<GMODPOL.o (O from NRLIB)>>=
 ${OUT}/GMODPOL.o: ${MID}/GMODPOL.NRLIB
 	@ echo 0 making ${OUT}/GMODPOL.o from ${MID}/GMODPOL.NRLIB
@@ -19573,13 +18213,6 @@
 
 @
 \subsection{modmon.spad \cite{1}}
-<<modmon.spad (SPAD from IN)>>=
-${MID}/modmon.spad: ${IN}/modmon.spad.pamphlet
-	@ echo 0 making ${MID}/modmon.spad from ${IN}/modmon.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/modmon.spad.pamphlet >modmon.spad )
-
-@
 <<MODMON.o (O from NRLIB)>>=
 ${OUT}/MODMON.o: ${MID}/MODMON.NRLIB
 	@ echo 0 making ${OUT}/MODMON.o from ${MID}/MODMON.NRLIB
@@ -19612,13 +18245,6 @@
 
 @
 \subsection{modring.spad \cite{1}}
-<<modring.spad (SPAD from IN)>>=
-${MID}/modring.spad: ${IN}/modring.spad.pamphlet
-	@ echo 0 making ${MID}/modring.spad from ${IN}/modring.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/modring.spad.pamphlet >modring.spad )
-
-@
 <<EMR.o (O from NRLIB)>>=
 ${OUT}/EMR.o: ${MID}/EMR.NRLIB
 	@ echo 0 making ${OUT}/EMR.o from ${MID}/EMR.NRLIB
@@ -19691,13 +18317,6 @@
 
 @
 \subsection{moebius.spad \cite{1}}
-<<moebius.spad (SPAD from IN)>>=
-${MID}/moebius.spad: ${IN}/moebius.spad.pamphlet
-	@ echo 0 making ${MID}/moebius.spad from ${IN}/moebius.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/moebius.spad.pamphlet >moebius.spad )
-
-@
 <<MOEBIUS.o (O from NRLIB)>>=
 ${OUT}/MOEBIUS.o: ${MID}/MOEBIUS.NRLIB
 	@ echo 0 making ${OUT}/MOEBIUS.o from ${MID}/MOEBIUS.NRLIB
@@ -19730,13 +18349,6 @@
 
 @
 \subsection{mring.spad \cite{1}}
-<<mring.spad (SPAD from IN)>>=
-${MID}/mring.spad: ${IN}/mring.spad.pamphlet
-	@ echo 0 making ${MID}/mring.spad from ${IN}/mring.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/mring.spad.pamphlet >mring.spad )
-
-@
 <<MRF2.o (O from NRLIB)>>=
 ${OUT}/MRF2.o: ${MID}/MRF2.NRLIB
 	@ echo 0 making ${OUT}/MRF2.o from ${MID}/MRF2.NRLIB
@@ -19789,13 +18401,6 @@
 
 @
 \subsection{mset.spad \cite{1}}
-<<mset.spad (SPAD from IN)>>=
-${MID}/mset.spad: ${IN}/mset.spad.pamphlet
-	@ echo 0 making ${MID}/mset.spad from ${IN}/mset.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/mset.spad.pamphlet >mset.spad )
-
-@
 <<MSET.o (O from NRLIB)>>=
 ${OUT}/MSET.o: ${MID}/MSET.NRLIB
 	@ echo 0 making ${OUT}/MSET.o from ${MID}/MSET.NRLIB
@@ -19828,13 +18433,6 @@
 
 @
 \subsection{mts.spad \cite{1}}
-<<mts.spad (SPAD from IN)>>=
-${MID}/mts.spad: ${IN}/mts.spad.pamphlet
-	@ echo 0 making ${MID}/mts.spad from ${IN}/mts.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/mts.spad.pamphlet >mts.spad )
-
-@
 <<SMTS.o (O from NRLIB)>>=
 ${OUT}/SMTS.o: ${MID}/SMTS.NRLIB
 	@ echo 0 making ${OUT}/SMTS.o from ${MID}/SMTS.NRLIB
@@ -19887,13 +18485,6 @@
 
 @
 \subsection{multfact.spad \cite{1}}
-<<multfact.spad (SPAD from IN)>>=
-${MID}/multfact.spad: ${IN}/multfact.spad.pamphlet
-	@ echo 0 making ${MID}/multfact.spad from ${IN}/multfact.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/multfact.spad.pamphlet >multfact.spad )
-
-@
 <<ALGMFACT.o (O from NRLIB)>>=
 ${OUT}/ALGMFACT.o: ${MID}/ALGMFACT.NRLIB
 	@ echo 0 making ${OUT}/ALGMFACT.o from ${MID}/ALGMFACT.NRLIB
@@ -19966,13 +18557,6 @@
 
 @
 \subsection{multpoly.spad \cite{1}}
-<<multpoly.spad (SPAD from IN)>>=
-${MID}/multpoly.spad: ${IN}/multpoly.spad.pamphlet
-	@ echo 0 making ${MID}/multpoly.spad from ${IN}/multpoly.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/multpoly.spad.pamphlet >multpoly.spad )
-
-@
 <<INDE.o (O from NRLIB)>>=
 ${OUT}/INDE.o: ${MID}/INDE.NRLIB
 	@ echo 0 making ${OUT}/INDE.o from ${MID}/INDE.NRLIB
@@ -20085,13 +18669,6 @@
 
 @
 \subsection{multsqfr.spad \cite{1}}
-<<multsqfr.spad (SPAD from IN)>>=
-${MID}/multsqfr.spad: ${IN}/multsqfr.spad.pamphlet
-	@ echo 0 making ${MID}/multsqfr.spad from ${IN}/multsqfr.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/multsqfr.spad.pamphlet >multsqfr.spad )
-
-@
 <<MULTSQFR.o (O from NRLIB)>>=
 ${OUT}/MULTSQFR.o: ${MID}/MULTSQFR.NRLIB
 	@ echo 0 making ${OUT}/MULTSQFR.o from ${MID}/MULTSQFR.NRLIB
@@ -20124,13 +18701,6 @@
 
 @
 \subsection{naalgc.spad \cite{1}}
-<<naalgc.spad (SPAD from IN)>>=
-${MID}/naalgc.spad: ${IN}/naalgc.spad.pamphlet
-	@ echo 0 making ${MID}/naalgc.spad from ${IN}/naalgc.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/naalgc.spad.pamphlet >naalgc.spad )
-
-@
 <<FINAALG-.o (O from NRLIB)>>=
 ${OUT}/FINAALG-.o: ${MID}/FINAALG.NRLIB
 	@ echo 0 making ${OUT}/FINAALG-.o from ${MID}/FINAALG-.NRLIB
@@ -20367,13 +18937,6 @@
 
 @
 \subsection{naalg.spad \cite{1}}
-<<naalg.spad (SPAD from IN)>>=
-${MID}/naalg.spad: ${IN}/naalg.spad.pamphlet
-	@ echo 0 making ${MID}/naalg.spad from ${IN}/naalg.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/naalg.spad.pamphlet >naalg.spad )
-
-@
 <<ALGPKG.o (O from NRLIB)>>=
 ${OUT}/ALGPKG.o: ${MID}/ALGPKG.NRLIB
 	@ echo 0 making ${OUT}/ALGPKG.o from ${MID}/ALGPKG.NRLIB
@@ -20471,7 +19034,7 @@
 	@ echo 0 making ${MID}/ndftip.as from ${IN}/ndftip.as.pamphlet
 	@(cd ${MID} ; \
 	${SPADBIN}/notangle ${IN}/ndftip.as.pamphlet >ndftip.as )
-
+ 
 @
 <<ndftip.as.dvi (DOC from IN)>>=
 ${DOC}/ndftip.as.dvi: ${IN}/ndftip.as.pamphlet
@@ -20490,7 +19053,7 @@
 	@ echo 0 making ${MID}/nepip.as from ${IN}/nepip.as.pamphlet
 	@(cd ${MID} ; \
 	${SPADBIN}/notangle ${IN}/nepip.as.pamphlet >nepip.as )
-
+ 
 @
 <<nepip.as.dvi (DOC from IN)>>=
 ${DOC}/nepip.as.dvi: ${IN}/nepip.as.pamphlet
@@ -20504,13 +19067,6 @@
 
 @
 \subsection{newdata.spad \cite{1}}
-<<newdata.spad (SPAD from IN)>>=
-${MID}/newdata.spad: ${IN}/newdata.spad.pamphlet
-	@ echo 0 making ${MID}/newdata.spad from ${IN}/newdata.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/newdata.spad.pamphlet >newdata.spad )
-
-@
 <<IPRNTPK.o (O from NRLIB)>>=
 ${OUT}/IPRNTPK.o: ${MID}/IPRNTPK.NRLIB
 	@ echo 0 making ${OUT}/IPRNTPK.o from ${MID}/IPRNTPK.NRLIB
@@ -20603,13 +19159,6 @@
 
 @
 \subsection{newpoint.spad \cite{1}}
-<<newpoint.spad (SPAD from IN)>>=
-${MID}/newpoint.spad: ${IN}/newpoint.spad.pamphlet
-	@ echo 0 making ${MID}/newpoint.spad from ${IN}/newpoint.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/newpoint.spad.pamphlet >newpoint.spad )
-
-@
 <<COMPPROP.o (O from NRLIB)>>=
 ${OUT}/COMPPROP.o: ${MID}/COMPPROP.NRLIB
 	@ echo 0 making ${OUT}/COMPPROP.o from ${MID}/COMPPROP.NRLIB
@@ -20742,13 +19291,6 @@
 
 @
 \subsection{newpoly.spad \cite{1}}
-<<newpoly.spad (SPAD from IN)>>=
-${MID}/newpoly.spad: ${IN}/newpoly.spad.pamphlet
-	@ echo 0 making ${MID}/newpoly.spad from ${IN}/newpoly.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/newpoly.spad.pamphlet >newpoly.spad )
-
-@
 <<NSMP.o (O from NRLIB)>>=
 ${OUT}/NSMP.o: ${MID}/NSMP.NRLIB
 	@ echo 0 making ${OUT}/NSMP.o from ${MID}/NSMP.NRLIB
@@ -20853,13 +19395,6 @@
 
 @
 \subsection{nlinsol.spad \cite{1}}
-<<nlinsol.spad (SPAD from IN)>>=
-${MID}/nlinsol.spad: ${IN}/nlinsol.spad.pamphlet
-	@ echo 0 making ${MID}/nlinsol.spad from ${IN}/nlinsol.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/nlinsol.spad.pamphlet >nlinsol.spad )
-
-@
 <<NLINSOL.o (O from NRLIB)>>=
 ${OUT}/NLINSOL.o: ${MID}/NLINSOL.NRLIB
 	@ echo 0 making ${OUT}/NLINSOL.o from ${MID}/NLINSOL.NRLIB
@@ -20912,13 +19447,6 @@
 
 @
 \subsection{nlode.spad \cite{1}}
-<<nlode.spad (SPAD from IN)>>=
-${MID}/nlode.spad: ${IN}/nlode.spad.pamphlet
-	@ echo 0 making ${MID}/nlode.spad from ${IN}/nlode.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/nlode.spad.pamphlet >nlode.spad )
-
-@
 <<NODE1.o (O from NRLIB)>>=
 ${OUT}/NODE1.o: ${MID}/NODE1.NRLIB
 	@ echo 0 making ${OUT}/NODE1.o from ${MID}/NODE1.NRLIB
@@ -20970,13 +19498,6 @@
 
 @
 \subsection{npcoef.spad \cite{1}}
-<<npcoef.spad (SPAD from IN)>>=
-${MID}/npcoef.spad: ${IN}/npcoef.spad.pamphlet
-	@ echo 0 making ${MID}/npcoef.spad from ${IN}/npcoef.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/npcoef.spad.pamphlet >npcoef.spad )
-
-@
 <<NPCOEF.o (O from NRLIB)>>=
 ${OUT}/NPCOEF.o: ${MID}/NPCOEF.NRLIB
 	@ echo 0 making ${OUT}/NPCOEF.o from ${MID}/NPCOEF.NRLIB
@@ -21030,9 +19551,9 @@
 \subsection{nrc.as \cite{1}}
 <<nrc.as (SPAD from IN)>>=
 ${MID}/nrc.as: ${IN}/nrc.as.pamphlet
-	@ echo 0 making ${MID}/nrc.as from ${IN}/nrc.as.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/nrc.as.pamphlet >nrc.as )
+@ echo 0 making ${MID}/nrc.as from ${IN}/nrc.as.pamphlet
+@(cd ${MID} ; \
+${SPADBIN}/notangle ${IN}/nrc.as.pamphlet >nrc.as )
 
 @
 <<nrc.as.dvi (DOC from IN)>>=
@@ -21047,13 +19568,6 @@
 
 @
 \subsection{nregset.spad \cite{1}}
-<<nregset.spad (SPAD from IN)>>=
-${MID}/nregset.spad: ${IN}/nregset.spad.pamphlet
-	@ echo 0 making ${MID}/nregset.spad from ${IN}/nregset.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/nregset.spad.pamphlet >nregset.spad )
-
-@
 <<NORMPK.o (O from NRLIB)>>=
 ${OUT}/NORMPK.o: ${MID}/NORMPK.NRLIB
 	@ echo 0 making ${OUT}/NORMPK.o from ${MID}/NORMPK.NRLIB
@@ -21113,6 +19627,7 @@
 	${SPADBIN}/notangle ${IN}/nsfip.as.pamphlet >nsfip.as )
 
 @
+
 <<nsfip.as.dvi (DOC from IN)>>=
 ${DOC}/nsfip.as.dvi: ${IN}/nsfip.as.pamphlet
 	@ echo 0 making ${DOC}/nsfip.as.dvi from ${IN}/nsfip.as.pamphlet
@@ -21125,13 +19640,6 @@
 
 @
 \subsection{nsregset.spad \cite{1}}
-<<nsregset.spad (SPAD from IN)>>=
-${MID}/nsregset.spad: ${IN}/nsregset.spad.pamphlet
-	@ echo 0 making ${MID}/nsregset.spad from ${IN}/nsregset.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/nsregset.spad.pamphlet >nsregset.spad )
-
-@
 <<LAZM3PK.o (O from NRLIB)>>=
 ${OUT}/LAZM3PK.o: ${MID}/LAZM3PK.NRLIB
 	@ echo 0 making ${OUT}/LAZM3PK.o from ${MID}/LAZM3PK.NRLIB
@@ -21184,13 +19692,6 @@
 
 @
 \subsection{numeigen.spad \cite{1}}
-<<numeigen.spad (SPAD from IN)>>=
-${MID}/numeigen.spad: ${IN}/numeigen.spad.pamphlet
-	@ echo 0 making ${MID}/numeigen.spad from ${IN}/numeigen.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/numeigen.spad.pamphlet >numeigen.spad )
-
-@
 <<INEP.o (O from NRLIB)>>=
 ${OUT}/INEP.o: ${MID}/INEP.NRLIB
 	@ echo 0 making ${OUT}/INEP.o from ${MID}/INEP.NRLIB
@@ -21263,13 +19764,6 @@
 
 @
 \subsection{numeric.spad \cite{1}}
-<<numeric.spad (SPAD from IN)>>=
-${MID}/numeric.spad: ${IN}/numeric.spad.pamphlet
-	@ echo 0 making ${MID}/numeric.spad from ${IN}/numeric.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/numeric.spad.pamphlet >numeric.spad )
-
-@
 <<DRAWHACK.o (O from NRLIB)>>=
 ${OUT}/DRAWHACK.o: ${MID}/DRAWHACK.NRLIB
 	@ echo 0 making ${OUT}/DRAWHACK.o from ${MID}/DRAWHACK.NRLIB
@@ -21322,13 +19816,6 @@
 
 @
 \subsection{numode.spad \cite{1}}
-<<numode.spad (SPAD from IN)>>=
-${MID}/numode.spad: ${IN}/numode.spad.pamphlet
-	@ echo 0 making ${MID}/numode.spad from ${IN}/numode.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/numode.spad.pamphlet >numode.spad )
-
-@
 <<NUMODE.o (O from NRLIB)>>=
 ${OUT}/NUMODE.o: ${MID}/NUMODE.NRLIB
 	@ echo 0 making ${OUT}/NUMODE.o from ${MID}/NUMODE.NRLIB
@@ -21361,13 +19848,6 @@
 
 @
 \subsection{numquad.spad \cite{1}}
-<<numquad.spad (SPAD from IN)>>=
-${MID}/numquad.spad: ${IN}/numquad.spad.pamphlet
-	@ echo 0 making ${MID}/numquad.spad from ${IN}/numquad.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/numquad.spad.pamphlet >numquad.spad )
-
-@
 <<NUMQUAD.o (O from NRLIB)>>=
 ${OUT}/NUMQUAD.o: ${MID}/NUMQUAD.NRLIB
 	@ echo 0 making ${OUT}/NUMQUAD.o from ${MID}/NUMQUAD.NRLIB
@@ -21400,13 +19880,6 @@
 
 @
 \subsection{numsolve.spad \cite{1}}
-<<numsolve.spad (SPAD from IN)>>=
-${MID}/numsolve.spad: ${IN}/numsolve.spad.pamphlet
-	@ echo 0 making ${MID}/numsolve.spad from ${IN}/numsolve.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/numsolve.spad.pamphlet >numsolve.spad )
-
-@
 <<FLOATCP.o (O from NRLIB)>>=
 ${OUT}/FLOATCP.o: ${MID}/FLOATCP.NRLIB
 	@ echo 0 making ${OUT}/FLOATCP.o from ${MID}/FLOATCP.NRLIB
@@ -21479,13 +19952,6 @@
 
 @
 \subsection{numtheor.spad \cite{1}}
-<<numtheor.spad (SPAD from IN)>>=
-${MID}/numtheor.spad: ${IN}/numtheor.spad.pamphlet
-	@ echo 0 making ${MID}/numtheor.spad from ${IN}/numtheor.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/numtheor.spad.pamphlet >numtheor.spad )
-
-@
 <<INTHEORY.o (O from NRLIB)>>=
 ${OUT}/INTHEORY.o: ${MID}/INTHEORY.NRLIB
 	@ echo 0 making ${OUT}/INTHEORY.o from ${MID}/INTHEORY.NRLIB
@@ -21538,13 +20004,6 @@
 
 @
 \subsection{oct.spad \cite{1}}
-<<oct.spad (SPAD from IN)>>=
-${MID}/oct.spad: ${IN}/oct.spad.pamphlet
-	@ echo 0 making ${MID}/oct.spad from ${IN}/oct.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/oct.spad.pamphlet >oct.spad )
-
-@
 <<OC-.o (O from NRLIB)>>=
 ${OUT}/OC-.o: ${MID}/OC.NRLIB
 	@ echo 0 making ${OUT}/OC-.o from ${MID}/OC-.NRLIB
@@ -21629,13 +20088,6 @@
 
 @
 \subsection{odealg.spad \cite{1}}
-<<odealg.spad (SPAD from IN)>>=
-${MID}/odealg.spad: ${IN}/odealg.spad.pamphlet
-	@ echo 0 making ${MID}/odealg.spad from ${IN}/odealg.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/odealg.spad.pamphlet >odealg.spad )
-
-@
 <<ODEPAL.o (O from NRLIB)>>=
 ${OUT}/ODEPAL.o: ${MID}/ODEPAL.NRLIB
 	@ echo 0 making ${OUT}/ODEPAL.o from ${MID}/ODEPAL.NRLIB
@@ -21708,13 +20160,6 @@
 
 @
 \subsection{odeef.spad \cite{1}}
-<<odeef.spad (SPAD from IN)>>=
-${MID}/odeef.spad: ${IN}/odeef.spad.pamphlet
-	@ echo 0 making ${MID}/odeef.spad from ${IN}/odeef.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/odeef.spad.pamphlet >odeef.spad )
-
-@
 <<LODEEF.o (O from NRLIB)>>=
 ${OUT}/LODEEF.o: ${MID}/LODEEF.NRLIB
 	@ echo 0 making ${OUT}/LODEEF.o from ${MID}/LODEEF.NRLIB
@@ -21787,13 +20232,6 @@
 
 @
 \subsection{oderf.spad \cite{1}}
-<<oderf.spad (SPAD from IN)>>=
-${MID}/oderf.spad: ${IN}/oderf.spad.pamphlet
-	@ echo 0 making ${MID}/oderf.spad from ${IN}/oderf.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/oderf.spad.pamphlet >oderf.spad )
-
-@
 <<BALFACT.o (O from NRLIB)>>=
 ${OUT}/BALFACT.o: ${MID}/BALFACT.NRLIB
 	@ echo 0 making ${OUT}/BALFACT.o from ${MID}/BALFACT.NRLIB
@@ -21966,13 +20404,6 @@
 
 @
 \subsection{omcat.spad \cite{1}}
-<<omcat.spad (SPAD from IN)>>=
-${MID}/omcat.spad: ${IN}/omcat.spad.pamphlet
-	@ echo 0 making ${MID}/omcat.spad from ${IN}/omcat.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/omcat.spad.pamphlet >omcat.spad )
-
-@
 <<OM.o (O from NRLIB)>>=
 ${OUT}/OM.o: ${MID}/OM.NRLIB
 	@ echo 0 making ${OUT}/OM.o from ${MID}/OM.NRLIB
@@ -22005,13 +20436,6 @@
 
 @
 \subsection{omdev.spad \cite{1}}
-<<omdev.spad (SPAD from IN)>>=
-${MID}/omdev.spad: ${IN}/omdev.spad.pamphlet
-	@ echo 0 making ${MID}/omdev.spad from ${IN}/omdev.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/omdev.spad.pamphlet >omdev.spad )
-
-@
 <<OMENC.o (O from NRLIB)>>=
 ${OUT}/OMENC.o: ${MID}/OMENC.NRLIB
 	@ echo 0 making ${OUT}/OMENC.o from ${MID}/OMENC.NRLIB
@@ -22104,13 +20528,6 @@
 
 @
 \subsection{omerror.spad \cite{1}}
-<<omerror.spad (SPAD from IN)>>=
-${MID}/omerror.spad: ${IN}/omerror.spad.pamphlet
-	@ echo 0 making ${MID}/omerror.spad from ${IN}/omerror.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/omerror.spad.pamphlet >omerror.spad )
-
-@
 <<OMERR.o (O from NRLIB)>>=
 ${OUT}/OMERR.o: ${MID}/OMERR.NRLIB
 	@ echo 0 making ${OUT}/OMERR.o from ${MID}/OMERR.NRLIB
@@ -22163,13 +20580,6 @@
 
 @
 \subsection{omserver.spad \cite{1}}
-<<omserver.spad (SPAD from IN)>>=
-${MID}/omserver.spad: ${IN}/omserver.spad.pamphlet
-	@ echo 0 making ${MID}/omserver.spad from ${IN}/omserver.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/omserver.spad.pamphlet >omserver.spad )
-
-@
 <<OMSERVER.o (O from NRLIB)>>=
 ${OUT}/OMSERVER.o: ${MID}/OMSERVER.NRLIB
 	@ echo 0 making ${OUT}/OMSERVER.o from ${MID}/OMSERVER.NRLIB
@@ -22202,13 +20612,6 @@
 
 @
 \subsection{opalg.spad \cite{1}}
-<<opalg.spad (SPAD from IN)>>=
-${MID}/opalg.spad: ${IN}/opalg.spad.pamphlet
-	@ echo 0 making ${MID}/opalg.spad from ${IN}/opalg.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/opalg.spad.pamphlet >opalg.spad )
-
-@
 <<MODOP.o (O from NRLIB)>>=
 ${OUT}/MODOP.o: ${MID}/MODOP.NRLIB
 	@ echo 0 making ${OUT}/MODOP.o from ${MID}/MODOP.NRLIB
@@ -22261,13 +20664,6 @@
 
 @
 \subsection{openmath.spad \cite{1}}
-<<openmath.spad (SPAD from IN)>>=
-${MID}/openmath.spad: ${IN}/openmath.spad.pamphlet
-	@ echo 0 making ${MID}/openmath.spad from ${IN}/openmath.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/openmath.spad.pamphlet >openmath.spad )
-
-@
 <<OMEXPR.o (O from NRLIB)>>=
 ${OUT}/OMEXPR.o: ${MID}/OMEXPR.NRLIB
 	@ echo 0 making ${OUT}/OMEXPR.o from ${MID}/OMEXPR.NRLIB
@@ -22300,13 +20696,6 @@
 
 @
 \subsection{op.spad \cite{1}}
-<<op.spad (SPAD from IN)>>=
-${MID}/op.spad: ${IN}/op.spad.pamphlet
-	@ echo 0 making ${MID}/op.spad from ${IN}/op.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/op.spad.pamphlet >op.spad )
-
-@
 <<BOP.o (O from NRLIB)>>=
 ${OUT}/BOP.o: ${MID}/BOP.NRLIB
 	@ echo 0 making ${OUT}/BOP.o from ${MID}/BOP.NRLIB
@@ -22379,13 +20768,6 @@
 
 @
 \subsection{ore.spad \cite{1}}
-<<ore.spad (SPAD from IN)>>=
-${MID}/ore.spad: ${IN}/ore.spad.pamphlet
-	@ echo 0 making ${MID}/ore.spad from ${IN}/ore.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/ore.spad.pamphlet >ore.spad )
-
-@
 <<APPLYORE.o (O from NRLIB)>>=
 ${OUT}/APPLYORE.o: ${MID}/APPLYORE.NRLIB
 	@ echo 0 making ${OUT}/APPLYORE.o from ${MID}/APPLYORE.NRLIB
@@ -22530,13 +20912,6 @@
 
 @
 \subsection{outform.spad \cite{1}}
-<<outform.spad (SPAD from IN)>>=
-${MID}/outform.spad: ${IN}/outform.spad.pamphlet
-	@ echo 0 making ${MID}/outform.spad from ${IN}/outform.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/outform.spad.pamphlet >outform.spad )
-
-@
 <<NUMFMT.o (O from NRLIB)>>=
 ${OUT}/NUMFMT.o: ${MID}/NUMFMT.NRLIB
 	@ echo 0 making ${OUT}/NUMFMT.o from ${MID}/NUMFMT.NRLIB
@@ -22606,13 +20981,6 @@
 
 @
 \subsection{out.spad \cite{1}}
-<<out.spad (SPAD from IN)>>=
-${MID}/out.spad: ${IN}/out.spad.pamphlet
-	@ echo 0 making ${MID}/out.spad from ${IN}/out.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/out.spad.pamphlet >out.spad )
-
-@
 <<DISPLAY.o (O from NRLIB)>>=
 ${OUT}/DISPLAY.o: ${MID}/DISPLAY.NRLIB
 	@ echo 0 making ${OUT}/DISPLAY.o from ${MID}/DISPLAY.NRLIB
@@ -22685,13 +21053,6 @@
 
 @
 \subsection{pade.spad \cite{1}}
-<<pade.spad (SPAD from IN)>>=
-${MID}/pade.spad: ${IN}/pade.spad.pamphlet
-	@ echo 0 making ${MID}/pade.spad from ${IN}/pade.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/pade.spad.pamphlet >pade.spad )
-
-@
 <<PADE.o (O from NRLIB)>>=
 ${OUT}/PADE.o: ${MID}/PADE.NRLIB
 	@ echo 0 making ${OUT}/PADE.o from ${MID}/PADE.NRLIB
@@ -22744,13 +21105,6 @@
 
 @
 \subsection{padiclib.spad \cite{1}}
-<<padiclib.spad (SPAD from IN)>>=
-${MID}/padiclib.spad: ${IN}/padiclib.spad.pamphlet
-	@ echo 0 making ${MID}/padiclib.spad from ${IN}/padiclib.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/padiclib.spad.pamphlet >padiclib.spad )
-
-@
 <<IBACHIN.o (O from NRLIB)>>=
 ${OUT}/IBACHIN.o: ${MID}/IBACHIN.NRLIB
 	@ echo 0 making ${OUT}/IBACHIN.o from ${MID}/IBACHIN.NRLIB
@@ -22823,13 +21177,6 @@
 
 @
 \subsection{padic.spad \cite{1}}
-<<padic.spad (SPAD from IN)>>=
-${MID}/padic.spad: ${IN}/padic.spad.pamphlet
-	@ echo 0 making ${MID}/padic.spad from ${IN}/padic.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/padic.spad.pamphlet >padic.spad )
-
-@
 <<BPADIC.o (O from NRLIB)>>=
 ${OUT}/BPADIC.o: ${MID}/BPADIC.NRLIB
 	@ echo 0 making ${OUT}/BPADIC.o from ${MID}/BPADIC.NRLIB
@@ -22982,13 +21329,6 @@
 
 @
 \subsection{paramete.spad \cite{1}}
-<<paramete.spad (SPAD from IN)>>=
-${MID}/paramete.spad: ${IN}/paramete.spad.pamphlet
-	@ echo 0 making ${MID}/paramete.spad from ${IN}/paramete.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/paramete.spad.pamphlet >paramete.spad )
-
-@
 <<PARPCURV.o (O from NRLIB)>>=
 ${OUT}/PARPCURV.o: ${MID}/PARPCURV.NRLIB
 	@ echo 0 making ${OUT}/PARPCURV.o from ${MID}/PARPCURV.NRLIB
@@ -23121,13 +21461,6 @@
 
 @
 \subsection{partperm.spad \cite{1}}
-<<partperm.spad (SPAD from IN)>>=
-${MID}/partperm.spad: ${IN}/partperm.spad.pamphlet
-	@ echo 0 making ${MID}/partperm.spad from ${IN}/partperm.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/partperm.spad.pamphlet >partperm.spad )
-
-@
 <<PARTPERM.o (O from NRLIB)>>=
 ${OUT}/PARTPERM.o: ${MID}/PARTPERM.NRLIB
 	@ echo 0 making ${OUT}/PARTPERM.o from ${MID}/PARTPERM.NRLIB
@@ -23160,13 +21493,6 @@
 
 @
 \subsection{patmatch1.spad \cite{1}}
-<<patmatch1.spad (SPAD from IN)>>=
-${MID}/patmatch1.spad: ${IN}/patmatch1.spad.pamphlet
-	@ echo 0 making ${MID}/patmatch1.spad from ${IN}/patmatch1.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/patmatch1.spad.pamphlet >patmatch1.spad )
-
-@
 <<FPATMAB.o (O from NRLIB)>>=
 ${OUT}/FPATMAB.o: ${MID}/FPATMAB.NRLIB
 	@ echo 0 making ${OUT}/FPATMAB.o from ${MID}/FPATMAB.NRLIB
@@ -23379,13 +21705,6 @@
 
 @
 \subsection{patmatch2.spad \cite{1}}
-<<patmatch2.spad (SPAD from IN)>>=
-${MID}/patmatch2.spad: ${IN}/patmatch2.spad.pamphlet
-	@ echo 0 making ${MID}/patmatch2.spad from ${IN}/patmatch2.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/patmatch2.spad.pamphlet >patmatch2.spad )
-
-@
 <<PATMATCH.o (O from NRLIB)>>=
 ${OUT}/PATMATCH.o: ${MID}/PATMATCH.NRLIB
 	@ echo 0 making ${OUT}/PATMATCH.o from ${MID}/PATMATCH.NRLIB
@@ -23498,13 +21817,6 @@
 
 @
 \subsection{pattern.spad \cite{1}}
-<<pattern.spad (SPAD from IN)>>=
-${MID}/pattern.spad: ${IN}/pattern.spad.pamphlet
-	@ echo 0 making ${MID}/pattern.spad from ${IN}/pattern.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/pattern.spad.pamphlet >pattern.spad )
-
-@
 <<PATAB.o (O from NRLIB)>>=
 ${OUT}/PATAB.o: ${MID}/PATAB.NRLIB
 	@ echo 0 making ${OUT}/PATAB.o from ${MID}/PATAB.NRLIB
@@ -23597,13 +21909,6 @@
 
 @
 \subsection{pcurve.spad \cite{1}}
-<<pcurve.spad (SPAD from IN)>>=
-${MID}/pcurve.spad: ${IN}/pcurve.spad.pamphlet
-	@ echo 0 making ${MID}/pcurve.spad from ${IN}/pcurve.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/pcurve.spad.pamphlet >pcurve.spad )
-
-@
 <<PPCURVE.o (O from NRLIB)>>=
 ${OUT}/PPCURVE.o: ${MID}/PPCURVE.NRLIB
 	@ echo 0 making ${OUT}/PPCURVE.o from ${MID}/PPCURVE.NRLIB
@@ -23656,13 +21961,6 @@
 
 @
 \subsection{pdecomp.spad \cite{1}}
-<<pdecomp.spad (SPAD from IN)>>=
-${MID}/pdecomp.spad: ${IN}/pdecomp.spad.pamphlet
-	@ echo 0 making ${MID}/pdecomp.spad from ${IN}/pdecomp.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/pdecomp.spad.pamphlet >pdecomp.spad )
-
-@
 <<PCOMP.o (O from NRLIB)>>=
 ${OUT}/PCOMP.o: ${MID}/PCOMP.NRLIB
 	@ echo 0 making ${OUT}/PCOMP.o from ${MID}/PCOMP.NRLIB
@@ -23715,13 +22013,6 @@
 
 @
 \subsection{perman.spad \cite{1}}
-<<perman.spad (SPAD from IN)>>=
-${MID}/perman.spad: ${IN}/perman.spad.pamphlet
-	@ echo 0 making ${MID}/perman.spad from ${IN}/perman.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/perman.spad.pamphlet >perman.spad )
-
-@
 <<GRAY.o (O from NRLIB)>>=
 ${OUT}/GRAY.o: ${MID}/GRAY.NRLIB
 	@ echo 0 making ${OUT}/GRAY.o from ${MID}/GRAY.NRLIB
@@ -23774,13 +22065,6 @@
 
 @
 \subsection{permgrps.spad \cite{1}}
-<<permgrps.spad (SPAD from IN)>>=
-${MID}/permgrps.spad: ${IN}/permgrps.spad.pamphlet
-	@ echo 0 making ${MID}/permgrps.spad from ${IN}/permgrps.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/permgrps.spad.pamphlet >permgrps.spad )
-
-@
 <<PERMGRP.o (O from NRLIB)>>=
 ${OUT}/PERMGRP.o: ${MID}/PERMGRP.NRLIB
 	@ echo 0 making ${OUT}/PERMGRP.o from ${MID}/PERMGRP.NRLIB
@@ -23833,13 +22117,6 @@
 
 @
 \subsection{perm.spad \cite{1}}
-<<perm.spad (SPAD from IN)>>=
-${MID}/perm.spad: ${IN}/perm.spad.pamphlet
-	@ echo 0 making ${MID}/perm.spad from ${IN}/perm.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/perm.spad.pamphlet >perm.spad )
-
-@
 <<PERM.o (O from NRLIB)>>=
 ${OUT}/PERM.o: ${MID}/PERM.NRLIB
 	@ echo 0 making ${OUT}/PERM.o from ${MID}/PERM.NRLIB
@@ -23892,13 +22169,6 @@
 
 @
 \subsection{pfbr.spad \cite{1}}
-<<pfbr.spad (SPAD from IN)>>=
-${MID}/pfbr.spad: ${IN}/pfbr.spad.pamphlet
-	@ echo 0 making ${MID}/pfbr.spad from ${IN}/pfbr.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/pfbr.spad.pamphlet >pfbr.spad )
-
-@
 <<PFBR.o (O from NRLIB)>>=
 ${OUT}/PFBR.o: ${MID}/PFBR.NRLIB
 	@ echo 0 making ${OUT}/PFBR.o from ${MID}/PFBR.NRLIB
@@ -23951,13 +22221,6 @@
 
 @
 \subsection{pfo.spad \cite{1}}
-<<pfo.spad (SPAD from IN)>>=
-${MID}/pfo.spad: ${IN}/pfo.spad.pamphlet
-	@ echo 0 making ${MID}/pfo.spad from ${IN}/pfo.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/pfo.spad.pamphlet >pfo.spad )
-
-@
 <<FORDER.o (O from NRLIB)>>=
 ${OUT}/FORDER.o: ${MID}/FORDER.NRLIB
 	@ echo 0 making ${OUT}/FORDER.o from ${MID}/FORDER.NRLIB
@@ -24090,13 +22353,6 @@
 
 @
 \subsection{pfr.spad \cite{1}}
-<<pfr.spad (SPAD from IN)>>=
-${MID}/pfr.spad: ${IN}/pfr.spad.pamphlet
-	@ echo 0 making ${MID}/pfr.spad from ${IN}/pfr.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/pfr.spad.pamphlet >pfr.spad )
-
-@
 <<PFR.o (O from NRLIB)>>=
 ${OUT}/PFR.o: ${MID}/PFR.NRLIB
 	@ echo 0 making ${OUT}/PFR.o from ${MID}/PFR.NRLIB
@@ -24149,13 +22405,6 @@
 
 @
 \subsection{pf.spad \cite{1}}
-<<pf.spad (SPAD from IN)>>=
-${MID}/pf.spad: ${IN}/pf.spad.pamphlet
-	@ echo 0 making ${MID}/pf.spad from ${IN}/pf.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/pf.spad.pamphlet >pf.spad )
-
-@
 <<IPF.o (O from NRLIB)>>=
 ${OUT}/IPF.o: ${MID}/IPF.NRLIB
 	@ echo 0 making ${OUT}/IPF.o from ${MID}/IPF.NRLIB
@@ -24208,13 +22457,6 @@
 
 @
 \subsection{pgcd.spad \cite{1}}
-<<pgcd.spad (SPAD from IN)>>=
-${MID}/pgcd.spad: ${IN}/pgcd.spad.pamphlet
-	@ echo 0 making ${MID}/pgcd.spad from ${IN}/pgcd.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/pgcd.spad.pamphlet >pgcd.spad )
-
-@
 <<PGCD.o (O from NRLIB)>>=
 ${OUT}/PGCD.o: ${MID}/PGCD.NRLIB
 	@ echo 0 making ${OUT}/PGCD.o from ${MID}/PGCD.NRLIB
@@ -24247,13 +22489,6 @@
 
 @
 \subsection{pgrobner.spad \cite{1}}
-<<pgrobner.spad (SPAD from IN)>>=
-${MID}/pgrobner.spad: ${IN}/pgrobner.spad.pamphlet
-	@ echo 0 making ${MID}/pgrobner.spad from ${IN}/pgrobner.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/pgrobner.spad.pamphlet >pgrobner.spad )
-
-@
 <<PGROEB.o (O from NRLIB)>>=
 ${OUT}/PGROEB.o: ${MID}/PGROEB.NRLIB
 	@ echo 0 making ${OUT}/PGROEB.o from ${MID}/PGROEB.NRLIB
@@ -24286,13 +22521,6 @@
 
 @
 \subsection{pinterp.spad \cite{1}}
-<<pinterp.spad (SPAD from IN)>>=
-${MID}/pinterp.spad: ${IN}/pinterp.spad.pamphlet
-	@ echo 0 making ${MID}/pinterp.spad from ${IN}/pinterp.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/pinterp.spad.pamphlet >pinterp.spad )
-
-@
 <<PINTERP.o (O from NRLIB)>>=
 ${OUT}/PINTERP.o: ${MID}/PINTERP.NRLIB
 	@ echo 0 making ${OUT}/PINTERP.o from ${MID}/PINTERP.NRLIB
@@ -24345,13 +22573,6 @@
 
 @
 \subsection{pleqn.spad \cite{1}}
-<<pleqn.spad (SPAD from IN)>>=
-${MID}/pleqn.spad: ${IN}/pleqn.spad.pamphlet
-	@ echo 0 making ${MID}/pleqn.spad from ${IN}/pleqn.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/pleqn.spad.pamphlet >pleqn.spad )
-
-@
 <<PLEQN.o (O from NRLIB)>>=
 ${OUT}/PLEQN.o: ${MID}/PLEQN.NRLIB
 	@ echo 0 making ${OUT}/PLEQN.o from ${MID}/PLEQN.NRLIB
@@ -24384,13 +22605,6 @@
 
 @
 \subsection{plot3d.spad \cite{1}}
-<<plot3d.spad (SPAD from IN)>>=
-${MID}/plot3d.spad: ${IN}/plot3d.spad.pamphlet
-	@ echo 0 making ${MID}/plot3d.spad from ${IN}/plot3d.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/plot3d.spad.pamphlet >plot3d.spad )
-
-@
 <<PLOT3D.o (O from NRLIB)>>=
 ${OUT}/PLOT3D.o: ${MID}/PLOT3D.NRLIB
 	@ echo 0 making ${OUT}/PLOT3D.o from ${MID}/PLOT3D.NRLIB
@@ -24423,13 +22637,6 @@
 
 @
 \subsection{plot.spad \cite{1}}
-<<plot.spad (SPAD from IN)>>=
-${MID}/plot.spad: ${IN}/plot.spad.pamphlet
-	@ echo 0 making ${MID}/plot.spad from ${IN}/plot.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/plot.spad.pamphlet >plot.spad )
-
-@
 <<PLOT1.o (O from NRLIB)>>=
 ${OUT}/PLOT1.o: ${MID}/PLOT1.NRLIB
 	@ echo 0 making ${OUT}/PLOT1.o from ${MID}/PLOT1.NRLIB
@@ -24482,13 +22689,6 @@
 
 @
 \subsection{plottool.spad \cite{1}}
-<<plottool.spad (SPAD from IN)>>=
-${MID}/plottool.spad: ${IN}/plottool.spad.pamphlet
-	@ echo 0 making ${MID}/plottool.spad from ${IN}/plottool.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/plottool.spad.pamphlet >plottool.spad )
-
-@
 <<PLOTTOOL.o (O from NRLIB)>>=
 ${OUT}/PLOTTOOL.o: ${MID}/PLOTTOOL.NRLIB
 	@ echo 0 making ${OUT}/PLOTTOOL.o from ${MID}/PLOTTOOL.NRLIB
@@ -24521,13 +22721,6 @@
 
 @
 \subsection{polset.spad \cite{1}}
-<<polset.spad (SPAD from IN)>>=
-${MID}/polset.spad: ${IN}/polset.spad.pamphlet
-	@ echo 0 making ${MID}/polset.spad from ${IN}/polset.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/polset.spad.pamphlet >polset.spad )
-
-@
 <<GPOLSET.o (O from NRLIB)>>=
 ${OUT}/GPOLSET.o: ${MID}/GPOLSET.NRLIB
 	@ echo 0 making ${OUT}/GPOLSET.o from ${MID}/GPOLSET.NRLIB
@@ -24626,13 +22819,6 @@
 
 @
 \subsection{poltopol.spad \cite{1}}
-<<poltopol.spad (SPAD from IN)>>=
-${MID}/poltopol.spad: ${IN}/poltopol.spad.pamphlet
-	@ echo 0 making ${MID}/poltopol.spad from ${IN}/poltopol.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/poltopol.spad.pamphlet >poltopol.spad )
-
-@
 <<MPC2.o (O from NRLIB)>>=
 ${OUT}/MPC2.o: ${MID}/MPC2.NRLIB
 	@ echo 0 making ${OUT}/MPC2.o from ${MID}/MPC2.NRLIB
@@ -24705,13 +22891,6 @@
 
 @
 \subsection{polycat.spad \cite{1}}
-<<polycat.spad (SPAD from IN)>>=
-${MID}/polycat.spad: ${IN}/polycat.spad.pamphlet
-	@ echo 0 making ${MID}/polycat.spad from ${IN}/polycat.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/polycat.spad.pamphlet >polycat.spad )
-
-@
 <<AMR-.o (O from NRLIB)>>=
 ${OUT}/AMR-.o: ${MID}/AMR.NRLIB
 	@ echo 0 making ${OUT}/AMR-.o from ${MID}/AMR-.NRLIB
@@ -24980,13 +23159,6 @@
 
 @
 \subsection{poly.spad \cite{1}}
-<<poly.spad (SPAD from IN)>>=
-${MID}/poly.spad: ${IN}/poly.spad.pamphlet
-	@ echo 0 making ${MID}/poly.spad from ${IN}/poly.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/poly.spad.pamphlet >poly.spad )
-
-@
 <<FM.o (O from NRLIB)>>=
 ${OUT}/FM.o: ${MID}/FM.NRLIB
 	@ echo 0 making ${OUT}/FM.o from ${MID}/FM.NRLIB
@@ -25199,13 +23371,6 @@
 
 @
 \subsection{primelt.spad \cite{1}}
-<<primelt.spad (SPAD from IN)>>=
-${MID}/primelt.spad: ${IN}/primelt.spad.pamphlet
-	@ echo 0 making ${MID}/primelt.spad from ${IN}/primelt.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/primelt.spad.pamphlet >primelt.spad )
-
-@
 <<FSPRMELT.o (O from NRLIB)>>=
 ${OUT}/FSPRMELT.o: ${MID}/FSPRMELT.NRLIB
 	@ echo 0 making ${OUT}/FSPRMELT.o from ${MID}/FSPRMELT.NRLIB
@@ -25258,13 +23423,6 @@
 
 @
 \subsection{print.spad \cite{1}}
-<<print.spad (SPAD from IN)>>=
-${MID}/print.spad: ${IN}/print.spad.pamphlet
-	@ echo 0 making ${MID}/print.spad from ${IN}/print.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/print.spad.pamphlet >print.spad )
-
-@
 <<PRINT.o (O from NRLIB)>>=
 ${OUT}/PRINT.o: ${MID}/PRINT.NRLIB
 	@ echo 0 making ${OUT}/PRINT.o from ${MID}/PRINT.NRLIB
@@ -25297,13 +23455,6 @@
 
 @
 \subsection{product.spad \cite{1}}
-<<product.spad (SPAD from IN)>>=
-${MID}/product.spad: ${IN}/product.spad.pamphlet
-	@ echo 0 making ${MID}/product.spad from ${IN}/product.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/product.spad.pamphlet >product.spad )
-
-@
 <<PRODUCT.o (O from NRLIB)>>=
 ${OUT}/PRODUCT.o: ${MID}/PRODUCT.NRLIB
 	@ echo 0 making ${OUT}/PRODUCT.o from ${MID}/PRODUCT.NRLIB
@@ -25336,13 +23487,6 @@
 
 @
 \subsection{prs.spad \cite{1}}
-<<prs.spad (SPAD from IN)>>=
-${MID}/prs.spad: ${IN}/prs.spad.pamphlet
-	@ echo 0 making ${MID}/prs.spad from ${IN}/prs.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/prs.spad.pamphlet >prs.spad )
-
-@
 <<PRS.o (O from NRLIB)>>=
 ${OUT}/PRS.o: ${MID}/PRS.NRLIB
 	@ echo 0 making ${OUT}/PRS.o from ${MID}/PRS.NRLIB
@@ -25375,13 +23519,6 @@
 
 @
 \subsection{prtition.spad \cite{1}}
-<<prtition.spad (SPAD from IN)>>=
-${MID}/prtition.spad: ${IN}/prtition.spad.pamphlet
-	@ echo 0 making ${MID}/prtition.spad from ${IN}/prtition.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/prtition.spad.pamphlet >prtition.spad )
-
-@
 <<SYMPOLY.o (O from NRLIB)>>=
 ${OUT}/SYMPOLY.o: ${MID}/SYMPOLY.NRLIB
 	@ echo 0 making ${OUT}/SYMPOLY.o from ${MID}/SYMPOLY.NRLIB
@@ -25434,13 +23571,6 @@
 
 @
 \subsection{pscat.spad \cite{1}}
-<<pscat.spad (SPAD from IN)>>=
-${MID}/pscat.spad: ${IN}/pscat.spad.pamphlet
-	@ echo 0 making ${MID}/pscat.spad from ${IN}/pscat.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/pscat.spad.pamphlet >pscat.spad )
-
-@
 <<MTSCAT.o (O from NRLIB)>>=
 ${OUT}/MTSCAT.o: ${MID}/MTSCAT.NRLIB
 	@ echo 0 making ${OUT}/MTSCAT.o from ${MID}/MTSCAT.NRLIB
@@ -25643,13 +23773,6 @@
 
 @
 \subsection{pseudolin.spad \cite{1}}
-<<pseudolin.spad (SPAD from IN)>>=
-${MID}/pseudolin.spad: ${IN}/pseudolin.spad.pamphlet
-	@ echo 0 making ${MID}/pseudolin.spad from ${IN}/pseudolin.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/pseudolin.spad.pamphlet >pseudolin.spad )
-
-@
 <<PSEUDLIN.o (O from NRLIB)>>=
 ${OUT}/PSEUDLIN.o: ${MID}/PSEUDLIN.NRLIB
 	@ echo 0 making ${OUT}/PSEUDLIN.o from ${MID}/PSEUDLIN.NRLIB
@@ -25682,13 +23805,6 @@
 
 @
 \subsection{ptranfn.spad \cite{1}}
-<<ptranfn.spad (SPAD from IN)>>=
-${MID}/ptranfn.spad: ${IN}/ptranfn.spad.pamphlet
-	@ echo 0 making ${MID}/ptranfn.spad from ${IN}/ptranfn.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/ptranfn.spad.pamphlet >ptranfn.spad )
-
-@
 <<PTRANFN.o (O from NRLIB)>>=
 ${OUT}/PTRANFN.o: ${MID}/PTRANFN.NRLIB
 	@ echo 0 making ${OUT}/PTRANFN.o from ${MID}/PTRANFN.NRLIB
@@ -25721,13 +23837,6 @@
 
 @
 \subsection{puiseux.spad \cite{1}}
-<<puiseux.spad (SPAD from IN)>>=
-${MID}/puiseux.spad: ${IN}/puiseux.spad.pamphlet
-	@ echo 0 making ${MID}/puiseux.spad from ${IN}/puiseux.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/puiseux.spad.pamphlet >puiseux.spad )
-
-@
 <<UPXS.o (O from NRLIB)>>=
 ${OUT}/UPXS.o: ${MID}/UPXS.NRLIB
 	@ echo 0 making ${OUT}/UPXS.o from ${MID}/UPXS.NRLIB
@@ -25832,13 +23941,6 @@
 
 @
 \subsection{qalgset.spad \cite{1}}
-<<qalgset.spad (SPAD from IN)>>=
-${MID}/qalgset.spad: ${IN}/qalgset.spad.pamphlet
-	@ echo 0 making ${MID}/qalgset.spad from ${IN}/qalgset.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/qalgset.spad.pamphlet >qalgset.spad )
-
-@
 <<QALGSET.o (O from NRLIB)>>=
 ${OUT}/QALGSET.o: ${MID}/QALGSET.NRLIB
 	@ echo 0 making ${OUT}/QALGSET.o from ${MID}/QALGSET.NRLIB
@@ -25891,13 +23993,6 @@
 
 @
 \subsection{quat.spad \cite{1}}
-<<quat.spad (SPAD from IN)>>=
-${MID}/quat.spad: ${IN}/quat.spad.pamphlet
-	@ echo 0 making ${MID}/quat.spad from ${IN}/quat.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/quat.spad.pamphlet >quat.spad )
-
-@
 <<QUAT.o (O from NRLIB)>>=
 ${OUT}/QUAT.o: ${MID}/QUAT.NRLIB
 	@ echo 0 making ${OUT}/QUAT.o from ${MID}/QUAT.NRLIB
@@ -25982,13 +24077,6 @@
 
 @
 \subsection{radeigen.spad \cite{1}}
-<<radeigen.spad (SPAD from IN)>>=
-${MID}/radeigen.spad: ${IN}/radeigen.spad.pamphlet
-	@ echo 0 making ${MID}/radeigen.spad from ${IN}/radeigen.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/radeigen.spad.pamphlet >radeigen.spad )
-
-@
 <<REP.o (O from NRLIB)>>=
 ${OUT}/REP.o: ${MID}/REP.NRLIB
 	@ echo 0 making ${OUT}/REP.o from ${MID}/REP.NRLIB
@@ -26021,13 +24109,6 @@
 
 @
 \subsection{radix.spad \cite{1}}
-<<radix.spad (SPAD from IN)>>=
-${MID}/radix.spad: ${IN}/radix.spad.pamphlet
-	@ echo 0 making ${MID}/radix.spad from ${IN}/radix.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/radix.spad.pamphlet >radix.spad )
-
-@
 <<BINARY.o (O from NRLIB)>>=
 ${OUT}/BINARY.o: ${MID}/BINARY.NRLIB
 	@ echo 0 making ${OUT}/BINARY.o from ${MID}/BINARY.NRLIB
@@ -26140,13 +24221,6 @@
 
 @
 \subsection{random.spad \cite{1}}
-<<random.spad (SPAD from IN)>>=
-${MID}/random.spad: ${IN}/random.spad.pamphlet
-	@ echo 0 making ${MID}/random.spad from ${IN}/random.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/random.spad.pamphlet >random.spad )
-
-@
 <<INTBIT.o (O from NRLIB)>>=
 ${OUT}/INTBIT.o: ${MID}/INTBIT.NRLIB
 	@ echo 0 making ${OUT}/INTBIT.o from ${MID}/INTBIT.NRLIB
@@ -26259,13 +24333,6 @@
 
 @
 \subsection{ratfact.spad \cite{1}}
-<<ratfact.spad (SPAD from IN)>>=
-${MID}/ratfact.spad: ${IN}/ratfact.spad.pamphlet
-	@ echo 0 making ${MID}/ratfact.spad from ${IN}/ratfact.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/ratfact.spad.pamphlet >ratfact.spad )
-
-@
 <<RATFACT.o (O from NRLIB)>>=
 ${OUT}/RATFACT.o: ${MID}/RATFACT.NRLIB
 	@ echo 0 making ${OUT}/RATFACT.o from ${MID}/RATFACT.NRLIB
@@ -26298,13 +24365,6 @@
 
 @
 \subsection{rdeef.spad \cite{1}}
-<<rdeef.spad (SPAD from IN)>>=
-${MID}/rdeef.spad: ${IN}/rdeef.spad.pamphlet
-	@ echo 0 making ${MID}/rdeef.spad from ${IN}/rdeef.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/rdeef.spad.pamphlet >rdeef.spad )
-
-@
 <<INTTOOLS.o (O from NRLIB)>>=
 ${OUT}/INTTOOLS.o: ${MID}/INTTOOLS.NRLIB
 	@ echo 0 making ${OUT}/INTTOOLS.o from ${MID}/INTTOOLS.NRLIB
@@ -26357,13 +24417,6 @@
 
 @
 \subsection{rderf.spad \cite{1}}
-<<rderf.spad (SPAD from IN)>>=
-${MID}/rderf.spad: ${IN}/rderf.spad.pamphlet
-	@ echo 0 making ${MID}/rderf.spad from ${IN}/rderf.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/rderf.spad.pamphlet >rderf.spad )
-
-@
 <<RDETR.o (O from NRLIB)>>=
 ${OUT}/RDETR.o: ${MID}/RDETR.NRLIB
 	@ echo 0 making ${OUT}/RDETR.o from ${MID}/RDETR.NRLIB
@@ -26396,13 +24449,6 @@
 
 @
 \subsection{rdesys.spad \cite{1}}
-<<rdesys.spad (SPAD from IN)>>=
-${MID}/rdesys.spad: ${IN}/rdesys.spad.pamphlet
-	@ echo 0 making ${MID}/rdesys.spad from ${IN}/rdesys.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/rdesys.spad.pamphlet >rdesys.spad )
-
-@
 <<RDEEFS.o (O from NRLIB)>>=
 ${OUT}/RDEEFS.o: ${MID}/RDEEFS.NRLIB
 	@ echo 0 making ${OUT}/RDEEFS.o from ${MID}/RDEEFS.NRLIB
@@ -26455,13 +24501,6 @@
 
 @
 \subsection{real0q.spad \cite{1}}
-<<real0q.spad (SPAD from IN)>>=
-${MID}/real0q.spad: ${IN}/real0q.spad.pamphlet
-	@ echo 0 making ${MID}/real0q.spad from ${IN}/real0q.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/real0q.spad.pamphlet >real0q.spad )
-
-@
 <<REAL0Q.o (O from NRLIB)>>=
 ${OUT}/REAL0Q.o: ${MID}/REAL0Q.NRLIB
 	@ echo 0 making ${OUT}/REAL0Q.o from ${MID}/REAL0Q.NRLIB
@@ -26494,13 +24533,6 @@
 
 @
 \subsection{realzero.spad \cite{1}}
-<<realzero.spad (SPAD from IN)>>=
-${MID}/realzero.spad: ${IN}/realzero.spad.pamphlet
-	@ echo 0 making ${MID}/realzero.spad from ${IN}/realzero.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/realzero.spad.pamphlet >realzero.spad )
-
-@
 <<REAL0.o (O from NRLIB)>>=
 ${OUT}/REAL0.o: ${MID}/REAL0.NRLIB
 	@ echo 0 making ${OUT}/REAL0.o from ${MID}/REAL0.NRLIB
@@ -26533,13 +24565,6 @@
 
 @
 \subsection{reclos.spad \cite{1}}
-<<reclos.spad (SPAD from IN)>>=
-${MID}/reclos.spad: ${IN}/reclos.spad.pamphlet
-	@ echo 0 making ${MID}/reclos.spad from ${IN}/reclos.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/reclos.spad.pamphlet >reclos.spad )
-
-@
 <<POLUTIL.o (O from NRLIB)>>=
 ${OUT}/POLUTIL.o: ${MID}/POLUTIL.NRLIB
 	@ echo 0 making ${OUT}/POLUTIL.o from ${MID}/POLUTIL.NRLIB
@@ -26676,13 +24701,6 @@
 
 @
 \subsection{regset.spad \cite{1}}
-<<regset.spad (SPAD from IN)>>=
-${MID}/regset.spad: ${IN}/regset.spad.pamphlet
-	@ echo 0 making ${MID}/regset.spad from ${IN}/regset.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/regset.spad.pamphlet >regset.spad )
-
-@
 <<QCMPACK.o (O from NRLIB)>>=
 ${OUT}/QCMPACK.o: ${MID}/QCMPACK.NRLIB
 	@ echo 0 making ${OUT}/QCMPACK.o from ${MID}/QCMPACK.NRLIB
@@ -26807,13 +24825,6 @@
 
 @
 \subsection{rep1.spad \cite{1}}
-<<rep1.spad (SPAD from IN)>>=
-${MID}/rep1.spad: ${IN}/rep1.spad.pamphlet
-	@ echo 0 making ${MID}/rep1.spad from ${IN}/rep1.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/rep1.spad.pamphlet >rep1.spad )
-
-@
 <<REP1.o (O from NRLIB)>>=
 ${OUT}/REP1.o: ${MID}/REP1.NRLIB
 	@ echo 0 making ${OUT}/REP1.o from ${MID}/REP1.NRLIB
@@ -26846,13 +24857,6 @@
 
 @
 \subsection{rep2.spad \cite{1}}
-<<rep2.spad (SPAD from IN)>>=
-${MID}/rep2.spad: ${IN}/rep2.spad.pamphlet
-	@ echo 0 making ${MID}/rep2.spad from ${IN}/rep2.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/rep2.spad.pamphlet >rep2.spad )
-
-@
 <<REP2.o (O from NRLIB)>>=
 ${OUT}/REP2.o: ${MID}/REP2.NRLIB
 	@ echo 0 making ${OUT}/REP2.o from ${MID}/REP2.NRLIB
@@ -26885,13 +24889,6 @@
 
 @
 \subsection{resring.spad \cite{1}}
-<<resring.spad (SPAD from IN)>>=
-${MID}/resring.spad: ${IN}/resring.spad.pamphlet
-	@ echo 0 making ${MID}/resring.spad from ${IN}/resring.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/resring.spad.pamphlet >resring.spad )
-
-@
 <<RESRING.o (O from NRLIB)>>=
 ${OUT}/RESRING.o: ${MID}/RESRING.NRLIB
 	@ echo 0 making ${OUT}/RESRING.o from ${MID}/RESRING.NRLIB
@@ -26924,13 +24921,6 @@
 
 @
 \subsection{retract.spad \cite{1}}
-<<retract.spad (SPAD from IN)>>=
-${MID}/retract.spad: ${IN}/retract.spad.pamphlet
-	@ echo 0 making ${MID}/retract.spad from ${IN}/retract.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/retract.spad.pamphlet >retract.spad )
-
-@
 <<FRETRCT-.o (O from NRLIB)>>=
 ${OUT}/FRETRCT-.o: ${MID}/FRETRCT.NRLIB
 	@ echo 0 making ${OUT}/FRETRCT-.o from ${MID}/FRETRCT-.NRLIB
@@ -27015,13 +25005,6 @@
 
 @
 \subsection{rf.spad \cite{1}}
-<<rf.spad (SPAD from IN)>>=
-${MID}/rf.spad: ${IN}/rf.spad.pamphlet
-	@ echo 0 making ${MID}/rf.spad from ${IN}/rf.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/rf.spad.pamphlet >rf.spad )
-
-@
 <<POLYCATQ.o (O from NRLIB)>>=
 ${OUT}/POLYCATQ.o: ${MID}/POLYCATQ.NRLIB
 	@ echo 0 making ${OUT}/POLYCATQ.o from ${MID}/POLYCATQ.NRLIB
@@ -27074,13 +25057,6 @@
 
 @
 \subsection{riccati.spad \cite{1}}
-<<riccati.spad (SPAD from IN)>>=
-${MID}/riccati.spad: ${IN}/riccati.spad.pamphlet
-	@ echo 0 making ${MID}/riccati.spad from ${IN}/riccati.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/riccati.spad.pamphlet >riccati.spad )
-
-@
 <<ODEPRRIC.o (O from NRLIB)>>=
 ${OUT}/ODEPRRIC.o: ${MID}/ODEPRRIC.NRLIB
 	@ echo 0 making ${OUT}/ODEPRRIC.o from ${MID}/ODEPRRIC.NRLIB
@@ -27133,13 +25109,6 @@
 
 @
 \subsection{routines.spad \cite{1}}
-<<routines.spad (SPAD from IN)>>=
-${MID}/routines.spad: ${IN}/routines.spad.pamphlet
-	@ echo 0 making ${MID}/routines.spad from ${IN}/routines.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/routines.spad.pamphlet >routines.spad )
-
-@
 <<ATTRBUT.o (O from NRLIB)>>=
 ${OUT}/ATTRBUT.o: ${MID}/ATTRBUT.NRLIB
 	@ echo 0 making ${OUT}/ATTRBUT.o from ${MID}/ATTRBUT.NRLIB
@@ -27192,13 +25161,6 @@
 
 @
 \subsection{rule.spad \cite{1}}
-<<rule.spad (SPAD from IN)>>=
-${MID}/rule.spad: ${IN}/rule.spad.pamphlet
-	@ echo 0 making ${MID}/rule.spad from ${IN}/rule.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/rule.spad.pamphlet >rule.spad )
-
-@
 <<APPRULE.o (O from NRLIB)>>=
 ${OUT}/APPRULE.o: ${MID}/APPRULE.NRLIB
 	@ echo 0 making ${OUT}/APPRULE.o from ${MID}/APPRULE.NRLIB
@@ -27271,13 +25233,6 @@
 
 @
 \subsection{seg.spad \cite{1}}
-<<seg.spad (SPAD from IN)>>=
-${MID}/seg.spad: ${IN}/seg.spad.pamphlet
-	@ echo 0 making ${MID}/seg.spad from ${IN}/seg.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/seg.spad.pamphlet >seg.spad )
-
-@
 <<INCRMAPS.o (O from NRLIB)>>=
 ${OUT}/INCRMAPS.o: ${MID}/INCRMAPS.NRLIB
 	@ echo 0 making ${OUT}/INCRMAPS.o from ${MID}/INCRMAPS.NRLIB
@@ -27470,13 +25425,6 @@
 
 @
 \subsection{setorder.spad \cite{1}}
-<<setorder.spad (SPAD from IN)>>=
-${MID}/setorder.spad: ${IN}/setorder.spad.pamphlet
-	@ echo 0 making ${MID}/setorder.spad from ${IN}/setorder.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/setorder.spad.pamphlet >setorder.spad )
-
-@
 <<UDPO.o (O from NRLIB)>>=
 ${OUT}/UDPO.o: ${MID}/UDPO.NRLIB
 	@ echo 0 making ${OUT}/UDPO.o from ${MID}/UDPO.NRLIB
@@ -27529,13 +25477,6 @@
 
 @
 \subsection{sets.spad \cite{1}}
-<<sets.spad (SPAD from IN)>>=
-${MID}/sets.spad: ${IN}/sets.spad.pamphlet
-	@ echo 0 making ${MID}/sets.spad from ${IN}/sets.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/sets.spad.pamphlet >sets.spad )
-
-@
 <<SET.o (O from NRLIB)>>=
 ${OUT}/SET.o: ${MID}/SET.NRLIB
 	@ echo 0 making ${OUT}/SET.o from ${MID}/SET.NRLIB
@@ -27568,13 +25509,6 @@
 
 @
 \subsection{sex.spad \cite{1}}
-<<sex.spad (SPAD from IN)>>=
-${MID}/sex.spad: ${IN}/sex.spad.pamphlet
-	@ echo 0 making ${MID}/sex.spad from ${IN}/sex.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/sex.spad.pamphlet >sex.spad )
-
-@
 <<SEX.o (O from NRLIB)>>=
 ${OUT}/SEX.o: ${MID}/SEX.NRLIB
 	@ echo 0 making ${OUT}/SEX.o from ${MID}/SEX.NRLIB
@@ -27647,13 +25581,6 @@
 
 @
 \subsection{sf.spad \cite{1}}
-<<sf.spad (SPAD from IN)>>=
-${MID}/sf.spad: ${IN}/sf.spad.pamphlet
-	@ echo 0 making ${MID}/sf.spad from ${IN}/sf.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/sf.spad.pamphlet >sf.spad )
-
-@
 <<DFLOAT.o (O from NRLIB)>>=
 ${OUT}/DFLOAT.o: ${MID}/DFLOAT.NRLIB
 	@ echo 0 making ${OUT}/DFLOAT.o from ${MID}/DFLOAT.NRLIB
@@ -27887,13 +25814,6 @@
 
 @
 \subsection{sgcf.spad \cite{1}}
-<<sgcf.spad (SPAD from IN)>>=
-${MID}/sgcf.spad: ${IN}/sgcf.spad.pamphlet
-	@ echo 0 making ${MID}/sgcf.spad from ${IN}/sgcf.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/sgcf.spad.pamphlet >sgcf.spad )
-
-@
 <<SGCF.o (O from NRLIB)>>=
 ${OUT}/SGCF.o: ${MID}/SGCF.NRLIB
 	@ echo 0 making ${OUT}/SGCF.o from ${MID}/SGCF.NRLIB
@@ -27926,13 +25846,6 @@
 
 @
 \subsection{sign.spad \cite{1}}
-<<sign.spad (SPAD from IN)>>=
-${MID}/sign.spad: ${IN}/sign.spad.pamphlet
-	@ echo 0 making ${MID}/sign.spad from ${IN}/sign.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/sign.spad.pamphlet >sign.spad )
-
-@
 <<INPSIGN.o (O from NRLIB)>>=
 ${OUT}/INPSIGN.o: ${MID}/INPSIGN.NRLIB
 	@ echo 0 making ${OUT}/INPSIGN.o from ${MID}/INPSIGN.NRLIB
@@ -28025,13 +25938,6 @@
 
 @
 \subsection{si.spad \cite{1}}
-<<si.spad (SPAD from IN)>>=
-${MID}/si.spad: ${IN}/si.spad.pamphlet
-	@ echo 0 making ${MID}/si.spad from ${IN}/si.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/si.spad.pamphlet >si.spad )
-
-@
 <<SINT.o (O from NRLIB)>>=
 ${OUT}/SINT.o: ${MID}/SINT.NRLIB
 	@ echo 0 making ${OUT}/SINT.o from ${MID}/SINT.NRLIB
@@ -28147,13 +26053,6 @@
 
 @
 \subsection{smith.spad \cite{1}}
-<<smith.spad (SPAD from IN)>>=
-${MID}/smith.spad: ${IN}/smith.spad.pamphlet
-	@ echo 0 making ${MID}/smith.spad from ${IN}/smith.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/smith.spad.pamphlet >smith.spad )
-
-@
 <<SMITH.o (O from NRLIB)>>=
 ${OUT}/SMITH.o: ${MID}/SMITH.NRLIB
 	@ echo 0 making ${OUT}/SMITH.o from ${MID}/SMITH.NRLIB
@@ -28186,13 +26085,6 @@
 
 @
 \subsection{solvedio.spad \cite{1}}
-<<solvedio.spad (SPAD from IN)>>=
-${MID}/solvedio.spad: ${IN}/solvedio.spad.pamphlet
-	@ echo 0 making ${MID}/solvedio.spad from ${IN}/solvedio.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/solvedio.spad.pamphlet >solvedio.spad )
-
-@
 <<DIOSP.o (O from NRLIB)>>=
 ${OUT}/DIOSP.o: ${MID}/DIOSP.NRLIB
 	@ echo 0 making ${OUT}/DIOSP.o from ${MID}/DIOSP.NRLIB
@@ -28225,13 +26117,6 @@
 
 @
 \subsection{solvefor.spad \cite{1}}
-<<solvefor.spad (SPAD from IN)>>=
-${MID}/solvefor.spad: ${IN}/solvefor.spad.pamphlet
-	@ echo 0 making ${MID}/solvefor.spad from ${IN}/solvefor.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/solvefor.spad.pamphlet >solvefor.spad )
-
-@
 <<SOLVEFOR.o (O from NRLIB)>>=
 ${OUT}/SOLVEFOR.o: ${MID}/SOLVEFOR.NRLIB
 	@ echo 0 making ${OUT}/SOLVEFOR.o from ${MID}/SOLVEFOR.NRLIB
@@ -28264,13 +26149,6 @@
 
 @
 \subsection{solvelin.spad \cite{1}}
-<<solvelin.spad (SPAD from IN)>>=
-${MID}/solvelin.spad: ${IN}/solvelin.spad.pamphlet
-	@ echo 0 making ${MID}/solvelin.spad from ${IN}/solvelin.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/solvelin.spad.pamphlet >solvelin.spad )
-
-@
 <<LSMP.o (O from NRLIB)>>=
 ${OUT}/LSMP.o: ${MID}/LSMP.NRLIB
 	@ echo 0 making ${OUT}/LSMP.o from ${MID}/LSMP.NRLIB
@@ -28343,13 +26221,6 @@
 
 @
 \subsection{solverad.spad \cite{1}}
-<<solverad.spad (SPAD from IN)>>=
-${MID}/solverad.spad: ${IN}/solverad.spad.pamphlet
-	@ echo 0 making ${MID}/solverad.spad from ${IN}/solverad.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/solverad.spad.pamphlet >solverad.spad )
-
-@
 <<SOLVERAD.o (O from NRLIB)>>=
 ${OUT}/SOLVERAD.o: ${MID}/SOLVERAD.NRLIB
 	@ echo 0 making ${OUT}/SOLVERAD.o from ${MID}/SOLVERAD.NRLIB
@@ -28382,13 +26253,6 @@
 
 @
 \subsection{sortpak.spad \cite{1}}
-<<sortpak.spad (SPAD from IN)>>=
-${MID}/sortpak.spad: ${IN}/sortpak.spad.pamphlet
-	@ echo 0 making ${MID}/sortpak.spad from ${IN}/sortpak.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/sortpak.spad.pamphlet >sortpak.spad )
-
-@
 <<SORTPAK.o (O from NRLIB)>>=
 ${OUT}/SORTPAK.o: ${MID}/SORTPAK.NRLIB
 	@ echo 0 making ${OUT}/SORTPAK.o from ${MID}/SORTPAK.NRLIB
@@ -28421,13 +26285,6 @@
 
 @
 \subsection{space.spad \cite{1}}
-<<space.spad (SPAD from IN)>>=
-${MID}/space.spad: ${IN}/space.spad.pamphlet
-	@ echo 0 making ${MID}/space.spad from ${IN}/space.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/space.spad.pamphlet >space.spad )
-
-@
 <<SPACEC.o (O from NRLIB)>>=
 ${OUT}/SPACEC.o: ${MID}/SPACEC.NRLIB
 	@ echo 0 making ${OUT}/SPACEC.o from ${MID}/SPACEC.NRLIB
@@ -28500,13 +26357,6 @@
 
 @
 \subsection{special.spad \cite{1}}
-<<special.spad (SPAD from IN)>>=
-${MID}/special.spad: ${IN}/special.spad.pamphlet
-	@ echo 0 making ${MID}/special.spad from ${IN}/special.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/special.spad.pamphlet >special.spad )
-
-@
 <<DFSFUN.o (O from NRLIB)>>=
 ${OUT}/DFSFUN.o: ${MID}/DFSFUN.NRLIB
 	@ echo 0 making ${OUT}/DFSFUN.o from ${MID}/DFSFUN.NRLIB
@@ -28579,13 +26429,6 @@
 
 @
 \subsection{sregset.spad \cite{1}}
-<<sregset.spad (SPAD from IN)>>=
-${MID}/sregset.spad: ${IN}/sregset.spad.pamphlet
-	@ echo 0 making ${MID}/sregset.spad from ${IN}/sregset.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/sregset.spad.pamphlet >sregset.spad )
-
-@
 <<SFQCMPK.o (O from NRLIB)>>=
 ${OUT}/SFQCMPK.o: ${MID}/SFQCMPK.NRLIB
 	@ echo 0 making ${OUT}/SFQCMPK.o from ${MID}/SFQCMPK.NRLIB
@@ -28698,13 +26541,6 @@
 
 @
 \subsection{s.spad \cite{1}}
-<<s.spad (SPAD from IN)>>=
-${MID}/s.spad: ${IN}/s.spad.pamphlet
-	@ echo 0 making ${MID}/s.spad from ${IN}/s.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/s.spad.pamphlet >s.spad )
-
-@
 <<NAGS.o (O from NRLIB)>>=
 ${OUT}/NAGS.o: ${MID}/NAGS.NRLIB
 	@ echo 0 making ${OUT}/NAGS.o from ${MID}/NAGS.NRLIB
@@ -28737,13 +26573,6 @@
 
 @
 \subsection{stream.spad \cite{1}}
-<<stream.spad (SPAD from IN)>>=
-${MID}/stream.spad: ${IN}/stream.spad.pamphlet
-	@ echo 0 making ${MID}/stream.spad from ${IN}/stream.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/stream.spad.pamphlet >stream.spad )
-
-@
 <<CSTTOOLS.o (O from NRLIB)>>=
 ${OUT}/CSTTOOLS.o: ${MID}/CSTTOOLS.NRLIB
 	@ echo 0 making ${OUT}/CSTTOOLS.o from ${MID}/CSTTOOLS.NRLIB
@@ -28888,13 +26717,6 @@
 
 @
 \subsection{string.spad \cite{1}}
-<<string.spad (SPAD from IN)>>=
-${MID}/string.spad: ${IN}/string.spad.pamphlet
-	@ echo 0 making ${MID}/string.spad from ${IN}/string.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/string.spad.pamphlet >string.spad )
-
-@
 <<CCLASS.o (O from NRLIB)>>=
 ${OUT}/CCLASS.o: ${MID}/CCLASS.NRLIB
 	@ echo 0 making ${OUT}/CCLASS.o from ${MID}/CCLASS.NRLIB
@@ -29041,13 +26863,6 @@
 
 @
 \subsection{sttaylor.spad \cite{1}}
-<<sttaylor.spad (SPAD from IN)>>=
-${MID}/sttaylor.spad: ${IN}/sttaylor.spad.pamphlet
-	@ echo 0 making ${MID}/sttaylor.spad from ${IN}/sttaylor.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/sttaylor.spad.pamphlet >sttaylor.spad )
-
-@
 <<STTAYLOR.o (O from NRLIB)>>=
 ${OUT}/STTAYLOR.o: ${MID}/STTAYLOR.NRLIB
 	@ echo 0 making ${OUT}/STTAYLOR.o from ${MID}/STTAYLOR.NRLIB
@@ -29080,13 +26895,6 @@
 
 @
 \subsection{sttf.spad \cite{1}}
-<<sttf.spad (SPAD from IN)>>=
-${MID}/sttf.spad: ${IN}/sttf.spad.pamphlet
-	@ echo 0 making ${MID}/sttf.spad from ${IN}/sttf.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/sttf.spad.pamphlet >sttf.spad )
-
-@
 <<STTF.o (O from NRLIB)>>=
 ${OUT}/STTF.o: ${MID}/STTF.NRLIB
 	@ echo 0 making ${OUT}/STTF.o from ${MID}/STTF.NRLIB
@@ -29139,13 +26947,6 @@
 
 @
 \subsection{sturm.spad \cite{1}}
-<<sturm.spad (SPAD from IN)>>=
-${MID}/sturm.spad: ${IN}/sturm.spad.pamphlet
-	@ echo 0 making ${MID}/sturm.spad from ${IN}/sturm.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/sturm.spad.pamphlet >sturm.spad )
-
-@
 <<SHP.o (O from NRLIB)>>=
 ${OUT}/SHP.o: ${MID}/SHP.NRLIB
 	@ echo 0 making ${OUT}/SHP.o from ${MID}/SHP.NRLIB
@@ -29178,13 +26979,6 @@
 
 @
 \subsection{suchthat.spad \cite{1}}
-<<suchthat.spad (SPAD from IN)>>=
-${MID}/suchthat.spad: ${IN}/suchthat.spad.pamphlet
-	@ echo 0 making ${MID}/suchthat.spad from ${IN}/suchthat.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/suchthat.spad.pamphlet >suchthat.spad )
-
-@
 <<SUCH.o (O from NRLIB)>>=
 ${OUT}/SUCH.o: ${MID}/SUCH.NRLIB
 	@ echo 0 making ${OUT}/SUCH.o from ${MID}/SUCH.NRLIB
@@ -29217,13 +27011,6 @@
 
 @
 \subsection{suls.spad \cite{1}}
-<<suls.spad (SPAD from IN)>>=
-${MID}/suls.spad: ${IN}/suls.spad.pamphlet
-	@ echo 0 making ${MID}/suls.spad from ${IN}/suls.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/suls.spad.pamphlet >suls.spad )
-
-@
 <<SULS.o (O from NRLIB)>>=
 ${OUT}/SULS.o: ${MID}/SULS.NRLIB
 	@ echo 0 making ${OUT}/SULS.o from ${MID}/SULS.NRLIB
@@ -29256,13 +27043,6 @@
 
 @
 \subsection{sum.spad \cite{1}}
-<<sum.spad (SPAD from IN)>>=
-${MID}/sum.spad: ${IN}/sum.spad.pamphlet
-	@ echo 0 making ${MID}/sum.spad from ${IN}/sum.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/sum.spad.pamphlet >sum.spad )
-
-@
 <<GOSPER.o (O from NRLIB)>>=
 ${OUT}/GOSPER.o: ${MID}/GOSPER.NRLIB
 	@ echo 0 making ${OUT}/GOSPER.o from ${MID}/GOSPER.NRLIB
@@ -29335,13 +27115,6 @@
 
 @
 \subsection{sups.spad \cite{1}}
-<<sups.spad (SPAD from IN)>>=
-${MID}/sups.spad: ${IN}/sups.spad.pamphlet
-	@ echo 0 making ${MID}/sups.spad from ${IN}/sups.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/sups.spad.pamphlet >sups.spad )
-
-@
 <<ISUPS.o (O from NRLIB)>>=
 ${OUT}/ISUPS.o: ${MID}/ISUPS.NRLIB
 	@ echo 0 making ${OUT}/ISUPS.o from ${MID}/ISUPS.NRLIB
@@ -29374,13 +27147,6 @@
 
 @
 \subsection{supxs.spad \cite{1}}
-<<supxs.spad (SPAD from IN)>>=
-${MID}/supxs.spad: ${IN}/supxs.spad.pamphlet
-	@ echo 0 making ${MID}/supxs.spad from ${IN}/supxs.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/supxs.spad.pamphlet >supxs.spad )
-
-@
 <<SUPXS.o (O from NRLIB)>>=
 ${OUT}/SUPXS.o: ${MID}/SUPXS.NRLIB
 	@ echo 0 making ${OUT}/SUPXS.o from ${MID}/SUPXS.NRLIB
@@ -29413,13 +27179,6 @@
 
 @
 \subsection{suts.spad \cite{1}}
-<<suts.spad (SPAD from IN)>>=
-${MID}/suts.spad: ${IN}/suts.spad.pamphlet
-	@ echo 0 making ${MID}/suts.spad from ${IN}/suts.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/suts.spad.pamphlet >suts.spad )
-
-@
 <<SUTS.o (O from NRLIB)>>=
 ${OUT}/SUTS.o: ${MID}/SUTS.NRLIB
 	@ echo 0 making ${OUT}/SUTS.o from ${MID}/SUTS.NRLIB
@@ -29452,13 +27211,6 @@
 
 @
 \subsection{symbol.spad \cite{1}}
-<<symbol.spad (SPAD from IN)>>=
-${MID}/symbol.spad: ${IN}/symbol.spad.pamphlet
-	@ echo 0 making ${MID}/symbol.spad from ${IN}/symbol.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/symbol.spad.pamphlet >symbol.spad )
-
-@
 <<SYMBOL.o (O from NRLIB)>>=
 ${OUT}/SYMBOL.o: ${MID}/SYMBOL.NRLIB
 	@ echo 0 making ${OUT}/SYMBOL.o from ${MID}/SYMBOL.NRLIB
@@ -29508,13 +27260,6 @@
 
 @
 \subsection{syssolp.spad \cite{1}}
-<<syssolp.spad (SPAD from IN)>>=
-${MID}/syssolp.spad: ${IN}/syssolp.spad.pamphlet
-	@ echo 0 making ${MID}/syssolp.spad from ${IN}/syssolp.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/syssolp.spad.pamphlet >syssolp.spad )
-
-@
 <<SYSSOLP.o (O from NRLIB)>>=
 ${OUT}/SYSSOLP.o: ${MID}/SYSSOLP.NRLIB
 	@ echo 0 making ${OUT}/SYSSOLP.o from ${MID}/SYSSOLP.NRLIB
@@ -29547,13 +27292,6 @@
 
 @
 \subsection{system.spad \cite{1}}
-<<system.spad (SPAD from IN)>>=
-${MID}/system.spad: ${IN}/system.spad.pamphlet
-	@ echo 0 making ${MID}/system.spad from ${IN}/system.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/system.spad.pamphlet >system.spad )
-
-@
 <<MSYSCMD.o (O from NRLIB)>>=
 ${OUT}/MSYSCMD.o: ${MID}/MSYSCMD.NRLIB
 	@ echo 0 making ${OUT}/MSYSCMD.o from ${MID}/MSYSCMD.NRLIB
@@ -29586,13 +27324,6 @@
 
 @
 \subsection{tableau.spad \cite{1}}
-<<tableau.spad (SPAD from IN)>>=
-${MID}/tableau.spad: ${IN}/tableau.spad.pamphlet
-	@ echo 0 making ${MID}/tableau.spad from ${IN}/tableau.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/tableau.spad.pamphlet >tableau.spad )
-
-@
 <<TABLBUMP.o (O from NRLIB)>>=
 ${OUT}/TABLBUMP.o: ${MID}/TABLBUMP.NRLIB
 	@ echo 0 making ${OUT}/TABLBUMP.o from ${MID}/TABLBUMP.NRLIB
@@ -29645,13 +27376,6 @@
 
 @
 \subsection{table.spad \cite{1}}
-<<table.spad (SPAD from IN)>>=
-${MID}/table.spad: ${IN}/table.spad.pamphlet
-	@ echo 0 making ${MID}/table.spad from ${IN}/table.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/table.spad.pamphlet >table.spad )
-
-@
 <<EQTBL.o (O from NRLIB)>>=
 ${OUT}/EQTBL.o: ${MID}/EQTBL.NRLIB
 	@ echo 0 making ${OUT}/EQTBL.o from ${MID}/EQTBL.NRLIB
@@ -29804,13 +27528,6 @@
 
 @
 \subsection{taylor.spad \cite{1}}
-<<taylor.spad (SPAD from IN)>>=
-${MID}/taylor.spad: ${IN}/taylor.spad.pamphlet
-	@ echo 0 making ${MID}/taylor.spad from ${IN}/taylor.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/taylor.spad.pamphlet >taylor.spad )
-
-@
 <<ITAYLOR.o (O from NRLIB)>>=
 ${OUT}/ITAYLOR.o: ${MID}/ITAYLOR.NRLIB
 	@ echo 0 making ${OUT}/ITAYLOR.o from ${MID}/ITAYLOR.NRLIB
@@ -29883,13 +27600,6 @@
 
 @
 \subsection{tex.spad \cite{1}}
-<<tex.spad (SPAD from IN)>>=
-${MID}/tex.spad: ${IN}/tex.spad.pamphlet
-	@ echo 0 making ${MID}/tex.spad from ${IN}/tex.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/tex.spad.pamphlet >tex.spad )
-
-@
 <<TEX.o (O from NRLIB)>>=
 ${OUT}/TEX.o: ${MID}/TEX.NRLIB
 	@ echo 0 making ${OUT}/TEX.o from ${MID}/TEX.NRLIB
@@ -29942,13 +27652,6 @@
 
 @
 \subsection{tools.spad \cite{1}}
-<<tools.spad (SPAD from IN)>>=
-${MID}/tools.spad: ${IN}/tools.spad.pamphlet
-	@ echo 0 making ${MID}/tools.spad from ${IN}/tools.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/tools.spad.pamphlet >tools.spad )
-
-@
 <<ESTOOLS.o (O from NRLIB)>>=
 ${OUT}/ESTOOLS.o: ${MID}/ESTOOLS.NRLIB
 	@ echo 0 making ${OUT}/ESTOOLS.o from ${MID}/ESTOOLS.NRLIB
@@ -30021,13 +27724,6 @@
 
 @
 \subsection{transsolve.spad \cite{1}}
-<<transsolve.spad (SPAD from IN)>>=
-${MID}/transsolve.spad: ${IN}/transsolve.spad.pamphlet
-	@ echo 0 making ${MID}/transsolve.spad from ${IN}/transsolve.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/transsolve.spad.pamphlet >transsolve.spad )
-
-@
 <<SOLVESER.o (O from NRLIB)>>=
 ${OUT}/SOLVESER.o: ${MID}/SOLVESER.NRLIB
 	@ echo 0 making ${OUT}/SOLVESER.o from ${MID}/SOLVESER.NRLIB
@@ -30080,13 +27776,6 @@
 
 @
 \subsection{tree.spad \cite{1}}
-<<tree.spad (SPAD from IN)>>=
-${MID}/tree.spad: ${IN}/tree.spad.pamphlet
-	@ echo 0 making ${MID}/tree.spad from ${IN}/tree.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/tree.spad.pamphlet >tree.spad )
-
-@
 <<BBTREE.o (O from NRLIB)>>=
 ${OUT}/BBTREE.o: ${MID}/BBTREE.NRLIB
 	@ echo 0 making ${OUT}/BBTREE.o from ${MID}/BBTREE.NRLIB
@@ -30251,13 +27940,6 @@
 
 @
 \subsection{trigcat.spad \cite{1}}
-<<trigcat.spad (SPAD from IN)>>=
-${MID}/trigcat.spad: ${IN}/trigcat.spad.pamphlet
-	@ echo 0 making ${MID}/trigcat.spad from ${IN}/trigcat.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/trigcat.spad.pamphlet >trigcat.spad )
-
-@
 <<AHYP.o (O from NRLIB)>>=
 ${OUT}/AHYP.o: ${MID}/AHYP.NRLIB
 	@ echo 0 making ${OUT}/AHYP.o from ${MID}/AHYP.NRLIB
@@ -30530,13 +28212,6 @@
 
 @
 \subsection{triset.spad \cite{1}}
-<<triset.spad (SPAD from IN)>>=
-${MID}/triset.spad: ${IN}/triset.spad.pamphlet
-	@ echo 0 making ${MID}/triset.spad from ${IN}/triset.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/triset.spad.pamphlet >triset.spad )
-
-@
 <<GTSET.o (O from NRLIB)>>=
 ${OUT}/GTSET.o: ${MID}/GTSET.NRLIB
 	@ echo 0 making ${OUT}/GTSET.o from ${MID}/GTSET.NRLIB
@@ -30674,13 +28349,6 @@
 
 @
 \subsection{tube.spad \cite{1}}
-<<tube.spad (SPAD from IN)>>=
-${MID}/tube.spad: ${IN}/tube.spad.pamphlet
-	@ echo 0 making ${MID}/tube.spad from ${IN}/tube.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/tube.spad.pamphlet >tube.spad )
-
-@
 <<EXPRTUBE.o (O from NRLIB)>>=
 ${OUT}/EXPRTUBE.o: ${MID}/EXPRTUBE.NRLIB
 	@ echo 0 making ${OUT}/EXPRTUBE.o from ${MID}/EXPRTUBE.NRLIB
@@ -30773,13 +28441,6 @@
 
 @
 \subsection{twofact.spad \cite{1}}
-<<twofact.spad (SPAD from IN)>>=
-${MID}/twofact.spad: ${IN}/twofact.spad.pamphlet
-	@ echo 0 making ${MID}/twofact.spad from ${IN}/twofact.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/twofact.spad.pamphlet >twofact.spad )
-
-@
 <<NORMRETR.o (O from NRLIB)>>=
 ${OUT}/NORMRETR.o: ${MID}/NORMRETR.NRLIB
 	@ echo 0 making ${OUT}/NORMRETR.o from ${MID}/NORMRETR.NRLIB
@@ -30832,13 +28493,6 @@
 
 @
 \subsection{unifact.spad \cite{1}}
-<<unifact.spad (SPAD from IN)>>=
-${MID}/unifact.spad: ${IN}/unifact.spad.pamphlet
-	@ echo 0 making ${MID}/unifact.spad from ${IN}/unifact.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/unifact.spad.pamphlet >unifact.spad )
-
-@
 <<UNIFACT.o (O from NRLIB)>>=
 ${OUT}/UNIFACT.o: ${MID}/UNIFACT.NRLIB
 	@ echo 0 making ${OUT}/UNIFACT.o from ${MID}/UNIFACT.NRLIB
@@ -30871,13 +28525,6 @@
 
 @
 \subsection{updecomp.spad \cite{1}}
-<<updecomp.spad (SPAD from IN)>>=
-${MID}/updecomp.spad: ${IN}/updecomp.spad.pamphlet
-	@ echo 0 making ${MID}/updecomp.spad from ${IN}/updecomp.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/updecomp.spad.pamphlet >updecomp.spad )
-
-@
 <<UPDECOMP.o (O from NRLIB)>>=
 ${OUT}/UPDECOMP.o: ${MID}/UPDECOMP.NRLIB
 	@ echo 0 making ${OUT}/UPDECOMP.o from ${MID}/UPDECOMP.NRLIB
@@ -30910,13 +28557,6 @@
 
 @
 \subsection{updivp.spad \cite{1}}
-<<updivp.spad (SPAD from IN)>>=
-${MID}/updivp.spad: ${IN}/updivp.spad.pamphlet
-	@ echo 0 making ${MID}/updivp.spad from ${IN}/updivp.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/updivp.spad.pamphlet >updivp.spad )
-
-@
 <<UPDIVP.o (O from NRLIB)>>=
 ${OUT}/UPDIVP.o: ${MID}/UPDIVP.NRLIB
 	@ echo 0 making ${OUT}/UPDIVP.o from ${MID}/UPDIVP.NRLIB
@@ -30949,13 +28589,6 @@
 
 @
 \subsection{utsode.spad \cite{1}}
-<<utsode.spad (SPAD from IN)>>=
-${MID}/utsode.spad: ${IN}/utsode.spad.pamphlet
-	@ echo 0 making ${MID}/utsode.spad from ${IN}/utsode.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/utsode.spad.pamphlet >utsode.spad )
-
-@
 <<UTSODE.o (O from NRLIB)>>=
 ${OUT}/UTSODE.o: ${MID}/UTSODE.NRLIB
 	@ echo 0 making ${OUT}/UTSODE.o from ${MID}/UTSODE.NRLIB
@@ -30988,13 +28621,6 @@
 
 @
 \subsection{variable.spad \cite{1}}
-<<variable.spad (SPAD from IN)>>=
-${MID}/variable.spad: ${IN}/variable.spad.pamphlet
-	@ echo 0 making ${MID}/variable.spad from ${IN}/variable.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/variable.spad.pamphlet >variable.spad )
-
-@
 <<ANON.o (O from NRLIB)>>=
 ${OUT}/ANON.o: ${MID}/ANON.NRLIB
 	@ echo 0 making ${OUT}/ANON.o from ${MID}/ANON.NRLIB
@@ -31107,13 +28733,6 @@
 
 @
 \subsection{vector.spad \cite{1}}
-<<vector.spad (SPAD from IN)>>=
-${MID}/vector.spad: ${IN}/vector.spad.pamphlet
-	@ echo 0 making ${MID}/vector.spad from ${IN}/vector.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/vector.spad.pamphlet >vector.spad )
-
-@
 <<DIRPCAT-.o (O from NRLIB)>>=
 ${OUT}/DIRPCAT-.o: ${MID}/DIRPCAT.NRLIB
 	@ echo 0 making ${OUT}/DIRPCAT-.o from ${MID}/DIRPCAT-.NRLIB
@@ -31307,13 +28926,6 @@
 
 @
 \subsection{view2D.spad \cite{1}}
-<<view2D.spad (SPAD from IN)>>=
-${MID}/view2D.spad: ${IN}/view2D.spad.pamphlet
-	@ echo 0 making ${MID}/view2D.spad from ${IN}/view2D.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/view2D.spad.pamphlet >view2D.spad )
-
-@
 <<GRIMAGE.o (O from NRLIB)>>=
 ${OUT}/GRIMAGE.o: ${MID}/GRIMAGE.NRLIB
 	@ echo 0 making ${OUT}/GRIMAGE.o from ${MID}/GRIMAGE.NRLIB
@@ -31366,13 +28978,6 @@
 
 @
 \subsection{view3D.spad \cite{1}}
-<<view3D.spad (SPAD from IN)>>=
-${MID}/view3D.spad: ${IN}/view3D.spad.pamphlet
-	@ echo 0 making ${MID}/view3D.spad from ${IN}/view3D.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/view3D.spad.pamphlet >view3D.spad )
-
-@
 <<VIEW3D.o (O from NRLIB)>>=
 ${OUT}/VIEW3D.o: ${MID}/VIEW3D.NRLIB
 	@ echo 0 making ${OUT}/VIEW3D.o from ${MID}/VIEW3D.NRLIB
@@ -31405,13 +29010,6 @@
 
 @
 \subsection{viewDef.spad \cite{1}}
-<<viewDef.spad (SPAD from IN)>>=
-${MID}/viewDef.spad: ${IN}/viewDef.spad.pamphlet
-	@ echo 0 making ${MID}/viewDef.spad from ${IN}/viewDef.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/viewDef.spad.pamphlet >viewDef.spad )
-
-@
 <<VIEWDEF.o (O from NRLIB)>>=
 ${OUT}/VIEWDEF.o: ${MID}/VIEWDEF.NRLIB
 	@ echo 0 making ${OUT}/VIEWDEF.o from ${MID}/VIEWDEF.NRLIB
@@ -31444,13 +29042,6 @@
 
 @
 \subsection{viewpack.spad \cite{1}}
-<<viewpack.spad (SPAD from IN)>>=
-${MID}/viewpack.spad: ${IN}/viewpack.spad.pamphlet
-	@ echo 0 making ${MID}/viewpack.spad from ${IN}/viewpack.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/viewpack.spad.pamphlet >viewpack.spad )
-
-@
 <<VIEW.o (O from NRLIB)>>=
 ${OUT}/VIEW.o: ${MID}/VIEW.NRLIB
 	@ echo 0 making ${OUT}/VIEW.o from ${MID}/VIEW.NRLIB
@@ -31483,13 +29074,6 @@
 
 @
 \subsection{void.spad \cite{1}}
-<<void.spad (SPAD from IN)>>=
-${MID}/void.spad: ${IN}/void.spad.pamphlet
-	@ echo 0 making ${MID}/void.spad from ${IN}/void.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/void.spad.pamphlet >void.spad )
-
-@
 <<EXIT.o (O from NRLIB)>>=
 ${OUT}/EXIT.o: ${MID}/EXIT.NRLIB
 	@ echo 0 making ${OUT}/EXIT.o from ${MID}/EXIT.NRLIB
@@ -31562,13 +29146,6 @@
 
 @
 \subsection{weier.spad \cite{1}}
-<<weier.spad (SPAD from IN)>>=
-${MID}/weier.spad: ${IN}/weier.spad.pamphlet
-	@ echo 0 making ${MID}/weier.spad from ${IN}/weier.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/weier.spad.pamphlet >weier.spad )
-
-@
 <<WEIER.o (O from NRLIB)>>=
 ${OUT}/WEIER.o: ${MID}/WEIER.NRLIB
 	@ echo 0 making ${OUT}/WEIER.o from ${MID}/WEIER.NRLIB
@@ -31601,13 +29178,6 @@
 
 @
 \subsection{wtpol.spad \cite{1}}
-<<wtpol.spad (SPAD from IN)>>=
-${MID}/wtpol.spad: ${IN}/wtpol.spad.pamphlet
-	@ echo 0 making ${MID}/wtpol.spad from ${IN}/wtpol.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/wtpol.spad.pamphlet >wtpol.spad )
-
-@
 <<OWP.o (O from NRLIB)>>=
 ${OUT}/OWP.o: ${MID}/OWP.NRLIB
 	@ echo 0 making ${OUT}/OWP.o from ${MID}/OWP.NRLIB
@@ -31660,13 +29230,6 @@
 
 @
 \subsection{xlpoly.spad \cite{1}}
-<<xlpoly.spad (SPAD from IN)>>=
-${MID}/xlpoly.spad: ${IN}/xlpoly.spad.pamphlet
-	@ echo 0 making ${MID}/xlpoly.spad from ${IN}/xlpoly.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/xlpoly.spad.pamphlet >xlpoly.spad )
-
-@
 <<FLALG.o (O from NRLIB)>>=
 ${OUT}/FLALG.o: ${MID}/FLALG.NRLIB
 	@ echo 0 making ${OUT}/FLALG.o from ${MID}/FLALG.NRLIB
@@ -31871,13 +29434,6 @@
 
 @
 \subsection{xpoly.spad \cite{1}}
-<<xpoly.spad (SPAD from IN)>>=
-${MID}/xpoly.spad: ${IN}/xpoly.spad.pamphlet
-	@ echo 0 making ${MID}/xpoly.spad from ${IN}/xpoly.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/xpoly.spad.pamphlet >xpoly.spad )
-
-@
 <<FMCAT.o (O from NRLIB)>>=
 ${OUT}/FMCAT.o: ${MID}/FMCAT.NRLIB
 	@ echo 0 making ${OUT}/FMCAT.o from ${MID}/FMCAT.NRLIB
@@ -32090,13 +29646,6 @@
 
 @
 \subsection{ystream.spad \cite{1}}
-<<ystream.spad (SPAD from IN)>>=
-${MID}/ystream.spad: ${IN}/ystream.spad.pamphlet
-	@ echo 0 making ${MID}/ystream.spad from ${IN}/ystream.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/ystream.spad.pamphlet >ystream.spad )
-
-@
 <<YSTREAM.o (O from NRLIB)>>=
 ${OUT}/YSTREAM.o: ${MID}/YSTREAM.NRLIB
 	@ echo 0 making ${OUT}/YSTREAM.o from ${MID}/YSTREAM.NRLIB
@@ -32129,13 +29678,6 @@
 
 @
 \subsection{zerodim.spad \cite{1}}
-<<zerodim.spad (SPAD from IN)>>=
-${MID}/zerodim.spad: ${IN}/zerodim.spad.pamphlet
-	@ echo 0 making ${MID}/zerodim.spad from ${IN}/zerodim.spad.pamphlet
-	@(cd ${MID} ; \
-	${SPADBIN}/notangle ${IN}/zerodim.spad.pamphlet >zerodim.spad )
-
-@
 <<FGLMICPK.o (O from NRLIB)>>=
 ${OUT}/FGLMICPK.o: ${MID}/FGLMICPK.NRLIB
 	@ echo 0 making ${OUT}/FGLMICPK.o from ${MID}/FGLMICPK.NRLIB
@@ -32512,7 +30054,7 @@
 	@ echo OBJ= ${OBJ} MNT= ${MNT} O=${O} LISP=${LISP} BYE=${BYE}
 
 #src:	${AS}
-src:	${SPADFILES} ${ORDER}
+src:   ${MID}/INTERP.EXPOSED ${ORDER}
 	@ echo Building NRLIBS from spad sources
 
 #	@ (cd ${MID} ; \
@@ -32544,7 +30086,6 @@
 <<REALSOLV.NRLIB (NRLIB from MID)>>
 <<REALSOLV.spad (SPAD from IN)>>
 
-<<acplot.spad (SPAD from IN)>>
 <<acplot.spad.dvi (DOC from IN)>>
 
 <<FLAGG2.o (O from NRLIB)>>
@@ -32555,7 +30096,6 @@
 <<FSAGG2.NRLIB (NRLIB from MID)>>
 <<FSAGG2.spad (SPAD from IN)>>
 
-<<aggcat2.spad (SPAD from IN)>>
 <<aggcat2.spad.dvi (DOC from IN)>>
 
 <<ALAGG.o (O from NRLIB)>>
@@ -32770,7 +30310,6 @@
 <<URAGG.o (BOOTSTRAP from MID)>>
 <<URAGG.lsp (LISP from IN)>>
 
-<<aggcat.spad (SPAD from IN)>>
 <<aggcat.spad.dvi (DOC from IN)>>
 
 <<CPIMA.o (O from NRLIB)>>
@@ -32799,14 +30338,12 @@
 <<NORMMA.NRLIB (NRLIB from MID)>>
 <<NORMMA.spad (SPAD from IN)>>
 
-<<algcat.spad (SPAD from IN)>>
 <<algcat.spad.dvi (DOC from IN)>>
 
 <<SAE.o (O from NRLIB)>>
 <<SAE.NRLIB (NRLIB from MID)>>
 <<SAE.spad (SPAD from IN)>>
 
-<<algext.spad (SPAD from IN)>>
 <<algext.spad.dvi (DOC from IN)>>
 
 <<ALGFACT.o (O from NRLIB)>>
@@ -32829,7 +30366,6 @@
 <<SAERFFC.NRLIB (NRLIB from MID)>>
 <<SAERFFC.spad (SPAD from IN)>>
 
-<<algfact.spad (SPAD from IN)>>
 <<algfact.spad.dvi (DOC from IN)>>
 
 <<ACF-.o (O from NRLIB)>>
@@ -32848,7 +30384,6 @@
 <<AF.NRLIB (NRLIB from MID)>>
 <<AF.spad (SPAD from IN)>>
 
-<<algfunc.spad (SPAD from IN)>>
 <<algfunc.spad.dvi (DOC from IN)>>
 
 <<GENMFACT.o (O from NRLIB)>>
@@ -32875,7 +30410,6 @@
 <<SUPFRACF.NRLIB (NRLIB from MID)>>
 <<SUPFRACF.spad (SPAD from IN)>>
 
-<<allfact.spad (SPAD from IN)>>
 <<allfact.spad.dvi (DOC from IN)>>
 
 <<DBASE.o (O from NRLIB)>>
@@ -32902,7 +30436,6 @@
 <<QEQUAT.NRLIB (NRLIB from MID)>>
 <<QEQUAT.spad (SPAD from IN)>>
 
-<<alql.spad (SPAD from IN)>>
 <<alql.spad.dvi (DOC from IN)>>
 
 <<NIPROB.o (O from NRLIB)>>
@@ -32937,7 +30470,6 @@
 <<OPTCAT.NRLIB (NRLIB from MID)>>
 <<OPTCAT.spad (SPAD from IN)>>
 
-<<annacat.spad (SPAD from IN)>>
 <<annacat.spad.dvi (DOC from IN)>>
 
 <<ANY.o (O from NRLIB)>>
@@ -32956,7 +30488,6 @@
 <<NONE.NRLIB (NRLIB from MID)>>
 <<NONE.spad (SPAD from IN)>>
 
-<<any.spad (SPAD from IN)>>
 <<any.spad.dvi (DOC from IN)>>
 
 <<ARRAY1.o (O from NRLIB)>>
@@ -32993,7 +30524,6 @@
 <<TUPLE.NRLIB (NRLIB from MID)>>
 <<TUPLE.spad (SPAD from IN)>>
 
-<<array1.spad (SPAD from IN)>>
 <<array1.spad.dvi (DOC from IN)>>
 
 <<ARRAY2.o (O from NRLIB)>>
@@ -33014,7 +30544,6 @@
 <<IIARRAY2.NRLIB (NRLIB from MID)>>
 <<IIARRAY2.spad (SPAD from IN)>>
 
-<<array2.spad (SPAD from IN)>>
 <<array2.spad.dvi (DOC from IN)>>
 
 <<ASP1.o (O from NRLIB)>>
@@ -33133,14 +30662,12 @@
 <<ASP9.NRLIB (NRLIB from MID)>>
 <<ASP9.spad (SPAD from IN)>>
 
-<<asp.spad (SPAD from IN)>>
 <<asp.spad.dvi (DOC from IN)>>
 
 <<ATTREG.o (O from NRLIB)>>
 <<ATTREG.NRLIB (NRLIB from MID)>>
 <<ATTREG.spad (SPAD from IN)>>
 
-<<attreg.spad (SPAD from IN)>>
 <<attreg.spad.dvi (DOC from IN)>>
 
 <<axtimer.as (SPAD from IN)>>
@@ -33166,14 +30693,12 @@
 <<STACK.NRLIB (NRLIB from MID)>>
 <<STACK.spad (SPAD from IN)>>
 
-<<bags.spad (SPAD from IN)>>
 <<bags.spad.dvi (DOC from IN)>>
 
 <<BEZOUT.o (O from NRLIB)>>
 <<BEZOUT.NRLIB (NRLIB from MID)>>
 <<BEZOUT.spad (SPAD from IN)>>
 
-<<bezout.spad (SPAD from IN)>>
 <<bezout.spad.dvi (DOC from IN)>>
 
 <<BITS.o (O from NRLIB)>>
@@ -33202,42 +30727,36 @@
 <<REF.o (BOOTSTRAP from MID)>>
 <<REF.lsp (LISP from IN)>>
 
-<<boolean.spad (SPAD from IN)>>
 <<boolean.spad.dvi (DOC from IN)>>
 
 <<BRILL.o (O from NRLIB)>>
 <<BRILL.NRLIB (NRLIB from MID)>>
 <<BRILL.spad (SPAD from IN)>>
 
-<<brill.spad (SPAD from IN)>>
 <<brill.spad.dvi (DOC from IN)>>
 
 <<NAGC02.o (O from NRLIB)>>
 <<NAGC02.NRLIB (NRLIB from MID)>>
 <<NAGC02.spad (SPAD from IN)>>
 
-<<c02.spad (SPAD from IN)>>
 <<c02.spad.dvi (DOC from IN)>>
 
 <<NAGC05.o (O from NRLIB)>>
 <<NAGC05.NRLIB (NRLIB from MID)>>
 <<NAGC05.spad (SPAD from IN)>>
 
-<<c05.spad (SPAD from IN)>>
 <<c05.spad.dvi (DOC from IN)>>
 
 <<NAGC06.o (O from NRLIB)>>
 <<NAGC06.NRLIB (NRLIB from MID)>>
 <<NAGC06.spad (SPAD from IN)>>
 
-<<c06.spad (SPAD from IN)>>
 <<c06.spad.dvi (DOC from IN)>>
 
 <<CARD.o (O from NRLIB)>>
 <<CARD.NRLIB (NRLIB from MID)>>
 <<CARD.spad (SPAD from IN)>>
 
-<<card.spad (SPAD from IN)>>
 <<card.spad.dvi (DOC from IN)>>
 
 <<CARTEN.o (O from NRLIB)>>
@@ -33260,7 +30779,6 @@
 <<GRMOD.NRLIB (NRLIB from MID)>>
 <<GRMOD.spad (SPAD from IN)>>
 
-<<carten.spad (SPAD from IN)>>
 <<carten.spad.dvi (DOC from IN)>>
 
 <<ABELGRP-.o (O from NRLIB)>>
@@ -33560,7 +31078,6 @@
 <<VSPACE.NRLIB (NRLIB from MID)>>
 <<VSPACE.spad (SPAD from IN)>>
 
-<<catdef.spad (SPAD from IN)>>
 <<catdef.spad.dvi (DOC from IN)>>
 
 <<CDEN.o (O from NRLIB)>>
@@ -33579,7 +31096,6 @@
 <<UPCDEN.NRLIB (NRLIB from MID)>>
 <<UPCDEN.spad (SPAD from IN)>>
 
-<<cden.spad (SPAD from IN)>>
 <<cden.spad.dvi (DOC from IN)>>
 
 <<CLIF.o (O from NRLIB)>>
@@ -33590,21 +31106,18 @@
 <<QFORM.NRLIB (NRLIB from MID)>>
 <<QFORM.spad (SPAD from IN)>>
 
-<<clifford.spad (SPAD from IN)>>
 <<clifford.spad.dvi (DOC from IN)>>
 
 <<CLIP.o (O from NRLIB)>>
 <<CLIP.NRLIB (NRLIB from MID)>>
 <<CLIP.spad (SPAD from IN)>>
 
-<<clip.spad (SPAD from IN)>>
 <<clip.spad.dvi (DOC from IN)>>
 
 <<CMPLXRT.o (O from NRLIB)>>
 <<CMPLXRT.NRLIB (NRLIB from MID)>>
 <<CMPLXRT.spad (SPAD from IN)>>
 
-<<cmplxrt.spad (SPAD from IN)>>
 <<cmplxrt.spad.dvi (DOC from IN)>>
 
 <<KOERCE.o (O from NRLIB)>>
@@ -33625,7 +31138,6 @@
 <<TYPE.NRLIB (NRLIB from MID)>>
 <<TYPE.spad (SPAD from IN)>>
 
-<<coerce.spad (SPAD from IN)>>
 <<coerce.spad.dvi (DOC from IN)>>
 
 <<COLOR.o (O from NRLIB)>>
@@ -33636,7 +31148,6 @@
 <<PALETTE.NRLIB (NRLIB from MID)>>
 <<PALETTE.spad (SPAD from IN)>>
 
-<<color.spad (SPAD from IN)>>
 <<color.spad.dvi (DOC from IN)>>
 
 <<COMBF.o (O from NRLIB)>>
@@ -33655,14 +31166,12 @@
 <<SUMFS.NRLIB (NRLIB from MID)>>
 <<SUMFS.spad (SPAD from IN)>>
 
-<<combfunc.spad (SPAD from IN)>>
 <<combfunc.spad.dvi (DOC from IN)>>
 
 <<COMBINAT.o (O from NRLIB)>>
 <<COMBINAT.NRLIB (NRLIB from MID)>>
 <<COMBINAT.spad (SPAD from IN)>>
 
-<<combinat.spad (SPAD from IN)>>
 <<combinat.spad.dvi (DOC from IN)>>
 
 <<INFINITY.o (O from NRLIB)>>
@@ -33685,7 +31194,6 @@
 <<ORDCOMP2.NRLIB (NRLIB from MID)>>
 <<ORDCOMP2.spad (SPAD from IN)>>
 
-<<complet.spad (SPAD from IN)>>
 <<complet.spad.dvi (DOC from IN)>>
 
 <<AN.o (O from NRLIB)>>
@@ -33696,7 +31204,6 @@
 <<IAN.NRLIB (NRLIB from MID)>>
 <<IAN.spad (SPAD from IN)>>
 
-<<constant.spad (SPAD from IN)>>
 <<constant.spad.dvi (DOC from IN)>>
 
 <<CONTFRAC.o (O from NRLIB)>>
@@ -33707,7 +31214,6 @@
 <<NCNTFRAC.NRLIB (NRLIB from MID)>>
 <<NCNTFRAC.spad (SPAD from IN)>>
 
-<<contfrac.spad (SPAD from IN)>>
 <<contfrac.spad.dvi (DOC from IN)>>
 
 <<ESCONT.o (O from NRLIB)>>
@@ -33718,28 +31224,24 @@
 <<ESCONT1.NRLIB (NRLIB from MID)>>
 <<ESCONT1.spad (SPAD from IN)>>
 
-<<cont.spad (SPAD from IN)>>
 <<cont.spad.dvi (DOC from IN)>>
 
 <<COORDSYS.o (O from NRLIB)>>
 <<COORDSYS.NRLIB (NRLIB from MID)>>
 <<COORDSYS.spad (SPAD from IN)>>
 
-<<coordsys.spad (SPAD from IN)>>
 <<coordsys.spad.dvi (DOC from IN)>>
 
 <<CRAPACK.o (O from NRLIB)>>
 <<CRAPACK.NRLIB (NRLIB from MID)>>
 <<CRAPACK.spad (SPAD from IN)>>
 
-<<cra.spad (SPAD from IN)>>
 <<cra.spad.dvi (DOC from IN)>>
 
 <<CRFP.o (O from NRLIB)>>
 <<CRFP.NRLIB (NRLIB from MID)>>
 <<CRFP.spad (SPAD from IN)>>
 
-<<crfp.spad (SPAD from IN)>>
 <<crfp.spad.dvi (DOC from IN)>>
 
 <<ALGFF.o (O from NRLIB)>>
@@ -33774,7 +31276,6 @@
 <<RADFF.NRLIB (NRLIB from MID)>>
 <<RADFF.spad (SPAD from IN)>>
 
-<<curve.spad (SPAD from IN)>>
 <<curve.spad.dvi (DOC from IN)>>
 
 <<CYCLES.o (O from NRLIB)>>
@@ -33785,14 +31286,12 @@
 <<EVALCYC.NRLIB (NRLIB from MID)>>
 <<EVALCYC.spad (SPAD from IN)>>
 
-<<cycles.spad (SPAD from IN)>>
 <<cycles.spad.dvi (DOC from IN)>>
 
 <<CYCLOTOM.o (O from NRLIB)>>
 <<CYCLOTOM.NRLIB (NRLIB from MID)>>
 <<CYCLOTOM.spad (SPAD from IN)>>
 
-<<cyclotom.spad (SPAD from IN)>>
 <<cyclotom.spad.dvi (DOC from IN)>>
 
 <<D01AGNT.o (O from NRLIB)>>
@@ -33803,14 +31302,12 @@
 <<INTFTBL.NRLIB (NRLIB from MID)>>
 <<INTFTBL.spad (SPAD from IN)>>
 
-<<d01agents.spad (SPAD from IN)>>
 <<d01agents.spad.dvi (DOC from IN)>>
 
 <<INTPACK.o (O from NRLIB)>>
 <<INTPACK.NRLIB (NRLIB from MID)>>
 <<INTPACK.spad (SPAD from IN)>>
 
-<<d01Package.spad (SPAD from IN)>>
 <<d01Package.spad.dvi (DOC from IN)>>
 
 <<D01AJFA.o (O from NRLIB)>>
@@ -33853,28 +31350,24 @@
 <<D01GBFA.NRLIB (NRLIB from MID)>>
 <<D01GBFA.spad (SPAD from IN)>>
 
-<<d01routine.spad (SPAD from IN)>>
 <<d01routine.spad.dvi (DOC from IN)>>
 
 <<NAGD01.o (O from NRLIB)>>
 <<NAGD01.NRLIB (NRLIB from MID)>>
 <<NAGD01.spad (SPAD from IN)>>
 
-<<d01.spad (SPAD from IN)>>
 <<d01.spad.dvi (DOC from IN)>>
 
 <<D01TRNS.o (O from NRLIB)>>
 <<D01TRNS.NRLIB (NRLIB from MID)>>
 <<D01TRNS.spad (SPAD from IN)>>
 
-<<d01transform.spad (SPAD from IN)>>
 <<d01transform.spad.dvi (DOC from IN)>>
 
 <<D01WGTS.o (O from NRLIB)>>
 <<D01WGTS.NRLIB (NRLIB from MID)>>
 <<D01WGTS.spad (SPAD from IN)>>
 
-<<d01weights.spad (SPAD from IN)>>
 <<d01weights.spad.dvi (DOC from IN)>>
 
 <<D02AGNT.o (O from NRLIB)>>
@@ -33885,14 +31378,12 @@
 <<ODEIFTBL.NRLIB (NRLIB from MID)>>
 <<ODEIFTBL.spad (SPAD from IN)>>
 
-<<d02agents.spad (SPAD from IN)>>
 <<d02agents.spad.dvi (DOC from IN)>>
 
 <<ODEPACK.o (O from NRLIB)>>
 <<ODEPACK.NRLIB (NRLIB from MID)>>
 <<ODEPACK.spad (SPAD from IN)>>
 
-<<d02Package.spad (SPAD from IN)>>
 <<d02Package.spad.dvi (DOC from IN)>>
 
 <<D02BBFA.o (O from NRLIB)>>
@@ -33911,28 +31402,24 @@
 <<D02EJFA.NRLIB (NRLIB from MID)>>
 <<D02EJFA.spad (SPAD from IN)>>
 
-<<d02routine.spad (SPAD from IN)>>
 <<d02routine.spad.dvi (DOC from IN)>>
 
 <<NAGD02.o (O from NRLIB)>>
 <<NAGD02.NRLIB (NRLIB from MID)>>
 <<NAGD02.spad (SPAD from IN)>>
 
-<<d02.spad (SPAD from IN)>>
 <<d02.spad.dvi (DOC from IN)>>
 
 <<D03AGNT.o (O from NRLIB)>>
 <<D03AGNT.NRLIB (NRLIB from MID)>>
 <<D03AGNT.spad (SPAD from IN)>>
 
-<<d03agents.spad (SPAD from IN)>>
 <<d03agents.spad.dvi (DOC from IN)>>
 
 <<PDEPACK.o (O from NRLIB)>>
 <<PDEPACK.NRLIB (NRLIB from MID)>>
 <<PDEPACK.spad (SPAD from IN)>>
 
-<<d03Package.spad (SPAD from IN)>>
 <<d03Package.spad.dvi (DOC from IN)>>
 
 <<D03EEFA.o (O from NRLIB)>>
@@ -33943,21 +31430,18 @@
 <<D03FAFA.NRLIB (NRLIB from MID)>>
 <<D03FAFA.spad (SPAD from IN)>>
 
-<<d03routine.spad (SPAD from IN)>>
 <<d03routine.spad.dvi (DOC from IN)>>
 
 <<NAGD03.o (O from NRLIB)>>
 <<NAGD03.NRLIB (NRLIB from MID)>>
 <<NAGD03.spad (SPAD from IN)>>
 
-<<d03.spad (SPAD from IN)>>
 <<d03.spad.dvi (DOC from IN)>>
 
 <<DDFACT.o (O from NRLIB)>>
 <<DDFACT.NRLIB (NRLIB from MID)>>
 <<DDFACT.spad (SPAD from IN)>>
 
-<<ddfact.spad (SPAD from IN)>>
 <<ddfact.spad.dvi (DOC from IN)>>
 
 <<FLASORT.o (O from NRLIB)>>
@@ -33972,14 +31456,12 @@
 <<REPSQ.NRLIB (NRLIB from MID)>>
 <<REPSQ.spad (SPAD from IN)>>
 
-<<defaults.spad (SPAD from IN)>>
 <<defaults.spad.dvi (DOC from IN)>>
 
 <<DEFINTEF.o (O from NRLIB)>>
 <<DEFINTEF.NRLIB (NRLIB from MID)>>
 <<DEFINTEF.spad (SPAD from IN)>>
 
-<<defintef.spad (SPAD from IN)>>
 <<defintef.spad.dvi (DOC from IN)>>
 
 <<DEFINTRF.o (O from NRLIB)>>
@@ -33990,14 +31472,12 @@
 <<DFINTTLS.NRLIB (NRLIB from MID)>>
 <<DFINTTLS.spad (SPAD from IN)>>
 
-<<defintrf.spad (SPAD from IN)>>
 <<defintrf.spad.dvi (DOC from IN)>>
 
 <<DEGRED.o (O from NRLIB)>>
 <<DEGRED.NRLIB (NRLIB from MID)>>
 <<DEGRED.spad (SPAD from IN)>>
 
-<<degred.spad (SPAD from IN)>>
 <<degred.spad.dvi (DOC from IN)>>
 
 <<ANTISYM.o (O from NRLIB)>>
@@ -34018,14 +31498,12 @@
 <<LALG.NRLIB (NRLIB from MID)>>
 <<LALG.spad (SPAD from IN)>>
 
-<<derham.spad (SPAD from IN)>>
 <<derham.spad.dvi (DOC from IN)>>
 
 <<DHMATRIX.o (O from NRLIB)>>
 <<DHMATRIX.NRLIB (NRLIB from MID)>>
 <<DHMATRIX.spad (SPAD from IN)>>
 
-<<dhmatrix.spad (SPAD from IN)>>
 <<dhmatrix.spad.dvi (DOC from IN)>>
 
 <<FDIV.o (O from NRLIB)>>
@@ -34062,7 +31540,6 @@
 <<MHROWRED.NRLIB (NRLIB from MID)>>
 <<MHROWRED.spad (SPAD from IN)>>
 
-<<divisor.spad (SPAD from IN)>>
 <<divisor.spad.dvi (DOC from IN)>>
 
 <<DSMP.o (O from NRLIB)>>
@@ -34097,7 +31574,6 @@
 <<SDVAR.NRLIB (NRLIB from MID)>>
 <<SDVAR.spad (SPAD from IN)>>
 
-<<dpolcat.spad (SPAD from IN)>>
 <<dpolcat.spad.dvi (DOC from IN)>>
 
 <<DROPT.o (O from NRLIB)>>
@@ -34112,14 +31588,12 @@
 <<DROPT1.NRLIB (NRLIB from MID)>>
 <<DROPT1.spad (SPAD from IN)>>
 
-<<drawopt.spad (SPAD from IN)>>
 <<drawopt.spad.dvi (DOC from IN)>>
 
 <<DRAWCX.o (O from NRLIB)>>
 <<DRAWCX.NRLIB (NRLIB from MID)>>
 <<DRAWCX.spad (SPAD from IN)>>
 
-<<drawpak.spad (SPAD from IN)>>
 <<drawpak.spad.dvi (DOC from IN)>>
 
 <<DRAW.o (O from NRLIB)>>
@@ -34138,35 +31612,30 @@
 <<DRAWPT.NRLIB (NRLIB from MID)>>
 <<DRAWPT.spad (SPAD from IN)>>
 
-<<draw.spad (SPAD from IN)>>
 <<draw.spad.dvi (DOC from IN)>>
 
 <<NAGE01.o (O from NRLIB)>>
 <<NAGE01.NRLIB (NRLIB from MID)>>
 <<NAGE01.spad (SPAD from IN)>>
 
-<<e01.spad (SPAD from IN)>>
 <<e01.spad.dvi (DOC from IN)>>
 
 <<NAGE02.o (O from NRLIB)>>
 <<NAGE02.NRLIB (NRLIB from MID)>>
 <<NAGE02.spad (SPAD from IN)>>
 
-<<e02.spad (SPAD from IN)>>
 <<e02.spad.dvi (DOC from IN)>>
 
 <<E04AGNT.o (O from NRLIB)>>
 <<E04AGNT.NRLIB (NRLIB from MID)>>
 <<E04AGNT.spad (SPAD from IN)>>
 
-<<e04agents.spad (SPAD from IN)>>
 <<e04agents.spad.dvi (DOC from IN)>>
 
 <<OPTPACK.o (O from NRLIB)>>
 <<OPTPACK.NRLIB (NRLIB from MID)>>
 <<OPTPACK.spad (SPAD from IN)>>
 
-<<e04Package.spad (SPAD from IN)>>
 <<e04Package.spad.dvi (DOC from IN)>>
 
 <<E04DGFA.o (O from NRLIB)>>
@@ -34197,14 +31666,12 @@
 <<E04UCFA.NRLIB (NRLIB from MID)>>
 <<E04UCFA.spad (SPAD from IN)>>
 
-<<e04routine.spad (SPAD from IN)>>
 <<e04routine.spad.dvi (DOC from IN)>>
 
 <<NAGE04.o (O from NRLIB)>>
 <<NAGE04.NRLIB (NRLIB from MID)>>
 <<NAGE04.spad (SPAD from IN)>>
 
-<<e04.spad (SPAD from IN)>>
 <<e04.spad.dvi (DOC from IN)>>
 
 <<CTRIGMNP.o (O from NRLIB)>>
@@ -34231,21 +31698,18 @@
 <<TANEXP.NRLIB (NRLIB from MID)>>
 <<TANEXP.spad (SPAD from IN)>>
 
-<<efstruc.spad (SPAD from IN)>>
 <<efstruc.spad.dvi (DOC from IN)>>
 
 <<EFULS.o (O from NRLIB)>>
 <<EFULS.NRLIB (NRLIB from MID)>>
 <<EFULS.spad (SPAD from IN)>>
 
-<<efuls.spad (SPAD from IN)>>
 <<efuls.spad.dvi (DOC from IN)>>
 
 <<EFUPXS.o (O from NRLIB)>>
 <<EFUPXS.NRLIB (NRLIB from MID)>>
 <<EFUPXS.spad (SPAD from IN)>>
 
-<<efupxs.spad (SPAD from IN)>>
 <<efupxs.spad.dvi (DOC from IN)>>
 
 <<CHARPOL.o (O from NRLIB)>>
@@ -34256,21 +31720,18 @@
 <<EP.NRLIB (NRLIB from MID)>>
 <<EP.spad (SPAD from IN)>>
 
-<<eigen.spad (SPAD from IN)>>
 <<eigen.spad.dvi (DOC from IN)>>
 
 <<EF.o (O from NRLIB)>>
 <<EF.NRLIB (NRLIB from MID)>>
 <<EF.spad (SPAD from IN)>>
 
-<<elemntry.spad (SPAD from IN)>>
 <<elemntry.spad.dvi (DOC from IN)>>
 
 <<ELFUTS.o (O from NRLIB)>>
 <<ELFUTS.NRLIB (NRLIB from MID)>>
 <<ELFUTS.spad (SPAD from IN)>>
 
-<<elfuts.spad (SPAD from IN)>>
 <<elfuts.spad.dvi (DOC from IN)>>
 
 <<EVALAB-.o (O from NRLIB)>>
@@ -34285,7 +31746,6 @@
 <<IEVALAB.NRLIB (NRLIB from MID)>>
 <<IEVALAB.spad (SPAD from IN)>>
 
-<<equation1.spad (SPAD from IN)>>
 <<equation1.spad.dvi (DOC from IN)>>
 
 <<EQ.o (O from NRLIB)>>
@@ -34302,14 +31762,12 @@
 <<FEVALAB.NRLIB (NRLIB from MID)>>
 <<FEVALAB.spad (SPAD from IN)>>
 
-<<equation2.spad (SPAD from IN)>>
 <<equation2.spad.dvi (DOC from IN)>>
 
 <<ERROR.o (O from NRLIB)>>
 <<ERROR.NRLIB (NRLIB from MID)>>
 <<ERROR.spad (SPAD from IN)>>
 
-<<error.spad (SPAD from IN)>>
 <<error.spad.dvi (DOC from IN)>>
 
 <<EXPEXPAN.o (O from NRLIB)>>
@@ -34324,7 +31782,6 @@
 <<UPXSSING.NRLIB (NRLIB from MID)>>
 <<UPXSSING.spad (SPAD from IN)>>
 
-<<expexpan.spad (SPAD from IN)>>
 <<expexpan.spad.dvi (DOC from IN)>>
 
 <<exposed.lsp.dvi (DOC from IN)>>
@@ -34333,14 +31790,12 @@
 <<EXPR2UPS.NRLIB (NRLIB from MID)>>
 <<EXPR2UPS.spad (SPAD from IN)>>
 
-<<expr2ups.spad (SPAD from IN)>>
 <<expr2ups.spad.dvi (DOC from IN)>>
 
 <<EXPRODE.o (O from NRLIB)>>
 <<EXPRODE.NRLIB (NRLIB from MID)>>
 <<EXPRODE.spad (SPAD from IN)>>
 
-<<exprode.spad (SPAD from IN)>>
 <<exprode.spad.dvi (DOC from IN)>>
 
 <<EXPR.o (O from NRLIB)>>
@@ -34379,35 +31834,30 @@
 <<PMPREDFS.NRLIB (NRLIB from MID)>>
 <<PMPREDFS.spad (SPAD from IN)>>
 
-<<expr.spad (SPAD from IN)>>
 <<expr.spad.dvi (DOC from IN)>>
 
 <<NAGF01.o (O from NRLIB)>>
 <<NAGF01.NRLIB (NRLIB from MID)>>
 <<NAGF01.spad (SPAD from IN)>>
 
-<<f01.spad (SPAD from IN)>>
 <<f01.spad.dvi (DOC from IN)>>
 
 <<NAGF02.o (O from NRLIB)>>
 <<NAGF02.NRLIB (NRLIB from MID)>>
 <<NAGF02.spad (SPAD from IN)>>
 
-<<f02.spad (SPAD from IN)>>
 <<f02.spad.dvi (DOC from IN)>>
 
 <<NAGF04.o (O from NRLIB)>>
 <<NAGF04.NRLIB (NRLIB from MID)>>
 <<NAGF04.spad (SPAD from IN)>>
 
-<<f04.spad (SPAD from IN)>>
 <<f04.spad.dvi (DOC from IN)>>
 
 <<NAGF07.o (O from NRLIB)>>
 <<NAGF07.NRLIB (NRLIB from MID)>>
 <<NAGF07.spad (SPAD from IN)>>
 
-<<f07.spad (SPAD from IN)>>
 <<f07.spad.dvi (DOC from IN)>>
 
 <<FACUTIL.o (O from NRLIB)>>
@@ -34418,7 +31868,6 @@
 <<PUSHVAR.NRLIB (NRLIB from MID)>>
 <<PUSHVAR.spad (SPAD from IN)>>
 
-<<facutil.spad (SPAD from IN)>>
 <<facutil.spad.dvi (DOC from IN)>>
 
 <<DLP.o (O from NRLIB)>>
@@ -34451,7 +31900,6 @@
 <<XF.NRLIB (NRLIB from MID)>>
 <<XF.spad (SPAD from IN)>>
 
-<<ffcat.spad (SPAD from IN)>>
 <<ffcat.spad.dvi (DOC from IN)>>
 
 <<FFCG.o (O from NRLIB)>>
@@ -34466,21 +31914,18 @@
 <<FFCGX.NRLIB (NRLIB from MID)>>
 <<FFCGX.spad (SPAD from IN)>>
 
-<<ffcg.spad (SPAD from IN)>>
 <<ffcg.spad.dvi (DOC from IN)>>
 
 <<FFF.o (O from NRLIB)>>
 <<FFF.NRLIB (NRLIB from MID)>>
 <<FFF.spad (SPAD from IN)>>
 
-<<fff.spad (SPAD from IN)>>
 <<fff.spad.dvi (DOC from IN)>>
 
 <<FFHOM.o (O from NRLIB)>>
 <<FFHOM.NRLIB (NRLIB from MID)>>
 <<FFHOM.spad (SPAD from IN)>>
 
-<<ffhom.spad (SPAD from IN)>>
 <<ffhom.spad.dvi (DOC from IN)>>
 
 <<FFNB.o (O from NRLIB)>>
@@ -34499,21 +31944,18 @@
 <<INBFF.NRLIB (NRLIB from MID)>>
 <<INBFF.spad (SPAD from IN)>>
 
-<<ffnb.spad (SPAD from IN)>>
 <<ffnb.spad.dvi (DOC from IN)>>
 
 <<FFPOLY2.o (O from NRLIB)>>
 <<FFPOLY2.NRLIB (NRLIB from MID)>>
 <<FFPOLY2.spad (SPAD from IN)>>
 
-<<ffpoly2.spad (SPAD from IN)>>
 <<ffpoly2.spad.dvi (DOC from IN)>>
 
 <<FFPOLY.o (O from NRLIB)>>
 <<FFPOLY.NRLIB (NRLIB from MID)>>
 <<FFPOLY.spad (SPAD from IN)>>
 
-<<ffpoly.spad (SPAD from IN)>>
 <<ffpoly.spad.dvi (DOC from IN)>>
 
 <<IFF.o (O from NRLIB)>>
@@ -34532,7 +31974,6 @@
 <<FFX.NRLIB (NRLIB from MID)>>
 <<FFX.spad (SPAD from IN)>>
 
-<<ffp.spad (SPAD from IN)>>
 <<ffp.spad.dvi (DOC from IN)>>
 
 <<ffrac.as (SPAD from IN)>>
@@ -34542,7 +31983,6 @@
 <<IRREDFFX.NRLIB (NRLIB from MID)>>
 <<IRREDFFX.spad (SPAD from IN)>>
 
-<<ffx.spad (SPAD from IN)>>
 <<ffx.spad.dvi (DOC from IN)>>
 
 <<BINFILE.o (O from NRLIB)>>
@@ -34569,21 +32009,18 @@
 <<TEXTFILE.NRLIB (NRLIB from MID)>>
 <<TEXTFILE.spad (SPAD from IN)>>
 
-<<files.spad (SPAD from IN)>>
 <<files.spad.dvi (DOC from IN)>>
 
 <<FLOAT.o (O from NRLIB)>>
 <<FLOAT.NRLIB (NRLIB from MID)>>
 <<FLOAT.spad (SPAD from IN)>>
 
-<<float.spad (SPAD from IN)>>
 <<float.spad.dvi (DOC from IN)>>
 
 <<ZMOD.o (O from NRLIB)>>
 <<ZMOD.NRLIB (NRLIB from MID)>>
 <<ZMOD.spad (SPAD from IN)>>
 
-<<fmod.spad (SPAD from IN)>>
 <<fmod.spad.dvi (DOC from IN)>>
 
 <<FNAME.o (O from NRLIB)>>
@@ -34594,7 +32031,6 @@
 <<FNCAT.NRLIB (NRLIB from MID)>>
 <<FNCAT.spad (SPAD from IN)>>
 
-<<fname.spad (SPAD from IN)>>
 <<fname.spad.dvi (DOC from IN)>>
 
 <<COMM.o (O from NRLIB)>>
@@ -34613,7 +32049,6 @@
 <<OSI.NRLIB (NRLIB from MID)>>
 <<OSI.spad (SPAD from IN)>>
 
-<<fnla.spad (SPAD from IN)>>
 <<fnla.spad.dvi (DOC from IN)>>
 
 <<FORMULA.o (O from NRLIB)>>
@@ -34624,7 +32059,6 @@
 <<FORMULA1.NRLIB (NRLIB from MID)>>
 <<FORMULA1.spad (SPAD from IN)>>
 
-<<formula.spad (SPAD from IN)>>
 <<formula.spad.dvi (DOC from IN)>>
 
 <<FMTC.o (O from NRLIB)>>
@@ -34655,7 +32089,6 @@
 <<FMFUN.NRLIB (NRLIB from MID)>>
 <<FMFUN.spad (SPAD from IN)>>
 
-<<fortcat.spad (SPAD from IN)>>
 <<fortcat.spad.dvi (DOC from IN)>>
 
 <<MCMPLX.o (O from NRLIB)>>
@@ -34670,7 +32103,6 @@
 <<MINT.NRLIB (NRLIB from MID)>>
 <<MINT.spad (SPAD from IN)>>
 
-<<fortmac.spad (SPAD from IN)>>
 <<fortmac.spad.dvi (DOC from IN)>>
 
 <<FCPAK1.o (O from NRLIB)>>
@@ -34697,7 +32129,6 @@
 <<TEMUTL.NRLIB (NRLIB from MID)>>
 <<TEMUTL.spad (SPAD from IN)>>
 
-<<fortpak.spad (SPAD from IN)>>
 <<fortpak.spad.dvi (DOC from IN)>>
 
 <<FC.o (O from NRLIB)>>
@@ -34732,7 +32163,6 @@
 <<SFORT.NRLIB (NRLIB from MID)>>
 <<SFORT.spad (SPAD from IN)>>
 
-<<fortran.spad (SPAD from IN)>>
 <<fortran.spad.dvi (DOC from IN)>>
 
 <<FST.o (O from NRLIB)>>
@@ -34751,7 +32181,6 @@
 <<SYMTAB.NRLIB (NRLIB from MID)>>
 <<SYMTAB.spad (SPAD from IN)>>
 
-<<forttyp.spad (SPAD from IN)>>
 <<forttyp.spad.dvi (DOC from IN)>>
 
 <<FCOMP.o (O from NRLIB)>>
@@ -34762,14 +32191,12 @@
 <<FSERIES.NRLIB (NRLIB from MID)>>
 <<FSERIES.spad (SPAD from IN)>>
 
-<<fourier.spad (SPAD from IN)>>
 <<fourier.spad.dvi (DOC from IN)>>
 
 <<FPARFRAC.o (O from NRLIB)>>
 <<FPARFRAC.NRLIB (NRLIB from MID)>>
 <<FPARFRAC.spad (SPAD from IN)>>
 
-<<fparfrac.spad (SPAD from IN)>>
 <<fparfrac.spad.dvi (DOC from IN)>>
 
 <<FRAC.o (O from NRLIB)>>
@@ -34806,7 +32233,6 @@
 <<QFCAT2.NRLIB (NRLIB from MID)>>
 <<QFCAT2.spad (SPAD from IN)>>
 
-<<fraction.spad (SPAD from IN)>>
 <<fraction.spad.dvi (DOC from IN)>>
 
 <<FAGROUP.o (O from NRLIB)>>
@@ -34837,7 +32263,6 @@
 <<LMOPS.NRLIB (NRLIB from MID)>>
 <<LMOPS.spad (SPAD from IN)>>
 
-<<free.spad (SPAD from IN)>>
 <<free.spad.dvi (DOC from IN)>>
 
 <<FR.o (O from NRLIB)>>
@@ -34852,21 +32277,18 @@
 <<FRUTIL.NRLIB (NRLIB from MID)>>
 <<FRUTIL.spad (SPAD from IN)>>
 
-<<fr.spad (SPAD from IN)>>
 <<fr.spad.dvi (DOC from IN)>>
 
 <<FS2EXPXP.o (O from NRLIB)>>
 <<FS2EXPXP.NRLIB (NRLIB from MID)>>
 <<FS2EXPXP.spad (SPAD from IN)>>
 
-<<fs2expxp.spad (SPAD from IN)>>
 <<fs2expxp.spad.dvi (DOC from IN)>>
 
 <<FS2UPS.o (O from NRLIB)>>
 <<FS2UPS.NRLIB (NRLIB from MID)>>
 <<FS2UPS.spad (SPAD from IN)>>
 
-<<fs2ups.spad (SPAD from IN)>>
 <<fs2ups.spad.dvi (DOC from IN)>>
 
 <<ES-.o (O from NRLIB)>>
@@ -34897,56 +32319,48 @@
 <<FS2.NRLIB (NRLIB from MID)>>
 <<FS2.spad (SPAD from IN)>>
 
-<<fspace.spad (SPAD from IN)>>
 <<fspace.spad.dvi (DOC from IN)>>
 
 <<FSUPFACT.o (O from NRLIB)>>
 <<FSUPFACT.NRLIB (NRLIB from MID)>>
 <<FSUPFACT.spad (SPAD from IN)>>
 
-<<funcpkgs.spad (SPAD from IN)>>
 <<funcpkgs.spad.dvi (DOC from IN)>>
 
 <<BFUNCT.o (O from NRLIB)>>
 <<BFUNCT.NRLIB (NRLIB from MID)>>
 <<BFUNCT.spad (SPAD from IN)>>
 
-<<functions.spad (SPAD from IN)>>
 <<functions.spad.dvi (DOC from IN)>>
 
 <<GALFACT.o (O from NRLIB)>>
 <<GALFACT.NRLIB (NRLIB from MID)>>
 <<GALFACT.spad (SPAD from IN)>>
 
-<<galfact.spad (SPAD from IN)>>
 <<galfact.spad.dvi (DOC from IN)>>
 
 <<GALFACTU.o (O from NRLIB)>>
 <<GALFACTU.NRLIB (NRLIB from MID)>>
 <<GALFACTU.spad (SPAD from IN)>>
 
-<<galfactu.spad (SPAD from IN)>>
 <<galfactu.spad.dvi (DOC from IN)>>
 
 <<GALPOLYU.o (O from NRLIB)>>
 <<GALPOLYU.NRLIB (NRLIB from MID)>>
 <<GALPOLYU.spad (SPAD from IN)>>
 
-<<galpolyu.spad (SPAD from IN)>>
 <<galpolyu.spad.dvi (DOC from IN)>>
 
 <<GALUTIL.o (O from NRLIB)>>
 <<GALUTIL.NRLIB (NRLIB from MID)>>
 <<GALUTIL.spad (SPAD from IN)>>
 
-<<galutil.spad (SPAD from IN)>>
 <<galutil.spad.dvi (DOC from IN)>>
 
 <<GAUSSFAC.o (O from NRLIB)>>
 <<GAUSSFAC.NRLIB (NRLIB from MID)>>
 <<GAUSSFAC.spad (SPAD from IN)>>
 
-<<gaussfac.spad (SPAD from IN)>>
 <<gaussfac.spad.dvi (DOC from IN)>>
 
 <<CINTSLPE.o (O from NRLIB)>>
@@ -34979,28 +32393,24 @@
 <<CPMATCH.NRLIB (NRLIB from MID)>>
 <<CPMATCH.spad (SPAD from IN)>>
 
-<<gaussian.spad (SPAD from IN)>>
 <<gaussian.spad.dvi (DOC from IN)>>
 
 <<GBEUCLID.o (O from NRLIB)>>
 <<GBEUCLID.NRLIB (NRLIB from MID)>>
 <<GBEUCLID.spad (SPAD from IN)>>
 
-<<gbeuclid.spad (SPAD from IN)>>
 <<gbeuclid.spad.dvi (DOC from IN)>>
 
 <<GBINTERN.o (O from NRLIB)>>
 <<GBINTERN.NRLIB (NRLIB from MID)>>
 <<GBINTERN.spad (SPAD from IN)>>
 
-<<gbintern.spad (SPAD from IN)>>
 <<gbintern.spad.dvi (DOC from IN)>>
 
 <<GB.o (O from NRLIB)>>
 <<GB.NRLIB (NRLIB from MID)>>
 <<GB.spad (SPAD from IN)>>
 
-<<gb.spad (SPAD from IN)>>
 <<gb.spad.dvi (DOC from IN)>>
 
 <<HDP.o (O from NRLIB)>>
@@ -35019,7 +32429,6 @@
 <<SHDP.NRLIB (NRLIB from MID)>>
 <<SHDP.spad (SPAD from IN)>>
 
-<<gdirprod.spad (SPAD from IN)>>
 <<gdirprod.spad.dvi (DOC from IN)>>
 
 <<DMP.o (O from NRLIB)>>
@@ -35034,14 +32443,12 @@
 <<HDMP.NRLIB (NRLIB from MID)>>
 <<HDMP.spad (SPAD from IN)>>
 
-<<gdpoly.spad (SPAD from IN)>>
 <<gdpoly.spad.dvi (DOC from IN)>>
 
 <<GENEEZ.o (O from NRLIB)>>
 <<GENEEZ.NRLIB (NRLIB from MID)>>
 <<GENEEZ.spad (SPAD from IN)>>
 
-<<geneez.spad (SPAD from IN)>>
 <<geneez.spad.dvi (DOC from IN)>>
 
 <<CVMP.o (O from NRLIB)>>
@@ -35052,70 +32459,60 @@
 <<GCNAALG.NRLIB (NRLIB from MID)>>
 <<GCNAALG.spad (SPAD from IN)>>
 
-<<generic.spad (SPAD from IN)>>
 <<generic.spad.dvi (DOC from IN)>>
 
 <<GENUFACT.o (O from NRLIB)>>
 <<GENUFACT.NRLIB (NRLIB from MID)>>
 <<GENUFACT.spad (SPAD from IN)>>
 
-<<genufact.spad (SPAD from IN)>>
 <<genufact.spad.dvi (DOC from IN)>>
 
 <<GENUPS.o (O from NRLIB)>>
 <<GENUPS.NRLIB (NRLIB from MID)>>
 <<GENUPS.spad (SPAD from IN)>>
 
-<<genups.spad (SPAD from IN)>>
 <<genups.spad.dvi (DOC from IN)>>
 
 <<GHENSEL.o (O from NRLIB)>>
 <<GHENSEL.NRLIB (NRLIB from MID)>>
 <<GHENSEL.spad (SPAD from IN)>>
 
-<<ghensel.spad (SPAD from IN)>>
 <<ghensel.spad.dvi (DOC from IN)>>
 
 <<GENPGCD.o (O from NRLIB)>>
 <<GENPGCD.NRLIB (NRLIB from MID)>>
 <<GENPGCD.spad (SPAD from IN)>>
 
-<<gpgcd.spad (SPAD from IN)>>
 <<gpgcd.spad.dvi (DOC from IN)>>
 
 <<LAUPOL.o (O from NRLIB)>>
 <<LAUPOL.NRLIB (NRLIB from MID)>>
 <<LAUPOL.spad (SPAD from IN)>>
 
-<<gpol.spad (SPAD from IN)>>
 <<gpol.spad.dvi (DOC from IN)>>
 
 <<GRDEF.o (O from NRLIB)>>
 <<GRDEF.NRLIB (NRLIB from MID)>>
 <<GRDEF.spad (SPAD from IN)>>
 
-<<grdef.spad (SPAD from IN)>>
 <<grdef.spad.dvi (DOC from IN)>>
 
 <<GBF.o (O from NRLIB)>>
 <<GBF.NRLIB (NRLIB from MID)>>
 <<GBF.spad (SPAD from IN)>>
 
-<<groebf.spad (SPAD from IN)>>
 <<groebf.spad.dvi (DOC from IN)>>
 
 <<GROEBSOL.o (O from NRLIB)>>
 <<GROEBSOL.NRLIB (NRLIB from MID)>>
 <<GROEBSOL.spad (SPAD from IN)>>
 
-<<groebsol.spad (SPAD from IN)>>
 <<groebsol.spad.dvi (DOC from IN)>>
 
 <<GSERIES.o (O from NRLIB)>>
 <<GSERIES.NRLIB (NRLIB from MID)>>
 <<GSERIES.spad (SPAD from IN)>>
 
-<<gseries.spad (SPAD from IN)>>
 <<gseries.spad.dvi (DOC from IN)>>
 
 <<herm.as (SPAD from IN)>>
@@ -35125,14 +32522,12 @@
 <<IDEAL.NRLIB (NRLIB from MID)>>
 <<IDEAL.spad (SPAD from IN)>>
 
-<<ideal.spad (SPAD from IN)>>
 <<ideal.spad.dvi (DOC from IN)>>
 
 <<IDECOMP.o (O from NRLIB)>>
 <<IDECOMP.NRLIB (NRLIB from MID)>>
 <<IDECOMP.spad (SPAD from IN)>>
 
-<<idecomp.spad (SPAD from IN)>>
 <<idecomp.spad.dvi (DOC from IN)>>
 
 <<IDPAG.o (O from NRLIB)>>
@@ -35159,7 +32554,6 @@
 <<IDPOAMS.NRLIB (NRLIB from MID)>>
 <<IDPOAMS.spad (SPAD from IN)>>
 
-<<indexedp.spad (SPAD from IN)>>
 <<indexedp.spad.dvi (DOC from IN)>>
 
 <<INFPROD0.o (O from NRLIB)>>
@@ -35178,7 +32572,6 @@
 <<STINPROD.NRLIB (NRLIB from MID)>>
 <<STINPROD.spad (SPAD from IN)>>
 
-<<infprod.spad (SPAD from IN)>>
 <<infprod.spad.dvi (DOC from IN)>>
 
 <<INTAF.o (O from NRLIB)>>
@@ -35193,7 +32586,6 @@
 <<INTPAF.NRLIB (NRLIB from MID)>>
 <<INTPAF.spad (SPAD from IN)>>
 
-<<intaf.spad (SPAD from IN)>>
 <<intaf.spad.dvi (DOC from IN)>>
 
 <<DBLRESP.o (O from NRLIB)>>
@@ -35208,7 +32600,6 @@
 <<INTHERAL.NRLIB (NRLIB from MID)>>
 <<INTHERAL.spad (SPAD from IN)>>
 
-<<intalg.spad (SPAD from IN)>>
 <<intalg.spad.dvi (DOC from IN)>>
 
 <<IR.o (O from NRLIB)>>
@@ -35219,7 +32610,6 @@
 <<IR2.NRLIB (NRLIB from MID)>>
 <<IR2.spad (SPAD from IN)>>
 
-<<intaux.spad (SPAD from IN)>>
 <<intaux.spad.dvi (DOC from IN)>>
 
 <<IBATOOL.o (O from NRLIB)>>
@@ -35242,14 +32632,12 @@
 <<WFFINTBS.NRLIB (NRLIB from MID)>>
 <<WFFINTBS.spad (SPAD from IN)>>
 
-<<intclos.spad (SPAD from IN)>>
 <<intclos.spad.dvi (DOC from IN)>>
 
 <<INTEF.o (O from NRLIB)>>
 <<INTEF.NRLIB (NRLIB from MID)>>
 <<INTEF.spad (SPAD from IN)>>
 
-<<intef.spad (SPAD from IN)>>
 <<intef.spad.dvi (DOC from IN)>>
 
 <<INT.o (O from NRLIB)>>
@@ -35278,7 +32666,6 @@
 <<ROMAN.NRLIB (NRLIB from MID)>>
 <<ROMAN.spad (SPAD from IN)>>
 
-<<integer.spad (SPAD from IN)>>
 <<integer.spad.dvi (DOC from IN)>>
 
 <<FSCINT.o (O from NRLIB)>>
@@ -35289,7 +32676,6 @@
 <<FSINT.NRLIB (NRLIB from MID)>>
 <<FSINT.spad (SPAD from IN)>>
 
-<<integrat.spad (SPAD from IN)>>
 <<integrat.spad.dvi (DOC from IN)>>
 
 <<INTERP.EXPOSED (SPAD from IN)>>
@@ -35306,7 +32692,6 @@
 <<INTRVL.NRLIB (NRLIB from MID)>>
 <<INTRVL.spad (SPAD from IN)>>
 
-<<interval.spad (SPAD from IN)>>
 <<interval.spad.dvi (DOC from IN)>>
 
 <<INTFACT.o (O from NRLIB)>>
@@ -35321,14 +32706,12 @@
 <<PRIMES.NRLIB (NRLIB from MID)>>
 <<PRIMES.spad (SPAD from IN)>>
 
-<<intfact.spad (SPAD from IN)>>
 <<intfact.spad.dvi (DOC from IN)>>
 
 <<INTPM.o (O from NRLIB)>>
 <<INTPM.NRLIB (NRLIB from MID)>>
 <<INTPM.spad (SPAD from IN)>>
 
-<<intpm.spad (SPAD from IN)>>
 <<intpm.spad.dvi (DOC from IN)>>
 
 <<INTHERTR.o (O from NRLIB)>>
@@ -35355,7 +32738,6 @@
 <<SUBRESP.NRLIB (NRLIB from MID)>>
 <<SUBRESP.spad (SPAD from IN)>>
 
-<<intrf.spad (SPAD from IN)>>
 <<intrf.spad.dvi (DOC from IN)>>
 
 <<invnode.as (SPAD from IN)>>
@@ -35378,14 +32760,12 @@
 <<IRRF2F.NRLIB (NRLIB from MID)>>
 <<IRRF2F.spad (SPAD from IN)>>
 
-<<irexpand.spad (SPAD from IN)>>
 <<irexpand.spad.dvi (DOC from IN)>>
 
 <<IRSN.o (O from NRLIB)>>
 <<IRSN.NRLIB (NRLIB from MID)>>
 <<IRSN.spad (SPAD from IN)>>
 
-<<irsn.spad (SPAD from IN)>>
 <<irsn.spad.dvi (DOC from IN)>>
 
 <<ITFUN2.o (O from NRLIB)>>
@@ -35400,7 +32780,6 @@
 <<ITUPLE.NRLIB (NRLIB from MID)>>
 <<ITUPLE.spad (SPAD from IN)>>
 
-<<ituple.spad (SPAD from IN)>>
 <<ituple.spad.dvi (DOC from IN)>>
 
 <<iviews.as (SPAD from IN)>>
@@ -35426,14 +32805,12 @@
 <<SCACHE.NRLIB (NRLIB from MID)>>
 <<SCACHE.spad (SPAD from IN)>>
 
-<<kl.spad (SPAD from IN)>>
 <<kl.spad.dvi (DOC from IN)>>
 
 <<KOVACIC.o (O from NRLIB)>>
 <<KOVACIC.NRLIB (NRLIB from MID)>>
 <<KOVACIC.spad (SPAD from IN)>>
 
-<<kovacic.spad (SPAD from IN)>>
 <<kovacic.spad.dvi (DOC from IN)>>
 
 <<INVLAPLA.o (O from NRLIB)>>
@@ -35444,7 +32821,6 @@
 <<LAPLACE.NRLIB (NRLIB from MID)>>
 <<LAPLACE.spad (SPAD from IN)>>
 
-<<laplace.spad (SPAD from IN)>>
 <<laplace.spad.dvi (DOC from IN)>>
 
 <<ULS.o (O from NRLIB)>>
@@ -35465,14 +32841,12 @@
 <<ULS2.NRLIB (NRLIB from MID)>>
 <<ULS2.spad (SPAD from IN)>>
 
-<<laurent.spad (SPAD from IN)>>
 <<laurent.spad.dvi (DOC from IN)>>
 
 <<LEADCDET.o (O from NRLIB)>>
 <<LEADCDET.NRLIB (NRLIB from MID)>>
 <<LEADCDET.spad (SPAD from IN)>>
 
-<<leadcdet.spad (SPAD from IN)>>
 <<leadcdet.spad.dvi (DOC from IN)>>
 
 <<JORDAN.o (O from NRLIB)>>
@@ -35487,7 +32861,6 @@
 <<LSQM.NRLIB (NRLIB from MID)>>
 <<LSQM.spad (SPAD from IN)>>
 
-<<lie.spad (SPAD from IN)>>
 <<lie.spad.dvi (DOC from IN)>>
 
 <<LIMITPS.o (O from NRLIB)>>
@@ -35498,7 +32871,6 @@
 <<SIGNEF.NRLIB (NRLIB from MID)>>
 <<SIGNEF.spad (SPAD from IN)>>
 
-<<limitps.spad (SPAD from IN)>>
 <<limitps.spad.dvi (DOC from IN)>>
 
 <<LINDEP.o (O from NRLIB)>>
@@ -35509,28 +32881,24 @@
 <<ZLINDEP.NRLIB (NRLIB from MID)>>
 <<ZLINDEP.spad (SPAD from IN)>>
 
-<<lindep.spad (SPAD from IN)>>
 <<lindep.spad.dvi (DOC from IN)>>
 
 <<LGROBP.o (O from NRLIB)>>
 <<LGROBP.NRLIB (NRLIB from MID)>>
 <<LGROBP.spad (SPAD from IN)>>
 
-<<lingrob.spad (SPAD from IN)>>
 <<lingrob.spad.dvi (DOC from IN)>>
 
 <<LF.o (O from NRLIB)>>
 <<LF.NRLIB (NRLIB from MID)>>
 <<LF.spad (SPAD from IN)>>
 
-<<liouv.spad (SPAD from IN)>>
 <<liouv.spad.dvi (DOC from IN)>>
 
 <<HEUGCD.o (O from NRLIB)>>
 <<HEUGCD.NRLIB (NRLIB from MID)>>
 <<HEUGCD.spad (SPAD from IN)>>
 
-<<listgcd.spad (SPAD from IN)>>
 <<listgcd.spad.dvi (DOC from IN)>>
 
 <<ILIST.o (O from NRLIB)>>
@@ -35561,14 +32929,12 @@
 <<LIST3.NRLIB (NRLIB from MID)>>
 <<LIST3.spad (SPAD from IN)>>
 
-<<list.spad (SPAD from IN)>>
 <<list.spad.dvi (DOC from IN)>>
 
 <<LMDICT.o (O from NRLIB)>>
 <<LMDICT.NRLIB (NRLIB from MID)>>
 <<LMDICT.spad (SPAD from IN)>>
 
-<<lmdict.spad (SPAD from IN)>>
 <<lmdict.spad.dvi (DOC from IN)>>
 
 <<ASSOCEQ.o (O from NRLIB)>>
@@ -35587,7 +32953,6 @@
 <<SETMN.NRLIB (NRLIB from MID)>>
 <<SETMN.spad (SPAD from IN)>>
 
-<<lodof.spad (SPAD from IN)>>
 <<lodof.spad.dvi (DOC from IN)>>
 
 <<DPMO.o (O from NRLIB)>>
@@ -35614,7 +32979,6 @@
 <<OMLO.NRLIB (NRLIB from MID)>>
 <<OMLO.spad (SPAD from IN)>>
 
-<<lodop.spad (SPAD from IN)>>
 <<lodop.spad.dvi (DOC from IN)>>
 
 <<LODO.o (O from NRLIB)>>
@@ -35639,7 +33003,6 @@
 <<LODOOPS.NRLIB (NRLIB from MID)>>
 <<LODOOPS.spad (SPAD from IN)>>
 
-<<lodo.spad (SPAD from IN)>>
 <<lodo.spad.dvi (DOC from IN)>>
 
 <<FACTFUNC.o (O from NRLIB)>>
@@ -35662,7 +33025,6 @@
 <<TRMANIP.NRLIB (NRLIB from MID)>>
 <<TRMANIP.spad (SPAD from IN)>>
 
-<<manip.spad (SPAD from IN)>>
 <<manip.spad.dvi (DOC from IN)>>
 
 <<MAPHACK1.o (O from NRLIB)>>
@@ -35689,7 +33051,6 @@
 <<MAPPKG3.NRLIB (NRLIB from MID)>>
 <<MAPPKG3.spad (SPAD from IN)>>
 
-<<mappkg.spad (SPAD from IN)>>
 <<mappkg.spad.dvi (DOC from IN)>>
 
 <<MATCAT-.o (O from NRLIB)>>
@@ -35710,7 +33071,6 @@
 <<SMATCAT.NRLIB (NRLIB from MID)>>
 <<SMATCAT.spad (SPAD from IN)>>
 
-<<matcat.spad (SPAD from IN)>>
 <<matcat.spad.dvi (DOC from IN)>>
 
 <<IMATLIN.o (O from NRLIB)>>
@@ -35733,7 +33093,6 @@
 <<RMCAT2.NRLIB (NRLIB from MID)>>
 <<RMCAT2.spad (SPAD from IN)>>
 
-<<matfuns.spad (SPAD from IN)>>
 <<matfuns.spad.dvi (DOC from IN)>>
 
 <<IMATRIX.o (O from NRLIB)>>
@@ -35752,35 +33111,30 @@
 <<SQMATRIX.NRLIB (NRLIB from MID)>>
 <<SQMATRIX.spad (SPAD from IN)>>
 
-<<matrix.spad (SPAD from IN)>>
 <<matrix.spad.dvi (DOC from IN)>>
 
 <<MATSTOR.o (O from NRLIB)>>
 <<MATSTOR.NRLIB (NRLIB from MID)>>
 <<MATSTOR.spad (SPAD from IN)>>
 
-<<matstor.spad (SPAD from IN)>>
 <<matstor.spad.dvi (DOC from IN)>>
 
 <<MESH.o (O from NRLIB)>>
 <<MESH.NRLIB (NRLIB from MID)>>
 <<MESH.spad (SPAD from IN)>>
 
-<<mesh.spad (SPAD from IN)>>
 <<mesh.spad.dvi (DOC from IN)>>
 
 <<MFINFACT.o (O from NRLIB)>>
 <<MFINFACT.NRLIB (NRLIB from MID)>>
 <<MFINFACT.spad (SPAD from IN)>>
 
-<<mfinfact.spad (SPAD from IN)>>
 <<mfinfact.spad.dvi (DOC from IN)>>
 
 <<SAOS.o (O from NRLIB)>>
 <<SAOS.NRLIB (NRLIB from MID)>>
 <<SAOS.spad (SPAD from IN)>>
 
-<<misc.spad (SPAD from IN)>>
 <<misc.spad.dvi (DOC from IN)>>
 
 <<INFORM.o (O from NRLIB)>>
@@ -35807,14 +33161,12 @@
 <<MKUCFUNC.NRLIB (NRLIB from MID)>>
 <<MKUCFUNC.spad (SPAD from IN)>>
 
-<<mkfunc.spad (SPAD from IN)>>
 <<mkfunc.spad.dvi (DOC from IN)>>
 
 <<MKRECORD.o (O from NRLIB)>>
 <<MKRECORD.NRLIB (NRLIB from MID)>>
 <<MKRECORD.spad (SPAD from IN)>>
 
-<<mkrecord.spad (SPAD from IN)>>
 <<mkrecord.spad.dvi (DOC from IN)>>
 
 <<mlift.spad.jhd.dvi (DOC from IN)>>
@@ -35823,21 +33175,18 @@
 <<MLIFT.NRLIB (NRLIB from MID)>>
 <<MLIFT.spad (SPAD from IN)>>
 
-<<mlift.spad (SPAD from IN)>>
 <<mlift.spad.dvi (DOC from IN)>>
 
 <<MDDFACT.o (O from NRLIB)>>
 <<MDDFACT.NRLIB (NRLIB from MID)>>
 <<MDDFACT.spad (SPAD from IN)>>
 
-<<moddfact.spad (SPAD from IN)>>
 <<moddfact.spad.dvi (DOC from IN)>>
 
 <<INMODGCD.o (O from NRLIB)>>
 <<INMODGCD.NRLIB (NRLIB from MID)>>
 <<INMODGCD.spad (SPAD from IN)>>
 
-<<modgcd.spad (SPAD from IN)>>
 <<modgcd.spad.dvi (DOC from IN)>>
 
 <<GMODPOL.o (O from NRLIB)>>
@@ -35848,14 +33197,12 @@
 <<MODMONOM.NRLIB (NRLIB from MID)>>
 <<MODMONOM.spad (SPAD from IN)>>
 
-<<modmonom.spad (SPAD from IN)>>
 <<modmonom.spad.dvi (DOC from IN)>>
 
 <<MODMON.o (O from NRLIB)>>
 <<MODMON.NRLIB (NRLIB from MID)>>
 <<MODMON.spad (SPAD from IN)>>
 
-<<modmon.spad (SPAD from IN)>>
 <<modmon.spad.dvi (DOC from IN)>>
 
 <<EMR.o (O from NRLIB)>>
@@ -35870,14 +33217,12 @@
 <<MODRING.NRLIB (NRLIB from MID)>>
 <<MODRING.spad (SPAD from IN)>>
 
-<<modring.spad (SPAD from IN)>>
 <<modring.spad.dvi (DOC from IN)>>
 
 <<MOEBIUS.o (O from NRLIB)>>
 <<MOEBIUS.NRLIB (NRLIB from MID)>>
 <<MOEBIUS.spad (SPAD from IN)>>
 
-<<moebius.spad (SPAD from IN)>>
 <<moebius.spad.dvi (DOC from IN)>>
 
 <<MRF2.o (O from NRLIB)>>
@@ -35888,14 +33233,12 @@
 <<MRING.NRLIB (NRLIB from MID)>>
 <<MRING.spad (SPAD from IN)>>
 
-<<mring.spad (SPAD from IN)>>
 <<mring.spad.dvi (DOC from IN)>>
 
 <<MSET.o (O from NRLIB)>>
 <<MSET.NRLIB (NRLIB from MID)>>
 <<MSET.spad (SPAD from IN)>>
 
-<<mset.spad (SPAD from IN)>>
 <<mset.spad.dvi (DOC from IN)>>
 
 <<SMTS.o (O from NRLIB)>>
@@ -35906,7 +33249,6 @@
 <<TS.NRLIB (NRLIB from MID)>>
 <<TS.spad (SPAD from IN)>>
 
-<<mts.spad (SPAD from IN)>>
 <<mts.spad.dvi (DOC from IN)>>
 
 <<ALGMFACT.o (O from NRLIB)>>
@@ -35921,7 +33263,6 @@
 <<MULTFACT.NRLIB (NRLIB from MID)>>
 <<MULTFACT.spad (SPAD from IN)>>
 
-<<multfact.spad (SPAD from IN)>>
 <<multfact.spad.dvi (DOC from IN)>>
 
 <<INDE.o (O from NRLIB)>>
@@ -35944,14 +33285,12 @@
 <<SMP.NRLIB (NRLIB from MID)>>
 <<SMP.spad (SPAD from IN)>>
 
-<<multpoly.spad (SPAD from IN)>>
 <<multpoly.spad.dvi (DOC from IN)>>
 
 <<MULTSQFR.o (O from NRLIB)>>
 <<MULTSQFR.NRLIB (NRLIB from MID)>>
 <<MULTSQFR.spad (SPAD from IN)>>
 
-<<multsqfr.spad (SPAD from IN)>>
 <<multsqfr.spad.dvi (DOC from IN)>>
 
 <<FINAALG-.o (O from NRLIB)>>
@@ -35996,7 +33335,6 @@
 <<NASRING.NRLIB (NRLIB from MID)>>
 <<NASRING.spad (SPAD from IN)>>
 
-<<naalgc.spad (SPAD from IN)>>
 <<naalgc.spad.dvi (DOC from IN)>>
 
 <<ALGPKG.o (O from NRLIB)>>
@@ -36015,7 +33353,6 @@
 <<SCPKG.NRLIB (NRLIB from MID)>>
 <<SCPKG.spad (SPAD from IN)>>
 
-<<naalg.spad (SPAD from IN)>>
 <<naalg.spad.dvi (DOC from IN)>>
 
 <<ndftip.as (SPAD from IN)>>
@@ -36040,7 +33377,6 @@
 <<TBCMPPK.NRLIB (NRLIB from MID)>>
 <<TBCMPPK.spad (SPAD from IN)>>
 
-<<newdata.spad (SPAD from IN)>>
 <<newdata.spad.dvi (DOC from IN)>>
 
 <<COMPPROP.o (O from NRLIB)>>
@@ -36067,7 +33403,6 @@
 <<PTPACK.NRLIB (NRLIB from MID)>>
 <<PTPACK.spad (SPAD from IN)>>
 
-<<newpoint.spad (SPAD from IN)>>
 <<newpoint.spad.dvi (DOC from IN)>>
 
 <<NSMP.o (O from NRLIB)>>
@@ -36088,7 +33423,6 @@
 <<RPOLCAT.NRLIB (NRLIB from MID)>>
 <<RPOLCAT.spad (SPAD from IN)>>
 
-<<newpoly.spad (SPAD from IN)>>
 <<newpoly.spad.dvi (DOC from IN)>>
 
 <<NLINSOL.o (O from NRLIB)>>
@@ -36099,14 +33433,12 @@
 <<RETSOL.NRLIB (NRLIB from MID)>>
 <<RETSOL.spad (SPAD from IN)>>
 
-<<nlinsol.spad (SPAD from IN)>>
 <<nlinsol.spad.dvi (DOC from IN)>>
 
 <<NODE1.o (O from NRLIB)>>
 <<NODE1.NRLIB (NRLIB from MID)>>
 <<NODE1.spad (SPAD from IN)>>
 
-<<nlode.spad (SPAD from IN)>>
 <<nlode.spad.dvi (DOC from IN)>>
 
 <<noptip.as (SPAD from IN)>>
@@ -36116,7 +33448,6 @@
 <<NPCOEF.NRLIB (NRLIB from MID)>>
 <<NPCOEF.spad (SPAD from IN)>>
 
-<<npcoef.spad (SPAD from IN)>>
 <<npcoef.spad.dvi (DOC from IN)>>
 
 <<nqip.as (SPAD from IN)>>
@@ -36133,7 +33464,6 @@
 <<NTSCAT.NRLIB (NRLIB from MID)>>
 <<NTSCAT.spad (SPAD from IN)>>
 
-<<nregset.spad (SPAD from IN)>>
 <<nregset.spad.dvi (DOC from IN)>>
 
 <<nsfip.as (SPAD from IN)>>
@@ -36147,7 +33477,6 @@
 <<SNTSCAT.NRLIB (NRLIB from MID)>>
 <<SNTSCAT.spad (SPAD from IN)>>
 
-<<nsregset.spad (SPAD from IN)>>
 <<nsregset.spad.dvi (DOC from IN)>>
 
 <<INEP.o (O from NRLIB)>>
@@ -36162,7 +33491,6 @@
 <<NREP.NRLIB (NRLIB from MID)>>
 <<NREP.spad (SPAD from IN)>>
 
-<<numeigen.spad (SPAD from IN)>>
 <<numeigen.spad.dvi (DOC from IN)>>
 
 <<DRAWHACK.o (O from NRLIB)>>
@@ -36173,21 +33501,18 @@
 <<NUMERIC.NRLIB (NRLIB from MID)>>
 <<NUMERIC.spad (SPAD from IN)>>
 
-<<numeric.spad (SPAD from IN)>>
 <<numeric.spad.dvi (DOC from IN)>>
 
 <<NUMODE.o (O from NRLIB)>>
 <<NUMODE.NRLIB (NRLIB from MID)>>
 <<NUMODE.spad (SPAD from IN)>>
 
-<<numode.spad (SPAD from IN)>>
 <<numode.spad.dvi (DOC from IN)>>
 
 <<NUMQUAD.o (O from NRLIB)>>
 <<NUMQUAD.NRLIB (NRLIB from MID)>>
 <<NUMQUAD.spad (SPAD from IN)>>
 
-<<numquad.spad (SPAD from IN)>>
 <<numquad.spad.dvi (DOC from IN)>>
 
 <<FLOATCP.o (O from NRLIB)>>
@@ -36202,9 +33527,6 @@
 <<INFSP.NRLIB (NRLIB from MID)>>
 <<INFSP.spad (SPAD from IN)>>
 
-<<numsolve.spad (SPAD from IN)>>
-<<numsolve.spad.dvi (DOC from IN)>>
-
 <<INTHEORY.o (O from NRLIB)>>
 <<INTHEORY.NRLIB (NRLIB from MID)>>
 <<INTHEORY.spad (SPAD from IN)>>
@@ -36213,7 +33535,6 @@
 <<PNTHEORY.NRLIB (NRLIB from MID)>>
 <<PNTHEORY.spad (SPAD from IN)>>
 
-<<numtheor.spad (SPAD from IN)>>
 <<numtheor.spad.dvi (DOC from IN)>>
 
 <<OC-.o (O from NRLIB)>>
@@ -36230,7 +33551,6 @@
 <<OCTCT2.NRLIB (NRLIB from MID)>>
 <<OCTCT2.spad (SPAD from IN)>>
 
-<<oct.spad (SPAD from IN)>>
 <<oct.spad.dvi (DOC from IN)>>
 
 <<ODEPAL.o (O from NRLIB)>>
@@ -36245,7 +33565,6 @@
 <<ODESYS.NRLIB (NRLIB from MID)>>
 <<ODESYS.spad (SPAD from IN)>>
 
-<<odealg.spad (SPAD from IN)>>
 <<odealg.spad.dvi (DOC from IN)>>
 
 <<LODEEF.o (O from NRLIB)>>
@@ -36260,7 +33579,6 @@
 <<REDORDER.NRLIB (NRLIB from MID)>>
 <<REDORDER.spad (SPAD from IN)>>
 
-<<odeef.spad (SPAD from IN)>>
 <<odeef.spad.dvi (DOC from IN)>>
 
 <<BALFACT.o (O from NRLIB)>>
@@ -36295,14 +33613,12 @@
 <<UTSODETL.NRLIB (NRLIB from MID)>>
 <<UTSODETL.spad (SPAD from IN)>>
 
-<<oderf.spad (SPAD from IN)>>
 <<oderf.spad.dvi (DOC from IN)>>
 
 <<OM.o (O from NRLIB)>>
 <<OM.NRLIB (NRLIB from MID)>>
 <<OM.spad (SPAD from IN)>>
 
-<<omcat.spad (SPAD from IN)>>
 <<omcat.spad.dvi (DOC from IN)>>
 
 <<OMCONN.o (O from NRLIB)>>
@@ -36321,7 +33637,6 @@
 <<OMPKG.NRLIB (NRLIB from MID)>>
 <<OMPKG.spad (SPAD from IN)>>
 
-<<omdev.spad (SPAD from IN)>>
 <<omdev.spad.dvi (DOC from IN)>>
 
 <<OMERR.o (O from NRLIB)>>
@@ -36332,14 +33647,12 @@
 <<OMERRK.NRLIB (NRLIB from MID)>>
 <<OMERRK.spad (SPAD from IN)>>
 
-<<omerror.spad (SPAD from IN)>>
 <<omerror.spad.dvi (DOC from IN)>>
 
 <<OMSERVER.o (O from NRLIB)>>
 <<OMSERVER.NRLIB (NRLIB from MID)>>
 <<OMSERVER.spad (SPAD from IN)>>
 
-<<omserver.spad (SPAD from IN)>>
 <<omserver.spad.dvi (DOC from IN)>>
 
 <<MODOP.o (O from NRLIB)>>
@@ -36350,14 +33663,12 @@
 <<OP.NRLIB (NRLIB from MID)>>
 <<OP.spad (SPAD from IN)>>
 
-<<opalg.spad (SPAD from IN)>>
 <<opalg.spad.dvi (DOC from IN)>>
 
 <<OMEXPR.o (O from NRLIB)>>
 <<OMEXPR.NRLIB (NRLIB from MID)>>
 <<OMEXPR.spad (SPAD from IN)>>
 
-<<openmath.spad (SPAD from IN)>>
 <<openmath.spad.dvi (DOC from IN)>>
 
 <<BOP.o (O from NRLIB)>>
@@ -36372,7 +33683,6 @@
 <<COMMONOP.NRLIB (NRLIB from MID)>>
 <<COMMONOP.spad (SPAD from IN)>>
 
-<<op.spad (SPAD from IN)>>
 <<op.spad.dvi (DOC from IN)>>
 
 <<APPLYORE.o (O from NRLIB)>>
@@ -36401,7 +33711,6 @@
 <<OREUP.NRLIB (NRLIB from MID)>>
 <<OREUP.spad (SPAD from IN)>>
 
-<<ore.spad (SPAD from IN)>>
 <<ore.spad.dvi (DOC from IN)>>
 
 <<NUMFMT.o (O from NRLIB)>>
@@ -36414,7 +33723,6 @@
 <<OUTFORM.o (BOOTSTRAP from MID)>>
 <<OUTFORM.lsp (LISP from IN)>>
 
-<<outform.spad (SPAD from IN)>>
 <<outform.spad.dvi (DOC from IN)>>
 
 <<DISPLAY.o (O from NRLIB)>>
@@ -36429,7 +33737,6 @@
 <<SPECOUT.NRLIB (NRLIB from MID)>>
 <<SPECOUT.spad (SPAD from IN)>>
 
-<<out.spad (SPAD from IN)>>
 <<out.spad.dvi (DOC from IN)>>
 
 <<PADE.o (O from NRLIB)>>
@@ -36440,7 +33747,6 @@
 <<PADEPAC.NRLIB (NRLIB from MID)>>
 <<PADEPAC.spad (SPAD from IN)>>
 
-<<pade.spad (SPAD from IN)>>
 <<pade.spad.dvi (DOC from IN)>>
 
 <<IBACHIN.o (O from NRLIB)>>
@@ -36455,7 +33761,6 @@
 <<PWFFINTB.NRLIB (NRLIB from MID)>>
 <<PWFFINTB.spad (SPAD from IN)>>
 
-<<padiclib.spad (SPAD from IN)>>
 <<padiclib.spad.dvi (DOC from IN)>>
 
 <<BPADIC.o (O from NRLIB)>>
@@ -36486,7 +33791,6 @@
 <<PADICRC.NRLIB (NRLIB from MID)>>
 <<PADICRC.spad (SPAD from IN)>>
 
-<<padic.spad (SPAD from IN)>>
 <<padic.spad.dvi (DOC from IN)>>
 
 <<PARPCURV.o (O from NRLIB)>>
@@ -36513,14 +33817,12 @@
 <<PARSU2.NRLIB (NRLIB from MID)>>
 <<PARSU2.spad (SPAD from IN)>>
 
-<<paramete.spad (SPAD from IN)>>
 <<paramete.spad.dvi (DOC from IN)>>
 
 <<PARTPERM.o (O from NRLIB)>>
 <<PARTPERM.NRLIB (NRLIB from MID)>>
 <<PARTPERM.spad (SPAD from IN)>>
 
-<<partperm.spad (SPAD from IN)>>
 <<partperm.spad.dvi (DOC from IN)>>
 
 <<FPATMAB.o (O from NRLIB)>>
@@ -36563,7 +33865,6 @@
 <<PMTOOLS.NRLIB (NRLIB from MID)>>
 <<PMTOOLS.spad (SPAD from IN)>>
 
-<<patmatch1.spad (SPAD from IN)>>
 <<patmatch1.spad.dvi (DOC from IN)>>
 
 <<PATMATCH.o (O from NRLIB)>>
@@ -36586,7 +33887,6 @@
 <<PMQFCAT.NRLIB (NRLIB from MID)>>
 <<PMQFCAT.spad (SPAD from IN)>>
 
-<<patmatch2.spad (SPAD from IN)>>
 <<patmatch2.spad.dvi (DOC from IN)>>
 
 <<PATAB.o (O from NRLIB)>>
@@ -36605,7 +33905,6 @@
 <<PATTERN2.NRLIB (NRLIB from MID)>>
 <<PATTERN2.spad (SPAD from IN)>>
 
-<<pattern.spad (SPAD from IN)>>
 <<pattern.spad.dvi (DOC from IN)>>
 
 <<PPCURVE.o (O from NRLIB)>>
@@ -36616,7 +33915,6 @@
 <<PSCURVE.NRLIB (NRLIB from MID)>>
 <<PSCURVE.spad (SPAD from IN)>>
 
-<<pcurve.spad (SPAD from IN)>>
 <<pcurve.spad.dvi (DOC from IN)>>
 
 <<PCOMP.o (O from NRLIB)>>
@@ -36627,7 +33925,6 @@
 <<PDECOMP.NRLIB (NRLIB from MID)>>
 <<PDECOMP.spad (SPAD from IN)>>
 
-<<pdecomp.spad (SPAD from IN)>>
 <<pdecomp.spad.dvi (DOC from IN)>>
 
 <<GRAY.o (O from NRLIB)>>
@@ -36638,7 +33935,6 @@
 <<PERMAN.NRLIB (NRLIB from MID)>>
 <<PERMAN.spad (SPAD from IN)>>
 
-<<perman.spad (SPAD from IN)>>
 <<perman.spad.dvi (DOC from IN)>>
 
 <<PERMGRP.o (O from NRLIB)>>
@@ -36649,7 +33945,6 @@
 <<PGE.NRLIB (NRLIB from MID)>>
 <<PGE.spad (SPAD from IN)>>
 
-<<permgrps.spad (SPAD from IN)>>
 <<permgrps.spad.dvi (DOC from IN)>>
 
 <<PERM.o (O from NRLIB)>>
@@ -36660,7 +33955,6 @@
 <<PERMCAT.NRLIB (NRLIB from MID)>>
 <<PERMCAT.spad (SPAD from IN)>>
 
-<<perm.spad (SPAD from IN)>>
 <<perm.spad.dvi (DOC from IN)>>
 
 <<PFBR.o (O from NRLIB)>>
@@ -36671,7 +33965,6 @@
 <<PFBRU.NRLIB (NRLIB from MID)>>
 <<PFBRU.spad (SPAD from IN)>>
 
-<<pfbr.spad (SPAD from IN)>>
 <<pfbr.spad.dvi (DOC from IN)>>
 
 <<FORDER.o (O from NRLIB)>>
@@ -36698,7 +33991,6 @@
 <<RDIV.NRLIB (NRLIB from MID)>>
 <<RDIV.spad (SPAD from IN)>>
 
-<<pfo.spad (SPAD from IN)>>
 <<pfo.spad.dvi (DOC from IN)>>
 
 <<PFR.o (O from NRLIB)>>
@@ -36709,7 +34001,6 @@
 <<PFRPAC.NRLIB (NRLIB from MID)>>
 <<PFRPAC.spad (SPAD from IN)>>
 
-<<pfr.spad (SPAD from IN)>>
 <<pfr.spad.dvi (DOC from IN)>>
 
 <<IPF.o (O from NRLIB)>>
@@ -36720,21 +34011,18 @@
 <<PF.NRLIB (NRLIB from MID)>>
 <<PF.spad (SPAD from IN)>>
 
-<<pf.spad (SPAD from IN)>>
 <<pf.spad.dvi (DOC from IN)>>
 
 <<PGCD.o (O from NRLIB)>>
 <<PGCD.NRLIB (NRLIB from MID)>>
 <<PGCD.spad (SPAD from IN)>>
 
-<<pgcd.spad (SPAD from IN)>>
 <<pgcd.spad.dvi (DOC from IN)>>
 
 <<PGROEB.o (O from NRLIB)>>
 <<PGROEB.NRLIB (NRLIB from MID)>>
 <<PGROEB.spad (SPAD from IN)>>
 
-<<pgrobner.spad (SPAD from IN)>>
 <<pgrobner.spad.dvi (DOC from IN)>>
 
 <<PINTERP.o (O from NRLIB)>>
@@ -36745,21 +34033,18 @@
 <<PINTERPA.NRLIB (NRLIB from MID)>>
 <<PINTERPA.spad (SPAD from IN)>>
 
-<<pinterp.spad (SPAD from IN)>>
 <<pinterp.spad.dvi (DOC from IN)>>
 
 <<PLEQN.o (O from NRLIB)>>
 <<PLEQN.NRLIB (NRLIB from MID)>>
 <<PLEQN.spad (SPAD from IN)>>
 
-<<pleqn.spad (SPAD from IN)>>
 <<pleqn.spad.dvi (DOC from IN)>>
 
 <<PLOT3D.o (O from NRLIB)>>
 <<PLOT3D.NRLIB (NRLIB from MID)>>
 <<PLOT3D.spad (SPAD from IN)>>
 
-<<plot3d.spad (SPAD from IN)>>
 <<plot3d.spad.dvi (DOC from IN)>>
 
 <<PLOT1.o (O from NRLIB)>>
@@ -36770,14 +34055,12 @@
 <<PLOT.NRLIB (NRLIB from MID)>>
 <<PLOT.spad (SPAD from IN)>>
 
-<<plot.spad (SPAD from IN)>>
 <<plot.spad.dvi (DOC from IN)>>
 
 <<PLOTTOOL.o (O from NRLIB)>>
 <<PLOTTOOL.NRLIB (NRLIB from MID)>>
 <<PLOTTOOL.spad (SPAD from IN)>>
 
-<<plottool.spad (SPAD from IN)>>
 <<plottool.spad.dvi (DOC from IN)>>
 
 <<GPOLSET.o (O from NRLIB)>>
@@ -36794,7 +34077,6 @@
 <<PSETCAT.o (BOOTSTRAP from MID)>>
 <<PSETCAT.lsp (LISP from IN)>>
 
-<<polset.spad (SPAD from IN)>>
 <<polset.spad.dvi (DOC from IN)>>
 
 <<MPC2.o (O from NRLIB)>>
@@ -36809,7 +34091,6 @@
 <<POLTOPOL.NRLIB (NRLIB from MID)>>
 <<POLTOPOL.spad (SPAD from IN)>>
 
-<<poltopol.spad (SPAD from IN)>>
 <<poltopol.spad.dvi (DOC from IN)>>
 
 <<AMR-.o (O from NRLIB)>>
@@ -36852,7 +34133,6 @@
 <<UPOLYC.o (BOOTSTRAP from MID)>>
 <<UPOLYC.lsp (LISP from IN)>>
 
-<<polycat.spad (SPAD from IN)>>
 <<polycat.spad.dvi (DOC from IN)>>
 
 <<FM.o (O from NRLIB)>>
@@ -36899,7 +34179,6 @@
 <<UPSQFREE.NRLIB (NRLIB from MID)>>
 <<UPSQFREE.spad (SPAD from IN)>>
 
-<<poly.spad (SPAD from IN)>>
 <<poly.spad.dvi (DOC from IN)>>
 
 <<FSPRMELT.o (O from NRLIB)>>
@@ -36910,28 +34189,24 @@
 <<PRIMELT.NRLIB (NRLIB from MID)>>
 <<PRIMELT.spad (SPAD from IN)>>
 
-<<primelt.spad (SPAD from IN)>>
 <<primelt.spad.dvi (DOC from IN)>>
 
 <<PRINT.o (O from NRLIB)>>
 <<PRINT.NRLIB (NRLIB from MID)>>
 <<PRINT.spad (SPAD from IN)>>
 
-<<print.spad (SPAD from IN)>>
 <<print.spad.dvi (DOC from IN)>>
 
 <<PRODUCT.o (O from NRLIB)>>
 <<PRODUCT.NRLIB (NRLIB from MID)>>
 <<PRODUCT.spad (SPAD from IN)>>
 
-<<product.spad (SPAD from IN)>>
 <<product.spad.dvi (DOC from IN)>>
 
 <<PRS.o (O from NRLIB)>>
 <<PRS.NRLIB (NRLIB from MID)>>
 <<PRS.spad (SPAD from IN)>>
 
-<<prs.spad (SPAD from IN)>>
 <<prs.spad.dvi (DOC from IN)>>
 
 <<SYMPOLY.o (O from NRLIB)>>
@@ -36942,7 +34217,6 @@
 <<PRTITION.NRLIB (NRLIB from MID)>>
 <<PRTITION.spad (SPAD from IN)>>
 
-<<prtition.spad (SPAD from IN)>>
 <<prtition.spad.dvi (DOC from IN)>>
 
 <<MTSCAT.o (O from NRLIB)>>
@@ -36979,21 +34253,18 @@
 <<UTSCAT.NRLIB (NRLIB from MID)>>
 <<UTSCAT.spad (SPAD from IN)>>
 
-<<pscat.spad (SPAD from IN)>>
 <<pscat.spad.dvi (DOC from IN)>>
 
 <<PSEUDLIN.o (O from NRLIB)>>
 <<PSEUDLIN.NRLIB (NRLIB from MID)>>
 <<PSEUDLIN.spad (SPAD from IN)>>
 
-<<pseudolin.spad (SPAD from IN)>>
 <<pseudolin.spad.dvi (DOC from IN)>>
 
 <<PTRANFN.o (O from NRLIB)>>
 <<PTRANFN.NRLIB (NRLIB from MID)>>
 <<PTRANFN.spad (SPAD from IN)>>
 
-<<ptranfn.spad (SPAD from IN)>>
 <<ptranfn.spad.dvi (DOC from IN)>>
 
 <<UPXS.o (O from NRLIB)>>
@@ -37014,7 +34285,6 @@
 <<UPXS2.NRLIB (NRLIB from MID)>>
 <<UPXS2.spad (SPAD from IN)>>
 
-<<puiseux.spad (SPAD from IN)>>
 <<puiseux.spad.dvi (DOC from IN)>>
 
 <<QALGSET.o (O from NRLIB)>>
@@ -37025,7 +34295,6 @@
 <<QALGSET2.NRLIB (NRLIB from MID)>>
 <<QALGSET2.spad (SPAD from IN)>>
 
-<<qalgset.spad (SPAD from IN)>>
 <<qalgset.spad.dvi (DOC from IN)>>
 
 <<QUAT.o (O from NRLIB)>>
@@ -37042,14 +34311,12 @@
 <<QUATCT2.NRLIB (NRLIB from MID)>>
 <<QUATCT2.spad (SPAD from IN)>>
 
-<<quat.spad (SPAD from IN)>>
 <<quat.spad.dvi (DOC from IN)>>
 
 <<REP.o (O from NRLIB)>>
 <<REP.NRLIB (NRLIB from MID)>>
 <<REP.spad (SPAD from IN)>>
 
-<<radeigen.spad (SPAD from IN)>>
 <<radeigen.spad.dvi (DOC from IN)>>
 
 <<BINARY.o (O from NRLIB)>>
@@ -37072,7 +34339,6 @@
 <<RADUTIL.NRLIB (NRLIB from MID)>>
 <<RADUTIL.spad (SPAD from IN)>>
 
-<<radix.spad (SPAD from IN)>>
 <<radix.spad.dvi (DOC from IN)>>
 
 <<INTBIT.o (O from NRLIB)>>
@@ -37095,14 +34361,12 @@
 <<RIDIST.NRLIB (NRLIB from MID)>>
 <<RIDIST.spad (SPAD from IN)>>
 
-<<random.spad (SPAD from IN)>>
 <<random.spad.dvi (DOC from IN)>>
 
 <<RATFACT.o (O from NRLIB)>>
 <<RATFACT.NRLIB (NRLIB from MID)>>
 <<RATFACT.spad (SPAD from IN)>>
 
-<<ratfact.spad (SPAD from IN)>>
 <<ratfact.spad.dvi (DOC from IN)>>
 
 <<INTTOOLS.o (O from NRLIB)>>
@@ -37113,14 +34377,12 @@
 <<RDEEF.NRLIB (NRLIB from MID)>>
 <<RDEEF.spad (SPAD from IN)>>
 
-<<rdeef.spad (SPAD from IN)>>
 <<rdeef.spad.dvi (DOC from IN)>>
 
 <<RDETR.o (O from NRLIB)>>
 <<RDETR.NRLIB (NRLIB from MID)>>
 <<RDETR.spad (SPAD from IN)>>
 
-<<rderf.spad (SPAD from IN)>>
 <<rderf.spad.dvi (DOC from IN)>>
 
 <<RDEEFS.o (O from NRLIB)>>
@@ -37131,21 +34393,18 @@
 <<RDETRS.NRLIB (NRLIB from MID)>>
 <<RDETRS.spad (SPAD from IN)>>
 
-<<rdesys.spad (SPAD from IN)>>
 <<rdesys.spad.dvi (DOC from IN)>>
 
 <<REAL0Q.o (O from NRLIB)>>
 <<REAL0Q.NRLIB (NRLIB from MID)>>
 <<REAL0Q.spad (SPAD from IN)>>
 
-<<real0q.spad (SPAD from IN)>>
 <<real0q.spad.dvi (DOC from IN)>>
 
 <<REAL0.o (O from NRLIB)>>
 <<REAL0.NRLIB (NRLIB from MID)>>
 <<REAL0.spad (SPAD from IN)>>
 
-<<realzero.spad (SPAD from IN)>>
 <<realzero.spad.dvi (DOC from IN)>>
 
 <<POLUTIL.o (O from NRLIB)>>
@@ -37172,7 +34431,6 @@
 <<RRCC.NRLIB (NRLIB from MID)>>
 <<RRCC.spad (SPAD from IN)>>
 
-<<reclos.spad (SPAD from IN)>>
 <<reclos.spad.dvi (DOC from IN)>>
 
 <<QCMPACK.o (O from NRLIB)>>
@@ -37197,28 +34455,24 @@
 <<RSETGCD.NRLIB (NRLIB from MID)>>
 <<RSETGCD.spad (SPAD from IN)>>
 
-<<regset.spad (SPAD from IN)>>
 <<regset.spad.dvi (DOC from IN)>>
 
 <<REP1.o (O from NRLIB)>>
 <<REP1.NRLIB (NRLIB from MID)>>
 <<REP1.spad (SPAD from IN)>>
 
-<<rep1.spad (SPAD from IN)>>
 <<rep1.spad.dvi (DOC from IN)>>
 
 <<REP2.o (O from NRLIB)>>
 <<REP2.NRLIB (NRLIB from MID)>>
 <<REP2.spad (SPAD from IN)>>
 
-<<rep2.spad (SPAD from IN)>>
 <<rep2.spad.dvi (DOC from IN)>>
 
 <<RESRING.o (O from NRLIB)>>
 <<RESRING.NRLIB (NRLIB from MID)>>
 <<RESRING.spad (SPAD from IN)>>
 
-<<resring.spad (SPAD from IN)>>
 <<resring.spad.dvi (DOC from IN)>>
 
 <<FRETRCT-.o (O from NRLIB)>>
@@ -37235,7 +34489,6 @@
 <<RATRET.NRLIB (NRLIB from MID)>>
 <<RATRET.spad (SPAD from IN)>>
 
-<<retract.spad (SPAD from IN)>>
 <<retract.spad.dvi (DOC from IN)>>
 
 <<POLYCATQ.o (O from NRLIB)>>
@@ -37246,7 +34499,6 @@
 <<RF.NRLIB (NRLIB from MID)>>
 <<RF.spad (SPAD from IN)>>
 
-<<rf.spad (SPAD from IN)>>
 <<rf.spad.dvi (DOC from IN)>>
 
 <<ODEPRRIC.o (O from NRLIB)>>
@@ -37257,7 +34509,6 @@
 <<ODERTRIC.NRLIB (NRLIB from MID)>>
 <<ODERTRIC.spad (SPAD from IN)>>
 
-<<riccati.spad (SPAD from IN)>>
 <<riccati.spad.dvi (DOC from IN)>>
 
 <<ATTRBUT.o (O from NRLIB)>>
@@ -37268,7 +34519,6 @@
 <<ROUTINE.NRLIB (NRLIB from MID)>>
 <<ROUTINE.spad (SPAD from IN)>>
 
-<<routines.spad (SPAD from IN)>>
 <<routines.spad.dvi (DOC from IN)>>
 
 <<APPRULE.o (O from NRLIB)>>
@@ -37283,7 +34533,6 @@
 <<RULESET.NRLIB (NRLIB from MID)>>
 <<RULESET.spad (SPAD from IN)>>
 
-<<rule.spad (SPAD from IN)>>
 <<rule.spad.dvi (DOC from IN)>>
 
 <<INCRMAPS.o (O from NRLIB)>>
@@ -37322,7 +34571,6 @@
 <<UNISEG2.NRLIB (NRLIB from MID)>>
 <<UNISEG2.spad (SPAD from IN)>>
 
-<<seg.spad (SPAD from IN)>>
 <<seg.spad.dvi (DOC from IN)>>
 
 <<UDPO.o (O from NRLIB)>>
@@ -37333,14 +34581,12 @@
 <<UDVO.NRLIB (NRLIB from MID)>>
 <<UDVO.spad (SPAD from IN)>>
 
-<<setorder.spad (SPAD from IN)>>
 <<setorder.spad.dvi (DOC from IN)>>
 
 <<SET.o (O from NRLIB)>>
 <<SET.NRLIB (NRLIB from MID)>>
 <<SET.spad (SPAD from IN)>>
 
-<<sets.spad (SPAD from IN)>>
 <<sets.spad.dvi (DOC from IN)>>
 
 <<SEX.o (O from NRLIB)>>
@@ -37355,7 +34601,6 @@
 <<SEXOF.NRLIB (NRLIB from MID)>>
 <<SEXOF.spad (SPAD from IN)>>
 
-<<sex.spad (SPAD from IN)>>
 <<sex.spad.dvi (DOC from IN)>>
 
 <<DFLOAT.o (O from NRLIB)>>
@@ -37394,14 +34639,12 @@
 <<RNS.o (BOOTSTRAP from MID)>>
 <<RNS.lsp (LISP from IN)>>
 
-<<sf.spad (SPAD from IN)>>
 <<sf.spad.dvi (DOC from IN)>>
 
 <<SGCF.o (O from NRLIB)>>
 <<SGCF.NRLIB (NRLIB from MID)>>
 <<SGCF.spad (SPAD from IN)>>
 
-<<sgcf.spad (SPAD from IN)>>
 <<sgcf.spad.dvi (DOC from IN)>>
 
 <<INPSIGN.o (O from NRLIB)>>
@@ -37420,7 +34663,6 @@
 <<TOOLSIGN.NRLIB (NRLIB from MID)>>
 <<TOOLSIGN.spad (SPAD from IN)>>
 
-<<sign.spad (SPAD from IN)>>
 <<sign.spad.dvi (DOC from IN)>>
 
 <<SINT.o (O from NRLIB)>>
@@ -37439,28 +34681,24 @@
 <<INS.o (BOOTSTRAP from MID)>>
 <<INS.lsp (LISP from IN)>>
 
-<<si.spad (SPAD from IN)>>
 <<si.spad.dvi (DOC from IN)>>
 
 <<SMITH.o (O from NRLIB)>>
 <<SMITH.NRLIB (NRLIB from MID)>>
 <<SMITH.spad (SPAD from IN)>>
 
-<<smith.spad (SPAD from IN)>>
 <<smith.spad.dvi (DOC from IN)>>
 
 <<DIOSP.o (O from NRLIB)>>
 <<DIOSP.NRLIB (NRLIB from MID)>>
 <<DIOSP.spad (SPAD from IN)>>
 
-<<solvedio.spad (SPAD from IN)>>
 <<solvedio.spad.dvi (DOC from IN)>>
 
 <<SOLVEFOR.o (O from NRLIB)>>
 <<SOLVEFOR.NRLIB (NRLIB from MID)>>
 <<SOLVEFOR.spad (SPAD from IN)>>
 
-<<solvefor.spad (SPAD from IN)>>
 <<solvefor.spad.dvi (DOC from IN)>>
 
 <<LSMP.o (O from NRLIB)>>
@@ -37475,21 +34713,18 @@
 <<LSPP.NRLIB (NRLIB from MID)>>
 <<LSPP.spad (SPAD from IN)>>
 
-<<solvelin.spad (SPAD from IN)>>
 <<solvelin.spad.dvi (DOC from IN)>>
 
 <<SOLVERAD.o (O from NRLIB)>>
 <<SOLVERAD.NRLIB (NRLIB from MID)>>
 <<SOLVERAD.spad (SPAD from IN)>>
 
-<<solverad.spad (SPAD from IN)>>
 <<solverad.spad.dvi (DOC from IN)>>
 
 <<SORTPAK.o (O from NRLIB)>>
 <<SORTPAK.NRLIB (NRLIB from MID)>>
 <<SORTPAK.spad (SPAD from IN)>>
 
-<<sortpak.spad (SPAD from IN)>>
 <<sortpak.spad.dvi (DOC from IN)>>
 
 <<SPACEC.o (O from NRLIB)>>
@@ -37504,7 +34739,6 @@
 <<TOPSP.NRLIB (NRLIB from MID)>>
 <<TOPSP.spad (SPAD from IN)>>
 
-<<space.spad (SPAD from IN)>>
 <<space.spad.dvi (DOC from IN)>>
 
 <<DFSFUN.o (O from NRLIB)>>
@@ -37519,7 +34753,6 @@
 <<ORTHPOL.NRLIB (NRLIB from MID)>>
 <<ORTHPOL.spad (SPAD from IN)>>
 
-<<special.spad (SPAD from IN)>>
 <<special.spad.dvi (DOC from IN)>>
 
 <<SFQCMPK.o (O from NRLIB)>>
@@ -37542,14 +34775,12 @@
 <<SREGSET.NRLIB (NRLIB from MID)>>
 <<SREGSET.spad (SPAD from IN)>>
 
-<<sregset.spad (SPAD from IN)>>
 <<sregset.spad.dvi (DOC from IN)>>
 
 <<NAGS.o (O from NRLIB)>>
 <<NAGS.NRLIB (NRLIB from MID)>>
 <<NAGS.spad (SPAD from IN)>>
 
-<<s.spad (SPAD from IN)>>
 <<s.spad.dvi (DOC from IN)>>
 
 <<CSTTOOLS.o (O from NRLIB)>>
@@ -37578,7 +34809,6 @@
 <<STREAM3.NRLIB (NRLIB from MID)>>
 <<STREAM3.spad (SPAD from IN)>>
 
-<<stream.spad (SPAD from IN)>>
 <<stream.spad.dvi (DOC from IN)>>
 
 <<CCLASS.o (O from NRLIB)>>
@@ -37605,14 +34835,12 @@
 <<STRING.NRLIB (NRLIB from MID)>>
 <<STRING.spad (SPAD from IN)>>
 
-<<string.spad (SPAD from IN)>>
 <<string.spad.dvi (DOC from IN)>>
 
 <<STTAYLOR.o (O from NRLIB)>>
 <<STTAYLOR.NRLIB (NRLIB from MID)>>
 <<STTAYLOR.spad (SPAD from IN)>>
 
-<<sttaylor.spad (SPAD from IN)>>
 <<sttaylor.spad.dvi (DOC from IN)>>
 
 <<STTF.o (O from NRLIB)>>
@@ -37623,28 +34851,24 @@
 <<STTFNC.NRLIB (NRLIB from MID)>>
 <<STTFNC.spad (SPAD from IN)>>
 
-<<sttf.spad (SPAD from IN)>>
 <<sttf.spad.dvi (DOC from IN)>>
 
 <<SHP.o (O from NRLIB)>>
 <<SHP.NRLIB (NRLIB from MID)>>
 <<SHP.spad (SPAD from IN)>>
 
-<<sturm.spad (SPAD from IN)>>
 <<sturm.spad.dvi (DOC from IN)>>
 
 <<SUCH.o (O from NRLIB)>>
 <<SUCH.NRLIB (NRLIB from MID)>>
 <<SUCH.spad (SPAD from IN)>>
 
-<<suchthat.spad (SPAD from IN)>>
 <<suchthat.spad.dvi (DOC from IN)>>
 
 <<SULS.o (O from NRLIB)>>
 <<SULS.NRLIB (NRLIB from MID)>>
 <<SULS.spad (SPAD from IN)>>
 
-<<suls.spad (SPAD from IN)>>
 <<suls.spad.dvi (DOC from IN)>>
 
 <<GOSPER.o (O from NRLIB)>>
@@ -37659,28 +34883,24 @@
 <<SUMRF.NRLIB (NRLIB from MID)>>
 <<SUMRF.spad (SPAD from IN)>>
 
-<<sum.spad (SPAD from IN)>>
 <<sum.spad.dvi (DOC from IN)>>
 
 <<ISUPS.o (O from NRLIB)>>
 <<ISUPS.NRLIB (NRLIB from MID)>>
 <<ISUPS.spad (SPAD from IN)>>
 
-<<sups.spad (SPAD from IN)>>
 <<sups.spad.dvi (DOC from IN)>>
 
 <<SUPXS.o (O from NRLIB)>>
 <<SUPXS.NRLIB (NRLIB from MID)>>
 <<SUPXS.spad (SPAD from IN)>>
 
-<<supxs.spad (SPAD from IN)>>
 <<supxs.spad.dvi (DOC from IN)>>
 
 <<SUTS.o (O from NRLIB)>>
 <<SUTS.NRLIB (NRLIB from MID)>>
 <<SUTS.spad (SPAD from IN)>>
 
-<<suts.spad (SPAD from IN)>>
 <<suts.spad.dvi (DOC from IN)>>
 
 <<SYMBOL.o (O from NRLIB)>>
@@ -37689,21 +34909,18 @@
 <<SYMBOL.o (BOOTSTRAP from MID)>>
 <<SYMBOL.lsp (LISP from IN)>>
 
-<<symbol.spad (SPAD from IN)>>
 <<symbol.spad.dvi (DOC from IN)>>
 
 <<SYSSOLP.o (O from NRLIB)>>
 <<SYSSOLP.NRLIB (NRLIB from MID)>>
 <<SYSSOLP.spad (SPAD from IN)>>
 
-<<syssolp.spad (SPAD from IN)>>
 <<syssolp.spad.dvi (DOC from IN)>>
 
 <<MSYSCMD.o (O from NRLIB)>>
 <<MSYSCMD.NRLIB (NRLIB from MID)>>
 <<MSYSCMD.spad (SPAD from IN)>>
 
-<<system.spad (SPAD from IN)>>
 <<system.spad.dvi (DOC from IN)>>
 
 <<TABLBUMP.o (O from NRLIB)>>
@@ -37714,7 +34931,6 @@
 <<TABLEAU.NRLIB (NRLIB from MID)>>
 <<TABLEAU.spad (SPAD from IN)>>
 
-<<tableau.spad (SPAD from IN)>>
 <<tableau.spad.dvi (DOC from IN)>>
 
 <<EQTBL.o (O from NRLIB)>>
@@ -37745,7 +34961,6 @@
 <<TABLE.NRLIB (NRLIB from MID)>>
 <<TABLE.spad (SPAD from IN)>>
 
-<<table.spad (SPAD from IN)>>
 <<table.spad.dvi (DOC from IN)>>
 
 <<ITAYLOR.o (O from NRLIB)>>
@@ -37760,7 +34975,6 @@
 <<UTS2.NRLIB (NRLIB from MID)>>
 <<UTS2.spad (SPAD from IN)>>
 
-<<taylor.spad (SPAD from IN)>>
 <<taylor.spad.dvi (DOC from IN)>>
 
 <<TEX.o (O from NRLIB)>>
@@ -37771,7 +34985,6 @@
 <<TEX1.NRLIB (NRLIB from MID)>>
 <<TEX1.spad (SPAD from IN)>>
 
-<<tex.spad (SPAD from IN)>>
 <<tex.spad.dvi (DOC from IN)>>
 
 <<ESTOOLS.o (O from NRLIB)>>
@@ -37786,7 +34999,6 @@
 <<ESTOOLS2.NRLIB (NRLIB from MID)>>
 <<ESTOOLS2.spad (SPAD from IN)>>
 
-<<tools.spad (SPAD from IN)>>
 <<tools.spad.dvi (DOC from IN)>>
 
 <<SOLVESER.o (O from NRLIB)>>
@@ -37797,7 +35009,6 @@
 <<SOLVETRA.NRLIB (NRLIB from MID)>>
 <<SOLVETRA.spad (SPAD from IN)>>
 
-<<transsolve.spad (SPAD from IN)>>
 <<transsolve.spad.dvi (DOC from IN)>>
 
 <<BBTREE.o (O from NRLIB)>>
@@ -37830,7 +35041,6 @@
 <<TREE.NRLIB (NRLIB from MID)>>
 <<TREE.spad (SPAD from IN)>>
 
-<<tree.spad (SPAD from IN)>>
 <<tree.spad.dvi (DOC from IN)>>
 
 <<AHYP.o (O from NRLIB)>>
@@ -37883,7 +35093,6 @@
 <<TRIGCAT.NRLIB (NRLIB from MID)>>
 <<TRIGCAT.spad (SPAD from IN)>>
 
-<<trigcat.spad (SPAD from IN)>>
 <<trigcat.spad.dvi (DOC from IN)>>
 
 <<GTSET.o (O from NRLIB)>>
@@ -37908,7 +35117,6 @@
 <<WUTSET.NRLIB (NRLIB from MID)>>
 <<WUTSET.spad (SPAD from IN)>>
 
-<<triset.spad (SPAD from IN)>>
 <<triset.spad.dvi (DOC from IN)>>
 
 <<EXPRTUBE.o (O from NRLIB)>>
@@ -37927,7 +35135,6 @@
 <<TUBETOOL.NRLIB (NRLIB from MID)>>
 <<TUBETOOL.spad (SPAD from IN)>>
 
-<<tube.spad (SPAD from IN)>>
 <<tube.spad.dvi (DOC from IN)>>
 
 <<NORMRETR.o (O from NRLIB)>>
@@ -37938,35 +35145,30 @@
 <<TWOFACT.NRLIB (NRLIB from MID)>>
 <<TWOFACT.spad (SPAD from IN)>>
 
-<<twofact.spad (SPAD from IN)>>
 <<twofact.spad.dvi (DOC from IN)>>
 
 <<UNIFACT.o (O from NRLIB)>>
 <<UNIFACT.NRLIB (NRLIB from MID)>>
 <<UNIFACT.spad (SPAD from IN)>>
 
-<<unifact.spad (SPAD from IN)>>
 <<unifact.spad.dvi (DOC from IN)>>
 
 <<UPDECOMP.o (O from NRLIB)>>
 <<UPDECOMP.NRLIB (NRLIB from MID)>>
 <<UPDECOMP.spad (SPAD from IN)>>
 
-<<updecomp.spad (SPAD from IN)>>
 <<updecomp.spad.dvi (DOC from IN)>>
 
 <<UPDIVP.o (O from NRLIB)>>
 <<UPDIVP.NRLIB (NRLIB from MID)>>
 <<UPDIVP.spad (SPAD from IN)>>
 
-<<updivp.spad (SPAD from IN)>>
 <<updivp.spad.dvi (DOC from IN)>>
 
 <<UTSODE.o (O from NRLIB)>>
 <<UTSODE.NRLIB (NRLIB from MID)>>
 <<UTSODE.spad (SPAD from IN)>>
 
-<<utsode.spad (SPAD from IN)>>
 <<utsode.spad.dvi (DOC from IN)>>
 
 <<ANON.o (O from NRLIB)>>
@@ -37989,7 +35191,6 @@
 <<VARIABLE.NRLIB (NRLIB from MID)>>
 <<VARIABLE.spad (SPAD from IN)>>
 
-<<variable.spad (SPAD from IN)>>
 <<variable.spad.dvi (DOC from IN)>>
 
 <<DIRPCAT-.o (O from NRLIB)>>
@@ -38026,7 +35227,6 @@
 <<VECTOR2.NRLIB (NRLIB from MID)>>
 <<VECTOR2.spad (SPAD from IN)>>
 
-<<vector.spad (SPAD from IN)>>
 <<vector.spad.dvi (DOC from IN)>>
 
 <<GRIMAGE.o (O from NRLIB)>>
@@ -38037,28 +35237,24 @@
 <<VIEW2D.NRLIB (NRLIB from MID)>>
 <<VIEW2D.spad (SPAD from IN)>>
 
-<<view2D.spad (SPAD from IN)>>
 <<view2D.spad.dvi (DOC from IN)>>
 
 <<VIEW3D.o (O from NRLIB)>>
 <<VIEW3D.NRLIB (NRLIB from MID)>>
 <<VIEW3D.spad (SPAD from IN)>>
 
-<<view3D.spad (SPAD from IN)>>
 <<view3D.spad.dvi (DOC from IN)>>
 
 <<VIEWDEF.o (O from NRLIB)>>
 <<VIEWDEF.NRLIB (NRLIB from MID)>>
 <<VIEWDEF.spad (SPAD from IN)>>
 
-<<viewDef.spad (SPAD from IN)>>
 <<viewDef.spad.dvi (DOC from IN)>>
 
 <<VIEW.o (O from NRLIB)>>
 <<VIEW.NRLIB (NRLIB from MID)>>
 <<VIEW.spad (SPAD from IN)>>
 
-<<viewpack.spad (SPAD from IN)>>
 <<viewpack.spad.dvi (DOC from IN)>>
 
 <<EXIT.o (O from NRLIB)>>
@@ -38073,14 +35269,12 @@
 <<VOID.NRLIB (NRLIB from MID)>>
 <<VOID.spad (SPAD from IN)>>
 
-<<void.spad (SPAD from IN)>>
 <<void.spad.dvi (DOC from IN)>>
 
 <<WEIER.o (O from NRLIB)>>
 <<WEIER.NRLIB (NRLIB from MID)>>
 <<WEIER.spad (SPAD from IN)>>
 
-<<weier.spad (SPAD from IN)>>
 <<weier.spad.dvi (DOC from IN)>>
 
 <<OWP.o (O from NRLIB)>>
@@ -38091,7 +35285,6 @@
 <<WP.NRLIB (NRLIB from MID)>>
 <<WP.spad (SPAD from IN)>>
 
-<<wtpol.spad (SPAD from IN)>>
 <<wtpol.spad.dvi (DOC from IN)>>
 
 <<FLALG.o (O from NRLIB)>>
@@ -38132,7 +35325,6 @@
 <<XPBWPOLY.NRLIB (NRLIB from MID)>>
 <<XPBWPOLY.spad (SPAD from IN)>>
 
-<<xlpoly.spad (SPAD from IN)>>
 <<xlpoly.spad.dvi (DOC from IN)>>
 
 <<FMCAT.o (O from NRLIB)>>
@@ -38175,14 +35367,12 @@
 <<XRPOLY.NRLIB (NRLIB from MID)>>
 <<XRPOLY.spad (SPAD from IN)>>
 
-<<xpoly.spad (SPAD from IN)>>
 <<xpoly.spad.dvi (DOC from IN)>>
 
 <<YSTREAM.o (O from NRLIB)>>
 <<YSTREAM.NRLIB (NRLIB from MID)>>
 <<YSTREAM.spad (SPAD from IN)>>
 
-<<ystream.spad (SPAD from IN)>>
 <<ystream.spad.dvi (DOC from IN)>>
 
 <<FGLMICPK.o (O from NRLIB)>>
@@ -38209,7 +35399,6 @@
 <<ZDSOLVE.NRLIB (NRLIB from MID)>>
 <<ZDSOLVE.spad (SPAD from IN)>>
 
-<<zerodim.spad (SPAD from IN)>>
 <<zerodim.spad.dvi (DOC from IN)>>
 
 

--=-60OPaxFfLcp8qTKvunBC--




