aboutsummaryrefslogtreecommitdiff
path: root/src/algebra/Makefile.pamphlet
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2007-08-14 05:14:52 +0000
committerdos-reis <gdr@axiomatics.org>2007-08-14 05:14:52 +0000
commitab8cc85adde879fb963c94d15675783f2cf4b183 (patch)
treec202482327f474583b750b2c45dedfc4e4312b1d /src/algebra/Makefile.pamphlet
downloadopen-axiom-ab8cc85adde879fb963c94d15675783f2cf4b183.tar.gz
Initial population.
Diffstat (limited to 'src/algebra/Makefile.pamphlet')
-rw-r--r--src/algebra/Makefile.pamphlet2305
1 files changed, 2305 insertions, 0 deletions
diff --git a/src/algebra/Makefile.pamphlet b/src/algebra/Makefile.pamphlet
new file mode 100644
index 00000000..7e36a81e
--- /dev/null
+++ b/src/algebra/Makefile.pamphlet
@@ -0,0 +1,2305 @@
+%% Oh Emacs, this is a -*- Makefile -*-, so give me tabs.
+\documentclass{article}
+\usepackage{axiom}
+
+\title{\$SPAD/src/algebra Makefile}
+\author{Timothy Daly \and Gabriel Dos~Reis}
+
+\begin{document}
+\maketitle
+
+\begin{abstract}
+\end{abstract}
+\eject
+
+\tableofcontents
+\eject
+
+\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
+ultimate steps to add algebra are tedious but simple. Note that only
+algebra code that gets shipped with the system needs to undergo this
+process. User code can be compiled once the distributed algebra exists
+and does not need either this Makefile or this installation process.
+
+NOTE: If you add new algebra to this file you must also update
+
+\File{src/algebra/exposed.lsp.pamphlet}
+
+otherwise the new algebra won't be loaded by the interpreter when needed.
+
+Since understanding is the key to making correct changes to this file
+I'll work on explaining the details of why things need to exist.
+
+The first idea that you need to understand is the overall process
+of adding algebra code. Lets assume that you have a brand new spad
+file, called \File{foo.spad} containing a simple domain [[BAR]]. The
+steps in the process of adding this file are:
+\begin{enumerate}
+\item Find out where the algebra code lives in the lattice.
+
+You do this by
+\begin{enumerate}
+\item starting a new interpsys session
+\item collecting all the names of the algebra files BAR requires
+\item determining which layer each of the required files resides
+\item determine the highest layer (e.g. 14) that contains the required files
+\end{enumerate}
+
+\item insert the documentation into the next layer (e.g. 15)
+\item insert the [[\${OUT}/BAR.o]] file into the layer's file list
+\end{enumerate}
+
+\section{Rebuilding the algebra from scratch}
+
+Compile order is important. Here we try to define the ordered lattice
+of spad file dependencies. However this is, in reality, a graph rather
+than a lattice. In order to break cycles in this graph we explicitly
+cache a few of the intermediate generated lisp code for certain files.
+These are marked throughout (both here and in the various pamphlet
+files) with the word {\bf BOOTSTRAP}.
+
+If we take a cycle such as [[RING]] we discover that in order to
+compile the spad code we must load the compiled definition of [[RING]].
+In this case we must compile the cached lisp code before we try to
+compile the spad file.
+
+The cycle for [[SETCAT]] is longer consisting of: [[SETCAT]] needs
+{\bf SINT} needs {\bf UFD} needs {\bf GCDDOM} needs {\bf COMRING} needs
+{\bf RING} needs {\bf RNG} needs {\bf ABELGRP} needs {\bf CABMON} needs
+{\bf ABELMON} needs {\bf ABELSG} needs {\bf SETCAT}.
+
+It is highly recommended that you try to become a developer of Axiom
+and read the archived mailing lists before you decide to change a
+cached file. In the fullness of time we will rewrite the whole algebra
+structure into a proper lattice if possible. Alternatively we'll
+reimplement the compiler to handle graphs. Or deeply adopt the
+extensible domains. Whatever we do will be much discussed (and cause
+much disgust) around the campfire. If you come up with a brilliant
+plan that gets adopted we'll even inscribe your name on a log and add
+it to the fire.
+
+In the code that follows we find the categories, packages and domains
+that compile with no dependencies and call this set ``layer 0''. Next
+we find the categories, packages and domains that will compile using
+only ``layer 0'' code and call this ``layer 1''. We walk up the
+lattice in this fashion adding layers. Note that at layer 3 this
+process runs into cycles and we create the ``layer 3 bootstrap''
+stanzas before continuing upward.
+
+\section{The Algebra Lattice Layers}
+
+\subsection{Layer 0 Bootstrap}
+
+\subsubsection{Completed spad files}
+
+\begin{verbatim}
+si.spad.pamphlet (INS SINT)
+\end{verbatim}
+
+Note well that none of the algebra stanzas should include these
+files in the preconditions otherwise we have an infinite compile
+loop. These files are originally bootstrapped from lisp code
+when we build the system for the first time but they are
+forcibly recompiled at the end of the build so they reflect
+current code (just in case someone changes the spad code but
+does not re-cache the generated lisp). If you add these files
+as preconditions (note that they are all in the \File{strap/}
+directory rather than the {\bf OUT} directory like everything
+else) then the final recompile will invalidate all of the
+rest of the algebra targets which will get rebuilt again causing
+these targets to be out of date. The rest of the loop is left
+up to the student.
+
+The bootstrap process works because first we ask for the compiled
+lisp code stanzas (the \File{strap/BAR.o} files), THEN we ask for
+the final algebra code stanzas (the [[\${OUT}/BAR.o]] files). This
+is a very subtle point so think it through carefully. Notice that
+this is the only layer calling for \File{strap/} files. All other
+layers call for [[\${OUT}]] files. If you break this the world
+will no longer compile so don't change it if you don't understand it.
+
+\begin{verbatim}
+LAYER0BOOTSTRAP=${OUT}/XPR.o
+\end{verbatim}
+
+<<layer0 bootstrap>>=
+# The list of objects necessary to bootstrap the whole algebra library.
+axiom_algebra_layer_strap_objects = \
+ strap/ABELGRP.o strap/ABELGRP-.o strap/ABELMON.o strap/ABELMON-.o \
+ strap/ABELSG.o strap/ABELSG-.o strap/ALAGG.o strap/BOOLEAN.o \
+ strap/CABMON.o strap/CHAR.o strap/CLAGG.o strap/CLAGG-.o \
+ strap/COMRING.o strap/DFLOAT.o strap/DIFRING.o strap/DIFRING-.o \
+ strap/DIVRING.o strap/DIVRING-.o strap/ENTIRER.o strap/ES.o \
+ strap/ES-.o strap/EUCDOM.o strap/EUCDOM-.o strap/FFIELDC.o \
+ strap/FFIELDC-.o strap/FPS.o strap/FPS-.o strap/GCDDOM.o \
+ strap/GCDDOM-.o strap/HOAGG.o strap/HOAGG-.o strap/ILIST.o \
+ strap/INS.o strap/INS-.o strap/INT.o strap/INTDOM.o \
+ strap/INTDOM-.o strap/ISTRING.o strap/LIST.o strap/LNAGG.o \
+ strap/LNAGG-.o strap/LSAGG.o strap/LSAGG-.o strap/MONOID.o \
+ strap/MONOID-.o strap/MTSCAT.o strap/NNI.o strap/OINTDOM.o \
+ strap/ORDRING.o strap/ORDRING-.o strap/OUTFORM.o strap/PI.o \
+ strap/PRIMARR.o strap/POLYCAT.o strap/POLYCAT-.o strap/PSETCAT.o \
+ strap/PSETCAT-.o strap/QFCAT.o strap/QFCAT-.o strap/RCAGG.o \
+ strap/RCAGG-.o strap/REF.o strap/RING.o strap/RING-.o \
+ strap/RNG.o strap/RNS.o strap/RNS-.o strap/SETAGG.o \
+ strap/SETAGG-.o strap/SETCAT.o strap/SETCAT-.o strap/SINT.o \
+ strap/STAGG.o strap/STAGG-.o strap/SYMBOL.o strap/TSETCAT.o \
+ strap/TSETCAT-.o strap/UFD.o strap/UFD-.o strap/ULSCAT.o \
+ strap/UPOLYC.o strap/UPOLYC-.o strap/URAGG.o strap/URAGG-.o \
+ strap/VECTOR.o
+
+@
+<<layer0 copy>>=
+
+axiom_algebra_bootstrap = \
+ ABELGRP.o ABELGRP-.o ABELMON.o ABELMON-.o \
+ ABELSG.o ABELSG-.o ALAGG.o BOOLEAN.o \
+ CABMON.o CHAR.o CLAGG.o CLAGG-.o \
+ COMRING.o DFLOAT.o DIFRING.o DIFRING-.o \
+ DIVRING.o DIVRING-.o ENTIRER.o ES.o \
+ ES-.o EUCDOM.o EUCDOM-.o FFIELDC.o \
+ FFIELDC-.o FPS.o FPS-.o GCDDOM.o \
+ GCDDOM-.o HOAGG.o HOAGG-.o ILIST.o \
+ INS.o INS-.o INT.o INTDOM.o \
+ INTDOM-.o ISTRING.o LIST.o LNAGG.o \
+ LNAGG-.o LSAGG.o LSAGG-.o MONOID.o \
+ MONOID-.o MTSCAT.o NNI.o OINTDOM.o \
+ ORDRING.o ORDRING-.o OUTFORM.o PI.o \
+ PRIMARR.o POLYCAT.o POLYCAT-.o PSETCAT.o \
+ PSETCAT-.o QFCAT.o QFCAT-.o RCAGG.o \
+ RCAGG-.o REF.o RING.o RING-.o \
+ RNG.o RNS.o RNS-.o SETAGG.o \
+ SETAGG-.o SETCAT.o SETCAT-.o SINT.o \
+ STAGG.o STAGG-.o SYMBOL.o TSETCAT.o \
+ TSETCAT-.o UFD.o UFD-.o ULSCAT.o \
+ UPOLYC.o UPOLYC-.o URAGG.o URAGG-.o \
+ VECTOR.o
+
+axiom_algebra_bootstrap_nrlibs = \
+ $(axiom_algebra_bootstrap:.$(OBJEXT)=.NRLIB/code.$(OBJEXT))
+
+axiom_algebra_bootstrap_objects = \
+ $(addprefix $(OUT)/, $(axiom_algebra_bootstrap))
+@
+
+\subsection{Layer 0}
+
+\subsubsection{Completed spad files}
+
+\begin{verbatim}
+attreg.spad.pamphlet (ATTREG)
+dhmatrix.spad.pamphlet (DHMATRIX)
+omcat.spad.pamphlet (OM)
+print.spad.pamphlet (PRINT)
+ptranfn.spad.pamphlet (PTRANFN)
+system.spad.pamphlet (MSYSCMD)
+\end{verbatim}
+
+<<layer0>>=
+
+axiom_algebra_layer_0 = \
+ AHYP.o ATTREG.o CFCAT.o ELTAB.o \
+ KOERCE.o KONVERT.o MSYSCMD.o ODEIFTBL.o \
+ OM.o OMCONN.o OMDEV.o OUT.o \
+ PRIMCAT.o PRINT.o PTRANFN.o SPFCAT.o \
+ TYPE.o
+
+axiom_algebra_layer_0_nrlibs = \
+ $(axiom_algebra_layer_0:.$(OBJEXT)=.NRLIB/code.$(OBJEXT))
+
+axiom_algebra_layer_0_objects = \
+ $(addprefix $(OUT)/, $(axiom_algebra_layer_0))
+@
+
+\subsection{Layer 1}
+
+\subsubsection{Completed spad files}
+
+\begin{verbatim}
+ituple.spad.pamphlet (ITFUN2 ITFUN3 ITUPLE)
+mkrecord.spad.pamphlet (MKRECORD)
+pcurve.spad.pamphlet (PPCURVE PSCURVE)
+coerce.spad.pamphlet (TYPE KOERCE KONVERT RETRACT)
+\end{verbatim}
+
+<<layer1>>=
+axiom_algebra_layer_1 = \
+ ANY1.o COMBOPC.o DROPT1.o EQ2.o \
+ FORTCAT.o ITFUN2.o ITFUN3.o ITUPLE.o \
+ MKBCFUNC.o MKRECORD.o MKUCFUNC.o NONE1.o \
+ PATAB.o PLOT1.o PPCURVE.o PSCURVE.o \
+ REAL.o RESLATC.o RETRACT.o RETRACT-.o \
+ SEGBIND2.o SEGCAT.o STREAM1.o STREAM2.o \
+ STREAM3.o
+
+axiom_algebra_layer_1_nrlibs = \
+ $(axiom_algebra_layer_1:.$(OBJEXT)=.NRLIB/code.$(OBJEXT))
+
+axiom_algebra_layer_1_objects = \
+ $(addprefix $(OUT)/, $(axiom_algebra_layer_1))
+@
+
+\subsection{Layer 2}
+
+\subsubsection{Completed spad files}
+
+<<layer2>>=
+axiom_algebra_layer_2 = \
+ FMC.o FMFUN.o FORTFN.o FVC.o \
+ FVFUN.o INTRET.o SEGXCAT.o
+
+axiom_algebra_layer_2_nrlibs = \
+ $(axiom_algebra_layer_2:.$(OBJEXT)=.NRLIB/code.$(OBJEXT))
+
+axiom_algebra_layer_2_objects = \
+ $(addprefix $(OUT)/, $(axiom_algebra_layer_2))
+@
+
+\subsection{Layer 3}
+
+\subsubsection{Completed spad files}
+
+\begin{verbatim}
+grdef.spad.pamphlet (GRDEF)
+\end{verbatim}
+
+<<layer3>>=
+axiom_algebra_layer_3 = \
+ AGG.o AGG-.o BASTYPE.o BASTYPE-.o \
+ GRDEF.o LIST3.o MKFUNC.o
+
+axiom_algebra_layer_3_nrlibs = \
+ $(axiom_algebra_layer_3:.$(OBJEXT=./NRLIB/code.$(OBJEXT))
+
+axiom_algebra_layer_3_objects = \
+ $(addprefix $(OUT)/, $(axiom_algebra_layer_3))
+@
+
+\subsubsection{Completed spad files}
+
+\begin{verbatim}
+annacat.spad.pamphlet (NIPROB ODEPROB PDEPROB OPTPROB NUMINT ODECAT PDECAT
+ OPTCAT)
+color.spad.pamphlet (COLOR PALETTE)
+mappkg.spad.pamphlet (MAPHACK1 MAPHACK2 MAPHACK3 MAPPKG1 MAPPKG2 MAPPKG3)
+paramete.spad.pamphlet (PARPCURV PARPC2 PARSCURV PARSC2 PARSURF PARSU2
+suchthat.spad.pamphlet (SUCH)
+ystream.spad.pamphlet (YSTREAM)
+\end{verbatim}
+
+<<layer4>>=
+axiom_algebra_layer_4 = \
+ ANON.o COLOR.o COMM.o COMPPROP.o \
+ ELTAGG.o ELTAGG-.o ESCONT1.o EXIT.o \
+ FAMONC.o FILECAT.o FINITE.o FNCAT.o \
+ FORMULA1.o IDPC.o IEVALAB.o IEVALAB-.o \
+ INTBIT.o LMODULE.o LOGIC.o LOGIC-.o \
+ MAPHACK1.o MAPHACK2.o MAPHACK3.o MAPPKG1.o \
+ MAPPKG2.o MAPPKG3.o MONAD.o MONAD-.o \
+ NIPROB.o NONE.o NUMINT.o ODECAT.o \
+ ODEPROB.o OMENC.o ONECOMP2.o OPTCAT.o \
+ OPTPROB.o ORDSET.o ORDSET-.o PALETTE.o \
+ PARPCURV.o PARPC2.o PARSCURV.o PARSC2.o \
+ PARSURF.o PARSU2.o PATMAB.o PATRES2.o \
+ PATTERN1.o PDECAT.o PDEPROB.o REPSQ.o \
+ REPDB.o RFDIST.o RIDIST.o RMODULE.o \
+ SEXCAT.o SGROUP.o SGROUP-.o SPACEC.o \
+ SPLNODE.o STEP.o SUCH.o TEX1.o \
+ UDVO.o YSTREAM.o
+
+axiom_algebra_layer_4_nrlibs = \
+ $(axiom_algebra_layer_4:.$(OBJEXT)=.NRLIB/code.$(OBJEXT))
+
+axiom_algebra_layer_4_objects = \
+ $(addprefix $(OUT)/, $(axiom_algebra_layer_4))
+@
+
+\subsection{Layer 5}
+
+\subsubsection{Completed spad files}
+
+\begin{verbatim}
+equation1.spad.pamphlet (EVALAB IEVALAB)
+\end{verbatim}
+
+<<layer5>>=
+axiom_algebra_layer_5 = \
+ ATRIG.o ATRIG-.o BMODULE.o CACHSET.o \
+ CHARNZ.o CHARZ.o DVARCAT.o DVARCAT-.o \
+ ELEMFUN.o ELEMFUN-.o ESTOOLS2.o EVALAB.o \
+ EVALAB-.o FCOMP.o FEVALAB.o FEVALAB-.o \
+ FPATMAB.o GROUP.o GROUP-.o IDPAM.o \
+ IDPO.o INCRMAPS.o IXAGG.o IXAGG-.o \
+ KERNEL2.o LALG.o LALG-.o LINEXP.o \
+ MODMONOM.o MONADWU.o MONADWU-.o MRF2.o \
+ NARNG.o NARNG-.o NSUP2.o OASGP.o \
+ ODVAR.o OPQUERY.o ORDFIN.o ORDMON.o \
+ PATMATCH.o PERMCAT.o PDRING.o PDRING-.o \
+ SDVAR.o SUP2.o TRIGCAT.o TRIGCAT-.o \
+ ULS2.o UP2.o
+
+axiom_algebra_layer_5_nrlibs = \
+ $(axiom_algebra_layer_5:.$(OBJEXT)=.NRLIB/code.$(OBJEXT))
+
+axiom_algebra_layer_5_objects = \
+ $(addprefix $(OUT)/, $(axiom_algebra_layer_5))
+@
+
+\subsection{Layer6}
+
+\subsubsection{Completed spad files}
+
+\begin{verbatim}
+fmod.spad.pamphlet (ZMOD)
+sortpak.spad.pamphlet (SORTPAK)
+\end{verbatim}
+
+<<layer6>>=
+axiom_algebra_layer_6 = \
+ AUTOMOR.o BGAGG.o BGAGG-.o BRAGG.o \
+ BRAGG-.o CARTEN2.o CHARPOL.o COMPLEX2.o \
+ DIFEXT.o DIFEXT-.o DLAGG.o ELAGG.o \
+ ELAGG-.o ES1.o ES2.o GRMOD.o \
+ GRMOD-.o HYPCAT.o HYPCAT-.o MKCHSET.o \
+ MODRING.o MODULE.o MODULE-.o NASRING.o \
+ NASRING-.o OAMON.o SORTPAK.o ZMOD.o
+
+axiom_algebra_layer_6_nrlibs = \
+ $(axiom_algebra_layer_6:.$(OBJEXT)=.NRLIB/code.$(OBJEXT))
+
+axiom_algebra_layer_6_objects = \
+ $(addprefix $(OUT)/, $(axiom_algebra_layer_6))
+@
+
+\subsection{Layer7}
+
+\subsubsection{Completed spad files}
+
+\begin{verbatim}
+\end{verbatim}
+
+<<layer7>>=
+axiom_algebra_layer_7 = \
+ ALGEBRA.o ALGEBRA-.o BTCAT.o BTCAT-.o \
+ FMCAT.o IDPOAM.o IFAMON.o GRALG.o \
+ GRALG-.o OCAMON.o PRQAGG.o QUAGG.o \
+ SKAGG.o
+
+axiom_algebra_layer_7_nrlibs = \
+ $(axiom_algebra_layer_7:.$(OBJEXT)=.NRLIB/code.$(OBJEXT))
+
+axiom_algebra_layer_7_objects = \
+ $(addprefix $(OUT)/, $(axiom_algebra_layer_7))
+@
+
+\subsection{Layer8}
+
+\subsubsection{Completed spad files}
+
+\begin{verbatim}
+card.spad.pamphlet (CARD)
+fortcat.spad.pamphlet (FORTFN FMC FORTCAT FVC FMTC FMFUN FVFUN)
+\end{verbatim}
+
+<<layer8>>=
+axiom_algebra_layer_8 = \
+ BSTREE.o BTOURN.o CARD.o DRAWHACK.o \
+ DQAGG.o FACTFUNC.o FMTC.o FR2.o \
+ FRAC2.o FRUTIL.o ITAYLOR.o MLO.o \
+ NAALG.o NAALG-.o OAGROUP.o OAMONS.o \
+ OP.o ORDCOMP2.o PID.o RANDSRC.o \
+ UNISEG2.o XALG.o
+
+axiom_algebra_layer_8_nrlibs = \
+ $(axiom_algebra_layer_8:.$(OBJEXT)=.NRLIB/code.$(OBJEXT))
+
+axiom_algebra_layer_8_objects = \
+ $(addprefix $(OUT)/, $(axiom_algebra_layer_8))
+@
+
+\subsection{Layer9}
+
+\subsubsection{Completed spad files}
+
+\begin{verbatim}
+degred.spad.pamphlet (DEGRED)
+indexedp.spad.pamphlet (IDPC IDPO IDPAM IDPOAM IDPOAMS IDPAG)
+product.spad.pamphlet (PRODUCT)
+retract.spad.pamphlet (RETRACT FRETRCT RATRET)
+sf.spad.pamphlet (REAL RADCAT RNS FPS DFLOAT)
+\end{verbatim}
+
+<<layer9>>=
+axiom_algebra_layer_9 = \
+ AMR.o AMR-.o DEGRED.o DLP.o \
+ EAB.o ESTOOLS1.o FAGROUP.o FAMONOID.o \
+ FIELD.o FIELD-.o FLAGG.o FLAGG-.o \
+ FLINEXP.o FLINEXP-.o FRETRCT.o FRETRCT-.o \
+ FSERIES.o FT.o IDPAG.o IDPOAMS.o \
+ INFINITY.o LA.o OMLO.o ORTHPOL.o \
+ PRODUCT.o PADICCT.o PMPRED.o PMASS.o \
+ PTFUNC2.o RADCAT.o RADCAT-.o RATRET.o \
+ RADUTIL.o UPXS2.o XFALG.o ZLINDEP.o
+
+axiom_algebra_layer_9_nrlibs = \
+ $(axiom_algebra_layer_9:.$(OBJEXT)=.NRLIB/code.$(OBJEXT))
+
+axiom_algebra_layer_9_objects = \
+ $(addprefix $(OUT)/, $(axiom_algebra_layer_9))
+@
+
+\subsection{Layer10}
+
+\subsubsection{Completed spad files}
+
+\begin{verbatim}
+complet.spad.pamphlet (ORDCOMP ORDCOMP2 ONECOMP ONECOMP2 INFINITY)
+cra.spad.pamphlet (CRAPACK)
+defaults.spad.pamphlet (REPSQ REPDB FLASORT)
+drawpak.spad.pamphlet (DRAWCX)
+free.spad.pamphlet (LMOPS FMONOID FGROUP FAMONC IFAMON FAMONOID FAGROUP)
+fourier.spad.pamphlet (FCOMP FSERIES)
+functions.spad.pamphlet (BFUNCT)
+mesh.spad.pamphlet (MESH)
+moebius.spad.pamphlet (MOEBIUS)
+mring.spad.pamphlet (MRING MRF2)
+opalg.spad.pamphlet (MODOP OP)
+partperm.spad.pamphlet (PARTPERM)
+pgrobner.spad.pamphlet (PGROEB)
+plottool.spad.pamphlet (PLOTTOOL)
+setorder.spad.pamphlet (UDPO UDVO)
+sttaylor.spad.pamphlet (STTAYLOR)
+tableau.spad.pamphlet (TABLBUMP TABLEAU)
+viewpack.spad.pamphlet (VIEW)
+\end{verbatim}
+
+<<layer10>>=
+axiom_algebra_layer_10 = \
+ A1AGG.o A1AGG-.o ARR2CAT.o ARR2CAT-.o \
+ ASP34.o BBTREE.o BFUNCT.o BPADIC.o \
+ BTREE.o CRAPACK.o DEQUEUE.o DLIST.o \
+ DRAWCX.o D01GBFA.o D02EJFA.o D03FAFA.o \
+ DRAWPT.o FAMR.o FAMR-.o FLASORT.o \
+ FLAGG2.o FGROUP.o FM.o FM1.o \
+ FPC.o FPC-.o FMONOID.o INDE.o \
+ IPADIC.o IROOT.o IR2.o LEXP.o \
+ LIECAT.o LIECAT-.o LIST2.o LIST2MAP.o \
+ LMOPS.o LZSTAGG.o LZSTAGG-.o MAGMA.o \
+ MESH.o MOEBIUS.o MODFIELD.o MODOP.o \
+ MRING.o MTHING.o NCNTFRAC.o NCODIV.o \
+ NUMTUBE.o ODR.o OFMONOID.o ONECOMP.o \
+ ORDCOMP.o OREPCAT.o OREPCAT-.o OWP.o \
+ PADIC.o PATTERN2.o PATLRES.o PARTPERM.o \
+ PBWLB.o PENDTREE.o PGE.o PGROEB.o \
+ PINTERP.o PLOTTOOL.o PFR.o PMDOWN.o \
+ PRTITION.o PMINS.o PMLSAGG.o PMTOOLS.o \
+ PSCAT.o PSCAT-.o QFORM.o QUEUE.o \
+ SCACHE.o SEG.o SEG2.o SEXOF.o \
+ STACK.o STTAYLOR.o TABLBUMP.o TABLEAU.o \
+ TOPSP.o TRANFUN.o TRANFUN-.o TUBE.o \
+ UDPO.o UNISEG.o VIEW.o VSPACE.o \
+ VSPACE-.o XPOLYC.o XPR.o
+
+axiom_algebra_layer_10_nrlibs = \
+ $(axiom_algebra_layer_10:.$(OBJEXT)=.NRLIB/code.$(OBJEXT))
+
+axiom_algebra_layer_10_objects = \
+ $(addprefix $(OUT)/, $(axiom_algebra_layer_10))
+@
+
+\subsection{Layer11}
+
+\subsubsection{Completed spad files}
+
+\begin{verbatim}
+array1.spad.pamphlet (PRIMARR PRIMARR2 TUPLE IFARRAY FARRAY IARRAY1 ARRAY1
+ ARRAY12)
+bags.spad.pamphlet (STACK ASTACK QUEUE DEQUEUE HEAP)
+combinat.spad.pamphlet (COMBINAT)
+ffx.spad.pamphlet (IRREDFFX)
+galutil.spad.pamphlet (GALUTIL)
+matstor.spad.pamphlet (MATSTOR)
+ore.spad.pamphlet (OREPCAT APPLYORE AUTOMOR OREPCTO ORESUP OREUP)
+plot3d.spad.pamphlet (PLOT3D)
+prtition.spad.pamphlet (PRTITION SYMPOLY)
+stream.spad.pamphlet (LZSTAGG CSTTOOLS STREAM STREAM1 STREAM2 STREAM3)
+trigcat.spad.pamphlet (ELEMFUN AHYP ATRIG HYPCAT TRANFUN TRIGCAT PRIMCAT
+ LFCAT CFCAT SPFCAT)
+xlpoly.spad.pamphlet (MAGMA LWORD LIECAT FLALG XEXPPKG LPOLY PBWLB XPBWPOLY
+ LEXP)
+xpoly.spad.pamphlet (OFMONOID FMCAT FM1 XALG XFALG XPOLYC XPR XDPOLY XRPOLY
+ XPOLY)
+\end{verbatim}
+
+<<layer11>>=
+axiom_algebra_layer_11 = \
+ APPLYORE.o ARRAY1.o ARRAY12.o ARRAY2.o \
+ ASTACK.o BTAGG.o BTAGG-.o COMBINAT.o \
+ CSTTOOLS.o D01FCFA.o E04MBFA.o FARRAY.o \
+ FLALG.o GALUTIL.o HEAP.o IARRAY1.o \
+ IARRAY2.o IFARRAY.o INTCAT.o INTHEORY.o \
+ IRREDFFX.o LFCAT.o LODOCAT.o LODOCAT-.o \
+ LWORD.o MATCAT.o MATCAT-.o MATSTOR.o \
+ ORESUP.o OREPCTO.o OREUP.o PLOT3D.o \
+ PR.o PREASSOC.o PRIMARR2.o REDORDER.o \
+ SRAGG.o SRAGG-.o STREAM.o SYMPOLY.o \
+ TS.o TUPLE.o UPSCAT.o UPSCAT-.o \
+ VECTCAT.o VECTCAT-.o XDPOLY.o XEXPPKG.o \
+ XF.o XF-.o XPBWPOLY.o XPOLY.o \
+ XRPOLY.o
+
+axiom_algebra_layer_11_nrlibs = \
+ $(axiom_algebra_layer_11:.$(OBJEXT)=.NRLIB/code.$(OBJEXT))
+
+axiom_algebra_layer_11_objects = \
+ $(addprefix $(OUT)/, $(axiom_algebra_layer_11))
+@
+
+\subsection{Layer12}
+
+\subsubsection{Completed spad files}
+
+\begin{verbatim}
+\end{verbatim}
+
+<<layer12>>=
+axiom_algebra_layer_12 = \
+ BITS.o DIRPROD2.o IMATRIX.o IVECTOR.o \
+ LPOLY.o LSMP.o LSMP1.o MATCAT2.o \
+ PTCAT.o STRICAT.o TRIMAT.o
+
+axiom_algebra_layer_12_nrlibs = \
+ $(axiom_algebra_layer_12:.$(OBJEXT)=.NRLIB/code.$(OBJEXT))
+
+axiom_algebra_layer_12_objects = \
+ $(addprefix $(OUT)/, $(axiom_algebra_layer_12))
+@
+
+\subsection{Layer13}
+
+\subsubsection{Completed spad files}
+
+\begin{verbatim}
+carten.spad.pamphlet (GRMOD GRALG CARTEN CARTEN2)
+catdef.spad.pamphlet (ABELGRP ABELMON ABELSG ALGEBRA BASTYPE BMODULE CABMON
+ CHARNZ CHARZ COMRING DIFRING DIFEXT DIVRING ENTIRER
+ EUCDOM FIELD FINITE FLINEXP GCDDOM GROUP INTDOM LMODULE
+ LINEXP MODULE MONOID OAGROUP OAMON OAMONS OASGP OCAMON
+ ORDFIN OINTDOM ORDMON ORDRING ORDSET PDRING PFECAT PID
+ RMODULE RING RNG SGROUP SETCAT STEP UFD VSPACE)
+clifford.spad.pamphlet (QFORM CLIF)
+clip.spad.pamphlet (CLIP)
+coordsys.spad.pamphlet (COORDSYS)
+dhmatrix.spad.pamphlet (DHMATRIX)
+d02routine.spad.pamphlet (D02BBFA D02BHFA D02CJFA D02EJFA)
+ffpoly2.spad.pamphlet (FFPOLY2)
+irsn.spad.pamphlet (IRSN)
+numode.spad.pamphlet (NUMODE)
+numquad.spad.pamphlet (NUMQUAD)
+perman.spad.pamphlet (GRAY PERMAN)
+pseudolin.spad.pamphlet (PSEUDLIN)
+rep2.spad.pamphlet (REP2)
+sex.spad.pamphlet (SEXCAT SEXOF SEX)
+solvedio.spad.pamphlet (DIOSP)
+\end{verbatim}
+
+<<layer13>>=
+axiom_algebra_layer_13 = \
+ ASSOCEQ.o CARTEN.o CLIF.o CLIP.o \
+ COORDSYS.o DBASE.o DHMATRIX.o DIOSP.o \
+ DIRPCAT.o DIRPCAT-.o D02BBFA.o D02BHFA.o \
+ D02CJFA.o FAXF.o FAXF-.o FFPOLY2.o \
+ FNLA.o GRAY.o HB.o IRSN.o \
+ MCALCFN.o MHROWRED.o NUMODE.o NUMQUAD.o \
+ ODESYS.o ODETOOLS.o ORDFUNS.o PERMAN.o \
+ PFECAT.o PFECAT-.o POINT.o PSEUDLIN.o \
+ PTPACK.o REP2.o SETMN.o SEX.o \
+ STRING.o SYMFUNC.o VECTOR2.o
+
+axiom_algebra_layer_13_nrlibs = \
+ $(axiom_algebra_layer_13:.$(OBJEXT)=.NRLIB/code.$(OBJEXT))
+
+axiom_algebra_layer_13_objects = \
+ $(addprefix $(OUT)/, $(axiom_algebra_layer_13))
+@
+
+\subsection{Layer14}
+
+\subsubsection{Completed spad files}
+
+\begin{verbatim}
+allfact.spad.pamphlet (MRATFAC MPRFF MPCPF GENMFACT RFFACTOR SUPFRACF)
+array2.spad.pamphlet (ARR2CAT IIARRAY2 IARRAY2 ARRAY2)
+bezout.spad.pamphlet (BEZOUT)
+boolean.spad.pamphlet (REF LOGIC BOOLEAN IBITS BITS)
+brill.spad.pamphlet (BRILL)
+cden.spad.pamphlet (ICDEN CDEN UPCDEN MCDEN)
+contfrac.spad.pamphlet (CONTFRAC NCNTFRAC)
+cycles.spad.pamphlet (CYCLES EVALCYC)
+cyclotom.spad.pamphlet (CYCLOTOM)
+ddfact.spad.pamphlet (DDFACT)
+equation2.spad.pamphlet (EQ EQ2 FEVALAB)
+error.spad.pamphlet (ERROR)
+facutil.spad.pamphlet (FACUTIL PUSHVAR)
+ffcat.spad.pamphlet (FPC XF FAXF DLP FFIELDC FFSLPE)
+fff.spad.pamphlet (FFF)
+ffhom.spad.pamphlet (FFHOM)
+ffpoly.spad.pamphlet (FFPOLY)
+fname.spad.pamphlet (FNCAT FNAME)
+formula.spad.pamphlet (FORMULA FORMULA1)
+fraction.spad.pamphlet (LO LA QFCAT QFCAT2 FRAC LPEFRAC FRAC2)
+galfactu.spad.pamphlet (GALFACTU)
+galpolyu.spad.pamphlet (GALPOLYU)
+gb.spad.pamphlet (GB)
+gbeuclid.spad.pamphlet (GBEUCLID)
+gbintern.spad.pamphlet (GBINTERN)
+gdirprod.spad.pamphlet (ORDFUNS ODP HDP SHDP)
+geneez.spad.pamphlet (GENEEZ)
+ghensel.spad.pamphlet (GHENSEL)
+gpgcd.spad.pamphlet (GENPGCD)
+gpol.spad.pamphlet (LAUPOL)
+groebf.spad.pamphlet (GBF)
+groebsol.spad.pamphlet (GROEBSOL)
+intrf.spad.pamphlet (SUBRESP MONOTOOL INTHERTR INTTR INTRAT INTRF)
+idecomp.spad.pamphlet (IDECOMP)
+leadcdet.spad.pamphlet (LEADCDET)
+lindep.spad.pamphlet (LINDEP ZLINDEP)
+lingrob.spad.pamphlet (LGROBP)
+listgcd.spad.pamphlet (HEUGCD)
+matfuns.spad.pamphlet (IMATLIN MATCAT2 RMCAT2 IMATQF MATLIN)
+mfinfact.spad.pamphlet (MFINFACT)
+mlift.spad.pamphlet (MLIST)
+moddfact.spad.pamphlet (MDDFACT)
+modmon.spad.pamphlet (MODMON)
+modring.spad.pamphlet (MODRING EMR MODFIELD)
+mts.spad.pamphlet (SMTS TS)
+multsqfr.spad.pamphlet (MULTSQFR)
+newpoint.spad.pamphlet (PTCAT POINT COMPPROP SUBSPACE PTPACK PTFUNC2)
+numtheor.spad.pamphlet (INTHEORY PNTHEORY)
+npcoef.spad.pamphlet (NPCOEF)
+omdev.spad.pamphlet (OMENC OMDEV OMCONN OMPKG)
+omserver.spad.pamphlet (OMSERVER)
+padic.spad.pamphlet (PADICCT IPADIC PADIC BPADIC PADICRC PADICRAT BPADICRT)
+pdecomp.spad.pamphlet (PCOMP PDECOMP)
+pfbr.spad.pamphlet (PFBRU PFBR)
+pfr.spad.pamphlet (PFR PFRPAC)
+pgcd.spad.pamphlet (PGCD)
+pinterp.spad.pamphlet (PINTERPA PINTERP)
+pleqn.spad.pamphlet (PLEQN)
+poltopol.spad.pamphlet (MPC2 MPC3 POLTOPOL)
+poly.spad.pamphlet (FM PR SUP SUP2 UP UP2 POLY2UP UPSQFREE PSQFR UPMP)
+polycat.spad.pamphlet (AMR FAMR POLYCAT POLYLIFT UPOLYC UPOLYC2 COMMUPC)
+prs.spad.pamphlet (PRS)
+radix.spad.pamphlet (RADIX BINARY DECIMAL HEXADEC RADUTIL)
+ratfact.spad.pamphlet (RATFACT)
+rderf.spad.pamphlet (RDETR)
+realzero.spad.pamphlet (REAL0)
+real0q.spad.pamphlet (REAL0Q)
+resring.spad.pamphlet (RESRING)
+rf.spad.pamphlet (POLYCATQ RF)
+solvefor.spad.pamphlet (SOLVEFOR)
+solvelin.spad.pamphlet (LSMP LSMP1 LSPP)
+smith.spad.pamphlet (SMITH)
+sttf.spad.pamphlet (STTF STTFNC)
+sturm.spad.pamphlet (SHP)
+sum.spad.pamphlet (ISUMP GOSPER SUMRF)
+tex.spad.pamphlet (TEX)
+tree.spad.pamphlet (TREE BTCAT BTREE BSTREE BTOURN BBTREE PENDTREE)
+twofact.spad.pamphlet (NORMRETR TWOFACT)
+unifact.spad.pamphlet (UNIFACT)
+updecomp.spad.pamphlet (UPDECOMP)
+updivp.spad.pamphlet (UPDIVP)
+viewDef.spad.pamphlet (VIEWDEF)
+vector.spad.pamphlet (VECTCAT IVECTOR VECTOR VECTOR2 DIRPCAT DIRPROD DIRPROD2)
+view2D.spad.pamphlet (GRIMAGE VIEW2D)
+void.spad.pamphlet (VOID EXIT)
+weier.spad.pamphlet (WEIER)
+wtpol.spad.pamphlet (WP OWP)
+\end{verbatim}
+
+<<layer14>>=
+axiom_algebra_layer_14 = \
+ ASP1.o ASP10.o ASP24.o ASP4.o \
+ ASP50.o ASP6.o ASP73.o BALFACT.o \
+ BEZOUT.o BINARY.o BINFILE.o BOUNDZRO.o \
+ BPADICRT.o BRILL.o CDEN.o CHVAR.o \
+ COMMUPC.o CONTFRAC.o CVMP.o CYCLOTOM.o \
+ CYCLES.o DDFACT.o DECIMAL.o DIOPS.o \
+ DIOPS-.o DIRPROD.o DISPLAY.o DMP.o \
+ DPMO.o DPOLCAT.o DPOLCAT-.o D01AJFA.o \
+ D01AKFA.o D01ALFA.o D01AMFA.o D01APFA.o \
+ D01AQFA.o EMR.o EQ.o ERROR.o \
+ EVALCYC.o E04DGFA.o E04FDFA.o E04GCFA.o \
+ E04JAFA.o FACUTIL.o FF.o FFCG.o \
+ FFCGX.o FFHOM.o FFNB.o FFNBX.o \
+ FFPOLY.o FFX.o FFSLPE.o FGLMICPK.o \
+ FILE.o FINAALG.o FINAALG-.o FINRALG.o \
+ FINRALG-.o FFF.o FLOATRP.o FNAME.o \
+ FOP.o FORMULA.o FORT.o FRAC.o \
+ FTEM.o GENEEZ.o GENMFACT.o GENPGCD.o \
+ GALFACTU.o GALPOLYU.o GB.o GBEUCLID.o \
+ GBF.o GBINTERN.o GHENSEL.o GMODPOL.o \
+ GOSPER.o GRIMAGE.o GROEBSOL.o HDMP.o \
+ HDP.o HEXADEC.o HEUGCD.o IBPTOOLS.o \
+ IFF.o IBITS.o ICARD.o ICDEN.o \
+ IDECOMP.o IIARRAY2.o IMATLIN.o IMATQF.o \
+ INMODGCD.o INNMFACT.o INPSIGN.o INTHERTR.o \
+ INTRAT.o INTRF.o INTSLPE.o INTTR.o \
+ ISUMP.o LAUPOL.o LEADCDET.o LGROBP.o \
+ LIMITRF.o LINDEP.o LO.o LPEFRAC.o \
+ LSPP.o MATLIN.o MCDEN.o MDDFACT.o \
+ MFINFACT.o MFLOAT.o MINT.o MLIFT.o \
+ MMAP.o MODMON.o MONOTOOL.o MPCPF.o \
+ MPC2.o MPC3.o MPOLY.o MPRFF.o \
+ MRATFAC.o MULTSQFR.o NORMRETR.o NPCOEF.o \
+ NSUP.o NTPOLFN.o ODP.o ODEPRIM.o \
+ ODEPRRIC.o OMPKG.o OMSERVER.o PADEPAC.o \
+ PADICRAT.o PADICRC.o PCOMP.o PDECOMP.o \
+ PF.o PFBR.o PFBRU.o PFOTOOLS.o \
+ PFRPAC.o PGCD.o PINTERPA.o PLEQN.o \
+ PMPLCAT.o PMQFCAT.o PNTHEORY.o POLUTIL.o \
+ POLTOPOL.o POLYCATQ.o POLYLIFT.o POLYROOT.o \
+ POLY2.o POLY2UP.o PRS.o PSQFR.o \
+ PUSHVAR.o QALGSET.o QFCAT2.o RADIX.o \
+ RATFACT.o RCFIELD.o RCFIELD-.o RDETR.o \
+ RDETRS.o REAL0.o REAL0Q.o REALSOLV.o \
+ RESRING.o RETSOL.o RF.o RFFACTOR.o \
+ RMATCAT.o RMATCAT-.o RRCC.o RRCC-.o \
+ SCPKG.o SHDP.o SHP.o SIGNRF.o \
+ SMITH.o SMP.o SMTS.o SOLVEFOR.o \
+ SPLTREE.o STINPROD.o STTFNC.o SUBRESP.o \
+ SUMRF.o SUP.o SUPFRACF.o TANEXP.o \
+ TEMUTL.o TEX.o TEXTFILE.o TREE.o \
+ TWOFACT.o UNIFACT.o UP.o UPCDEN.o \
+ UPDECOMP.o UPDIVP.o UPMP.o UPOLYC2.o \
+ UPXSCAT.o UPSQFREE.o VIEWDEF.o VIEW2D.o \
+ VOID.o WEIER.o WP.o
+
+axiom_algebra_layer_14_nrlibs = \
+ $(axiom_algebra_layer_14:.$(OBJEXT)=.NRLIB/code.$(OBJEXT))
+
+axiom_algebra_layer_14_objects = \
+ $(addprefix $(OUT)/, $(axiom_algebra_layer_14))
+@
+
+\subsection{Layer15}
+
+\subsubsection{Completed spad files}
+
+\begin{verbatim}
+dpolcat.spad.pamphlet (DVARCAT ODVAR SDVAR DPOLCAT DSMP ODPOL SDPOL)
+matcat.spad.pamphlet (MATCAT RMATCAT SMATCAT)
+plot.spad.pamphlet (PLOT PLOT1)
+\end{verbatim}
+
+<<layer15>>=
+axiom_algebra_layer_15 = \
+ DIAGG.o DIAGG-.o DSMP.o EXPUPXS.o \
+ FRAMALG.o FRAMALG-.o MDAGG.o ODPOL.o \
+ PLOT.o RMCAT2.o ROIRC.o SDPOL.o \
+ SMATCAT.o SMATCAT-.o TUBETOOL.o UPXSCCA.o \
+ UPXSCCA-.o
+
+axiom_algebra_layer_15_nrlibis = \
+ $(axiom_algebra_layer_15:.$(OBJEXT)=.NRLIBS/code.$(OBJEXT))
+
+axiom_algebra_layer_15_objects = \
+ $(addprefix $(OUT)/, $(axiom_algebra_layer_15))
+@
+
+\subsection{Layer16}
+
+\subsubsection{Completed spad files}
+
+\begin{verbatim}
+efupxs.spad.pamphlet (EFUPXS)
+lodop.spad.pamphlet (MLO OMLO NCODIV ODR DPMO DPMM)
+space.spad.pamphlet (SPACEC SPACE3 TOPSP)
+\end{verbatim}
+
+<<layer16>>=
+axiom_algebra_layer_16 = \
+ DPMM.o EFUPXS.o FFINTBAS.o FRIDEAL.o \
+ FRIDEAL2.o FRMOD.o FSAGG.o FSAGG-.o \
+ IBATOOL.o INTFACT.o KDAGG.o KDAGG-.o \
+ MSETAGG.o MONOGEN.o MONOGEN-.o NFINTBAS.o \
+ SPACE3.o
+
+axiom_algebra_layer_16_nrlibs = \
+ $(axiom_algebra_layer_16:.$(OBJEXT)=.NRLIB/code.$(OBJEXT))
+
+axiom_algebra_layer_16_objects = \
+ $(addprefix $(OUT)/, $(axiom_algebra_layer_16))
+@
+
+\subsection{Layer17}
+
+\subsubsection{Completed spad files}
+
+\begin{verbatim}
+algext.spad.pamphlet (SAE)
+aggcat.spad.pamphlet (AGG HOAGG CLAGG BGAGG SKAGG QUAGG DQAGG PRQAGG DIOPS
+ DIAGG MDAGG SETAGG FSAGG MSETAGG OMSAGG KDAGG ELTAB
+ ELTAGG ISAGG TBAGG RCAGG BRAGG DLAGG URAGG STAGG LNAGG
+ FLAGG A1AGG ELAGG LSAGG ALAGG SRAGG BTAGG ITAGG)
+aggcat2.spad.pamphlet (FLAGG2 FSAGG2)
+galfact.spad.pamphlet (GALFACT)
+intfact.spad.pamphlet (PRIMES IROOT INTFACT)
+padiclib.spad.pamphlet (IBPTOOLS IBACHIN PWFFINTB)
+perm.spad.pamphlet (PERMCAT PERM)
+permgrps.spad.pamphlet (PERMGRP PGE)
+random.spad.pamphlet (RANDSRC RDIST INTBIT RIDIST RFDIST)
+sgcf.spad.pamphlet (SGCF)
+string.spad.pamphlet (CHAR CCLASS ISTRING STRING STRICAT)
+view3D.spad.pamphlet (VIEW3D)
+\end{verbatim}
+
+<<layer17>>=
+axiom_algebra_layer_17 = \
+ CCLASS.o FSAGG2.o GALFACT.o IALGFACT.o \
+ IBACHIN.o NORMMA.o ODERED.o OMSAGG.o \
+ PERM.o PERMGRP.o PRIMES.o PWFFINTB.o \
+ RDIST.o SAE.o SAEFACT.o SAERFFC.o \
+ SGCF.o TBAGG.o TBAGG-.o VIEW3D.o
+
+axiom_algebra_layer_17_nrlibs = \
+ $(axiom_algebra_layer_17:.$(OBJEXT)=.NRLIB/code.$(OBJEXT))
+
+axiom_algebra_layer_17_objects = \
+ $(addprefix $(OUT)/, $(axiom_algebra_layer_17))
+@
+
+\subsection{Layer18}
+
+\subsubsection{Completed spad files}
+
+\begin{verbatim}
+d01Package.spad.pamphlet (INTPACK)
+list.spad.pamphlet (ILIST LIST LIST2 LIST3 LIST2MAP ALIST)
+pf.spad.pamphlet (IPF PF)
+table.spad.pamphlet (HASHTBL INTABL TABLE EQTBL STRTBL GSTBL STBL)
+\end{verbatim}
+
+<<layer18>>=
+axiom_algebra_layer_18 = \
+ ALIST.o EQTBL.o GSTBL.o HASHTBL.o \
+ INTABL.o INTFTBL.o INTPACK.o IPF.o \
+ KAFILE.o PATRES.o STBL.o STRTBL.o \
+ TABLE.o TBCMPPK.o
+
+axiom_algebra_layer_18_nrlibs = \
+ $(axiom_algebra_layer_18:.$(OBJEXT)=.NRLIB/code.$(OBJEXT))
+
+axiom_algebra_layer_18_objects = \
+ $(addprefix $(OUT)/, $(axiom_algebra_layer_18))
+@
+
+\subsection{Layer19}
+
+\subsubsection{Completed spad files}
+
+\begin{verbatim}
+acplot.spad.pamphlet (REALSOLV ACPLOT)
+alql.spad.pamphlet (DLIST ICARD DBASE QEQUAT MTHING OPQUERY)
+any.spad.pamphlet (NONE NONE1 ANY ANY1)
+c02.spad.pamphlet (NAGC02)
+c05.spad.pamphlet (NAGC05)
+c06.spad.pamphlet (NAGC06)
+d01routine.spad.pamphlet (D01AJFA D01AKFA D01AMFA D01APFA D01AQFA D01ALFA
+ D01ANFA D01ASFA D01GBFA D01FCFA)
+d02Package.spad.pamphlet (ODEPACK)
+d03agents.spad.pamphlet (D03AGNT)
+d03Package.spad.pamphlet (PDEPACK)
+drawopt.spad.pamphlet (DROPT DROPT1 DROPT0)
+eigen.spad.pamphlet (EP CHARPOL)
+e01.spad.pamphlet (NAGE01)
+e02.spad.pamphlet (NAGE02)
+e04.spad.pamphlet (NAGE04)
+e04agents.spad.pamphlet (E04AGNT)
+e04Package.spad.pamphlet (OPTPACK)
+ffcg.spad.pamphlet (FFCGP FFCGX FFCG)
+ffp.spad.pamphlet (FFP FFX IFF FF)
+files.spad.pamphlet (FILECAT FILE TEXTFILE BINFILE KAFILE LIB)
+float.spad.pamphlet (FLOAT)
+fnla.spad.pamphlet (OSI COMM HB FNLA)
+fortpak.spad.pamphlet (FCPAK1 NAGSP FORT FOP TEMUTL MCALCFN)
+forttyp.spad.pamphlet (FST FT SYMTAB SYMS)
+fparfrac.spad.pamphlet (FPARFRAC)
+fr.spad.pamphlet (FR FRUTIL FR2)
+f07.spad.pamphlet (NAGF07)
+gdpoly.spad.pamphlet (GDMP DMP HDMP)
+ideal.spad.pamphlet (IDEAL)
+intaux.spad.pamphlet (IR IR2)
+intclos.spad.pamphlet (TRIMAT IBATOOL FFINTBAS WFFINTBS NFINTBAS)
+integer.spad.pamphlet (INTSLPE INT NNI PI ROMAN)
+kl.spad.pamphlet (CACHSET SCACHE MKCHSET KERNEL KERNEL2)
+lmdict.spad.pamphlet (LMDICT)
+matrix.spad.pamphlet (IMATRIX MATRIX RMATRIX SQMATRIX)
+misc.spad.pamphlet (SAOS)
+mkfunc.spad.pamphlet (INFORM INFORM1 MKFUNC MKUCFUNC MKBCFUNC MKFLCFN)
+modgcd.spad.pamphlet (INMODGCD)
+mset.spad.pamphlet (MSET)
+multpoly.spad.pamphlet (POLY POLY2 MPOLY SMP INDE)
+naalgc.spad.pamphlet (MONAD MONADWU NARNG NASRING NAALG FINAALG FRNAALG)
+newdata.spad.pamphlet (IPRNTPK TBCMPPK SPLNODE SPLTREE)
+omerror.spad.pamphlet (OMERRK OMERR)
+op.spad.pamphlet (BOP BOP1 COMMONOP)
+out.spad.pamphlet (OUT SPECOUT DISPLAY)
+outform.spad.pamphlet (NUMFMT OUTFORM)
+patmatch1.spad.pamphlet (PATRES PATRES2 PATLRES PATMAB FPATMAB PMSYM PMKERNEL
+ PMDOWN PMTOOLS PMLSAGG)
+pattern.spad.pamphlet (PATTERN PATTERN1 PATTERN2 PATAB)
+pscat.spad.pamphlet (PSCAT UPSCAT UTSCAT ULSCAT UPXSCAT MTSCAT)
+qalgset.spad.pamphlet (QALGSET QALGSET2)
+reclos.spad.pamphlet (POLUTIL RRCC RCFIELD ROIRC RECLOS)
+rep1.spad.pamphlet (REP1)
+routines.spad.pamphlet (ROUTINE ATTRBUT)
+s.spad.pamphlet (NAGS)
+seg.spad.pamphlet (SEGCAT SEGXCAT SEG SEG2 SEGBIND SETBIND2 UNISEG UNISEG2
+ INCRMAPS)
+sets.spad.pamphlet (SET)
+sups.spad.pamphlet (ISUPS)
+syssolp.spad.pamphlet (SYSSOLP)
+variable.spad.pamphlet (OVAR VARIABLE RULECOLD FUNCTION ANON)
+\end{verbatim}
+
+<<layer19>>=
+axiom_algebra_layer_19 = \
+ ACF.o ACF-.o ACPLOT.o ANTISYM.o \
+ ANY.o ASP12.o ASP27.o ASP28.o \
+ ASP33.o ASP49.o ASP55.o ASP7.o \
+ ASP78.o ASP8.o ASP9.o ATTRBUT.o \
+ BOP.o BOP1.o COMMONOP.o COMPCAT.o \
+ COMPCAT-.o DRAW.o DRAWCFUN.o DROPT.o \
+ DROPT0.o D01ANFA.o D01ASFA.o D03AGNT.o \
+ EP.o E04AGNT.o FCPAK1.o FEXPR.o \
+ FFCAT.o FFCAT-.o FFCGP.o FFNBP.o \
+ FFP.o FLOAT.o FPARFRAC.o FR.o \
+ FRNAALG.o FRNAALG-.o FS.o FS-.o \
+ FST.o FUNCTION.o GDMP.o HACKPI.o \
+ IDEAL.o INFORM.o INFORM1.o IPRNTPK.o \
+ IR.o ISUPS.o KERNEL.o LIB.o \
+ LMDICT.o LODOOPS.o MATRIX.o MKFLCFN.o \
+ MSET.o M3D.o NAGC02.o NAGC05.o \
+ NAGC06.o NAGD03.o NAGE01.o NAGE02.o \
+ NAGE04.o NAGF07.o NAGS.o NAGSP.o \
+ NREP.o NUMFMT.o OC.o OC-.o \
+ ODEPACK.o ODERAT.o OMERR.o OMERRK.o \
+ OPTPACK.o OSI.o PATTERN.o OVAR.o \
+ PMKERNEL.o PMSYM.o POLY.o PRIMELT.o \
+ QALGSET2.o QEQUAT.o RECLOS.o REP1.o \
+ RESULT.o QUATCAT.o QUATCAT-.o RFFACT.o \
+ RMATRIX.o ROMAN.o ROUTINE.o RPOLCAT.o \
+ RPOLCAT-.o RULECOLD.o SAOS.o SEGBIND.o \
+ SET.o SPECOUT.o SQMATRIX.o SWITCH.o \
+ SYMS.o SYMTAB.o SYSSOLP.o UTSCAT.o \
+ UTSCAT-.o VARIABLE.o WFFINTBS.o
+
+axiom_algebra_layer_19_nrlibs = \
+ $(axiom_algebra_layer_19:.$(OBJEXT)=.NRLIB/code.$(OBJEXT))
+
+axiom_algebra_layer_19_objects = \
+ $(addprefix $(OUT)/, $(axiom_algebra_layer_19))
+@
+
+\subsection{Layer20}
+
+\subsubsection{Completed spad files}
+
+\begin{verbatim}
+algfact.spad.pamphlet (IALGFACT SAEFACT RFFACT SAERFFC ALGFACT)
+algfunc.spad.pamphlet (ACF ACFS AF)
+asp.spad.pamphlet (ASP1 ASP10 ASP12 ASP19 ASP20 ASP24 ASP27 ASP28 ASP29 ASP30
+ ASP31 ASP33 ASP34 ASP35 ASP4 ASP41 ASP42 ASP49 ASP50 ASP55
+ ASP6 ASP7 ASP73 ASP74 ASP77 ASP78 ASP8 ASP80 ASP9)
+constant.spad.pamphlet (IAN AN)
+cmplxrt.spad.pamphlet (CMPLXRT)
+crfp.spad.pamphlet (CRFP)
+curve.spad.pamphlet (FFCAT MMAP FFCAT2 CHAVAR RDFF ALGFF)
+derham.spad.pamphlet (LALG EAB ANTISYM DERHAM)
+draw.spad.pamphlet (DRAWCFUN DRAW DRAWCURV DRAWPT)
+d01.spad.pamphlet (NAGD01)
+efstruc.spad.pamphlet (SYMFUNC TANEXP EFSTRUC ITRIGMNP TRIGMNIP CTRIGMNP)
+elemntry.spad.pamphlet (EF)
+elfuts.spad.pamphlet (ELFUTS)
+expexpan.spad.pamphlet (EXPUPXS UPXSSING EXPEXPAN)
+exprode.spad.pamphlet (EXPRODE)
+e04routine.spad.pamphlet (E04DFGA E04FDFA E04GCFA E04JAFA E04MBFA E04NAFA
+ E04UCFA)
+f01.spad.pamphlet (NAGF01)
+f02.spad.pamphlet (NAGF02)
+f04.spad.pamphlet (NAGF04)
+fortmac.spad.pamphlet (MINT MFLOAT MCMPLX)
+fortran.spad.pamphlet (RESULT FC FORTRAN M3D SFORT SWITCH FTEM FEXPR)
+fspace.spad.pamphlet (ES ES1 ES2 FS FS2)
+fs2ups.spad.pamphlet (FS2UPS)
+funcpkgs.spad.pamphlet (FSUPFACT)
+gaussfac.spad.pamphlet (GAUSSFAC)
+gaussian.spad.pamphlet (COMPCAT COMPLPAT CPMATCH COMPLEX COMPLEX2 COMPFACT
+ CINTSLPE)
+generic.spad.pamphlet (GCNAALG CVMP)
+genufact.spad.pamphlet (GENUFACT)
+genups.spad.pamphlet (GENUPS)
+infprod.spad.pamphlet (STINPROD INFPROD0 INPRODPF INPRODFF)
+intaf.spad.pamphlet (INTG0 INTPAF INTAF)
+intalg.spad.pamphlet (DBLRESP INTHERAL INTALG)
+intef.spad.pamphlet (INTEF)
+intpm.spad.pamphlet (INTPM)
+kovacic.spad.pamphlet (KOVACIC)
+lie.spad.pamphlet (LIE JORDAN LSQM)
+liouv.spad.pamphlet (LF)
+lodof.spad.pamphlet (SETMN PREASSOC ASSOCEQ LODOF)
+manip.spad.pamphlet (FACTFUNC POLYROOT ALGMANIP SIMPAN TRMANIP)
+multfact.spad.pamphlet (INNMFACT MULTFACT ALGMFACT)
+naalg.spad.pamphlet (ALGSC SCPKG ALGPKG FRNAAF2)
+newpoly.spad.pamphlet (NSUP NSUP2 RPOLCAT NSMP)
+nlinsol.spad.pamphlet (RETSOL NLINSOL)
+numeigen.spad.pamphlet (IFSPRMELT.oNEP NREP NCEP)
+numeric.spad.pamphlet (NUMERIC DRAWHACK)
+numsolve.spad.pamphlet (INFSP FLOATRP FLOATCP)
+oct.spad.pamphlet (OC OCT OCTCT2)
+odealg.spad.pamphlet (ODESYS ODERED ODEPAL)
+openmath.spad.pamphlet (OMEXPR)
+pade.spad.pamphlet (PADEPAC PADE)
+patmatch2.spad.pamphlet (PMINS PMQFCAT PMPLCT PMFS PATMATCH)
+pfo.spad.pamphlet (FORDER RDIV PFOTOOLS PFOQ FSRED PFO)
+polset.spad.pamphlet (PSETCAT GPOLSET)
+primelt.spad.pamphlet (PRIMELT FSPRMELT)
+quat.spad.pamphlet (QUATCAT QUAT QUATCT2)
+rdeef.spad.pamphlet (INTTOOLS RDEEF)
+rdesys.spad.pamphlet (RDETRS RDEEFS)
+riccati.spad.pamphlet (ODEPRRIC ODERTRIC)
+rule.spad.pamphlet (RULE APPRULE RULESET)
+sign.spad.pamphlet (TOOLSIGN INPSIGN SIGNRF LIMITRF)
+special.spad.pamphlet (DFSFUN ORTHPOL NTPOLFN)
+suts.spad.pamphlet (SUTS)
+tools.spad.pamphlet (ESTOOLS ESTOOLS1 ESTOOLS2)
+triset.spad.pamphlet (TSETCAT GTSET PSETPK)
+tube.spad.pamphlet (TUBE TUBETOOL EXPRTUBE NUMTUBE)
+utsode.spad.pamphlet (UTSODE)
+\end{verbatim}
+
+<<layer20>>=
+axiom_algebra_layer_20 = \
+ ACFS.o ACFS-.o AF.o ALGFACT.o \
+ ALGFF.o ALGMANIP.o ALGMFACT.o ALGPKG.o \
+ ALGSC.o AN.o APPRULE.o ASP19.o \
+ ASP20.o ASP30.o ASP31.o ASP35.o \
+ ASP41.o ASP42.o ASP74.o ASP77.o \
+ ASP80.o CINTSLPE.o COMPFACT.o COMPLEX.o \
+ COMPLPAT.o CMPLXRT.o CPMATCH.o CRFP.o \
+ CTRIGMNP.o D01WGTS.o D02AGNT.o D03EEFA.o \
+ DBLRESP.o DERHAM.o DFSFUN.o DRAWCURV.o \
+ E04NAFA.o E04UCFA.o EF.o EFSTRUC.o \
+ ELFUTS.o ESTOOLS.o EXPEXPAN.o EXPRODE.o \
+ EXPRTUBE.o EXPR2.o FC.o FDIVCAT.o \
+ FDIVCAT-.o FDIV2.o FFCAT2.o FLOATCP.o \
+ FORDER.o FORTRAN.o FSRED.o FSUPFACT.o \
+ FRNAAF2.o FSPECF.o FS2.o FS2UPS.o \
+ GAUSSFAC.o GCNAALG.o GENUFACT.o GENUPS.o \
+ GTSET.o GPOLSET.o IAN.o INEP.o \
+ INFPROD0.o INFSP.o INPRODFF.o INPRODPF.o \
+ INTAF.o INTALG.o INTEF.o INTG0.o \
+ INTHERAL.o INTPAF.o INTPM.o INTTOOLS.o \
+ ITRIGMNP.o JORDAN.o KOVACIC.o LF.o \
+ LIE.o LODOF.o LSQM.o OMEXPR.o \
+ MCMPLX.o MULTFACT.o NAGD01.o NAGD02.o \
+ NAGF01.o NAGF02.o NAGF04.o NCEP.o \
+ NLINSOL.o NSMP.o NUMERIC.o OCT.o \
+ OCTCT2.o ODEPAL.o ODERTRIC.o PADE.o \
+ PAN2EXPR.o PDEPACK.o PFO.o PFOQ.o \
+ PICOERCE.o PMASSFS.o PMFS.o PMPREDFS.o \
+ PSETPK.o QUAT.o QUATCT2.o RADFF.o \
+ RDEEF.o RDEEFS.o RDIV.o RSETCAT.o \
+ RSETCAT-.o RULE.o RULESET.o SIMPAN.o \
+ SFORT.o SOLVESER.o SUMFS.o SUTS.o \
+ TOOLSIGN.o TRIGMNIP.o TRMANIP.o ULSCCAT.o \
+ ULSCCAT-.o UPXSSING.o UTSODE.o UTSODETL.o \
+ UTS2.o WUTSET.o
+
+axiom_algebra_layer_20_nrlibs = \
+ $(axiom_algebra_layer_20:.$(OBJEXT)=.NRLIB/code.$(OBJEXT))
+
+axiom_algebra_layer_20_objects = \
+ $(addprefix $(OUT)/, $(axiom_algebra_layer_20))
+@
+
+\subsection{Layer21}
+
+\subsubsection{Completed spad files}
+
+\begin{verbatim}
+cont.spad.pamphlet (ESCONT ESCONT1)
+ddfact.spad.pamphlet (DDFACT)
+defintef.spad.pamphlet (DEFINTEF)
+defintrf.spad.pamphlet (DFINTTLS DEFINTRF)
+divisor.spad.pamphlet (FRIDEAL FRIDEAL2 MHROWRED FRMOD FDIVCAT HELLFDIV FDIV
+ FDIV2)
+d01transform.spad.pamphlet (D01TRNS)
+efuls.spad.pamphlet (EFULS)
+expr.spad.pamphlet (EXPR PAN2EXPR EXPR2 PMPREDFS PMASSFS PMPRED PMASS HACKPI
+ PICOERCE)
+expr2ups.spad.pamphlet (EXPR2UPS)
+fs2expxp.spad.pamphlet (FS2EXPXP)
+gseries.spad.pamphlet (GSERIES)
+integrat.spad.pamphlet (FSCINT FSINT)
+irexpand.spad.pamphlet (IR2F IRRF2F)
+laplace.spad.pamphlet (LAPLACE INVLAPLA)
+laurent.spad.pamphlet (ULSCCAT ULSCONS ULS USL2)
+nlode.spad.pamphlet (NODE1)
+oderf.spad.pamphlet (BALFACT BOUNDZRO ODEPRIM UTSODETL ODERAT ODETOOLS ODEINT
+ ODECONST)
+puiseux.spad.pamphlet (UPXSCCA UPXSCONS UPXS UPXS2)
+radeigen.spad.pamphlet (REP)
+solverad.spad.pamphlet (SOLVERAD)
+suls.spad.pamphlet (SULS)
+supxs.spad.pamphlet (SUPXS)
+taylor.spad.pamphlet (ITAYLOR UTS UTS2)
+\end{verbatim}
+
+<<layer21>>=
+axiom_algebra_layer_21 = \
+ DEFINTEF.o DFINTTLS.o DEFINTRF.o D01TRNS.o \
+ EFULS.o ESCONT.o EXPR.o EXPR2UPS.o \
+ FDIV.o FSCINT.o FSINT.o FS2EXPXP.o \
+ GSERIES.o HELLFDIV.o INVLAPLA.o IR2F.o \
+ IRRF2F.o LAPLACE.o LIMITPS.o LODEEF.o \
+ NODE1.o ODECONST.o ODEINT.o REP.o \
+ SOLVERAD.o SULS.o SUPXS.o ULS.o \
+ ULSCONS.o UPXS.o UPXSCONS.o UTS.o
+
+axiom_algebra_layer_21_nrlibs = \
+ $(axiom_algebra_layer_21:.$(OBJEXT)=.NRLIB/code.$(OBJEXT))
+
+axiom_algebra_layer_21_objects = \
+ $(addprefix $(OUT)/, $(axiom_algebra_layer_21))
+@
+
+\subsection{Layer22}
+
+\subsubsection{Completed spad files}
+
+\begin{verbatim}
+asp.spad.pamphlet (ASP29)
+combfunc.spad.pamphlet (COMBF)
+d01agents.spad.pamphlet (D01AGNT SNTSCAT)
+ffnb.spad.pamphlet (INBFF)
+limitps.spad.pamphlet (SIGNEF)
+lodo.spad.pamphlet (LODO LODO1 LODO2)
+newpoint.spad.pamphlet (SUBSPACE)
+nregset.spad.pamphlet (NTSCAT)
+primelt.spad.pamphlet (FSPRMELT)
+regset.spad.pamphlet (REGSET RSETGCD RSDCMPK)
+sregset.spad.pamphlet (SFRTCAT SRDCMPK SREGSET)
+sttf.spad.pamphlet (STTF)
+transsolve.spad.pamphlet (SOLVETRA)
+zerodim.spad.pamphlet (RGCHAIN ZDSOLVE)
+\end{verbatim}
+\subsection{Layer21}
+<<layer22>>=
+axiom_algebra_layer_22 = \
+ ASP29.o COMBF.o D01AGNT.o FSPRMELT.o \
+ INBFF.o LODO.o LODO1.o LODO2.o \
+ NTSCAT.o REGSET.o RGCHAIN.o RSETGCD.o \
+ RSDCMPK.o SFRTCAT.o SIGNEF.o SNTSCAT.o \
+ SOLVETRA.o SRDCMPK.o SREGSET.o STTF.o \
+ SUBSPACE.o ZDSOLVE.o
+
+axiom_algebra_layer_22_nrlibs = \
+ $(axiom_algebra_layer_22:.$(OBJEXT)=.NRLIB/code.$(OBJEXT))
+
+axiom_algebra_layer_22_objects = \
+ $(addprefix $(OUT)/, $(axiom_algebra_layer_22))
+@
+
+\subsection{Final layer spad files}
+
+These files have not yet been fully analyzed for dependencies but
+have added in alphabetical order in this final layer. This
+ordering is apparently adequate.
+
+These files all depend on layer22.
+\begin{verbatim}
+algcat.spad.pamphlet (CPIMA)
+nregset.spad.pamphlet (NORMPK)
+nsregset.spad.pamphlet (LAZM3PK)
+regset.spad.pamphlet (QCMPACK)
+sregset.spad.pamphlet (SFRGCD SFQCMPK)
+zerodim.spad.pamphlet (LEXTRIPK IRURPK RURPK)
+\end{verbatim}
+
+<<layer23>>=
+axiom_algebra_layer_23 = \
+ CPIMA.o IRURPK.o LAZM3PK.o LEXTRIPK.o \
+ NORMPK.o QCMPACK.o RURPK.o SFRGCD.o \
+ SFQCMPK.o INTRVL.o ODEEF.o
+
+axiom_algebra_layer_23_nrlibs = \
+ $(axiom_algebra_layer_23:.$(OBJEXT)=.NRLIB/code.$(OBJEXT))
+
+axiom_algebra_layer_23_objects = \
+ $(addprefix $(OUT)/, $(axiom_algebra_layer_23))
+@
+
+\subsection{User Layer for newly added algebra}
+
+Rather than classify newly created algebra into the existing type lattice
+we add it here.
+<<USERLAYER>>=
+axiom_algebra_layer_user = RINTERP.o
+
+axiom_algebra_layer_user_nrlibs = \
+ $(axiom_algebra_layer_user:.$(OBJEXT)=.NRLIB/code.$(OBJEXT))
+
+axiom_algebra_layer_user_objects = \
+ $(addprefix $(OUT)/, $(axiom_algebra_layer_user))
+@
+
+\section{Broken Files}
+
+These files are Aldor files
+\begin{verbatim}
+axtimer.as Timer
+iviews.as InventorRenderPackage IVREND
+ffrac.as FormalFraction FORMAL
+iviews.as InventorViewPort IVVIEW
+iviews.as InventorDataSink IVDATA
+herm.as PackedHermitianSequence PACKED
+nsfip.as NagSpecialFunctionsInterfacePackage NAGSPE
+nrc.as NagResultChecks NAGRES
+nqip.as NagQuadratureInterfacePackage NAGQUA
+noptip.as NagOptimizationInterfacePackage NAGOPT
+nepip.as NagEigenInterfacePackage NAGEIG
+ndftip.as NagDiscreteFourierTransformInterfacePackage NAGDIS
+\end{verbatim}
+
+These domains are referenced but don't exist
+\begin{verbatim}
+OBJECT
+\end{verbatim}
+
+\section{The Environment}
+
+\subsection{The working directories}
+
+We define 5 directories for this build. The{\bf IN} directory
+contains the pamphlet files for the algebra. These are expanded
+into the{\bf MID} directory as either .spad or .as files. The
+.spad files are compiled by the native spad internal compiler.
+The .as files are compiled using the Aldor compiler. The output
+of the compilation has two purposes. Part of the information is
+used to build various database files (daase files). The other
+part is executable code which is placed in the {\bf OUT}
+directory. When invoked as ``make document'' we construct
+the .dvi files in the{\bf DOC} directory.
+
+The [[OUTSRC=$(axiom_target_srcdir)/algebra]] subdirectory contains the
+algebra source files extracted from the pamphlet files. These sources
+allow the end user to change the algebra if needed.
+
+<<environment>>=
+
+IN=$(srcdir)
+OUT=$(axiom_targetdir)/algebra
+DOC=$(axiom_target_docdir)/src/algebra
+OUTSRC=$(axiom_target_srcdir)/algebra
+INPUT=../input
+
+EXTRACT_BOOTSTRAP_FILE = \
+ $(axiom_build_document) --output=$@ --tangle="$@ BOOTSTRAP" $<
+
+@
+
+\subsection{The depsys variable}
+
+The {\bf depsys} image is the compile-time environment for boot and lisp
+files.
+
+<<environment>>=
+
+DEPSYS= ../interp/depsys$(EXEEXT)
+
+@
+
+\subsection{The interpsys variable}
+The {\bf interpsys} image is the compile-time environment for algebra
+files.
+
+<<environment>>=
+
+INTERPSYS = \
+ AXIOM="$(AXIOM)" \
+ DAASE="$(axiom_src_datadir)" \
+ ../interp/interpsys$(EXEEXT)
+
+@
+
+\subsection{The SPADFILES list}
+Note that we have excluded {\bf mlift.spad.jhd} from this list.
+We need to figure out which mlift.spad to keep.
+
+<<environment>>=
+
+SPADFILES= \
+ ${OUTSRC}/acplot.spad ${OUTSRC}/aggcat2.spad ${OUTSRC}/aggcat.spad \
+ ${OUTSRC}/algcat.spad ${OUTSRC}/algext.spad ${OUTSRC}/algfact.spad \
+ ${OUTSRC}/algfunc.spad ${OUTSRC}/allfact.spad ${OUTSRC}/alql.spad \
+ ${OUTSRC}/annacat.spad ${OUTSRC}/any.spad ${OUTSRC}/array1.spad \
+ ${OUTSRC}/array2.spad ${OUTSRC}/asp.spad ${OUTSRC}/attreg.spad \
+ ${OUTSRC}/bags.spad ${OUTSRC}/bezout.spad ${OUTSRC}/boolean.spad \
+ ${OUTSRC}/brill.spad \
+ ${OUTSRC}/c02.spad ${OUTSRC}/c05.spad ${OUTSRC}/c06.spad \
+ ${OUTSRC}/card.spad ${OUTSRC}/carten.spad ${OUTSRC}/catdef.spad \
+ ${OUTSRC}/cden.spad ${OUTSRC}/clifford.spad ${OUTSRC}/clip.spad \
+ ${OUTSRC}/cmplxrt.spad ${OUTSRC}/coerce.spad ${OUTSRC}/color.spad \
+ ${OUTSRC}/combfunc.spad ${OUTSRC}/combinat.spad ${OUTSRC}/complet.spad \
+ ${OUTSRC}/constant.spad ${OUTSRC}/contfrac.spad ${OUTSRC}/cont.spad \
+ ${OUTSRC}/coordsys.spad ${OUTSRC}/cra.spad ${OUTSRC}/crfp.spad \
+ ${OUTSRC}/curve.spad ${OUTSRC}/cycles.spad ${OUTSRC}/cyclotom.spad \
+ ${OUTSRC}/d01agents.spad ${OUTSRC}/d01Package.spad \
+ ${OUTSRC}/d01routine.spad ${OUTSRC}/d01.spad ${OUTSRC}/d01transform.spad \
+ ${OUTSRC}/d01weights.spad ${OUTSRC}/d02agents.spad \
+ ${OUTSRC}/d02Package.spad ${OUTSRC}/d02routine.spad ${OUTSRC}/d02.spad \
+ ${OUTSRC}/d03agents.spad ${OUTSRC}/d03Package.spad \
+ ${OUTSRC}/d03routine.spad ${OUTSRC}/d03.spad ${OUTSRC}/ddfact.spad \
+ ${OUTSRC}/defaults.spad ${OUTSRC}/defintef.spad ${OUTSRC}/defintrf.spad \
+ ${OUTSRC}/degred.spad ${OUTSRC}/derham.spad ${OUTSRC}/dhmatrix.spad \
+ ${OUTSRC}/divisor.spad ${OUTSRC}/dpolcat.spad ${OUTSRC}/drawopt.spad \
+ ${OUTSRC}/drawpak.spad ${OUTSRC}/draw.spad \
+ ${OUTSRC}/e01.spad ${OUTSRC}/e02.spad ${OUTSRC}/e04agents.spad \
+ ${OUTSRC}/e04Package.spad ${OUTSRC}/e04routine.spad ${OUTSRC}/e04.spad \
+ ${OUTSRC}/efstruc.spad ${OUTSRC}/efuls.spad ${OUTSRC}/efupxs.spad \
+ ${OUTSRC}/eigen.spad ${OUTSRC}/elemntry.spad ${OUTSRC}/elfuts.spad \
+ ${OUTSRC}/equation1.spad ${OUTSRC}/equation2.spad ${OUTSRC}/error.spad \
+ ${OUTSRC}/expexpan.spad ${OUTSRC}/expr2ups.spad \
+ ${OUTSRC}/exprode.spad ${OUTSRC}/expr.spad \
+ ${OUTSRC}/f01.spad ${OUTSRC}/f02.spad ${OUTSRC}/f04.spad \
+ ${OUTSRC}/f07.spad ${OUTSRC}/facutil.spad ${OUTSRC}/ffcat.spad \
+ ${OUTSRC}/ffcg.spad ${OUTSRC}/fff.spad ${OUTSRC}/ffhom.spad \
+ ${OUTSRC}/ffnb.spad ${OUTSRC}/ffpoly2.spad ${OUTSRC}/ffpoly.spad \
+ ${OUTSRC}/ffp.spad ${OUTSRC}/ffx.spad \
+ ${OUTSRC}/files.spad ${OUTSRC}/float.spad ${OUTSRC}/fmod.spad \
+ ${OUTSRC}/fname.spad ${OUTSRC}/fnla.spad ${OUTSRC}/formula.spad \
+ ${OUTSRC}/fortcat.spad ${OUTSRC}/fortmac.spad ${OUTSRC}/fortpak.spad \
+ ${OUTSRC}/fortran.spad ${OUTSRC}/forttyp.spad ${OUTSRC}/fourier.spad \
+ ${OUTSRC}/fparfrac.spad ${OUTSRC}/fraction.spad ${OUTSRC}/free.spad \
+ ${OUTSRC}/fr.spad ${OUTSRC}/fs2expxp.spad ${OUTSRC}/fs2ups.spad \
+ ${OUTSRC}/fspace.spad ${OUTSRC}/funcpkgs.spad ${OUTSRC}/functions.spad \
+ ${OUTSRC}/galfact.spad ${OUTSRC}/galfactu.spad ${OUTSRC}/galpolyu.spad \
+ ${OUTSRC}/galutil.spad ${OUTSRC}/gaussfac.spad ${OUTSRC}/gaussian.spad \
+ ${OUTSRC}/gbeuclid.spad ${OUTSRC}/gbintern.spad ${OUTSRC}/gb.spad \
+ ${OUTSRC}/gdirprod.spad ${OUTSRC}/gdpoly.spad ${OUTSRC}/geneez.spad \
+ ${OUTSRC}/generic.spad ${OUTSRC}/genufact.spad ${OUTSRC}/genups.spad \
+ ${OUTSRC}/ghensel.spad ${OUTSRC}/gpgcd.spad ${OUTSRC}/gpol.spad \
+ ${OUTSRC}/grdef.spad ${OUTSRC}/groebf.spad ${OUTSRC}/groebsol.spad \
+ ${OUTSRC}/gseries.spad \
+ ${OUTSRC}/ideal.spad ${OUTSRC}/idecomp.spad ${OUTSRC}/indexedp.spad \
+ ${OUTSRC}/infprod.spad ${OUTSRC}/intaf.spad ${OUTSRC}/intalg.spad \
+ ${OUTSRC}/intaux.spad ${OUTSRC}/intclos.spad ${OUTSRC}/intef.spad \
+ ${OUTSRC}/integer.spad ${OUTSRC}/integrat.spad \
+ ${OUTSRC}/interval.spad \
+ ${OUTSRC}/intfact.spad ${OUTSRC}/intpm.spad \
+ ${OUTSRC}/intrf.spad \
+ ${OUTSRC}/irexpand.spad \
+ ${OUTSRC}/irsn.spad ${OUTSRC}/ituple.spad \
+ ${OUTSRC}/kl.spad ${OUTSRC}/kovacic.spad \
+ ${OUTSRC}/laplace.spad ${OUTSRC}/laurent.spad ${OUTSRC}/leadcdet.spad \
+ ${OUTSRC}/lie.spad ${OUTSRC}/limitps.spad ${OUTSRC}/lindep.spad \
+ ${OUTSRC}/lingrob.spad ${OUTSRC}/liouv.spad ${OUTSRC}/listgcd.spad \
+ ${OUTSRC}/list.spad ${OUTSRC}/lmdict.spad ${OUTSRC}/lodof.spad \
+ ${OUTSRC}/lodop.spad ${OUTSRC}/lodo.spad \
+ ${OUTSRC}/manip.spad ${OUTSRC}/mappkg.spad ${OUTSRC}/matcat.spad \
+ ${OUTSRC}/matfuns.spad ${OUTSRC}/matrix.spad ${OUTSRC}/matstor.spad \
+ ${OUTSRC}/mesh.spad ${OUTSRC}/mfinfact.spad ${OUTSRC}/misc.spad \
+ ${OUTSRC}/mkfunc.spad ${OUTSRC}/mkrecord.spad \
+ ${OUTSRC}/mlift.spad ${OUTSRC}/moddfact.spad ${OUTSRC}/modgcd.spad \
+ ${OUTSRC}/modmonom.spad ${OUTSRC}/modmon.spad ${OUTSRC}/modring.spad \
+ ${OUTSRC}/moebius.spad ${OUTSRC}/mring.spad ${OUTSRC}/mset.spad \
+ ${OUTSRC}/mts.spad ${OUTSRC}/multfact.spad ${OUTSRC}/multpoly.spad \
+ ${OUTSRC}/multsqfr.spad \
+ ${OUTSRC}/naalgc.spad ${OUTSRC}/naalg.spad \
+ ${OUTSRC}/newdata.spad ${OUTSRC}/newpoint.spad \
+ ${OUTSRC}/newpoly.spad ${OUTSRC}/nlinsol.spad ${OUTSRC}/nlode.spad \
+ ${OUTSRC}/npcoef.spad \
+ ${OUTSRC}/nregset.spad \
+ ${OUTSRC}/nsregset.spad ${OUTSRC}/numeigen.spad ${OUTSRC}/numeric.spad \
+ ${OUTSRC}/numode.spad ${OUTSRC}/numquad.spad ${OUTSRC}/numsolve.spad \
+ ${OUTSRC}/numtheor.spad \
+ ${OUTSRC}/oct.spad ${OUTSRC}/odealg.spad ${OUTSRC}/odeef.spad \
+ ${OUTSRC}/oderf.spad ${OUTSRC}/omcat.spad ${OUTSRC}/omdev.spad \
+ ${OUTSRC}/omerror.spad ${OUTSRC}/omserver.spad ${OUTSRC}/opalg.spad \
+ ${OUTSRC}/openmath.spad ${OUTSRC}/op.spad ${OUTSRC}/ore.spad \
+ ${OUTSRC}/outform.spad ${OUTSRC}/out.spad \
+ ${OUTSRC}/pade.spad ${OUTSRC}/padiclib.spad ${OUTSRC}/padic.spad \
+ ${OUTSRC}/paramete.spad ${OUTSRC}/partperm.spad ${OUTSRC}/patmatch1.spad \
+ ${OUTSRC}/patmatch2.spad ${OUTSRC}/pattern.spad ${OUTSRC}/pcurve.spad \
+ ${OUTSRC}/pdecomp.spad ${OUTSRC}/perman.spad ${OUTSRC}/permgrps.spad \
+ ${OUTSRC}/perm.spad ${OUTSRC}/pfbr.spad ${OUTSRC}/pfo.spad \
+ ${OUTSRC}/pfr.spad ${OUTSRC}/pf.spad ${OUTSRC}/pgcd.spad \
+ ${OUTSRC}/pgrobner.spad ${OUTSRC}/pinterp.spad ${OUTSRC}/pleqn.spad \
+ ${OUTSRC}/plot3d.spad ${OUTSRC}/plot.spad ${OUTSRC}/plottool.spad \
+ ${OUTSRC}/polset.spad ${OUTSRC}/poltopol.spad ${OUTSRC}/polycat.spad \
+ ${OUTSRC}/poly.spad ${OUTSRC}/primelt.spad ${OUTSRC}/print.spad \
+ ${OUTSRC}/product.spad ${OUTSRC}/prs.spad ${OUTSRC}/prtition.spad \
+ ${OUTSRC}/pscat.spad ${OUTSRC}/pseudolin.spad ${OUTSRC}/ptranfn.spad \
+ ${OUTSRC}/puiseux.spad \
+ ${OUTSRC}/qalgset.spad ${OUTSRC}/quat.spad \
+ ${OUTSRC}/radeigen.spad ${OUTSRC}/radix.spad ${OUTSRC}/random.spad \
+ ${OUTSRC}/ratfact.spad ${OUTSRC}/rdeef.spad ${OUTSRC}/rderf.spad \
+ ${OUTSRC}/rdesys.spad ${OUTSRC}/real0q.spad ${OUTSRC}/realzero.spad \
+ ${OUTSRC}/reclos.spad ${OUTSRC}/regset.spad ${OUTSRC}/rep1.spad \
+ ${OUTSRC}/rep2.spad ${OUTSRC}/resring.spad ${OUTSRC}/retract.spad \
+ ${OUTSRC}/rf.spad ${OUTSRC}/riccati.spad ${OUTSRC}/rinterp.spad \
+ ${OUTSRC}/routines.spad \
+ ${OUTSRC}/rule.spad \
+ ${OUTSRC}/seg.spad ${OUTSRC}/setorder.spad ${OUTSRC}/sets.spad \
+ ${OUTSRC}/sex.spad ${OUTSRC}/sf.spad ${OUTSRC}/sgcf.spad \
+ ${OUTSRC}/sign.spad ${OUTSRC}/si.spad ${OUTSRC}/smith.spad \
+ ${OUTSRC}/solvedio.spad ${OUTSRC}/solvefor.spad ${OUTSRC}/solvelin.spad \
+ ${OUTSRC}/solverad.spad ${OUTSRC}/sortpak.spad ${OUTSRC}/space.spad \
+ ${OUTSRC}/special.spad ${OUTSRC}/sregset.spad ${OUTSRC}/s.spad \
+ ${OUTSRC}/stream.spad ${OUTSRC}/string.spad ${OUTSRC}/sttaylor.spad \
+ ${OUTSRC}/sttf.spad ${OUTSRC}/sturm.spad ${OUTSRC}/suchthat.spad \
+ ${OUTSRC}/suls.spad ${OUTSRC}/sum.spad ${OUTSRC}/sups.spad \
+ ${OUTSRC}/supxs.spad ${OUTSRC}/suts.spad ${OUTSRC}/symbol.spad \
+ ${OUTSRC}/syssolp.spad ${OUTSRC}/system.spad \
+ ${OUTSRC}/tableau.spad ${OUTSRC}/table.spad ${OUTSRC}/taylor.spad \
+ ${OUTSRC}/tex.spad ${OUTSRC}/tools.spad ${OUTSRC}/transsolve.spad \
+ ${OUTSRC}/tree.spad ${OUTSRC}/trigcat.spad ${OUTSRC}/triset.spad \
+ ${OUTSRC}/tube.spad ${OUTSRC}/twofact.spad \
+ ${OUTSRC}/unifact.spad ${OUTSRC}/updecomp.spad ${OUTSRC}/updivp.spad \
+ ${OUTSRC}/utsode.spad \
+ ${OUTSRC}/variable.spad ${OUTSRC}/vector.spad ${OUTSRC}/view2D.spad \
+ ${OUTSRC}/view3D.spad ${OUTSRC}/viewDef.spad ${OUTSRC}/viewpack.spad \
+ ${OUTSRC}/void.spad \
+ ${OUTSRC}/weier.spad ${OUTSRC}/wtpol.spad \
+ ${OUTSRC}/xlpoly.spad ${OUTSRC}/xpoly.spad \
+ ${OUTSRC}/ystream.spad \
+ ${OUTSRC}/zerodim.spad
+
+@
+
+\subsection{The ALDORFILES list}
+<<environment>>=
+
+ALDORFILES= \
+ axtimer.as \
+ ffrac.as \
+ herm.as \
+ interval.as \
+ invnode.as \
+ invrender.as \
+ invtypes.as \
+ invutils.as \
+ iviews.as \
+ ndftip.as \
+ nepip.as \
+ noptip.as nqip.as \
+ nrc.as nsfip.as
+
+@
+
+\subsection{The DOCFILES list}
+<<environment>>=
+
+DOCFILES= \
+ ${DOC}/acplot.spad.dvi ${DOC}/aggcat2.spad.dvi ${DOC}/aggcat.spad.dvi \
+ ${DOC}/algcat.spad.dvi ${DOC}/algext.spad.dvi ${DOC}/algfact.spad.dvi \
+ ${DOC}/algfunc.spad.dvi ${DOC}/allfact.spad.dvi ${DOC}/alql.spad.dvi \
+ ${DOC}/annacat.spad.dvi ${DOC}/any.spad.dvi ${DOC}/array1.spad.dvi \
+ ${DOC}/array2.spad.dvi ${DOC}/asp.spad.dvi ${DOC}/attreg.spad.dvi \
+ ${DOC}/axtimer.as.dvi \
+ ${DOC}/bags.spad.dvi ${DOC}/bezout.spad.dvi ${DOC}/boolean.spad.dvi \
+ ${DOC}/brill.spad.dvi \
+ ${DOC}/c02.spad.dvi ${DOC}/c05.spad.dvi ${DOC}/c06.spad.dvi \
+ ${DOC}/card.spad.dvi ${DOC}/carten.spad.dvi ${DOC}/catdef.spad.dvi \
+ ${DOC}/cden.spad.dvi ${DOC}/clifford.spad.dvi ${DOC}/clip.spad.dvi \
+ ${DOC}/cmplxrt.spad.dvi ${DOC}/coerce.spad.dvi ${DOC}/color.spad.dvi \
+ ${DOC}/combfunc.spad.dvi ${DOC}/combinat.spad.dvi ${DOC}/complet.spad.dvi \
+ ${DOC}/constant.spad.dvi ${DOC}/contfrac.spad.dvi ${DOC}/cont.spad.dvi \
+ ${DOC}/coordsys.spad.dvi ${DOC}/cra.spad.dvi ${DOC}/crfp.spad.dvi \
+ ${DOC}/curve.spad.dvi ${DOC}/cycles.spad.dvi ${DOC}/cyclotom.spad.dvi \
+ ${DOC}/d01agents.spad.dvi ${DOC}/d01Package.spad.dvi \
+ ${DOC}/d01routine.spad.dvi ${DOC}/d01.spad.dvi ${DOC}/d01transform.spad.dvi \
+ ${DOC}/d01weights.spad.dvi ${DOC}/d02agents.spad.dvi \
+ ${DOC}/d02Package.spad.dvi ${DOC}/d02routine.spad.dvi ${DOC}/d02.spad.dvi \
+ ${DOC}/d03agents.spad.dvi ${DOC}/d03Package.spad.dvi \
+ ${DOC}/d03routine.spad.dvi ${DOC}/d03.spad.dvi ${DOC}/ddfact.spad.dvi \
+ ${DOC}/defaults.spad.dvi ${DOC}/defintef.spad.dvi ${DOC}/defintrf.spad.dvi \
+ ${DOC}/degred.spad.dvi ${DOC}/derham.spad.dvi ${DOC}/dhmatrix.spad.dvi \
+ ${DOC}/divisor.spad.dvi ${DOC}/dpolcat.spad.dvi ${DOC}/drawopt.spad.dvi \
+ ${DOC}/drawpak.spad.dvi ${DOC}/draw.spad.dvi \
+ ${DOC}/e01.spad.dvi ${DOC}/e02.spad.dvi ${DOC}/e04agents.spad.dvi \
+ ${DOC}/e04Package.spad.dvi ${DOC}/e04routine.spad.dvi ${DOC}/e04.spad.dvi \
+ ${DOC}/efstruc.spad.dvi ${DOC}/efuls.spad.dvi ${DOC}/efupxs.spad.dvi \
+ ${DOC}/eigen.spad.dvi ${DOC}/elemntry.spad.dvi ${DOC}/elfuts.spad.dvi \
+ ${DOC}/equation1.spad.dvi ${DOC}/equation2.spad.dvi ${DOC}/error.spad.dvi \
+ ${DOC}/expexpan.spad.dvi ${DOC}/exposed.lsp.dvi ${DOC}/expr2ups.spad.dvi \
+ ${DOC}/exprode.spad.dvi ${DOC}/expr.spad.dvi \
+ ${DOC}/f01.spad.dvi ${DOC}/f02.spad.dvi ${DOC}/f04.spad.dvi \
+ ${DOC}/f07.spad.dvi ${DOC}/facutil.spad.dvi ${DOC}/ffcat.spad.dvi \
+ ${DOC}/ffcg.spad.dvi ${DOC}/fff.spad.dvi ${DOC}/ffhom.spad.dvi \
+ ${DOC}/ffnb.spad.dvi ${DOC}/ffpoly2.spad.dvi ${DOC}/ffpoly.spad.dvi \
+ ${DOC}/ffp.spad.dvi ${DOC}/ffrac.as.dvi ${DOC}/ffx.spad.dvi \
+ ${DOC}/files.spad.dvi ${DOC}/float.spad.dvi ${DOC}/fmod.spad.dvi \
+ ${DOC}/fname.spad.dvi ${DOC}/fnla.spad.dvi ${DOC}/formula.spad.dvi \
+ ${DOC}/fortcat.spad.dvi ${DOC}/fortmac.spad.dvi ${DOC}/fortpak.spad.dvi \
+ ${DOC}/fortran.spad.dvi ${DOC}/forttyp.spad.dvi ${DOC}/fourier.spad.dvi \
+ ${DOC}/fparfrac.spad.dvi ${DOC}/fraction.spad.dvi ${DOC}/free.spad.dvi \
+ ${DOC}/fr.spad.dvi ${DOC}/fs2expxp.spad.dvi ${DOC}/fs2ups.spad.dvi \
+ ${DOC}/fspace.spad.dvi ${DOC}/funcpkgs.spad.dvi ${DOC}/functions.spad.dvi \
+ ${DOC}/galfact.spad.dvi ${DOC}/galfactu.spad.dvi ${DOC}/galpolyu.spad.dvi \
+ ${DOC}/galutil.spad.dvi ${DOC}/gaussfac.spad.dvi ${DOC}/gaussian.spad.dvi \
+ ${DOC}/gbeuclid.spad.dvi ${DOC}/gbintern.spad.dvi ${DOC}/gb.spad.dvi \
+ ${DOC}/gdirprod.spad.dvi ${DOC}/gdpoly.spad.dvi ${DOC}/geneez.spad.dvi \
+ ${DOC}/generic.spad.dvi ${DOC}/genufact.spad.dvi ${DOC}/genups.spad.dvi \
+ ${DOC}/ghensel.spad.dvi ${DOC}/gpgcd.spad.dvi ${DOC}/gpol.spad.dvi \
+ ${DOC}/grdef.spad.dvi ${DOC}/groebf.spad.dvi ${DOC}/groebsol.spad.dvi \
+ ${DOC}/gseries.spad.dvi \
+ ${DOC}/herm.as.dvi \
+ ${DOC}/ideal.spad.dvi ${DOC}/idecomp.spad.dvi ${DOC}/indexedp.spad.dvi \
+ ${DOC}/infprod.spad.dvi ${DOC}/intaf.spad.dvi ${DOC}/intalg.spad.dvi \
+ ${DOC}/intaux.spad.dvi ${DOC}/intclos.spad.dvi ${DOC}/intef.spad.dvi \
+ ${DOC}/integer.spad.dvi ${DOC}/integrat.spad.dvi \
+ ${DOC}/interval.as.dvi ${DOC}/interval.spad.dvi \
+ ${DOC}/intfact.spad.dvi ${DOC}/intpm.spad.dvi \
+ ${DOC}/intrf.spad.dvi ${DOC}/invnode.as.dvi ${DOC}/invrender.as.dvi \
+ ${DOC}/invtypes.as.dvi ${DOC}/invutils.as.dvi ${DOC}/irexpand.spad.dvi \
+ ${DOC}/irsn.spad.dvi ${DOC}/ituple.spad.dvi ${DOC}/iviews.as.dvi \
+ ${DOC}/kl.spad.dvi ${DOC}/kovacic.spad.dvi \
+ ${DOC}/laplace.spad.dvi ${DOC}/laurent.spad.dvi ${DOC}/leadcdet.spad.dvi \
+ ${DOC}/lie.spad.dvi ${DOC}/limitps.spad.dvi ${DOC}/lindep.spad.dvi \
+ ${DOC}/lingrob.spad.dvi ${DOC}/liouv.spad.dvi ${DOC}/listgcd.spad.dvi \
+ ${DOC}/list.spad.dvi ${DOC}/lmdict.spad.dvi ${DOC}/lodof.spad.dvi \
+ ${DOC}/lodop.spad.dvi ${DOC}/lodo.spad.dvi \
+ ${DOC}/manip.spad.dvi ${DOC}/mappkg.spad.dvi ${DOC}/matcat.spad.dvi \
+ ${DOC}/matfuns.spad.dvi ${DOC}/matrix.spad.dvi ${DOC}/matstor.spad.dvi \
+ ${DOC}/mesh.spad.dvi ${DOC}/mfinfact.spad.dvi ${DOC}/misc.spad.dvi \
+ ${DOC}/mkfunc.spad.dvi ${DOC}/mkrecord.spad.dvi ${DOC}/mlift.spad.jhd.dvi \
+ ${DOC}/mlift.spad.dvi ${DOC}/moddfact.spad.dvi ${DOC}/modgcd.spad.dvi \
+ ${DOC}/modmonom.spad.dvi ${DOC}/modmon.spad.dvi ${DOC}/modring.spad.dvi \
+ ${DOC}/moebius.spad.dvi ${DOC}/mring.spad.dvi ${DOC}/mset.spad.dvi \
+ ${DOC}/mts.spad.dvi ${DOC}/multfact.spad.dvi ${DOC}/multpoly.spad.dvi \
+ ${DOC}/multsqfr.spad.dvi \
+ ${DOC}/naalgc.spad.dvi ${DOC}/naalg.spad.dvi ${DOC}/ndftip.as.dvi \
+ ${DOC}/nepip.as.dvi ${DOC}/newdata.spad.dvi ${DOC}/newpoint.spad.dvi \
+ ${DOC}/newpoly.spad.dvi ${DOC}/nlinsol.spad.dvi ${DOC}/nlode.spad.dvi \
+ ${DOC}/noptip.as.dvi ${DOC}/npcoef.spad.dvi ${DOC}/nqip.as.dvi \
+ ${DOC}/nrc.as.dvi ${DOC}/nregset.spad.dvi ${DOC}/nsfip.as.dvi \
+ ${DOC}/nsregset.spad.dvi ${DOC}/numeigen.spad.dvi ${DOC}/numeric.spad.dvi \
+ ${DOC}/numode.spad.dvi ${DOC}/numquad.spad.dvi ${DOC}/numsolve.spad.dvi \
+ ${DOC}/numtheor.spad.dvi \
+ ${DOC}/oct.spad.dvi ${DOC}/odealg.spad.dvi ${DOC}/odeef.spad.dvi \
+ ${DOC}/oderf.spad.dvi ${DOC}/omcat.spad.dvi ${DOC}/omdev.spad.dvi \
+ ${DOC}/omerror.spad.dvi ${DOC}/omserver.spad.dvi ${DOC}/opalg.spad.dvi \
+ ${DOC}/openmath.spad.dvi ${DOC}/op.spad.dvi ${DOC}/ore.spad.dvi \
+ ${DOC}/outform.spad.dvi ${DOC}/out.spad.dvi \
+ ${DOC}/pade.spad.dvi ${DOC}/padiclib.spad.dvi ${DOC}/padic.spad.dvi \
+ ${DOC}/paramete.spad.dvi ${DOC}/partperm.spad.dvi ${DOC}/patmatch1.spad.dvi \
+ ${DOC}/patmatch2.spad.dvi ${DOC}/pattern.spad.dvi ${DOC}/pcurve.spad.dvi \
+ ${DOC}/pdecomp.spad.dvi ${DOC}/perman.spad.dvi ${DOC}/permgrps.spad.dvi \
+ ${DOC}/perm.spad.dvi ${DOC}/pfbr.spad.dvi ${DOC}/pfo.spad.dvi \
+ ${DOC}/pfr.spad.dvi ${DOC}/pf.spad.dvi ${DOC}/pgcd.spad.dvi \
+ ${DOC}/pgrobner.spad.dvi ${DOC}/pinterp.spad.dvi ${DOC}/pleqn.spad.dvi \
+ ${DOC}/plot3d.spad.dvi ${DOC}/plot.spad.dvi ${DOC}/plottool.spad.dvi \
+ ${DOC}/polset.spad.dvi ${DOC}/poltopol.spad.dvi ${DOC}/polycat.spad.dvi \
+ ${DOC}/poly.spad.dvi ${DOC}/primelt.spad.dvi ${DOC}/print.spad.dvi \
+ ${DOC}/product.spad.dvi ${DOC}/prs.spad.dvi ${DOC}/prtition.spad.dvi \
+ ${DOC}/pscat.spad.dvi ${DOC}/pseudolin.spad.dvi ${DOC}/ptranfn.spad.dvi \
+ ${DOC}/puiseux.spad.dvi \
+ ${DOC}/qalgset.spad.dvi ${DOC}/quat.spad.dvi \
+ ${DOC}/radeigen.spad.dvi ${DOC}/radix.spad.dvi ${DOC}/random.spad.dvi \
+ ${DOC}/ratfact.spad.dvi ${DOC}/rdeef.spad.dvi ${DOC}/rderf.spad.dvi \
+ ${DOC}/rdesys.spad.dvi ${DOC}/real0q.spad.dvi ${DOC}/realzero.spad.dvi \
+ ${DOC}/reclos.spad.dvi ${DOC}/regset.spad.dvi ${DOC}/rep1.spad.dvi \
+ ${DOC}/rep2.spad.dvi ${DOC}/resring.spad.dvi ${DOC}/retract.spad.dvi \
+ ${DOC}/rf.spad.dvi ${DOC}/riccati.spad.dvi ${DOC}/rinterp.spad.dvi \
+ ${DOC}/routines.spad.dvi \
+ ${DOC}/rule.spad.dvi \
+ ${DOC}/seg.spad.dvi ${DOC}/setorder.spad.dvi ${DOC}/sets.spad.dvi \
+ ${DOC}/sex.spad.dvi ${DOC}/sf.spad.dvi ${DOC}/sgcf.spad.dvi \
+ ${DOC}/sign.spad.dvi ${DOC}/si.spad.dvi ${DOC}/smith.spad.dvi \
+ ${DOC}/solvedio.spad.dvi ${DOC}/solvefor.spad.dvi ${DOC}/solvelin.spad.dvi \
+ ${DOC}/solverad.spad.dvi ${DOC}/sortpak.spad.dvi ${DOC}/space.spad.dvi \
+ ${DOC}/special.spad.dvi ${DOC}/sregset.spad.dvi ${DOC}/s.spad.dvi \
+ ${DOC}/stream.spad.dvi ${DOC}/string.spad.dvi ${DOC}/sttaylor.spad.dvi \
+ ${DOC}/sttf.spad.dvi ${DOC}/sturm.spad.dvi ${DOC}/suchthat.spad.dvi \
+ ${DOC}/suls.spad.dvi ${DOC}/sum.spad.dvi ${DOC}/sups.spad.dvi \
+ ${DOC}/supxs.spad.dvi ${DOC}/suts.spad.dvi ${DOC}/symbol.spad.dvi \
+ ${DOC}/syssolp.spad.dvi ${DOC}/system.spad.dvi \
+ ${DOC}/tableau.spad.dvi ${DOC}/table.spad.dvi ${DOC}/taylor.spad.dvi \
+ ${DOC}/tex.spad.dvi ${DOC}/tools.spad.dvi ${DOC}/transsolve.spad.dvi \
+ ${DOC}/tree.spad.dvi ${DOC}/trigcat.spad.dvi ${DOC}/triset.spad.dvi \
+ ${DOC}/tube.spad.dvi ${DOC}/twofact.spad.dvi \
+ ${DOC}/unifact.spad.dvi ${DOC}/updecomp.spad.dvi ${DOC}/updivp.spad.dvi \
+ ${DOC}/utsode.spad.dvi \
+ ${DOC}/variable.spad.dvi ${DOC}/vector.spad.dvi ${DOC}/view2D.spad.dvi \
+ ${DOC}/view3D.spad.dvi ${DOC}/viewDef.spad.dvi ${DOC}/viewpack.spad.dvi \
+ ${DOC}/void.spad.dvi \
+ ${DOC}/weier.spad.dvi ${DOC}/wtpol.spad.dvi \
+ ${DOC}/xlpoly.spad.dvi ${DOC}/xpoly.spad.dvi \
+ ${DOC}/ystream.spad.dvi \
+ ${DOC}/zerodim.spad.dvi
+
+@
+
+\section{Test Cases}
+
+<<environment>>=
+
+TESTS=${INPUT}/INTHEORY.input ${INPUT}/VIEW2D.input ${INPUT}/TESTFR.input
+
+@
+
+<<testrules>>=
+
+${INPUT}/TESTFR.input: $(srcdir)/fr.spad.pamphlet
+ $(axiom_build_document) --tangle='TEST FR' --output=$@ $<
+
+${INPUT}/INTHEORY.input: $(srcdir)/numtheor.spad.pamphlet
+ $(axiom_build_document) --tangle='TEST INTHEORY' --output=$@ $<
+
+${INPUT}/VIEW2D.input: $(srcdir)/view2D.spad.pamphlet
+ $(axiom_build_document) --tangle='TEST VIEW2D' --output=$@ $<
+
+@
+
+\section{The Makefile Stanzas}
+
+A [[spad]] pamphlet can contain many Axiom [[categories]], [[domains]], and
+[[packages]].
+
+For the purpose of explanation we assume that the pamphlet file is
+named [[foo.spad.pamphlet]]. It contains the domains [[BAR]], [[BAX]],
+and [[BAZ]]. Thus there will be a subsection named [[foo.spad]].
+
+Since pamphlet files (e.g. [[foo.spad.pamphlet]] contain a spad file
+e.g. [[foo.spad]], it follows that every subsection contains a Makefile
+stanza that extract the [[foo.spad]] file using [[notangle]].
+
+Since pamphlet files are intended as documents it follows that each
+subsection contains a Makefile stanza that extracts a [[dvi]] file
+using [[noweave]].
+
+We could have a category, domain, or package that is in
+the ``bootstrap'' list. Bootstrap spad files contain their generated
+lisp code in special sections. The way bootstrapping works is that
+we extract the lisp code and compile it rather than extracting the
+spad code. We do this because we need the domain to exist before we
+can compile the domain. Some domains depend on themselves directly.
+Some domains depend on themselves thru a long chain of other domains.
+In either case we can't compile the domain until it exists so we
+cache the generated lisp code and, when we need to bootstrap the
+domain, we compile the raw lisp rather than the spad.
+
+This will only happen when the system is built from scratch. Once
+the system has been built the bootstrap code is no longer executed
+and these algebra files will appear as normal algebra files. That
+means that once the system has been built once only the last three
+rules will ever be executed. The first two rules happen when the
+system is built from scratch.
+
+A 5 stanza group for this case performs the following functions:
+\begin{enumerate}
+\item extract the lisp [[BAR.lsp]] from the pamphlet [[foo.spad.pamphlet]]
+\item compile and copy the bootstrap lisp to the final algebra directory
+\item extract the bootstrap [[BAR.lsp]] from the spad file [[foo.spad]]
+\item compile the extracted [[BAR]] domain
+\item copy the compiled [[BAR]] to the final algebra directory
+\end{enumerate}
+
+The subtle point here occurs in the first item. The bootstrap code
+group (in the [[layer0 bootstrap]] code chunk above) asks for the
+compiled [[.o]] files in the \File{strap/} directory. Essentially this
+code group calls for intermediate compiled files. This triggers the
+bootstrap stanzas (items 1 and 2 above). All of the other layer
+chunks ask for compiled code in the [[\${OUT}]] directory which is
+the final algebra directory.
+
+The bootstrap process works because first we ask for the compiled
+lisp code stanzas (the \File{strap/BAR.o} files), THEN we ask for
+the final algebra code stanzas (the [[\${OUT}/BAR.o]] files). This
+is a very subtle point so think it through carefully. The layer0
+bootstrap list is the only file list that calls for \File{strap/} files.
+All other layers ask for [[\${OUT}]] files. Make sure you
+understand this before you change things. If you break it the
+world will no longer compile.
+
+So we have a 3 stanza group for normal files, a 3+2 (5) stanza
+group for normal files with default code, and a 3+2 (5) stanza
+group for normal files that need to be bootstrapped. There is
+another combination that occurs, namely bootstrap code that
+also contains default code which gives a 3+2+2+2 (9) stanza case.
+(see TSETCAT for an example. Be sure to read the items in reverse order).
+
+A 9 stanza group for this case performs the following functions:
+\begin{enumerate}
+\item extract the bootstrap \File{BAR.lsp} from the \File{foo.spad.pamphlet}
+\item compile the bootstrap \File{BAR.lsp} to the \File{strap/} directory
+\item extract the bootstrap \File{BAR-.lsp} from the \File{foo.spad.pamphlet}
+\item compile the bootstrap \File{BAR-.lsp} to the \File{strap/} directory
+\item extract the spad \File{BAR.spad} from the pamphlet
+ \File{foo.spad.pamphlet}
+\item compile the extracted \File{BAR.spad} domain (to get [[BAR.o]])
+\item copy the \File{BAR.o} to the final algebra directory
+\item compile the extracted \File{BAR-.spad} domain (to get [[BAR-.o]])
+\item copy the [[BAR-.o]] to the final algebra directory
+\end{enumerate}
+
+As you can see this is just the combination of the two possible 5
+stanza case. We just have to deal with the [[BAR-]] both in regular
+and bootstrap files. The first four stanzas will only happen when
+the system is built from scratch. Once the system is built these
+four rules no longer apply and these stanzas effectively act like
+the 5 stanza rules above.
+
+I'm sure all of this seems confusing but it is very stylized code.
+Basically you need to figure out which kind of stanza group you need,
+copy an existing stanza group, and do a correct renaming of the parts.
+The decision tree looks something like:
+\begin{verbatim}
+IF (you have a regular spad domain)
+ THEN use a 3 stanza form (see YSTREAM)
+IF (you have a default spad domain (it generates [[-]] files)) AND
+ (it does not require bootstrapping)
+ THEN use the first 5 stanza form explained above (see LIECAT)
+IF (you have a normal spad domain) AND
+ (it requires bootstrapping)
+ THEN use the second 5 stanza form explained above (see VECTOR)
+IF (you have a default spad domain (it generates [[-]] files)) AND
+ (it requires bootstrapping)
+ THEN use the 9 stanza form explained above (see TSETCAT)
+\end{verbatim}
+
+\section{Generic Make Rules}
+
+The idea is to use generic rules to try to cut down the size of this file.
+
+This Makefile works very hard to cache
+intermediate results in order to minimize the re-build time. The cached
+files are kept in the current build and \File{strap/} directories.
+If one of these
+files disappears but the original pamphlet file is unchanged we only
+need to rebuild the intermediate file. These rule will attempt to do
+that and they succeed however these are intermediate files created by
+implicit rules so they would normally be deleted. To prevent the removal
+the NRLIB directory and its contents, the files are marked as .PRECIOUS.
+
+The output of the compile step is saved in a file of the same name
+and extension .out in the \${MID} directory. These files are useful for
+deriving the dependencies by scanning the ``Loading ...'' messages.
+
+<<genericDotOfiles>>=
+
+${OUT}/%.o: %.NRLIB/code.o
+ cp $*.NRLIB/code.o ${OUT}/$*.o
+
+@
+
+<<genericNRLIBfiles>>=
+
+.PRECIOUS: %.NRLIB/code.o
+%.NRLIB/code.o: %.spad
+ @ rm -rf $*.NRLIB
+ echo ")co $*.spad" | ${INTERPSYS}
+@
+
+<<genericBOOTSTRAPfiles>>=
+# Compile bootstrap file to machine object code, and the result
+# immediately available for AXIOMsys consumption.
+strap/%.o: %.lsp
+ $(DEPSYS) -- --compile --output=$@ $<
+ cp $@ ${OUT}
+@
+
+<<genericSPADfiles>>=
+
+$(OUTSRC)/%.spad: mk-target-src-algabra-dir
+
+${OUTSRC}/%.spad: $(srcdir)/%.spad.pamphlet
+ $(axiom_build_document) --tangle --output=$@ $<
+
+.PHONY: mk-target-src-algabra-dir
+mk-target-src-algabra-dir:
+ @ [ -d $(OUTSRC) ] || $(mkinstalldirs) $(OUTSRC)
+
+@
+<<genericDOCfiles>>=
+.PRECIOUS: $(builddir)/%.tex
+.PRECIOUS: $(builddir)/%.dvi
+
+$(DOC)/%.dvi: mk-target-doc-dir
+
+.PHONY: mk-target-doc-dir
+mk-target-doc-dir:
+ @ [ -d $(DOC) ] || $(mkinstalldirs) $(DOC)
+
+$(DOC)/%.dvi: $(builddir)/%.dvi
+ $(INSTALL_DATA) $< $@
+
+$(builddir)/%.dvi: $(axiom_build_texdir)/diagrams.tex \
+ $(axiom_build_texdir)/axiom.sty
+
+$(builddir)/%.dvi: $(builddir)/%.tex
+ $(axiom_build_document) --latex $<
+
+$(builddir)/%.tex: $(srcdir)/%.pamphlet
+ $(axiom_build_document) --weave --output=$@ $<
+
+$(axiom_build_texdir)/diagrams.tex: $(axiom_src_docdir)/diagrams.tex
+ $(INSTALL_DATA) $< $@
+@
+<<genericRules>>=
+
+<<genericDotOfiles>>
+<<genericNRLIBfiles>>
+<<genericBOOTSTRAPfiles>>
+<<genericSPADfiles>>
+<<genericDOCfiles>>
+
+@
+<<diagrams.tex (OUT from IN)>>=
+
+${DOC}/diagrams.tex: $(axiom_src_docdir)/diagrams.tex
+ $(INSTALL_DATA) $< $@
+
+@
+
+\section{Pamphlet file structure}
+
+Because the individual .spad files are grouped into higher-level
+algebra pamphlet files, the rules for extracting them are coded
+below as simple ``awk'' scripts that are called when the Makefile
+is constructed.
+
+There are, at present, 3 kinds of algebra files to be handled.
+First we have [[.as]] files which use the [[aldor]] compiler.
+These are ignored here as the compiler is not yet integrated.
+
+Second, there are the bootstrap files. These files live within
+their respective pamphlet files and are "captured" lisp code.
+These are necessary to create the algebra. See the
+[[src/algebra/Makefile.pamphlet]] for details.
+
+Third, there are 3 "types" of algebra which are all treated
+the same at compile time, namely the "domain", "category", and
+"package" algebra.
+
+\subsection{Finding the algebra code}
+
+NOTE: This construct is now moved to configure time. Update.
+
+Step 1 is to scan all of the algebra pamphlet files for the
+chunk names which contain the string "domain", "package", or
+"category". This is done using egrep (same as grep -E, which
+means that the pattern is an extended regular expression) because
+extended regular expressions allows the use of alternatives
+written as (domain|package|category). Thus the command
+\begin{verbatim}
+ egrep '@<<(domain|package|category) .*>>=' *.spad.pamphlet
+\end{verbatim}
+will scan the algebra files looking for special chunknames.
+Axiom's chunk names are written in a stylized form so that each
+algebra chunk name begins with one of those three symbols. Thus
+in zerodim.spad.pamphlet the LexTriangularPackage chunkname is:
+\begin{verbatim}
+@<<package LEXTRIPK LexTriangularPackage>>
+\end{verbatim}
+so this egrep will generate an output line, prefixed by the filename
+that looks like:
+\begin{verbatim}
+zerodim.spad.pamphlet:@<<package LEXTRIPK LexTriangularPackage>>=
+\end{verbatim}
+There can be many lines of output per pamphlet file, one for
+each domain, package and category cod chunk contained in the file.
+
+Step 2 is an [[awk]] command line.
+
+\subsection{Write the Makefile stanzas for the algebra files}
+
+NOTE: This construct is now moved to configure time.
+
+[awk] processes each line of the [[egrep]] output.
+
+The awk script uses [[-F:]] which is a flag that says that a [[:]] is
+the field separator. As a result the \$1 and \$2 in the awk script
+refer to the parts of the egrep output that come before and after the
+[[:]] respectively.
+
+The variable [[chunk]] is assigned the actual chunk name minus
+the @<< and >>= delimiters. In the example given above this will become
+\begin{verbatim}
+package LEXTRIPK LexTriangularPackage
+\end{verbatim}
+The call to [[split]] splits the chunk into parts separated
+by spaces. Thus
+\begin{verbatim}
+ part[1]=package
+ part[2]=LEXTRIPK
+ part[3]=LexTriangularPackage
+\end{verbatim}
+The variable [[spadfile]] in the above example is set to
+\begin{verbatim}
+${MID}/LEXTRIPK.spad
+\end{verbatim}
+Finally, in the domain example given above we print two lines.
+The first line is the Makefile stanza header which depends on the
+original [[zerodim.spad.pamphlet]] file.
+
+The second line is the body of the makefile stanza which calls
+notangle to extract the algebra from the original pamphlet using
+the chunk name and writes it to the intermediate subdirectory. In
+the case above this would resolve to [[\${MID}/LEXTRIPK.spad]].
+
+For the line given above it outputs the following:
+\begin{verbatim}
+${MID}/LEXTRIPK.spad: $(srcdir)/zerodim.spad.pamphlet
+ $(axiom_build_document) --tangle='package LEXTRIPK LexTriangularPackage' --output=$@ $<
+\end{verbatim}
+
+\subsection{Find the algebra bootstrap code}
+
+Step 3 works like step 1 above except that we are looking for
+chunk names that have the "BOOTSTRAP" string. The output will look like:
+\begin{verbatim}
+vector.spad.pamphlet:@<<VECTOR.lsp BOOTSTRAP>>=
+\end{verbatim}
+This output, which can consist of many lines per input file is piped
+into [[awk]].
+
+The process is the same way as described above except that
+there are only two parts to the chunk names
+\begin{verbatim}
+ part[1]=VECTOR.lsp
+ part[2]=BOOTSTRAP
+\end{verbatim}
+The [[lspfile]] variable is assigned
+\begin{verbatim}
+${MID}/VECTOR.lsp
+\end{verbatim}
+Finally we output two lines:
+\begin{verbatim}
+${MID}/vector.spad.pamphlet: $(srcdir)/vector.spad.pamphlet
+ $(axiom_build_document) --tangle='VECTOR.lsp BOOTSTRAP' --output=$@ $<
+\end{verbatim}
+
+The first line is the stanza head and creates a dependence between
+the intermediate file, in this case [[int/algebra/VECTOR.lsp]] and
+the input file [[src/algebra/vector.spad.pamphlet]]
+
+The second line calls [[notangle]] to extract the required chunk
+from the source file.
+
+\section{Stage markers}
+
+We output these as each stage completes.
+<<stages>>=
+$(axiom_algebra_layer_0_objects): strap-stamp
+$(axiom_algebra_layer_1_objects): 0-stamp
+$(axiom_algebra_layer_2_objects): 1-stamp
+$(axiom_algebra_layer_3_objects): 2-stamp
+$(axiom_algebra_layer_4_objects): 3-stamp
+$(axiom_algebra_layer_5_objects): 4-stamp
+$(axiom_algebra_layer_6_objects): 5-stamp
+$(axiom_algebra_layer_7_objects): 6-stamp
+$(axiom_algebra_layer_8_objects): 7-stamp
+$(axiom_algebra_layer_9_objects): 8-stamp
+$(axiom_algebra_layer_10_objects): 9-stamp
+$(axiom_algebra_layer_11_objects): 10-stamp
+$(axiom_algebra_layer_12_objects): 11-stamp
+$(axiom_algebra_layer_13_objects): 12-stamp
+$(axiom_algebra_layer_14_objects): 13-stamp
+$(axiom_algebra_layer_15_objects): 14-stamp
+$(axiom_algebra_layer_16_objects): 15-stamp
+$(axiom_algebra_layer_17_objects): 16-stamp
+$(axiom_algebra_layer_18_objects): 17-stamp
+$(axiom_algebra_layer_19_objects): 18-stamp
+$(axiom_algebra_layer_20_objects): 19-stamp
+$(axiom_algebra_layer_21_objects): 20-stamp
+$(axiom_algebra_layer_22_objects): 21-stamp
+$(axiom_algebra_layer_23_objects): 22-stamp
+$(axiom_algebra_layer_user_objects): 23-stamp
+$(axiom_algebra_bootstrap_objects): user-stamp
+
+strap-stamp: $(axiom_algebra_layer_strap_objects)
+ @ rm -f strap-stamp
+ @ $(STAMP) strap-stamp
+ @ echo =====================================
+ @ echo === algebra bootstrap complete ======
+ @ echo =====================================
+
+0-stamp: strap-stamp $(axiom_algebra_layer_0_objects)
+ @ rm -f 0-stamp
+ @ $(STAMP) 0-stamp
+ @ echo ==================================
+ @ echo === layer 0 of 23 complete ======
+ @ echo ==================================
+
+1-stamp: 0-stamp $(axiom_algebra_layer_1_objects)
+ @ rm -f 1-stamp
+ @ $(STAMP) 1-stamp
+ @ echo ==================================
+ @ echo === layer 1 of 23 complete ======
+ @ echo ==================================
+
+2-stamp: 1-stamp $(axiom_algebra_layer_2_objects)
+ @ rm -f 2-stamp
+ @ $(STAMP) 2-stamp
+ @ echo ==================================
+ @ echo === layer 2 of 23 complete ======
+ @ echo ==================================
+
+3-stamp: 2-stamp $(axiom_algebra_layer_3_objects)
+ @ rm -f 3-stamp
+ @ $(STAMP) 3-stamp
+ @ echo ==================================
+ @ echo === layer 3 of 23 complete ======
+ @ echo ==================================
+
+4-stamp: 3-stamp $(axiom_algebra_layer_4_objects)
+ @ rm -f 4-stamp
+ @ $(STAMP) 4-stamp
+ @ echo ==================================
+ @ echo === layer 4 of 23 complete ======
+ @ echo ==================================
+
+5-stamp: 4-stamp $(axiom_algebra_layer_5_objects)
+ @ rm -f 5-stamp
+ @ $(STAMP) 5-stamp
+ @ echo ==================================
+ @ echo === layer 5 of 23 complete ======
+ @ echo ==================================
+
+6-stamp: 5-stamp $(axiom_algebra_layer_6_objects)
+ @ rm -f 6-stamp
+ @ $(STAMP) 6-stamp
+ @ echo ==================================
+ @ echo === layer 6 of 23 complete ======
+ @ echo ==================================
+
+7-stamp: 6-stamp $(axiom_algebra_layer_7_objects)
+ @ rm -f 7-stamp
+ @ $(STAMP) 7-stamp
+ @ echo ==================================
+ @ echo === layer 7 of 23 complete ======
+ @ echo ==================================
+
+8-stamp: 7-stamp $(axiom_algebra_layer_8_objects)
+ @ rm -f 8-stamp
+ @ $(STAMP) 8-stamp
+ @ echo ==================================
+ @ echo === layer 8 of 23 complete ======
+ @ echo ==================================
+
+9-stamp: 8-stamp $(axiom_algebra_layer_9_objects)
+ @ rm -f 9-stamp
+ @ $(STAMP) 9-stamp
+ @ echo ==================================
+ @ echo === layer 9 of 23 complete ======
+ @ echo ==================================
+
+10-stamp: 9-stamp $(axiom_algebra_layer_10_objects)
+ @ rm -f 10-stamp
+ @ $(STAMP) 10-stamp
+ @ echo ==================================
+ @ echo === layer 10 of 23 complete ======
+ @ echo ==================================
+
+11-stamp: 10-stamp $(axiom_algebra_layer_11_objects)
+ @ rm -f 11-stamp
+ @ $(STAMP) 11-stamp
+ @ echo ==================================
+ @ echo === layer 11 of 23 complete ======
+ @ echo ==================================
+
+12-stamp: 11-stamp $(axiom_algebra_layer_12_objects)
+ @ rm -f 12-stamp
+ @ $(STAMP) 12-stamp
+ @ echo ==================================
+ @ echo === layer 12 of 23 complete ======
+ @ echo ==================================
+
+13-stamp: 12-stamp $(axiom_algebra_layer_13_objects)
+ @ rm -f 13-stamp
+ @ $(STAMP) 13-stamp
+ @ echo ==================================
+ @ echo === layer 13 of 23 complete ======
+ @ echo ==================================
+
+14-stamp: 13-stamp $(axiom_algebra_layer_14_objects)
+ @ rm -f 14-stamp
+ @ $(STAMP) 14-stamp
+ @ echo ==================================
+ @ echo === layer 14 of 23 complete ======
+ @ echo ==================================
+
+15-stamp: 14-stamp $(axiom_algebra_layer_15_objects)
+ @ rm -f 15-stamp
+ @ $(STAMP) 15-stamp
+ @ echo ==================================
+ @ echo === layer 15 of 23 complete ======
+ @ echo ==================================
+
+16-stamp: 15-stamp $(axiom_algebra_layer_16_objects)
+ @ rm -f 16-stamp
+ @ $(STAMP) 16-stamp
+ @ echo ==================================
+ @ echo === layer 16 of 23 complete ======
+ @ echo ==================================
+
+17-stamp: 16-stamp $(axiom_algebra_layer_17_objects)
+ @ rm -f 17-stamp
+ @ $(STAMP) 17-stamp
+ @ echo ==================================
+ @ echo === layer 17 of 23 complete ======
+ @ echo ==================================
+
+18-stamp: 17-stamp $(axiom_algebra_layer_18_objects)
+ @ rm -f 18-stamp
+ @ $(STAMP) 18-stamp
+ @ echo ==================================
+ @ echo === layer 18 of 23 complete ======
+ @ echo ==================================
+
+19-stamp: 18-stamp $(axiom_algebra_layer_19_objects)
+ @ rm -f 19-stamp
+ @ $(STAMP) 19-stamp
+ @ echo ==================================
+ @ echo === layer 19 of 23 complete ======
+ @ echo ==================================
+
+20-stamp: 19-stamp $(axiom_algebra_layer_20_objects)
+ @ rm -f 20-stamp
+ @ $(STAMP) 20-stamp
+ @ echo ==================================
+ @ echo === layer 20 of 23 complete ======
+ @ echo ==================================
+
+21-stamp: 20-stamp $(axiom_algebra_layer_21_objects)
+ @ rm -f 21-stamp
+ @ $(STAMP) 21-stamp
+ @ echo ==================================
+ @ echo === layer 21 of 23 complete ======
+ @ echo ==================================
+
+22-stamp: 21-stamp $(axiom_algebra_layer_22_objects)
+ @ rm -f 22-stamp
+ @ $(STAMP) 22-stamp
+ @ echo ==================================
+ @ echo === layer 22 of 23 complete ======
+ @ echo ==================================
+
+23-stamp: 22-stamp $(axiom_algebra_layer_23_objects)
+ @ rm -f 23-stamp
+ @ $(STAMP) 23-stamp
+ @ echo ==================================
+ @ echo === layer 23 of 23 complete ======
+ @ echo ==================================
+
+user-stamp: 23-stamp $(axiom_algebra_layer_user_objects)
+ @ rm -f user-stamp
+ @ $(STAMP) user-stamp
+
+
+# bootstrap-pre: user-stamp $(axiom_algebra_bootstrap_nrlibs)
+# $(axiom_algebra_bootstrap_nrlibs): user-stamp
+
+# bootstrap-post: bootstrap-pre $(axiom_algebra_bootstrap_objects)
+
+bootstrap-stamp: $(axiom_algebra_bootstrap_objects)
+ @ rm -f bootstrap-stamp
+ @ $(STAMP) bootstrap-stamp
+ @ echo ==================================
+ @ echo === algebra complete ======
+ @ echo ==================================
+@
+
+\section{The Makefile}
+
+<<*>>=
+<<environment>>
+
+subdir = src/algebra/
+
+<<layer0 bootstrap>>
+<<layer0 copy>>
+<<layer0>>
+<<layer1>>
+<<layer2>>
+<<layer3>>
+<<layer4>>
+<<layer5>>
+<<layer6>>
+<<layer7>>
+<<layer8>>
+<<layer9>>
+<<layer10>>
+<<layer11>>
+<<layer12>>
+<<layer13>>
+<<layer14>>
+<<layer15>>
+<<layer16>>
+<<layer17>>
+<<layer18>>
+<<layer19>>
+<<layer20>>
+<<layer21>>
+<<layer22>>
+<<layer23>>
+<<USERLAYER>>
+
+# The algebra build is not yet ready for parallel build.
+.NOTPARALLEL:
+
+.PHONY: all all-algebra mkdir-output-directory
+all: all-ax
+
+all-ax all-algebra: stamp
+ @ echo finished $(builddir)
+
+stamp: mkdir-output-directory ${SPADFILES} bootstrap-stamp ${TESTS}
+ -rm -f stamp
+ $(STAMP) stamp
+
+mkdir-output-directory:
+ $(mkinstalldirs) $(OUTSRC)
+
+everything: check lib db cmd gloss
+ @ echo 4303 invoking make in `pwd` with parms:
+ @ echo SYS= ${SYS} LSP= ${LSP}
+ @ echo MNT= ${MNT} LISP=${LISP} BYE=${BYE}
+
+check:
+ @ echo 4305 Checking that INTERP.EXPOSED and NRLIBs are consistent
+ @ echo 4306 libcheck needs to use exposed.lsp, not INTERP.EXPOSED
+
+
+<<genericRules>>
+
+<<testrules>>
+<<diagrams.tex (OUT from IN)>>
+<<stages>>
+
+mostlyclean-local:
+ @ -rm -f $(OUT)/*.$(OBJEXT)
+ @ -rm -rf *.NRLIB
+
+clean-local: mostlyclean-local
+
+distclean-local: clean-local
+
+include extract-lisp-files.mk
+include extract-spad.mk
+
+.NOTPARALLEL:
+
+@
+\eject
+\begin{thebibliography}{99}
+\bibitem{1} nothing
+\end{thebibliography}
+\end{document}