axiom-developer
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Axiom-developer] 20080612.01.tpd.patch (general form updates for books)


From: daly
Subject: [Axiom-developer] 20080612.01.tpd.patch (general form updates for books)
Date: Fri, 13 Jun 2008 10:36:07 -0500

The Makefile machinery has been refined, bookvol10 has been expanded,
bookvol11 is now built from the books directory, and the whole set now
has indexing.

bookvol0 (jenks and sutor) now has the \condata expression expanded
properly and the appendix sections are now properly labelled.
=====================================================================
diff --git a/books/Makefile.pamphlet b/books/Makefile.pamphlet
index 75c7e81..c8af5f5 100644
--- a/books/Makefile.pamphlet
+++ b/books/Makefile.pamphlet
@@ -29,349 +29,27 @@ BOOKS=${PDF}/bookvol0.pdf ${PDF}/bookvol1.pdf 
${PDF}/bookvol2.pdf \
 
 all: ${PDF}/axiom.sty ${BOOKS} ${PDF}/toc.pdf
 
-@
-\section{Volume 0: Axiom Jenks and Sutor}
-This is the reconstructed Jenks and Sutor volume.
-<<*>>=
-${PDF}/bookvol0.pdf: ${IN}/bookvol0.pamphlet 
-       @echo 0 making ${PDF}/bookvol0.pdf from ${IN}/bookvol0.pamphlet
+${PDF}/%.pdf: ${IN}/%.pamphlet 
+       @echo 0 making ${PDF}/$*.pdf from ${IN}/$*.pamphlet
        @(cd ${PDF} ; \
-         cp ${IN}/bookvol0.pamphlet ${PDF} ; \
+         cp ${IN}/$*.pamphlet ${PDF} ; \
          cp -pr ${IN}/ps ${PDF} ; \
-         ${WEAVE} -delay bookvol0.pamphlet >bookvol0.tex ; \
-         if [ -z "${NOISE}" ] ; then \
-           ${LATEX} bookvol0.tex ; \
-           ${LATEX} bookvol0.tex >/dev/null ; \
-           ${DVIPS} bookvol0.dvi 2>/dev/null ; \
-           ${PS2PDF} bookvol0.ps >/dev/null ; \
-           ${RM} bookvol0.aux bookvol0.dvi bookvol0.log bookvol0.ps \
-                  bookvol0.idx bookvol0.tex bookvol0.pamphlet ; \
-         else \
-           ${LATEX} bookvol0.tex >${TMP}/trace ; \
-           echo ...first latex complete ; \
-           ${LATEX} bookvol0.tex >${TMP}/trace ; \
-           ${DVIPS} bookvol0.dvi 2>${TMP}/trace  ; \
-           ${PS2PDF} bookvol0.ps >${TMP}/trace  ; \
-           ${RM} bookvol0.aux bookvol0.dvi bookvol0.log bookvol0.ps \
-                  bookvol0.idx bookvol0.tex bookvol0.pamphlet ; \
-         fi )
-
-@
-\section{Volume 1: Axiom Tutorial}
-This is the tutorial volume. ISBN 1-411-66587-X. 
-Hardcopy is available from Amazon.com or Lulu.com.
-<<*>>=
-${PDF}/bookvol1.pdf: ${IN}/bookvol1.pamphlet 
-       @echo 1 making ${PDF}/bookvol1.pdf from ${IN}/bookvol1.pamphlet
-       @(cd ${PDF} ; \
-         cp ${IN}/bookvol1.pamphlet ${PDF} ; \
-         cp -pr ${IN}/ps ${PDF} ; \
-         ${WEAVE} -delay bookvol1.pamphlet >bookvol1.tex ; \
-         if [ -z "${NOISE}" ] ; then \
-           ${LATEX} bookvol1.tex ; \
-           ${LATEX} bookvol1.tex >/dev/null ; \
-           ${DVIPS} bookvol1.dvi 2>/dev/null ; \
-           ${PS2PDF} bookvol1.ps >/dev/null ; \
-           ${RM} bookvol1.aux bookvol1.dvi bookvol1.log bookvol1.ps \
-                  bookvol1.idx bookvol1.tex bookvol1.pamphlet ; \
-         else \
-           ${LATEX} bookvol1.tex >${TMP}/trace ; \
-           echo ...first latex complete ; \
-           ${LATEX} bookvol1.tex >${TMP}/trace ; \
-           ${DVIPS} bookvol1.dvi 2>${TMP}/trace  ; \
-           ${PS2PDF} bookvol1.ps >${TMP}/trace  ; \
-           ${RM} bookvol1.aux bookvol1.dvi bookvol1.log bookvol1.ps \
-                  bookvol1.idx bookvol1.tex bookvol1.pamphlet ; \
-         fi )
-
-@
-\section{Volume 2: Axiom Users Guide}
-This is a more detailed explanation with current information
-for Axiom users.
-<<*>>=
-${PDF}/bookvol2.pdf: ${IN}/bookvol2.pamphlet 
-       @echo 2 making ${PDF}/bookvol2.pdf from ${IN}/bookvol2.pamphlet
-       @(cd ${PDF} ; \
-         cp ${IN}/bookvol2.pamphlet ${PDF} ; \
-         ${WEAVE} -delay bookvol2.pamphlet >bookvol2.tex ; \
-         if [ -z "${NOISE}" ] ; then \
-           ${LATEX} bookvol2.tex ; \
-           ${LATEX} bookvol2.tex >/dev/null ; \
-           ${DVIPS} bookvol2.dvi 2>/dev/null ; \
-           ${PS2PDF} bookvol2.ps >/dev/null ; \
-           ${RM} bookvol2.aux bookvol2.dvi bookvol2.log bookvol2.ps \
-                  bookvol2.idx bookvol2.tex bookvol2.pamphlet ; \
-         else \
-           ${LATEX} bookvol2.tex >${TMP}/trace ; \
-           echo ...first latex complete ; \
-           ${LATEX} bookvol2.tex >${TMP}/trace ; \
-           ${DVIPS} bookvol2.dvi 2>${TMP}/trace  ; \
-           ${PS2PDF} bookvol2.ps >${TMP}/trace  ; \
-           ${RM} bookvol2.aux bookvol2.dvi bookvol2.log bookvol2.ps \
-                  bookvol2.idx bookvol2.tex bookvol2.pamphlet ; \
-         fi )
-
-@
-\section{Volume 3: Axiom Programmers Guide}
-This is information about the language and algebra hierarchy
-for Spad language programmers.
-<<*>>=
-${PDF}/bookvol3.pdf: ${IN}/bookvol3.pamphlet 
-       @echo making ${PDF}/bookvol3.pdf from ${IN}/bookvol3.pamphlet
-       @(cd ${PDF} ; \
-         cp ${IN}/bookvol3.pamphlet ${PDF} ; \
-         ${WEAVE} -delay bookvol3.pamphlet >bookvol3.tex ; \
-         if [ -z "${NOISE}" ] ; then \
-           ${LATEX} bookvol3.tex ; \
-           ${LATEX} bookvol3.tex >/dev/null ; \
-           ${DVIPS} bookvol3.dvi 2>/dev/null ; \
-           ${PS2PDF} bookvol3.ps >/dev/null ; \
-           ${RM} bookvol3.aux bookvol3.dvi bookvol3.log bookvol3.ps \
-                  bookvol3.idx bookvol3.tex bookvol3.pamphlet ; \
-         else \
-           ${LATEX} bookvol3.tex >${TMP}/trace ; \
-           echo ...first latex complete ; \
-           ${LATEX} bookvol3.tex >${TMP}/trace ; \
-           ${DVIPS} bookvol3.dvi 2>${TMP}/trace  ; \
-           ${PS2PDF} bookvol3.ps >${TMP}/trace  ; \
-           ${RM} bookvol3.aux bookvol3.dvi bookvol3.log bookvol3.ps \
-                  bookvol3.idx bookvol3.tex bookvol3.pamphlet ; \
-         fi )
-
-@
-\section{Volume 4: Axiom Developers Guide}
-This is a collection of userful information for developers.
-<<*>>=
-${PDF}/bookvol4.pdf: ${IN}/bookvol4.pamphlet 
-       @echo making ${PDF}/bookvol4.pdf from ${IN}/bookvol4.pamphlet
-       @(cd ${PDF} ; \
-         cp ${IN}/bookvol4.pamphlet ${PDF} ; \
-         ${WEAVE} -delay bookvol4.pamphlet >bookvol4.tex ; \
-         if [ -z "${NOISE}" ] ; then \
-           ${LATEX} bookvol4.tex ; \
-           ${LATEX} bookvol4.tex >/dev/null ; \
-           ${DVIPS} bookvol4.dvi 2>/dev/null ; \
-           ${PS2PDF} bookvol4.ps >/dev/null ; \
-           ${RM} bookvol4.aux bookvol4.dvi bookvol4.log bookvol4.ps \
-                  bookvol4.idx bookvol4.tex bookvol4.pamphlet ; \
-         else \
-           ${LATEX} bookvol4.tex >${TMP}/trace ; \
-           echo ...first latex complete ; \
-           ${LATEX} bookvol4.tex >${TMP}/trace ; \
-           ${DVIPS} bookvol4.dvi 2>${TMP}/trace  ; \
-           ${PS2PDF} bookvol4.ps >${TMP}/trace  ; \
-           ${RM} bookvol4.aux bookvol4.dvi bookvol4.log bookvol4.ps \
-                  bookvol4.idx bookvol4.tex bookvol4.pamphlet ; \
-         fi )
-
-@
-\section{Volume 5: Axiom Interpreter}
-This is the source code and explanation for the interpreter.
-<<*>>=
-${PDF}/bookvol5.pdf: ${IN}/bookvol5.pamphlet 
-       @echo making ${PDF}/bookvol5.pdf from ${IN}/bookvol5.pamphlet
-       @(cd ${PDF} ; \
-         cp ${IN}/bookvol5.pamphlet ${PDF} ; \
-         ${WEAVE} -delay bookvol5.pamphlet >bookvol5.tex ; \
-         if [ -z "${NOISE}" ] ; then \
-           ${LATEX} bookvol5.tex ; \
-           ${LATEX} bookvol5.tex >/dev/null ; \
-           ${DVIPS} bookvol5.dvi 2>/dev/null ; \
-           ${PS2PDF} bookvol5.ps >/dev/null ; \
-           ${RM} bookvol5.aux bookvol5.dvi bookvol5.log bookvol5.ps \
-                  bookvol5.idx bookvol5.tex bookvol5.pamphlet ; \
-         else \
-           ${LATEX} bookvol5.tex >${TMP}/trace ; \
-           echo ...first latex complete ; \
-           ${LATEX} bookvol5.tex >${TMP}/trace ; \
-           ${DVIPS} bookvol5.dvi 2>${TMP}/trace  ; \
-           ${PS2PDF} bookvol5.ps >${TMP}/trace  ; \
-           ${RM} bookvol5.aux bookvol5.dvi bookvol5.log bookvol5.ps \
-                  bookvol5.idx bookvol5.tex bookvol5.pamphlet ; \
-         fi )
-
-@
-\section{Volume 6: Axiom Command}
-This covers the axiom commands, sman, and some other system related issues.
-<<*>>=
-${PDF}/bookvol6.pdf: ${IN}/bookvol6.pamphlet 
-       @echo making ${PDF}/bookvol6.pdf from ${IN}/bookvol6.pamphlet
-       @(cd ${PDF} ; \
-         cp ${IN}/bookvol6.pamphlet ${PDF} ; \
-         ${WEAVE} -delay bookvol6.pamphlet >bookvol6.tex ; \
-         if [ -z "${NOISE}" ] ; then \
-           ${LATEX} bookvol6.tex ; \
-           ${LATEX} bookvol6.tex >/dev/null ; \
-           ${DVIPS} bookvol6.dvi 2>/dev/null ; \
-           ${PS2PDF} bookvol6.ps >/dev/null ; \
-           ${RM} bookvol6.aux bookvol6.dvi bookvol6.log bookvol6.ps \
-                  bookvol6.idx bookvol6.tex bookvol6.pamphlet ; \
-         else \
-           ${LATEX} bookvol6.tex >${TMP}/trace ; \
-           echo ...first latex complete ; \
-           ${LATEX} bookvol6.tex >${TMP}/trace ; \
-           ${DVIPS} bookvol6.dvi 2>${TMP}/trace  ; \
-           ${PS2PDF} bookvol6.ps >${TMP}/trace  ; \
-           ${RM} bookvol6.aux bookvol6.dvi bookvol6.log bookvol6.ps \
-                  bookvol6.idx bookvol6.tex bookvol6.pamphlet ; \
-         fi )
-
-@
-\section{Volume 7: Axiom Hyperdoc}
-This is the source and explanation for the X11 hyperdoc subsystem
-<<*>>=
-${PDF}/bookvol7.pdf: ${IN}/bookvol7.pamphlet 
-       @echo making ${PDF}/bookvol7.pdf from ${IN}/bookvol7.pamphlet
-       @(cd ${PDF} ; \
-         cp ${IN}/bookvol7.pamphlet ${PDF} ; \
-         ${WEAVE} -delay bookvol7.pamphlet >bookvol7.tex ; \
-         if [ -z "${NOISE}" ] ; then \
-           ${LATEX} bookvol7.tex ; \
-           ${LATEX} bookvol7.tex >/dev/null ; \
-           ${DVIPS} bookvol7.dvi 2>/dev/null ; \
-           ${PS2PDF} bookvol7.ps >/dev/null ; \
-           ${RM} bookvol7.aux bookvol7.dvi bookvol7.log bookvol7.ps \
-                  bookvol7.idx bookvol7.tex bookvol7.pamphlet ; \
-         else \
-           ${LATEX} bookvol7.tex >${TMP}/trace ; \
-           echo ...first latex complete ; \
-           ${LATEX} bookvol7.tex >${TMP}/trace ; \
-           ${DVIPS} bookvol7.dvi 2>${TMP}/trace  ; \
-           ${PS2PDF} bookvol7.ps >${TMP}/trace  ; \
-           ${RM} bookvol7.aux bookvol7.dvi bookvol7.log bookvol7.ps \
-                  bookvol7.idx bookvol7.tex bookvol7.pamphlet ; \
-         fi )
-
-@
-\section{Volume 8: Axiom Graphics}
-This is the source and explanation for the X11 graphics subsystem
-<<*>>=
-${PDF}/bookvol8.pdf: ${IN}/bookvol8.pamphlet 
-       @echo making ${PDF}/bookvol8.pdf from ${IN}/bookvol8.pamphlet
-       @(cd ${PDF} ; \
-         cp ${IN}/bookvol8.pamphlet ${PDF} ; \
-         ${WEAVE} -delay bookvol8.pamphlet >bookvol8.tex ; \
-         if [ -z "${NOISE}" ] ; then \
-           ${LATEX} bookvol8.tex ; \
-           ${MAKEINDEX} bookvol8 >/dev/null ; \
-           ${LATEX} bookvol8.tex >/dev/null ; \
-           ${DVIPS} bookvol8.dvi 2>/dev/null ; \
-           ${PS2PDF} bookvol8.ps >/dev/null ; \
-           ${RM} bookvol8.aux bookvol8.dvi bookvol8.log bookvol8.ps \
-                  bookvol8.idx bookvol8.tex bookvol8.pamphlet ; \
-         else \
-           ${LATEX} bookvol8.tex >${TMP}/trace ; \
-           echo ...first latex complete ; \
-           ${MAKEINDEX} bookvol8 >${TMP}/trace ; \
-           ${LATEX} bookvol8.tex >${TMP}/trace ; \
-           ${DVIPS} bookvol8.dvi 2>${TMP}/trace  ; \
-           ${PS2PDF} bookvol8.ps >${TMP}/trace  ; \
-           ${RM} bookvol8.aux bookvol8.dvi bookvol8.log bookvol8.ps \
-                  bookvol8.idx bookvol8.tex bookvol8.pamphlet ; \
-         fi )
-
-@
-\section{Volume 9: Axiom Compiler}
-This is the source and explanation for the spad compiler.
-<<*>>=
-${PDF}/bookvol9.pdf: ${IN}/bookvol9.pamphlet 
-       @echo making ${PDF}/bookvol9.pdf from ${IN}/bookvol9.pamphlet
-       @(cd ${PDF} ; \
-         cp ${IN}/bookvol9.pamphlet ${PDF} ; \
-         ${WEAVE} -delay bookvol9.pamphlet >bookvol9.tex ; \
-         if [ -z "${NOISE}" ] ; then \
-           ${LATEX} bookvol9.tex ; \
-           ${LATEX} bookvol9.tex >/dev/null ; \
-           ${DVIPS} bookvol9.dvi 2>/dev/null ; \
-           ${PS2PDF} bookvol9.ps >/dev/null ; \
-           ${RM} bookvol9.aux bookvol9.dvi bookvol9.log bookvol9.ps \
-                  bookvol9.idx bookvol9.tex bookvol9.pamphlet ; \
-         else \
-           ${LATEX} bookvol9.tex >${TMP}/trace ; \
-           echo ...first latex complete ; \
-           ${LATEX} bookvol9.tex >${TMP}/trace ; \
-           ${DVIPS} bookvol9.dvi 2>${TMP}/trace  ; \
-           ${PS2PDF} bookvol9.ps >${TMP}/trace  ; \
-           ${RM} bookvol9.aux bookvol9.dvi bookvol9.log bookvol9.ps \
-                  bookvol9.idx bookvol9.tex bookvol9.pamphlet ; \
-         fi )
-
-@
-\section{Volume 10: Axiom Algebra}
-This ia multi-volumne set covering the algebra.
-<<*>>=
-${PDF}/bookvol10.pdf: ${IN}/bookvol10.pamphlet 
-       @echo 10 making ${PDF}/bookvol10.pdf from ${IN}/bookvol10.pamphlet
-       @(cd ${PDF} ; \
-         cp ${IN}/bookvol10.pamphlet ${PDF} ; \
-         ${WEAVE} -delay bookvol10.pamphlet >bookvol10.tex ; \
-         if [ -z "${NOISE}" ] ; then \
-           ${LATEX} bookvol10.tex ; \
-           ${LATEX} bookvol10.tex >/dev/null ; \
-           ${DVIPS} bookvol10.dvi 2>/dev/null ; \
-           ${PS2PDF} bookvol10.ps >/dev/null ; \
-           ${RM} bookvol10.aux bookvol10.dvi bookvol10.log bookvol10.ps \
-                  bookvol10.idx bookvol10.tex bookvol10.pamphlet ; \
-         else \
-           ${LATEX} bookvol10.tex >${TMP}/trace ; \
-           echo ...first latex complete ; \
-           ${LATEX} bookvol10.tex >${TMP}/trace ; \
-           ${DVIPS} bookvol10.dvi 2>${TMP}/trace  ; \
-           ${PS2PDF} bookvol10.ps >${TMP}/trace  ; \
-           ${RM} bookvol10.aux bookvol10.dvi bookvol10.log bookvol10.ps \
-                  bookvol10.idx bookvol10.tex bookvol10.pamphlet ; \
-         fi )
-
-@
-\section{Volume 11: Axiom Browser}
-This is the source and explanation of the new Firefox browser front end.
-<<*>>=
-${PDF}/bookvol11.pdf: ${IN}/bookvol11.pamphlet 
-       @echo 11 making ${PDF}/bookvol11.pdf from ${IN}/bookvol11.pamphlet
-       @(cd ${PDF} ; \
-         cp ${IN}/bookvol11.pamphlet ${PDF} ; \
-         ${WEAVE} -delay bookvol11.pamphlet >bookvol11.tex ; \
-         if [ -z "${NOISE}" ] ; then \
-           ${LATEX} bookvol11.tex ; \
-           ${LATEX} bookvol11.tex >/dev/null ; \
-           ${DVIPS} bookvol11.dvi 2>/dev/null ; \
-           ${PS2PDF} bookvol11.ps >/dev/null ; \
-           ${RM} bookvol11.aux bookvol11.dvi bookvol11.log bookvol11.ps \
-                  bookvol11.idx bookvol11.tex bookvol11.pamphlet ; \
-         else \
-           ${LATEX} bookvol11.tex >${TMP}/trace ; \
-           echo ...first latex complete ; \
-           ${LATEX} bookvol11.tex >${TMP}/trace ; \
-           ${DVIPS} bookvol11.dvi 2>${TMP}/trace  ; \
-           ${PS2PDF} bookvol11.ps >${TMP}/trace  ; \
-           ${RM} bookvol11.aux bookvol11.dvi bookvol11.log bookvol11.ps \
-                  bookvol11.idx bookvol11.tex bookvol11.pamphlet ; \
-         fi )
-
-@
-\section{Volume 12: Axiom Crystal}
-This is the design documents for the crystal interface.
-<<*>>=
-${PDF}/bookvol12.pdf: ${IN}/bookvol12.pamphlet 
-       @echo 12 making ${PDF}/bookvol12.pdf from ${IN}/bookvol12.pamphlet
-       @(cd ${PDF} ; \
-         cp ${IN}/bookvol12.pamphlet ${PDF} ; \
-         ${WEAVE} -delay bookvol12.pamphlet >bookvol12.tex ; \
+         ${WEAVE} -delay $*.pamphlet >$*.tex ; \
          if [ -z "${NOISE}" ] ; then \
-           ${LATEX} bookvol12.tex ; \
-           ${LATEX} bookvol12.tex >/dev/null ; \
-           ${DVIPS} bookvol12.dvi 2>/dev/null ; \
-           ${PS2PDF} bookvol12.ps >/dev/null ; \
-           ${RM} bookvol12.aux bookvol12.dvi bookvol12.log bookvol12.ps \
-                  bookvol12.idx bookvol12.tex bookvol12.pamphlet ; \
+           ${LATEX} $*.tex ; \
+           ${MAKEINDEX} $* >/dev/null ; \
+           ${LATEX} $*.tex >/dev/null ; \
+           ${DVIPS} $*.dvi 2>/dev/null ; \
+           ${PS2PDF} $*.ps >/dev/null ; \
+           ${RM} $*.aux $*.dvi $*.log $*.ps $*.idx $*.tex $*.pamphlet ; \
          else \
-           ${LATEX} bookvol12.tex >${TMP}/trace ; \
+           ${LATEX} $*.tex >${TMP}/trace ; \
            echo ...first latex complete ; \
-           ${LATEX} bookvol12.tex >${TMP}/trace ; \
-           ${DVIPS} bookvol12.dvi 2>${TMP}/trace  ; \
-           ${PS2PDF} bookvol12.ps >${TMP}/trace  ; \
-           ${RM} bookvol12.aux bookvol12.dvi bookvol12.log bookvol12.ps \
-                  bookvol12.idx bookvol12.tex bookvol12.pamphlet ; \
+           ${MAKEINDEX} $* >${TMP}/trace ; \
+           ${LATEX} $*.tex >${TMP}/trace ; \
+           ${DVIPS} $*.dvi 2>${TMP}/trace  ; \
+           ${PS2PDF} $*.ps >${TMP}/trace  ; \
+           ${RM} $*.aux $*.dvi $*.log $*.ps $*.idx $*.tex $*.pamphlet ; \
          fi )
 
 @
@@ -444,12 +122,12 @@ ${PDF}/toc.pdf: ${BOOKS}
          ${LATEX} toc.tex ; \
          ${DVIPS} toc.dvi 2>/dev/null ; \
          ${PS2PDF} toc.ps >/dev/null ; \
-         ${RM} -f *.toc toc.aux toc.dvi toc.log toc.ps toc.tex toc.toc ; \
+         ${RM} -f toc.aux toc.dvi toc.log toc.ps toc.tex toc.toc ; \
        else \
          ${LATEX} toc.tex >${TMP}/trace ; \
          ${DVIPS} toc.dvi 2>${TMP}/trace ; \
          ${PS2PDF} toc.ps >${TMP}/trace ; \
-         ${RM} -f *.toc toc.aux toc.dvi toc.log toc.ps toc.tex toc.toc ; \
+         ${RM} -f toc.aux toc.dvi toc.log toc.ps toc.tex toc.toc ; \
        fi )
 
 ${PDF}/axiom.sty: ${SRC}/scripts/tex/axiom.sty
diff --git a/books/bookvol0.pamphlet b/books/bookvol0.pamphlet
index 8de7c52..ca200f4 100644
--- a/books/bookvol0.pamphlet
+++ b/books/bookvol0.pamphlet
@@ -1,5 +1,7 @@
 \documentclass{book}
 %\usepackage{axiom}
+\usepackage{makeidx}
+\makeindex
 \usepackage{graphicx}
 % struggle with latex figure-floating behavior
 \renewcommand\floatpagefraction{.9}
@@ -60011,7 +60013,7 @@ compilers.
 \newcommand{\lanb}{{\tt [}}
 \newcommand{\ranb}{{\tt ]}}
 \newcommand{\vertline}{$|$}
-
+\appendix
 \chapter{Axiom System Commands}
 \label{ugSysCmd}
 
@@ -60127,7 +60129,6 @@ Finally, in the syntax descriptions we may also list 
the syntax of
 related commands.
 
 \section{)abbreviation}
-
 \index{abbreviation}
 
 
@@ -60250,6 +60251,28 @@ obtained by translating the BOOT code.
 {\tt )set} \index{ugSysCmdset}, and
 {\tt )system} \index{ugSysCmdsystem}.
 
+\section{)browse}
+\index{browse}
+\par\noindent{\bf User Level Required:} interpreter
+\par\noindent{\bf Command Syntax:}
+\begin{list}{}
+\item {\tt )browse}
+\end{list}
+
+\par\noindent{\bf Command Description:}
+
+The browse command changes the interpreter command loop to listen
+for http connections on IP address 127.0.0.1 port 8085.
+
+In order to access the new pages start Firefox.
+Assuming the path to the file rootpage.xhtml is:\\
+{\tt /spad/mnt/linux/doc/hypertex/rootpage.xhtml}\\
+you would visit the URL:\\
+{\tt 127.0.0.1:8085/spad/mnt/linux/doc/hypertex/rootpage.xhtml}
+
+Note that it may be necessary to install fonts into the Firefox
+browser in order to see correct mathML mathematics output. See
+the faq file for details.
 
 \section{)cd}
 \index{ugSysCmdcd}
@@ -60745,15 +60768,6 @@ should stop at the first error.
 The value of the {\tt )set break} variable then controls what happens.
 
 
-%% BEGIN OBSOLTE
-% It is important for you to realize that it does not suffice to compile a
-% constructor to use the new code in the interpreter.
-% After compilation, the {\tt )load} command with the
-% {\tt )update} option should be used to bring in the new code
-% and update internal system tables with information about the
-% constructor.
-%% END OBSOLTE
-
 \par\noindent{\bf Also See:}
 {\tt )abbreviation} \index{ugSysCmdabbreviation},
 {\tt )edit} \index{ugSysCmdedit}, and
@@ -62411,9 +62425,11 @@ $\hbox{{\sf Category}}_{i}$ & is a category to which 
the category belongs. \\
 $\hbox{{\rm op}}_{j}$ & is an operation exported by the category.
 \end{tabular}
 
-\appendix{Categories}
-%tpdclip2
 
+\def\condata#1#2#3#4{{%
+   \par\vskip 1pt%
+   {\bf #2}\allowbreak\{{\tt #1}\}: {\sl #3} {\tt with }%
+   {\rm #4}\par}}
 % ----------------------------------------------------------------------
 \chapter{constructorListing}
 % ----------------------------------------------------------------------
@@ -62883,7 +62899,6 @@ $\hbox{{\sf Category}}_{i}$ & is a category to which 
the domain belongs. \\
 $\hbox{{\rm op}}_{j}$ & is an operation exported by the domain.
 \end{tabular}
 
-\appendix{Domains}
 
 % ----------------------------------------------------------------------
 %\begin{constructorListing}
@@ -64126,7 +64141,6 @@ $\hbox{{\sf Category}}_{i}$ & is a category to which 
the package belongs. \\
 $\hbox{{\rm op}}_{j}$ & is an operation exported by the package.
 \end{tabular}
 
-\appendix{Packages}
 
 % ----------------------------------------------------------------------
 %\begin{constructorListing}
@@ -64903,7 +64917,6 @@ in the input area on the main Browse menu and then 
click on
 
 \vskip \baselineskip
 %]
-\appendix{Operations}
 \def\alt#1#2{{$\lbrace$#1$\mid$#2$\rbrace$}}
 \def\altx#1#2#3{{$\lbrace$#1$\mid$#2$\mid$#3$\rbrace$}}
 \def\opt#1{{$\,\lbrack$#1$\rbrack$}}
@@ -65725,8 +65738,6 @@ drawOneScherk(s) ==                                  
Draw the surface by
 \chapter{Glossary}
 \label{ugGlossary}
 
-\appendix{Glossary}
-
 \sloppy
 
 \ourGloss{\glossarySyntaxTerm{!}}{%
@@ -67647,7 +67658,7 @@ Each interactive {\it frame} has its own workspace.
 \eject
 \setcounter{chapter}{7} % Appendix H
 \chapter{License}
-%\appendix{License}
+
 \begin{verbatim}
 Portions of this document are Copyright by their respective authors.
 All rights reserved by the authors. Used by permission.
@@ -67687,33 +67698,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH 
DAMAGE.
 \end{verbatim}
 
 \eject
-\begin{verbatim}
-Testing involves function calls which are intended to fail in
-the normal course of testing. In order to distinguish cases
-where things fail by design you can issue the command
-{\tt )set message test on}. This inhibits the message
-"Daly Bug". You can now distinguish between intentional
-failures which do not contain the "Daly Bug" message and
-unintentional failures which do.
-
-
-RDJ note to RSS: Expressions not statements or lines-- By an
-expression I mean any syntactically correct program fragment.
-Everything in AXIOM is an expression since every fragment has a value
-and a type.  In most languages including LISP, a "statement" is
-different from an expression: it is executed for side-effect only and
-an error is incurred if you assign it a value.  This "gimmick" takes
-care of incomplete expressions such as "if x > 0 then y" in blocks.
-In LISP, "u := (if x > 0 then y)" is illegal but in AXIOM it is legal.
-Also, in AXIOM the value of a repeat loop is void even though you
-might be be able to prove that it always returns a valid value (you
-have an example of this)!  This will be considered a bug not a
-feature. But it is how things stand.  In any case---this point should
-be in a box somewhere since it is key to a user's understanding to the
-language. I am not sure where. You only gain an appreciation for it
-after awhile in chapter 5.
-
-\end{verbatim}
 \eject
 \begin{thebibliography}{99}
 \bibitem{1} Lamport, Leslie, 
@@ -67728,5 +67712,8 @@ Addison-Wesley Publishing Company, Inc.,
 \bibitem{3} Jenks, Richard D. and Sutor, Robert S.,\\
 {\it Axiom, The Scientific Computation System} \\
 Springer-Verlag, New York, NY 1992 ISBN 0-387-97855-0
+\bibitem{4} Daly, Timothy, "The Axiom Literate Documentation"\\
+{\bf http://axiom.axiom-developer.org/axiom-website/documentation.html}
 \end{thebibliography}
+\printindex
 \end{document}
diff --git a/books/bookvol1.pamphlet b/books/bookvol1.pamphlet
index 25bb7bc..c758fce 100644
--- a/books/bookvol1.pamphlet
+++ b/books/bookvol1.pamphlet
@@ -14819,8 +14819,8 @@ ISBN 0-387-97855-0
 Center for the Study of Language and Information
 ISBN 0-937073-81-4
 Stanford CA (1992) 
-\bibitem{3} Page, William, ``The Axiom Wiki Website''\\
-{\bf http://wiki.axiom-developer.org}
+\bibitem{3} Daly, Timothy, ``The Axiom Wiki Website''\\
+{\bf http://axiom.axiom-developer.org}
 \bibitem{4} Watt, Stephen, ``Aldor'',\\
 {\bf http://www.aldor.org}
 \bibitem{5} Lamport, Leslie, ``Latex -- A Document Preparation System'',
@@ -14828,6 +14828,8 @@ Addison-Wesley, New York ISBN 0-201-52983-1
 \bibitem{6} Ramsey, Norman ``Noweb -- A Simple, Extensible Tool for
 Literate Programming''\\
 {\bf http://www.eecs.harvard.edu/ $\tilde{}$nr/noweb}
+\bibitem{7} Daly, Timothy, "The Axiom Literate Documentation"\\
+{\bf http://axiom.axiom-developer.org/axiom-website/documentation.html}
 \end{thebibliography}
 \printindex
 \end{document}
diff --git a/books/bookvol10.pamphlet b/books/bookvol10.pamphlet
index 089b5b2..1148bd8 100644
--- a/books/bookvol10.pamphlet
+++ b/books/bookvol10.pamphlet
@@ -1,4 +1,5 @@
 \documentclass{book}
+\usepackage{amssymb}
 \usepackage{axiom}
 \usepackage{makeidx}
 \makeindex
@@ -290,44 +291,1861 @@ November 10, 2003 ((iHy))
 \eject
 \pagenumbering{arabic}
 \setcounter{chapter}{0} % Chapter 1
+\chapter{Integration}
+An {\sl elementary function}
+\index{elementary function}
+of a variable $x$ is a function that can
+be obtained from the rational functions in $x$ by repeatedly adjoining
+a finite number of nested logarithms, exponentials, and algebraic
+numbers or functions. Since $\sqrt{-1}$ is elementary, the
+trigonometric functions and their inverses are also elementary (when
+they are rewritten using complex exponentials and logarithms) as well
+as all the ``usual'' functions of calculus. For example,
+\begin{equation}
+\sin(x+\tan(x^3-\sqrt{x^3-x+1}))
+\end{equation}
+is elementary when rewritten as
+\[
+\frac{\sqrt{-1}}{2}(e^{t-x\sqrt{-1}}-e^{x\sqrt{-1}-t})
+{\rm\ where\ }
+t=\frac{1-e^{2\sqrt{-1}(x^3-\sqrt{x^3-x+1})}}
+{1+e^{2\sqrt{-1}(x^3-\sqrt{x^3-x+1})}}
+\]
+This tutorial describes recent algorithmic solutions to the {\sl
+problem of integration in finite terms}: 
+\index{integration in finite terms}
+to decide in a finite number
+of steps whether a given elementary funcction has an elementary
+indefinite integral, and to compute it explicitly if it exists. While
+this problem was studied extensively by Abel and Liouville during the
+last century, the difficulties posed by algebraic functions caused
+Hardy (1916) to state that ``there is reason to suppose that no such
+method can be given''. This conjecture was eventually disproved by
+Risch (1970), who described an algorithm for this problem in a series
+of reports \cite{12,13,14,15}. In the past 30 years, this procedure
+has been repeatedly improved, extended and refined, yielding practical
+algorithms that are now becoming standard and are implemented in most
+of the major computer algebra systems. In this tutorial, we outline
+the above algorithms for various classes of elementary functions,
+starting with rational functions and progressively increasing the
+class of functions up to general elementary functions. Proofs of
+correctness of the algorithms presented here can be found in several
+of the references, and are generally too long and too detailed to be
+described in this tutorial.
+
+{\bf Notations}: we write $x$ for the variable of integration, and '
+for the derivation $d/dx$. $\mathbb{Z}$,$\mathbb{Q}$,$\mathbb{R}$,and
+$\mathbb{C}$ denote respectively the integers, rational, real and
+complex numbers. All fields are commutative and, except when mentioned
+explicitly otherwise, have characteristic 0. If $K$ is a field, then
+$\overline{K}$ denotes its algebraic closure. For a polynomial $p$, 
+pp($p$) denotes the primitive
+part of $p$, {\sl i. e.} $p$ divided by the gcd of its coefficients.
+\section{Rational Functions}
+By a {\sl rational function}, we mean a quotient of polynomials in the
+integration variable $x$. This means that other functions can appear
+in the integrand, provided they do not involve $x$, hence that the
+coefficients of our polynomials in $x$ lie in an arbitrary field $K$
+satisfying: $\forall{a} \in K,\ a^{'}=0$.
+
+\subsection{The full partial-fraction algorithm}
+This method, which dates back to Newton, Leibniz, and Bernoulli,
+should not be used in practice, yet it remains the method found in
+most calculus tests and is often taught. Its major drawback is the
+factorization of the denominator of the integrand over the real or
+complex numbers. We outline it because it provides the theoretical
+foundations for all the subsequent algorithms. Let 
+$f \in \mathbb{R}(x)$ be our integrand, and write 
+$f=P+A/D$ where $P, A, D \in \mathbb{R}[x]$, $gcd(A,D)=1$, and
+$deg(A) < deg(D)$. Let
+\[
+D=c\prod_{i=1}^n(x-a_i)^{e_i}\prod_{j=1}^m(x^2+b_jx+c_j)^{f_j}
+\]
+be the irreducible factorization of $D$ over $\mathbb{R}$, where $c$,
+the $a_i$'s, $b_j$'s and $c_j$'s are in $\mathbb{R}$ and the $e_i$'s
+and $f_j$'s are positive integers. Computing the partial fraction
+decomposition of $f$, we get
+\[
+f=P+\sum_{i=1}^n\sum_{k=1}^{e_i}\frac{A_{ik}}{(x-a_i)^k}
++\sum_{j=1}^m\sum_{k=1}^{f_i}\frac{B_{jk}x+C_{jk}}{(x^2+b_jx+c_j)^k}
+\]
+where the $A_{ik}$'s, $B_{jk}$'s, and $C_{jk}$'s are in
+$\mathbb{R}$. Hence,
+\[
+\int{f}=\int{P}+\sum_{i=1}^n\sum_{k=1}^{e_i}\int{\frac{A_{ik}}{(x-a_i)^k}}
++\sum_{j=1}^m\sum_{k=1}^{f_i}\int{\frac{B_{jk}x+C_{jk}}{(x^2+b_jx+c_j)^k}}
+\]
+Computing $\int{P}$ poses no problem (it will for any other class of
+functions), and for the other terms we have
+\begin{equation}
+\int{\frac{A_{ik}}{(x-a_i)^k}}=\left\{
+\begin{array}{lc}
+A_{ik}(x-a_i)^{1-k}/(1-k)&{\rm if\ } k > 1\\
+A_{i1}\log(x-a_i)&{\rm if\ } k = 1\\
+\end{array}
+\right.
+\end{equation}
+and, noting that $b_j^2-4c_j < 0$ since $x^2+b_jx+c_j$ is irreducible
+in $\mathbb{R}$[x].
+\[
+\int\frac{B_{j1}x+C_{j1}}{(x^2+b_jx+c_j)}=
+\frac{B_{j1}}{2}\log(x^2+b_jx+c_j)
++\frac{2C_{j1}-b_jB_{j1}}{\sqrt{4c_j-b_j^2}}
+arctan\left(\frac{2x+b_j}{\sqrt{4c_j-b_j^2}}\right)
+\]
+and for $k > 1$,
+\[
+\begin{array}{lcl}
+\displaystyle
+\int{\frac{B_{jk}x+C_{jk}}{(x^2+b_jx+c_j)^k}}&=&
+\displaystyle\frac{(2C_{jk}-b_jB_{jk})x+b_jC_{jk}-2c_jB_{jk}}
+{(k-1)(4c_j-b_j^2)(x^2+b_jx+c_j)^{k-1}}\\
+&&\displaystyle+\int{\frac{(2k-3)(2C_{jk}-b_jB_{jk})}
+{(k-1)(4c_j-b_j^2)(x^2+b_jx+c_j)^{k-1}}}\\
+\end{array}
+\]
+This last formula is then used recursively until $k=1$.
+
+An alternative is to factor $D$ linearly over $\mathbb{C}$:
+$D=\prod_{i=1}^q(x-\alpha_i)^{e_i}$, and then use (2) on each term of
+\begin{equation}
+f=P+\sum_{i=1}^q\sum_{j=1}^{e_i}\frac{A_{ij}}{(x-\alpha_i)^j}
+\end{equation}
+Note that this alternative is applicable to coefficients in any field
+$K$, if we factor $D$ linearly over its algebraic closure
+$\overline{K}$, and is equivalent to expanding $f$ into its Laurent
+series at all its finite poles, since that series at 
+$x=\alpha_i \in \overline{K}$ is
+\[
+f=\frac{A_{ie_i}}{(x-\alpha_i)^{e_i}}
++\cdots
++\frac{A_{i2}}{(x-\alpha_i)^2}
++\frac{A_{i1}}{(x-\alpha_i)}
++\cdots
+\]
+where the $A_{ij}$'s are the same as those in (3). Thus, this approach
+can be seen as expanding the integrand into series around all the
+poles (including $\infty$), then integrating the series termwise, and
+then interpolating for the answer, by summing all the polar terms,
+obtaining the integral of (3). In addition, this alternative shows
+that any rational function $f \in K(x)$ has an elementary integral of
+the form
+\begin{equation}
+\int{f}=v+c_1\log(u_1)+\cdots+c_m\log(u_m)
+\end{equation}
+where $v,u_1,\ldots,u_m \in \overline{K}(x)$ are the rational
+functions, and $c_1,\ldots,c_m \in \overline{K}$ are constants. The
+original Risch algorithm is essentially a generalization of this
+approach that searches for integrals of arbitrary elementary functions
+in a form similar to (4).
+
+\subsection{The Hermite reduction}
+The major computational inconvenience of the full partial fraction
+approach is the need to factor polynomials over $\mathbb{R}$,
+$\mathbb{C}$, or $\overline{K}$, thereby introducing algebraic numbers
+even if the integrand and its integral are both in $\mathbb{Q}(x)$. On
+the other hand, introducing algebraic numbers may be necessary, for
+example it is proven in \cite{14} that any field containing an
+integral of $1/(x^2+2)$ must also contain $\sqrt{2}$. Modern research
+has yielded so-called ``rational'' algorithms that
+\begin{itemize}
+\item compute as much of the integral as possible with all
+calculations being done in $K(x)$, and
+\item compute the minimal algebraic extension of $K$ necessary to
+express the integral
+\end{itemize}
+The first rational algorithms for integration date back to the
+$19^{{\rm th}}$ century, when both Hermite\cite{6} and
+Ostrogradsky\cite{11} invented methods for computing the $v$ of (4)
+entirely within $K(x)$. We describe here only Hermite's method, since
+it is the one that has been generalized to arbitrary elementary
+functions. The basic idea is that if an irreducible $p \in K[x]$
+appears with multiplicity $k > 1$ in the factorization of the
+denominator of the integrand, then (2) implies that it appears with
+multiplicity $k-1$ in the denominator of the integral. Furthermore, it
+is possible to compute the product of all such irreducibles for each
+$k$ without factoring the denominator into irreducibles by computing
+its {\sl squarefree factorization}, {\sl i.e} a factorization
+$D=D_1D_2^2\cdots D_m^m$, where each $D_i$ is squarefree and 
+$gcd(D_i,D_j)=1$ for $i \ne j$. A straightforward way to compute it is
+as follows: let $R=gcd(D,D^{'})$, then $R=D_2D_2^3\cdots D_m^{m-1}$, so 
+$D/R=D_1D_2\cdots D_m$ and $gcd(R,D/R)=D_2\cdots D_m$, which implies
+finally that
+\[
+D_1=\frac{D/R}{gcd(R,D/R)}
+\]
+Computing recursively a squarefree factorization of $R$ completes the
+one for $D$. Note that \cite{23} presents a more efficient method for
+this decomposition. Let now $f \in K(x)$ be our integrand, and write
+$f=P+A/D$ where $P,A,D \in K[x]$, $gcd(A,D)=1$, and $deg(A)<deg(D)$. 
+Let $D=D_1D_2^2\cdots D_m^m$ be a squarefree factorization of $D$ and
+suppose that $m \ge 2$ (otherwise $D$ is already squarefree). Let then
+$V=D_m$ and $U=D/V^m$. Since $gcd(UV^{'},V)=1$, we can use the
+extended Euclidean algorithm to find $B,C \in K[x]$ such that
+\[
+\frac{A}{1-m}=BUV^{'}+CV
+\]
+and $deg(B) < deg(V)$. Multiplying both sides by $(1-m)/(UV^m)$ gives
+\[
+\frac{A}{UV^m}=\frac{(1-m)BV^{'}}{V^m}+\frac{(1-m)C}{UV^{m-1}}
+\]
+so, adding and subtracting $B^{'}/V^{m-1}$ to the right hand side, we
+get
+\[
+\frac{A}{UV^m}=\left(\frac{B^{'}}{V^{m-1}}-\frac{(m-1)BV^{'}}{V^m}\right)
++\frac{(1-m)C-UB^{'}}{UV^{m-1}}
+\]
+and integrating both sides yields
+\[
+\int\frac{A}{UV^m}=\frac{B}{V^{m-1}}+\int\frac{(1-m)C-UB^{'}}{UV^{m-1}}
+\]
+so the integrand is reduced to one with a smaller power of $V$ in the
+denominator. This process is repeated until the denominator is
+squarefree, yielding $g,h \in K(x)$ such that $f=g^{'}+h$ and $h$ has
+a squarefree denominator.
+
+\subsection{The Rothstein-Trager and Lazard-Rioboo-Trager algorithms}
+Following the Hermite reduction, we only have to integrate fractions
+of the form $f=A/D$ with $deg(A)<deg(D)$ and $D$ squarefree. It
+follows from (2) that
+\[
+\int{f}=\sum_{i=1}^n a_i\log(x-\alpha_i)
+\]
+where the $\alpha_i$'s are the zeros of $D$ in $\overline{K}$, and the
+$a_i$'s are the residues of $f$ at the $\alpha_i$'s. The problem
+is then to compute those residues without splitting $D$. Rothstein
+\cite{18} and Trager \cite{19} independently proved that the
+$\alpha_i$'s are exactly the zeros of
+\begin{equation}
+R=resultant_x(D,A-tD^{'}) \in K[t]
+\end{equation}
+and that the splitting field of $R$ over $K$ is indeed the minimal
+algebraic extension of $K$ necessary to express the integral in the
+form (4). The integral is then given by
+\begin{equation}
+\int\frac{A}{D}=\sum_{i=1}^m\sum_{a|R_i(a)=0}a\log(\gcd(D,A-aD^{'}))
+\end{equation}
+where $R=\prod_{i=1}^m R_i^{e_i}$ is the irreducible factorization of
+$R$ over $K$. Note that this algorithm requires factoring $R$ into
+irreducibles over $K$, and computing greatest common divisors in
+$(K[t]/(R_i))[x]$, hence computing with algebraic numbers. Trager and
+Lazard \& Rioboo \cite{7} independently discovered that those
+computations can be avoided, if one uses the subresultant PRS
+algorithm to compute the resultant of (5): let 
+$(R_0,R_1,\ldots R_k\ne 0,0,\ldots)$ be the subresultant PRS with
+respect to $x$ of $D$ and $A-tD^{'}$ and $R=Q_1Q_2^2\ldots Q_m^m$ be a 
+{\sl squarefree} factorization of their resultant. Then,
+\[
+\sum_{a|Q_i(a)=0} a\log(\gcd(D,A-aD^{'}))=\hbox{\hskip 5.0cm}
+\]
+\[
+\left\{
+\begin{array}{ll}
+\sum_{a|Q_i(a)=0} a \log(D) & {\rm if\ }i = deg(D)\\
+\sum_{a|Q_i(a)=0} a \log({\rm pp}_x(R_{k_i})(a,x))&
+{\rm where\ }deg(R_{k_i})=i,1 \le k_i \le n\\
+&{\rm if\ }i < deg(D)
+\end{array}
+\right.
+\]
+Evaluating ${\rm pp}_x(R_{k_i})$ at $t=a$ where $a$ is a root of $Q_i$
+is equivalent to reducing each coefficient with respect to $x$ of
+${\rm pp}_x(R_{k_i})$ module $Q_i$, hence computing in the algebraic
+extension $K[t]/(Q_i)$. Even this step can be avoided: it is in fact
+sufficient to ensure that $Q_i$ and the leading coefficient with
+respect to $x$ of $R_{k_i}$ do not have a nontrivial common factor,
+which implies then that the remainder by $Q_i$ is nonzero, see
+\cite{10} for details and other alternatives for computing
+${\rm pp}_x(R_{k_i})(a,x)$
+
+\section{Algebraic Functions}
+By an {\sl algebraic function}, we mean an element of a finitely
+generated algebraic extension $E$ of the rational function field
+$K(x)$. This includes nested radicals and implicit algebraic
+functions, not all of which can be expressed by radicals. It turns out
+that the algorithms we used for rational functions can be extended to
+algebraic functions, but with several difficulties, the first one
+being to define the proper analogues of polynomials, numerators and
+denominators. Since $E$ is algebraic over $K(x)$, for any
+$\alpha \in E$, there exists a polynomial $p \in K[x][y]$ such that 
+$p(x,\alpha)=0$. We say that $\alpha \in E$ is {\sl integral over}
+$K[x]$ if there is a polynomial $p \in K[x][y]$, {\sl monic in y},
+such that $p(x,\alpha)=0$. Integral elements are analogous to
+polynomials in that their value is defined for any 
+$x \in \overline{K}$ (unlike non-integral elements, which must have at
+least one pole in $\overline{K}$). The set
+\[
+{\bf O}_{K[x]} = \{\alpha \in E {\rm\ such\ that\ }\alpha
+{\rm\ is\ integral\ over\ }K[x]\}
+\]
+is called the {\sl integral closure of} $K[x]$ {\sl in E}. It is a
+ring and a finitely generated $K[x]$-module. Let $\alpha \in E^{*}$ be
+any element and $p=\sum_{i=0}^m a_iy^i \in K[x][y]$ be such that
+$p(x,\alpha)=0$ and $a_m \ne 0$. Then, $q(x,a_my)=0$ where
+$q=y^m+\sum_{i=0}^{m-1} a_ia_m^{m-i-1}y^i$ is monic in $y$, 
+so $a_my \in {\bf O}_{K[x]}$. We need a canonical representation
+for algebraic functions similar to quotients of polynomials for
+rational functions. Expressions as quotients of integral functions are
+not unique, for example, $\sqrt{x}/x=x/\sqrt{x}$. Hoever, $E$ is a
+finite-dimensional vector space over $K(x)$, so let $n=[E:K(x)]$ and
+$w=(w_1,\ldots,w_n)$ be any basis for $E$ over $K(x)$. By the above
+remark, there are $a_1,\ldots,a_n \in K(x)^{*}$ such that
+$a_iw_i \in {\bf O}_{K[x]}$ for each $i$. Since
+$(a_1w_1,\ldots,a_nw_n)$ is also a basis for $E$ over $K(x)$, we can
+assume without loss of generality that the basis $w$ is composed of
+integral elements. Any $\alpha \in E$ can be written uniquely as
+$\alpha = \sum_{i=1}^n f_iw_i$ for $f_1,\ldots,f_n \in K(x)$, and
+putting the $f_i$'s over a monic common denominator $D \in K[x]$, we
+get an expression
+\[
+\alpha = \frac{A_1w_1+\ldots+A_nw_n}{D}
+\]
+where $A_1,\ldots,A_n \in K[x]$ and $\gcd(D,A_1,\ldots,A_n)=1$. We
+call $\sum_{i=1}^n A_iw_i \in {\bf O}_{K[x]}$ and
+$D \in K[x]$ respectively the {\sl numerator} and {\sl denominator} of
+$\alpha$ with respect to $w$. They are defined uniquely once the basis
+$w$ is fixed.
+\subsection{The Hermite reduction}
+Now that we have numerators and denominators for algebraic functions,
+we can attempt to generalize the Hermite reduction of the previous
+section, so let $f \in E$ be our integrand, 
+$w=(w_1,\ldots,w_n) \in {{\bf O}_{K[n]}}^{n}$ be a basis for $E$
+over $K(x)$ and let $\sum_{i=1}^m A_iw_i \in {\bf O}_{K[x]}$
+and $D \in K[x]$ be the numerator and denominator of $f$ with respect
+to $w$, Let $D=D_1D_2^2\ldots D_m^m$ be a squarefree factorization of
+$D$ and suppose that $m \ge 2$. Let then $V=D_m$ and $U=D/V^m$, and we
+ask whether we can compute 
+$B=\sum_{i=1}^n B_iw_i \in {\bf O}_{K[x]}$ and $h \in E$ such
+that $deg(B_i) < deg(V)$ for each $i$,
+\begin{equation}
+\int\frac{\sum_{i=1}^n A_iw_i}{UV^m}=\frac{B}{V^{m-1}}+\int{h}
+\end{equation}
+and the denominator of $h$ with respect to $w$ has no factor of order
+$m$ or higher. This turns out to reduce to solving the following
+linear system
+\begin{equation}
+f_1S_1+\ldots+f_nS_n=A_1w_1+\ldots+A_nw_n
+\end{equation}
+for $f_1,\ldots,f_n \in K(x)$, where
+\begin{equation}
+S_i=UV^m\left(\frac{w_i}{V^{m-1}}\right)^{'}\quad{\rm for\ }1\le i\le n
+\end{equation}
+Indeed, suppose that (8) has a solution $f_1,\ldots,f_n \in K(x)$, and
+write $f_i=T_i/Q$, where $Q,T_1,\ldots,T_n \in K[x]$ and
+$\gcd(Q,T_1,\ldots,T_n)=1$. Suppose further that $\gcd(Q,V)=1$. Then,
+we can use the extended Euclidean algorithm to find $A,R \in K[x]$
+such that $AV+RQ=1$, and Euclidean division to find $Q_i,B_i \in K[x]$
+such that $deg(B_i)<deg(V)$ when $B_i \ne 0$ and $RT_i=VQ_i+B_i$ for
+each $i$. We then have
+\[
+\begin{array}{lcl}
+h&=&\displaystyle
+f-\left(\frac{\sum_{i=1}^n B_iw_i}{V^{m-1}}\right)^{'}\\
+&&\\
+&=&\displaystyle
+\frac{\sum_{i=1}^nA_iw_i}{UV^m}
+-\frac{\sum_{i=1}^nB_i^{'}w_i}{V^{m-1}}
+-\sum_{i=1}^n(RT_i-VQ_i)\left(\frac{w_i}{V^{m-1}}\right)^{'}\\
+&&\\
+&=&\displaystyle
+\frac{\sum_{i=1}^nA_iw_i}{UV^m}
+-\frac{R\sum_{i=1}^nT_iS_i}{UV^m}
++V\sum_{i=1}^nQ_i\left(\frac{w_i}{V^{m-1}}\right)^{'}
+-\frac{\sum_{i=1}^nB_i^{'}w_i}{V^{m-1}}\\
+&&\\
+&=&\displaystyle
+\frac{(1-RQ)\sum_{i=1}^nA_iw_i}{UV^m}
++\frac{\sum_{i=1}^nQ_iw_i^{'}}{V^{m-2}}
+-(m-1)V^{'}\frac{\sum_{i=1}^nQ_iw_i}{V^{m-1}}
+-\frac{\sum_{i=1}^nB_i^{'}w_i}{V^{m-1}}\\
+&&\\
+&=&\displaystyle
+\frac{\sum_{i=1}^nAA_iw_i}{UV^{m-1}}
+-\frac{\sum_{i=1}^n((m-1)V^{'}Q_i+B_i^{'})w_i}{V^{m-1}}
++\frac{\sum_{i=1}^nQ_iw_i^{'}}{V^{m-2}}
+\end{array}
+\]
+Hence, if in addition the denominator of $h$ has no factor of order
+$m$ or higher, then $B=\sum_{i=1}^nB_iw_i \in {\bf O}_{K[x]}$
+and $h$ solve (7) and we have reduced the integrand. Unfortunately, it
+can happen that the denominator of $h$ has a factor of order $m$ or
+higher, or that (8) has no solution in $K(x)$ whose denominator is
+coprime with $V$, as the following example shows.
+
+\noindent
+{\bf Example 1} Let $E=K(x)[y]/(y^4+(x^2+x)y-x^2)$ {\sl with basis}
+$w=(1,y,y^2,y^3)$ {\sl over} $K(x)$ {\sl and consider the integrand}
+\[
+f=\frac{y^3}{x^2}=\frac{w_4}{x^2}\in E
+\]
+We have $D=x^2$, so $U=1,V=x$ and $m=2$.
+Then, $S_1=x^2(1/x)^{'}=-1$,
+\[
+\begin{array}{lcl}
+\displaystyle S_2&=&x^2\left(\frac{y}{x}\right)^{'}\\
+&&\\
+\displaystyle &=&\frac{24(1-x^2)y^3+32x(1-x)y^2-(9x^4+45x^3+209x^2+63x+18)y
+-18x(x^3+x^2-x-1)}{27x^4+108x^3+418x^2+108x+27}\\
+&&\\
+\displaystyle S_3&=&x^2\left(\frac{y^2}{x}\right)^{'}\\
+&&\\
+\displaystyle &=&
+\frac{64x(1-x)y^3+9(x^4+2x^3-2x-1)y^2+12x(x^3+x^2-x-1)y+48x^2(1-x^2)}
+{27x^4+108x^3+418x^2+108x+27}\\
+&&\\
+and&&\\
+&&\\
+\displaystyle S_4&=&x^2\left(\frac{y^3}{x}\right)^{'}\\
+&&\\
+\displaystyle &=&\frac{(27x^4+81x^3+209x^2+27x)y^3+18x(x^3+x^2-x-1)y^2
++24x^2(x^2-1)y+96x^3(1-x)}
+{27x^4+108x^3+418x^2+108x+27}
+\end{array}
+\]
+{\sl so (8) becomes}
+\begin{equation}
+M
+\left(
+\begin{array}{c}
+f_1\\
+f_2\\
+f_3\\
+f_4
+\end{array}
+\right)=
+\left(
+\begin{array}{c}
+0\\
+0\\
+0\\
+1
+\end{array}
+\right)
+\end{equation}
+{\sl where}
+\[
+M=\left(
+\begin{array}{cccc}
+\displaystyle -1&\frac{-18x(x^3+x^2-x-1)}{F}&\frac{48x^2(1-x^2)}{F}
+&\frac{96x^3(1-x)}{F}\\
+\displaystyle 0&\frac{-(9x^4+45x^3+209x^2+63x+18)}{F}
+&\frac{12x(x^3+x^2-x-1)}{F}&\frac{24x^2(x^2-1)}{F}\\
+\displaystyle 0&\frac{32x(1-x)}{F}&\frac{9(x^4+2x^3-2x-1)}{F}
+&\frac{18x(x^3+x^2-x-1)}{F}\\
+\displaystyle 0&\frac{24(1-x^2)}{F}&\frac{64x(1-x)}{F}
+&\frac{(27x^4+81x^3+209x^2+27x)}{F}
+\end{array}
+\right)
+\]
+and $F=27x^4+108x^3+418x^2+108x+27$. The system (10) admits a unique
+solution $f_1=f_2=0, f_3=-2$ and $f_4=(x+1)/x$, whose denominator is
+not coprime with $V$, so the Hermite reduction is not applicable.
+
+The above problem was first solved by Trager \cite{20}, who proved 
+that if $w$ is an {\sl integral basis, i.e.} its elements generate 
+${\bf O}_{K[x]}$ over $K[x]$, then the system (8) always has a
+unique solution in $K(x)$ when $m > 1$, and that solution always has a
+denominator coprime with V. Furthermore, the denominator of each
+$w_i^{'}$ must be squarefree, implying that the denominator of $h$ is
+a factor of $FUV^{m-1}$ where $F \in K[x]$ is squarefree and coprime
+with $UV$. He also described an algorithm for computing an integral
+basis, a necessary preprocessing for his Hermite reduction. The main
+problem with that approach is that computing the integral basis,
+whether by the method of \cite{20} or the local alternative \cite{21},
+can be in general more expansive than the rest of the reduction
+process. We describe here the lazy Hermite reduction \cite{5}, which
+avoids the precomputation of an integral basis. It is based on the
+observation that if $m > 1$ and (8) does not have a solution allowing
+us to perform the reduction, then either
+\begin{itemize}
+\item the $S_i$'s are linearly dependent over $K(x)$, or
+\item (8) has a unique solution in $K(x)$ whose denominator has a
+nontrivial common factor with $V$, or
+\item the denominator of some $w_i$ is not squarefree
+\end{itemize}
+In all of the above cases, we can replace our basis $w$ by a new one,
+also made up of integral elements, so that that $K[x]$-module
+generated by the new basis strictly contains the one generated by $w$:
+
+\noindent
+{\bf Theorem 1 (\cite{5})} {\sl Suppose that $m \ge 2$ and that 
+$\{S_1,\ldots,S_n\}$ as given by (9) are linearly dependent over $K(x)$,
+and let $T_1,\ldots,T_n \in K[x]$ be not all 0 and such that
+$\sum_{i=1}^n T_iS_i=0$. Then,
+\[
+w_0=\frac{U}{V}\sum_{i=1}^n T_iw_i \in {\bf O}_{K[x]}
+\]
+Furthermore, if $\gcd(T_1,\ldots,T_n)=1$ then
+$w_0 \notin K[x]w_1+\cdots+K[x]w_n$.}
+
+\noindent
+{\bf Theorem 2 (\cite{5})} {\sl Suppose that $m \ge 2$ and that
+$\{S_1,\ldots,S_n\}$ as given by (9) are linearly independent over
+$K(x)$, and let $Q,T_1,\ldots,T_n \in K[x]$ be such that
+\[
+\sum_{i=1}^n A_iw_i = \frac{1}{Q}\sum_{i=1}^n T_iS_i
+\]
+Then,
+\[
+w_0=\frac{U(V/\gcd(V,Q))}{\gcd(V,Q)}\sum_{i=1}^n T_iw_i \in 
+{\bf O}_{K[x]}
+\]
+Furthermore, 
+if $\gcd(Q,T_1,\ldots,T_n)=1$ and $\deg(\gcd(V,Q)) \ge 1$, then
+$w_0 \notin K[x]w_1+\cdots+K[x]w_n$.}
+
+{\bf Theorem 3 (\cite{5})} {\sl Suppose that the denominator $F$ of
+some $w_i$ is not squarefree, and let $F=F_1F_2^2\cdots F_k^k$ be its
+squarefree factorization. Then,}
+\[
+w_0=F_1\cdots F_kw_i^{'} \in {\bf O}_{K[x]} \backslash
+(K[x]w_1+\cdots+K[x]w_n).
+\]
+
+The lazy Hermite reduction proceeds by solving the system (8) in
+$K(x)$. Either the reduction will succeed, or one of the above
+theorems produces an element
+$w_0 \in {\bf O}_{K[x]} \backslash (K[x]w_1+\cdots+K[x]w_n).$ Let then
+$\sum_{i=1}^n C_iw_i$ and $F$ be the numerator and denominator of
+$w_0$ with respect to $w$. Using Hermitian row reduction, we can zero
+out the last row of
+\[
+\left(
+\begin{array}{cccc}
+F  &   &      &\\
+   &F  &      &\\
+   &   &\ddots&\\
+   &   &      &F\\
+C_1&C_2&\cdots&C_n
+\end{array}
+\right)
+\]
+obtaining a matrix of the form
+\[
+\left(
+\begin{array}{cccc}
+C_{1,1} & C_{1,2} & \cdots & C_{1,n}\\
+C_{2,1} & C_{2,2} & \cdots & C_{2,n}\\
+\vdots  & \vdots  &        & \vdots\\
+C_{n,1} & C_{n,2} & \cdots & C_{n,n}\\
+0       & 0       & \cdots & 0\\
+\end{array}
+\right)
+\]
+with $C_{ij} \in K[x]$. Let $\overline{w}_i=(\sum_{j=1}^n
+C_{ij}w_j)/F$
+for $1 \le i \le n$. Then, 
+$\overline{w}=(\overline{w}_1,\ldots,\overline{w}_n)$ is a basis for
+$E$ over $K$ and
+\[
+K[x]\overline{w}_1+\cdots+K[x]\overline{w}_n=K[x]w_1+\cdots+K[x]w_n+K[x]w_0
+\]
+is a submodule of ${\bf O}_{K[x]}$, which strictly contains
+$K[x]w_1+\cdots+K[x]w_n$, since it contains $w_0$. Any strictly
+increasing chain of submodules of ${\bf O}_{K[x]}$ must
+stabilize after a finite number of steps, which means that this
+process produces a basis for which either the Hermite reduction can be
+carried out, or for which $f$ has a squarefree denominator.
+
+\noindent
+{\bf Example 2} Continuing example 1 for which the Hermite reduction
+failed, Theorem 2 implies that
+\[
+w_0=\frac{1}{x}(-2xw_3+(x+1)w_4)=(-2xy^2+(x+1)y^3)x \in {\bf O}_{K[x]}
+\]
+Performing a Hermitian row reduction on
+\[
+\left(
+\begin{array}{cccc}
+x& &   & \\
+ &x&   & \\
+ & &x  & \\
+ & &   &x\\
+0&0&-2x&x+1\\
+\end{array}
+\right)
+\]
+yields
+\[
+\left(
+\begin{array}{cccc}
+x& & & \\
+ &x& & \\
+ & &x& \\
+ & & &1\\
+0&0&0&0\\
+\end{array}
+\right)
+\]
+so the new basis is $\overline{w}=(1,y,y^2,y^3/x)$, and the
+denominator of $f$ with respect to $\overline{w}$ is 1, which is
+squarefree. 
+
+\subsection{Simple radical extensions}
+The integration algorithm becomes easier when $E$ is a simple radical
+extension of $K(x)$, {\sl i.e.} $E=K(x)[y]/(y^n-a)$ for some 
+$a \in K(x)$. Write $a=A/D$ where $A,D \in K[x]$, and let
+$AD^{n-1}=A_1A_2^2\cdots A_k^k$ be a squarefree factorization of 
+$AD^{n-1}$. Writing $i=nq_i+r_i$, for $1 \le i \le k$, where
+$0 \le r_i < n$, let $F=A_1^{q_1}\cdots A_k^{q_k}$,
+$H=A_1^{r_1}\cdots A_k^{r_k}$ and $z=yD/F$. Then,
+\[
+z^n=\left(y\frac{D}{F}\right)^n=\frac{y^nD^n}{F^n}=\frac{AD^{n-1}}{F}
+=A_1^{r_1}\cdots A_k^{r_k}=H
+\]
+Since $r_i < n$ for each $i$, the squarefree factorization of $H$ is
+of the form $H=H_1H_2^2\cdots H_m^m$ with $m<n$. An integral basis is
+then $w=(w_1,\ldots,w_n)$ where
+\begin{equation}
+w_i=\frac{z^{i-1}}{\prod_{j=1}^m H_j^{\lfloor(i-1)j/n\rfloor}}\quad
+1 \le i \le n
+\end{equation}
+and the Hermite reductions with respect to the above basis is always 
+guaranteed to succeed. Furthermore, when using that basis, the system
+(8) becomes diagonal and its solution can be written explicitly:
+writing $D_i=\prod_{j=1}^m H_j^{\lfloor ij/n\rfloor}$ we have
+\[
+\begin{array}{ccl}
+S_i & = &\displaystyle UV^m\left(\frac{w_i}{V^{m-1}}\right)^{'}
+=UV^m\left(\frac{z^{i-1}}{D_{i-1}V^{m-1}}\right)^{'}\\
+&&\\
+&=&\displaystyle UV^m\left(\frac{i-1}{n}\frac{H^{'}}{H}-
+\frac{{D_{i-1}}^{'}}{D_{i-1}}
+-(m-1)\frac{V^{'}}{V}\right)\left(\frac{z^{i-1}}{D_{i-1}V^{m-1}}\right)\\
+&&\\
+&=&\displaystyle U\left(V\left(\frac{i-1}{n}\frac{H^{'}}{H}
+-\frac{{D_{i-1}}^{'}}{D_{i-1}}\right)-(m-1)V^{'}\right)w_i
+\end{array}
+\]
+so the unique solution of (8) in $K(x)$ is
+\begin{equation}
+f_i=\frac{A_i}{U\left(V\left(\frac{i-1}{n}\frac{H^{'}}{H}-
+\frac{{D_{i-1}}^{'}}{D_{i-1}}\right)-(m-1)V^{'}\right)}
+\quad{\rm for\ }1 \le i \le n
+\end{equation}
+and it can be shown that the denominator of each $f_i$ is coprime with 
+$V$ when $m \ge 2$.
+
+\noindent
+{\bf Example 3} {\sl Consider
+\[
+\int\frac{(2x^8+1)\sqrt{(x^8+1)}}{x^{17}+2x^9+x}~dx
+\]
+The integrand is
+\[
+f=\frac{(2x^8+1)y}{x^{17}+2x^9+x} \in E
+=\mathbb{Q}(x)[y]/(y^2-x^8-1)
+\]
+so $H=x^8+1$ which is squarefree, implying that the integral basis
+(11) is $(w_1,w_2)=(1,y)$. The squarefree factorization of
+$x^{17}+2x^9+x$ is $x(x^8+1)^2$ so $U=x$, $V=x^8+1$, $m=2$, and the
+solution (12) of (8) is
+\[
+f_1=0,\quad
+f_2=\frac{2x^8+1}{x\left((x^8+1)\frac{1}{2}\frac{8x^7}{x^8+1}
+-8x^7\right)}=-\frac{(2x^8+1)/4}{x^8}
+\]
+We have $Q=x^8$, so $V-Q=1$, $A=1$, $R=-1$ and $RQf_2=V/2-1/4$,
+implying that
+\[
+B=-\frac{y}{4}\quad {\rm and}\quad h=f-\left(\frac{B}{V}\right)^{'}
+=\frac{y}{x(x^8+1)}
+\]
+solve (7), i.e.
+\[
+\int\frac{(2x^8+1)\sqrt{(x^8+1)}}{x^{17}+2x^9+x}~dx=
+-\frac{\sqrt{x^8+1}}{4(x^8+1)}
++\int\frac{\sqrt{x^8+1}}{x(x^8+1)}~dx
+\]
+and the remaining integrand has a squarefree denominator.}
+
+\subsection{Liouville's Theorem}
+Up to this point, the algorithms we have presented never fail, yet it
+can happen that an algebraic function does not have an elementary
+integral, for example
+\[
+\int{\frac{x~dx}{\sqrt{1-x^3}}}
+\]
+which is not an elementary function of $x$. So we need a way to
+recognize such functions before completing the integration
+algorithm. Liouville was the first to state and prove a precise
+theorem from Laplace's observation that we can restrict the elementary
+integration problem by allowing only new logarithms to appear linearly
+in the integral, all the other terms appearing in the integral being
+already in the integrand.
+
+{\bf Theorem 4 (Liouville \cite{8,9})} {\sl
+Let $E$ be an algebraic extension of the rational function field
+$K(x)$, and $f \in E$. If $f$ has an elementary integral, then there
+exist $v \in E$, constants $c_1,\ldots,c_n \in \overline{K}$ and
+$u_1,\ldots,u_k \in E(c_1,\ldots,c_k)^{*}$ such that}
+\begin{equation}
+f=v^{'}+c_1\frac{u_1^{'}}{u_1}+\cdots+c_k\frac{u_k^{'}}{u_k}
+\end{equation}
+The above is a restriction to algebraic functions of the strong
+Liouville Theorem, whose proof can be found in \cite{4,14}. An elegant
+and elementary algebraic proof of a slightly weaker version can be
+found in \cite{17}. As a consequence, we can look for an integral of
+the form (4), Liouville's Theorem guaranteeing that there is no
+elementary integral if we cannot find one in that form. Note that the
+above theorem does not say that every integral must have the above
+form, and in fact that form is not always the most convenient one, for
+example, 
+\[
+\int{\frac{dx}{1+x^2}}=arctan(x)=\frac{\sqrt{-1}}{2}
+\log\left(\frac{\sqrt{-1}+x}{\sqrt{-1}-x}\right)
+\]
+
+\subsection{The integral part}
+Following the Hermite reduction, we can assume that we have a basis 
+$w=(w_1,\ldots,w_n)$ of $E$ over $K(x)$ made of integral elements such
+that our integrand is of the form $f=\sum_{i=1}^n A_iw_i/D$ where 
+$D \in K[x]$ is squarefree. Given Liouville's Theorem, we now have to
+solve equation (13) for $v$, $u_1,\ldots,u_k$ and the constants 
+$c_1,\ldots,c_k$. Since $D$ is squarefree, it can be shown that 
+$v \in {\bf O}_{K[x]}$ for any solution, and in fact $v$
+corresponds to the polynomial part of the integral of rational
+functions. It is however more difficult to compute than the integral
+of polynomials, so Trager \cite{20} gave a change of variable that
+guarantees that either $v^{'}=0$ or $f$ has no elementary integral. In
+order to describe it, we need to define the analogue for algebraic
+functions of having a nontrivial polynomial part: we say that 
+$\alpha \in E$ is {\sl integral at infinity} if there is a polynomial
+$p=\sum_{i=1}^m a_iy^i \in K[x][y]$ such that $p(x,\alpha)=0$ and
+$deg(a_m) \ge deg(a_i)$ for each $i$. Note that a rational function
+$A/D \in K(x)$ is integral at infinity if and only if 
+$deg(A) \le deg(D)$ since it is a zero of $Dy-A$. When $\alpha-E$ is
+not integral at infinity, we say that it has a {\sl pole at
+infinity}. Let
+\[
+{\bf O}_\infty = \{\alpha \in E {\rm\ such\ that\ }\alpha
+{\rm\ is\ integral\ at\ infinity}\}
+\]
+A set $(b_1,\ldots,b_n) \in E^n$ is called {\sl normal at infinity} if
+there are $r_1,\ldots,r_n \in K(x)$ such that every 
+$\alpha \in {\bf O}_\infty$ can be written as
+$\alpha = \sum_{i=1}^n B_ir_ib_i/C$ where $C,B_1,\ldots,B_n \in K[x]$
+and $deg(C) \ge deg(B_i)$ for each $i$. We say that the differential
+$\alpha ~dx$ is integral at infinity if 
+$\alpha x^{1+1/r} \in {\bf O}_\infty$ where $r$ is the smallest
+ramification index at infinity. Trager \cite{20} described an
+algorithm that converts an arbitrary integral basis $w_1,\ldots,w_n$
+into one that is also normal at infinity, so the first part of his
+integration algorithm is as follows:
+\begin{enumerate}
+\item Pick any basis $b=(b_1,\ldots,b_n)$ of $E$ over $K(x)$ that is
+composed of integral elements.
+\item Pick an integer $N \in \mathbb{Z}$ that is not zero of the
+denominator of $f$ with respect to $b$, nor of the discriminant of $E$
+over $K(x)$, and perform the change of variable $x=N+1/z$,
+$dx=-dz/z^2$ on the integrand.
+\item Compute an integral basis $w$ for $E$ over $K(z)$ and make it
+normal at infinity
+\item Perform the Hermite reduction on $f$ using $w$, this yields 
+$g,h \in E$ such that $\int{f~dz}=g+\int{h~dz}$ and $h$ has a
+squarefree denominator with respect to $w$.
+\item If $hz^2$ has a pole at infinity, then $\int{f~dz}$ and
+$\int{h~dz}$ are not elementary functions
+\item Otherwise, $\int{h~dz}$ is elementary if and only if there are
+constants $c_1,\ldots,c_k \in \overline{K}$ and 
+$u_1,\ldots,u_k \in E(c_1,\ldots,c_k)^{*}$ such that
+\end{enumerate}
+\begin{equation}
+h=\frac{c_1}{u_1}\frac{du_1}{dz}+\cdots+\frac{c_k}{u_k}\frac{du_k}{dz}
+\end{equation}
+The condition that $N$ is not a zero of the denominator of $f$ with
+respect to $b$ implies that the $f~dz$ is integral at infinity after
+the change of variable, and Trager proved that if $h~dz$ is not
+integral at infinity after the Hermite reduction, then $\int{h~dz}$
+and $\int{f~dz}$ are not elementary functions. The condition that $N$
+is not a zero of the discriminant of $E$ over $K(x)$ implies that the
+ramification indices at infinity are all equal to 1 after the change
+of variable, hence that $h~dz$ is integral at infinity if and only if
+$hz^2 \in {\bf O}_\infty$. That second condition on $N$ can be
+disregarded, in which case we must replace $hz^2$ in step 5 by 
+$hz^{1+1/r}$ where $r$ is the smallest ramification index at
+infinity. Note that $hz^2 \in {\bf O}_\infty$ implies that 
+$hz^{1+1/r} \in {\bf O}_\infty$, but not conversely. Finally, we
+remark that for simple radical extensions, the integral basis (11) is
+already normal at infinity.
+
+Alternatively, we can use lazy Hermite reduction in the above
+algorithm: in step 3, we pick any basis made of integral elements,
+then perform the lazy Hermite reduction in step 4. If $h \in K(z)$
+after the Hermite reduction, then we can complete the integral without
+computing an integral basis. Otherwise, we compute an integral basis
+and make it normal at infinity between steps 4 and 5. This lazy
+variant can compute $\int{f~dx}$ whenever it is an element of $E$
+without computing an integral basis.
+
+\subsection{The logarithmic part}
+Following the previous sections, we are left with solving equation
+(14) for the constants $c_1,\ldots,c_k$ and for $u_1,\ldots,u_k$. We
+must make at this point the following additional assumptions:
+\begin{itemize}
+\item we have an integral primitive element for $E$ over $K(z)$, {\sl
+i.e.} $y \in {\bf O}_{K[z]}$ such that $E=K(z)(y)$,
+\item $[E : K(z)]=[E : \overline{K}(z)]$, {\sl i.e.} the minimal
+polynomial for $y$ over $K[z]$ is absolutely reducible, and
+\item we have an integral basis $w=(w_1,\ldots,w_n)$ for $E$ over
+$K(z)$, and $w$ is normal at infinity
+\end{itemize}
+A primitive element can be computed by considering linear combinations
+of the generators of $E$ over $K(x)$ with random coefficients in
+$K(x)$, and Trager \cite{20} describes an absolute factorization
+algorithm, so the above assumptions can be ensured, although those
+steps can be computationally very expensive, except in the case of
+simple radical extensions. Before describing the second part of
+Trager's integration algorithm, we need to define some concepts from
+the theory of algebraic curves. Given a finite algebraic extension 
+$E=K(z)(y)$ of $K(z)$, a {\sl place} $P$ of $E$ is a proper local
+subring of $E$ containing $K$, and a {\sl divisor} is a formal sum
+$\sum{n_PP}$ with finite support, where the $n_P$'s are integers and
+the $P$'s are places. Let $P$ be a place, then its maximal ideal
+$\mu_P$ is principal, so let $p\in E$ be a generator of $\mu_P$. The
+{\sl order at} $P$ is the function 
+$\nu_P : E^{*} \rightarrow \mathbb{Z}$ which maps $f \in E^{*}$ to the
+largest $k \in \mathbb{Z}$ such that $f \in p^kP$. Given 
+$f \in E^{*}$, the {\sl divisor of} $f$ is $(f) = \sum{\nu_P(f)P}$
+where the sum is taken over all the places. It has finite support
+since $\nu_P(f) \ne 0$ if and only if $P$ is a pole or zero of
+$f$. Finally, we way that a divisor $\delta = \sum{n_PP}$ is
+{\sl principal} if $\delta=(f)$ for some $f \in E^{*}$. Note that if 
+$\delta$ is principal, the $\sum{n_P}=0$, but the converse is not
+generally true, except if $E=K(z)$. Trager's algorithm proceeds
+essentially by constructing candidate divisors for the $u_i$'s of
+(14): 
+\begin{itemize}
+\item Let $\sum_{i=1}^n A_iw_i$ be the numerator of $h$ with respect
+to $w$, and $D$ be its (squarefree) denominator
+\item Write $\sum_{i=1}^n A_iw_i=G/H$, where $G \in K[z,y]$ and 
+$H \in K[z]$
+\item Let $f \in K[z,y]$ be the (monic) minimum polynomial for $y$
+over $K(z)$, $t$ be a new indeterminante and compute
+\[
+R(t)={\rm resultant_z\ }\left({\rm\ pp_t }\left({\rm\ resultant_y\ }\left(
+G-tH\frac{dD}{dz},F\right)\right),D\right) \in K[t]
+\]
+\item Let $\alpha_1,\ldots,\alpha_s \in \overline{K}$ be the distinct
+nonzero roots of $R$, $(q_1,\ldots,q_k)$ be a basis for the vector
+space that they generate over $\mathbb{Q}$, write
+$\alpha_i=r_{i1}q_1+\cdots+r_{ik}q_k$ for each $i$, where 
+$r_{ij} \in \mathbb{Q}$ and let $m > 0$ be a common denominator for
+all the $r_{ij}$'s
+\item For $1 \le j \le k$, let 
+$\delta_j=\sum_{i=1}^s mr_{ij}\sum_l r_lP_l$ where $r_l$ is the
+ramification index of $P_l$ and $P_l$ runs over all the places at
+which $h~dz$ has residue $r_i\alpha_i$
+\item If there are nonzero integers $n_1,\ldots,n_k$ such that 
+$n_j\delta_j$ is principal for each $j$, then let
+\[
+u=h-\frac{1}{m}\sum_{j=1}^k\frac{q_j}{n_ju_j}\frac{du_j}{dz}
+\]
+where $u_j \in E(\alpha_1,\ldots,\alpha_s)^{*}$ is such that 
+$n_j\delta_j=(u_j)$. If $u=0$, then 
+$\int{h~dz}=\sum_{j=1}^k q_j\log(u_j)/(mn_j)$, otherwise if either 
+$u \ne 0$ or there is no such integer $n_j$ for at least one $j$,
+then $h~dz$ has no elementary integral.
+\end{itemize}
+Note that this algorithm expresses the integral, when it is
+elementary, with the smallest possible number of logarithms. Steps 3
+to 6 requires computing in the splitting field $K_0$ of $R$ over $K$,
+but it can be proven that, as in the case of rational functions, $K_0$
+is the minimal algebraic extension of $K$ necessary to express the
+integral in the form (4). Trager \cite{20} describes a representation
+of divisors as fractional ideals and gives algorithms for the
+arithmetic of divisors and for testing whether a given divisor is
+principal. In order to determine whether there exists an integer $N$
+such that $N\delta$ is principal, we need to reduce the algebraic
+extension to one over a finite field $\mathbb{F}_{p^q}$ for some
+``good'' prime $p \in \mathbb{Z}$. Over $\mathbb{F}_{p^q}$, it is
+known that for every divisor $\delta=\sum{n_PP}$ such that
+$\sum{n_P}=0$, $M\delta$ is principal for some integer
+$1 \le M \le (1+\sqrt{p^q})^{2g}$, where $g$ is the genus of the curve
+\cite{22}, so we compute such an $M$ by testing $M=1,2,3,\ldots$ until
+we find it. It can then be shown that for almost all primes $p$, if
+$M\delta$ is not principal in characteristic 0, the $N\delta$ is not
+principal for any integer $N \ne 0$. Since we can test whether the
+prime $p$ is ``good'' by testing whether the image in
+$\mathbb{F}_{p^q}$ of the discriminant of the discriminant of the
+minimal polynomial for $y$ over $K[z]$ is 0, this yields a complete
+algorithm. In the special case of hyperelliptic extensions, {\sl i.e.}
+simple radical extensions of degree 2, Bertrand \cite{1} describes a
+simpler representation of divisors for which the arithmetic and
+principality tests are more efficient than the general methods.
+
+\noindent
+{\bf Example 4} {\sl
+Continuing example 3, we were left with the integrand
+\[
+\frac{\sqrt{x^8+1}}{x(x^8+1)}=\frac{w_2}{x(x^8+1)} \in E
+=\mathbb{Q}(x)[y]/(y^2-x^8-1)
+\]
+where $(w_1,w_2)=(1,y)$ is an integral basis normal at infinity, and
+the denominator $D=x(x^8+1)$ of the integrand is squarefree. Its
+numerator is $w_2=y$, so the resultant of step 3 is
+\[
+resultant_x(pp_t(resultant_y(y-t(9x^8+1),y^2-x^8-1)),x(x^8+1))=
+ct^{16}(t^2-1)
+\]
+where $c$ is a large nonzero integer. Its nonzero roots are $\pm 1$,
+and the integrand has residue 1 at the place $P$ corresponding to the
+point $(x,y)=(0,1)$ and $-1$ at the place $Q$ corresponding to the
+point $(x,y)=(0,-1)$, so the divisor $\delta_1$ of step 5 is 
+$\delta_1=P-Q$. It turns out that $\delta_1$, $2\delta_1$, and 
+$3\delta_1$ are not principal, but that
+\[
+4\delta_1=\left(\frac{x^4}{1+y}\right)\quad{\rm\ and\ }\quad
+\frac{w_2}{x(x^8+1)}
+-\frac{1}{4}\frac{(x^4/(1+y))^{'}}{x^4/(1+y)}=0
+\]
+which implies that
+\[
+\int{\frac{\sqrt{x^8+1}}{x(x^8+1)}}~dx
+=\frac{1}{4}\log\left(\frac{x^4}{1+\sqrt{x^8+1}}\right)
+\]}
+
+\noindent
+{\bf Example 5} {\sl
+Consider
+\[
+\int{\frac{x~dx}{\sqrt{1-x^3}}}
+\]
+The integrand is 
+\[
+f=\frac{xy}{1-x^3} \in E =
+\mathbb{Q}(x)[y]/(y^2+x^3-1)
+\]
+where $(w_1,w_2)=(1,y)$ is an integral basis normal at infinity, and
+the denominaotr $D=1-x^3$ of the integrand is squarefree. Its
+numerator is $xw_2=xy$, so the resultant of step 3 is
+\[
+resultant_x(pp_t(resultant_y(xy+3tx^2,y^2+x^3-1)),1-x^3)=729t^6
+\]
+whose only root is 0. Since $f \ne 0$, we conclude from step 6 that
+$\int{f~dx}$ is not an elementary function.}
+
+\noindent
+{\bf Example 6} {\sl
+\[
+\int{\frac{dx}{x\sqrt{1-x^3}}}
+\]
+The integrand is
+\[
+f=\frac{y}{x-x^4} \in E =
+\mathbb{Q}(x)[y]/(y^2+x^3-1)
+\]
+where $(w_1,w_2)=(1,y)$ is an integral basis normal at infinity, and
+the denominator $D=x-x^4$ of the integrand is squarefree. Its
+numerator is $w_2=y$, so the resultant of step 3 is
+\[
+resultant_x(pp_t(resultant_y(y+t(4x^3-1),y^2+x^3-1)),x-x^4)=729t^6(t^2-1)
+\]
+Its nonzero roots are $\pm 1$, and the integrand has residue 1 at the
+place $P$ corrseponding to the point $(x,y)=(0,1)$ and $-1$ at the
+place $Q$ corresponding to the point $(x,y)=(0,-1)$ so the divisor
+$\delta_1$ of step 5 is $\delta_1=P-Q$. It turns out that $\delta_1$
+and $2\delta_1$ are not principal, but that
+\[
+3\delta_1=\left(\frac{y-1}{y+1}\right)\quad{\rm and}\quad
+\frac{y}{x-x^4}-\frac{1}{3}\frac{((y-1)/(y+1))^{'}}{(y-1)/(y+1)}=0
+\]
+which implies that
+\[
+\int{\frac{dx}{x\sqrt{1-x^3}}}
+=\frac{1}{3}\log\left(\frac{\sqrt{1-x^3}-1}{\sqrt{1-x^3}+1}\right)
+\]}
+
+\section{Elementary Functions}
+Let $f$ be an arbitrary elementary function. In order to generalize
+the algorithms of the previous sections, we need to build an algebraic
+model in which $f$ behaves in some sense like a rational or algebraic
+function. For that purpose, we need to formally define differential
+fields and elementary functions.
+
+\subsection{Differential algebra}
+A {\sl differential field} $(K,')$ is a {\sl differential extension} 
+of $(K,')$ with a given map $a \rightarrow a'$ from $K$ into $K$,
+satisfying $(a+b)'=a'+b'$ and $(ab)'=a'b+ab'$. Such a map is called a
+{\sl derivation} on $K$. An element $a \in K$ which satisfies $a'=0$
+is called a {\sl constant}, and the set 
+Const($K$)$=\{a \in K {\rm\ such\ that\ }a'=0\}$ of all the constants
+of $K$ is a subfield of $K$.
+
+A differential field $(E,')$ is a {\sl differential equation} of
+$(K,')$ if $K \subseteq E$ and the derivation on $E$ extends the one
+on $K$. In that case, an element $t \in E$ is a {\sl monomial} over
+$K$ if $t$ is transcendental over $K$ and $t' \in K[t]$, which implies
+that both $K[t]$ and $K(t)$ are closed under '. An element $t \in E$
+is {\sl elementary over} $K$ if either
+\begin{itemize}
+\item $t'=b'/b$ for some $b \in K^{*}$, in which case we say that $t$
+is a {\sl logarithm} over $K$, and write $t=log(b)$, or
+\item $t'=b't$ for some $b \in K^{*}$, in which case we say that $t$
+is an {\sl exponential} over $K$, and write $t=e^b$, or
+\item $t$ is algebraic over $K$
+\end{itemize}
+
+A differential extension $(E,')$ of $(K,')$ is {\sl elementary over}
+$K$, if there exist $t_1,\ldots,t_m$ in $E$ such that
+$E=K(t_1,\ldots,t_m)$ and each $t_i$ is elementary over
+$K(t_1,\ldots,t_{i-1})$. We say that $f \in K$ {\sl has an elementary
+integral} over $K$ if there exists an elementary extension $(F,')$ of
+$(K,')$ and $g \in F$ such that $g'=f$. An {\sl elementary function}
+of the variable $x$ is an element of an elementary extension of the
+rational function field $(C(x),d/dx)$, where $C={\rm Const}(C(x))$.
+
+Elementary extensions are useful for modeling any function as a
+rational or algebraic function of one main variable over the other
+terms present in the function: given an elementary integrand
+$f(x)~dx$, the integration algorithm first constructs a field $C$
+containing all the constants appearing in $f$, then the rational
+function field $(C(x),d/dx)$, then an elementary tower 
+$E=C(x)(t_1,\ldots,t_k)$ containing $f$. Note that such a tower is not
+unique, and in addition, ajoining a logarithm could in fact adjoin a
+new constant, and an exponential could in fact be algebraic, for
+example $\mathbb{Q}(x)(log(x),log(2x))=\mathbb{Q}(log(2))(x)(log(x))$
+and $\mathbb{Q}(x)(e^{log(x)/2})=\mathbb{Q}(x)(\sqrt{x})$. There are
+however algorithms that detect all such occurences and modify the
+tower accordingly \cite{16}, so we can assume that all the logarithms
+and exponentials appearing in $E$ are monomials, and that 
+${\rm Const}(E)=C$. Let now $k_0$ be the largest index such that
+$t_{k_0}$ is transcendental over $K=C(x)(t_1,\ldots,t_{k_0-1})$ and
+$t=t_{k_0}$. Then $E$ is a finitely generated algebraic extension of
+$K(t)$, and in the special case $k_0=k$, $E=K(t)$. Thus, $f \in E$ can
+be seen as a univariate rational or algebraic function over $K$, the
+major difference with the pure rational or algebraic cases being that
+$K$ is not constant with respect to the derivation. It turns out that
+the algorithms of the previous section can be generalized to such
+towers, new methods being required only for the polynomial (or
+integral) part. We note that Liouville's Theorem remains valid when
+$E$ is an arbitrary differential field, so the integration algorithms
+work by attempting to solve equation (13) as previously.
+
+\noindent
+{\bf Example 7} {\sl
+The function (1) is the element $f=(t-t^{-1})\sqrt{-1}/2$ of $E=K(t)$
+where $K=\mathbb{Q}(\sqrt{-1})(x)(t_1,t_2)$ with
+\[
+t_1=\sqrt{x^3-x+1},\quad t_2=e^{2\sqrt{-1}(x^3-t_1)},\quad{\rm and}\quad
+t=e^{((1-t_2)/(1+t_2))-x\sqrt{-1}}
+\]
+which is transcendental over $K$. Alternatively, it can also be
+written as the element $f=2\theta/(1+\theta^2)$ of $F=K(\theta)$ where 
+$K==\mathbb{Q}(x)(\theta_1,\theta_2)$ with
+\[
+\theta_1=\sqrt{x^3-x+1},\quad\theta_2=\tan(x^3-\theta_1),\quad{\rm
+and}\quad\theta=\tan\left(\frac{x+\theta_2}{2}\right)
+\]
+which is a transcendental monomial over $K$. It turns out that both
+towers can be used in order to integrate $f$.}
+
+The algorithms of the previous sections relied extensively on
+squarefree factorization and on the concept of squarefree
+polynomials. The appropriate analogue in monomial extensions is the
+notion of {\sl normal} polynomials: let $t$ be a monomial over $K$, we
+say that $p\in K[t]$ is {\sl normal} (with respect to ') if
+$\gcd(p,p')=1$, and that $p$ is {\sl special} if $\gcd(p,p')=p$, 
+{\sl i.e.} $p | p'$ in $K[t]$. For $p \in K[t]$ squarefree, let 
+$p_s=\gcd(p,p')$ and $p_n=p/p_s$. Then $p=p_sp_n$, while $p_s$ is
+special and $p_n$ is normal. Therefore, squarefree factorization can
+be used to write any $q \in K[t]$ as a product $q=q_sq_n$, where
+$\gcd(q_s,q_n)=1$, $q_s$ is special and all the squarefree factors of
+$q_n$ are normal. We call $q_s$ the {\sl special part} of $q$ and
+$q_n$ its {\sl normal part}.
+
+\subsection{The Hermite reduction}
+The Hermite reductions we presented for rational and algebraic
+functions work in exactly the same way algebraic extensions of
+monomial extensions of $K$, as long as we apply them only to the
+normal part of the denominator of the integrand. Thus, if $D$ is the
+denominator of the integrand, we let $S$ be the special part of $D$,
+$D_1D_2^2\ldots D_m^m$ be a squarefree factorization of the {\sl
+normal} part of $D$, $V=D_m$, $U=D/V^m$ and the rational and algebraic
+Hermite reductions proceed normally, eventually yielding an integrand
+whose denominator has a squarefree normal part.
+
+\noindent
+{\bf Example 8} {\sl
+Consider
+\[
+\int{\frac{x-\tan(x)}{\tan(x)^2}}~dx
+\]
+The integrand is
+\[
+f=\frac{x-t}{t^2} \in K(t)\quad {\rm where\ }
+K=\mathbb{Q}(x) {\rm\ and\ }t'=t^2+1
+\]
+Its denominator is $D=t^2$, and $\gcd(t,t')=1$ implying that $t$ is
+normal, so $m=2$, $V=t$, $U=D/t^2=1$, and the extended Euclidean
+algorithm yields
+\[
+\frac{A}{1-m}=t-x=-x(t^2+1)+(xt+1)t=-xUV'+(xt+1)V
+\]
+implying that
+\[
+\int{\frac{x-\tan(x)}{\tan(x)^2}}~dx=-\frac{x}{\tan(x)}-\int{x}~dx
+\]
+and the remaining integrand has a squarefree denominator.}
+
+\noindent
+{\bf Example 9} {\sl
+Consider
+\[
+\int{\frac{\log(x)^2+2x\log(x)+x^2+(x+1)\sqrt{x+\log(x)}}
+{x\log(x)^2+2x^2\log(x)+x^3}}~dx
+\]
+The integrand is
+\[
+f=\frac{t^2+2xt+x^2+(x+1)y}{xt^2+2x^2t+x^3} \in E
+=K(t)[y]/(y^2-x-t)
+\]
+where $K=\mathbb{Q}(x)$ and $t=log(x)$. The denominator of $f$ with
+respect to the basis $w=(1,y)$ is $D=xt^2+2x^2t+x^3$ whose squarefree
+factorization is $x(t+x)^2$. Both $x$ and $t+x$ are normal, so $m=2$,
+$V=t+x$, $U=D/V^2=x$, and the solution (12) of (8) is
+\[
+f_1=\frac{t^2+2xt+x^2}{x(-(t'+1))}
+=-\frac{t^2+2xt+x^2}{x+1},
+\]
+\[
+f_2=\frac{x+1}{x\left((t+x)\frac{1}{2}\frac{t^{'}+1}{t+z}-(t'+1)\right)}=-2
+\]
+We have $Q=1$, so $0V+1Q=1$, $A=0$, $R=1$, $RQf_1=f_1=-V^2/(x+1)$ and
+$RQf_2=f_2=0V-2$, so $B=-2y$ and
+\[
+h=f-\left(\frac{B}{V}\right)^{'}=\frac{1}{x}
+\]
+implying that
+\[
+\int{\frac{\log(x)^2+2x\log(x)+x^2+(x+1)\sqrt{x+\log(x)}}
+{x\log(x)^2+2x^2\log(x)+x^2}}~dx
+=\frac{2}{\sqrt{x+log(x)}}+\int{\frac{dx}{x}}
+\]
+and the remaining integrand has a squarefree denominator.}
+
+\subsection{The polynomial reduction}
+In the transcendental case $E=K(t)$ and when $t$ is a monomial
+satisfying $deg_t(t') \ge 2$, then it is possible to reduce the
+degree of the polynomial part of the integrand until it is smaller
+than $deg_t(t')$. In the case when $t=\tan(b)$ for some $b \in K$, then
+it is possible either to prove that the integral is not elementary, or
+to reduce the polynomial part of the integrand to be in $K$. Let 
+$f \in K(t)$ be our integrand and write $f=P+A/D$, where
+$P,A,D \in K[t]$ and $deg(A) < deg(D)$. Write 
+$P=\sum_{i=1}^e p_it^i$ and $t'=\sum_{i=0}^d c_it^i$ where
+$p_0,\ldots,p_e,c_0,\ldots,c_d \in K$, $d \ge 2$, $p_e\ne 0$ and 
+$c_d\ne 0$. It is easy to verify that if $e \ge d$, then
+\begin{equation}
+P=\left(\frac{a_e}{(e-d+1)c_d}t^{e-d_1}\right)^{'}+\overline{P}
+\end{equation}
+where $\overline{P} \in K[t]$ is such that $\overline{P}=0$ or 
+$deg_t(\overline{P}) < e$. Repeating the above transformation we
+obtain $Q,R \in K[t]$ such that $R=0$ or $deg_t(R) < d$ and $P=Q'+R$. 
+Write then $R=\sum_{i=0}^{d-1} r_it^i$ where
+$r_0,\ldots,r_{d-1} \in K$. Again, it is easy to verify that for any
+special $S \in K[t]$ with $deg_t(S) > 0$, we have
+\[
+R=\frac{1}{deg_t(S)}\frac{r_{d-1}}{c_d}\frac{S'}{S}+\overline{R}
+\]
+where $\overline{R} \in K[t]$ is such that $\overline{R}=0$ or
+$deg_t(\overline{R}) < e-1$. Furthermore, it can be proven \cite{4}
+that if $R+A/D$ has an elementary integral over $K(t)$, then 
+$r_{d-1}/{c_d}$ is a constant, which implies that
+\[
+\int{R}=\frac{1}{deg_t(S)}\frac{r_{d-1}}{c_d}\log(S)
++\int\left(\overline{R}+\frac{A}{D}\right)
+\]
+so we are left with an integrand whose polynomial part has degree at
+most $deg_t(t')-2$. In this case $t=\tan(b)$ for $b \in K$, then
+$t'=b't^2+b'$, so $\overline{R} \in K$.
+
+{\bf Example 10} {\sl
+Consider
+\[
+\int(1+x\tan(x)+\tan(x)^2)~dx
+\]
+The integrand is
+\[
+f=1+xt+t^2 \in K(t)\quad{\rm where\ }K=\mathbb{Q}(x)
+{\rm\ and\ }t'=t^2+1
+\]
+Using (15), we get $\overline{P}=f-t'=f-(t^2+1)=xt$ so
+\[
+\int(1+x\tan(x)+\tan(x)^2)~dx=\tan(x)+\int{x\tan(x)}~dx
+\]
+and since $x'\ne 0$, the above criterion imples that the remaining
+integral is not an elementary function.}
+
+\subsection{The residue criterion}
+Similarly to the Hermite reduction, the Rothstein-Trager and
+Lazard-Rioboo-Trager algorithms are easy to generalize to the
+transcendental case $E=K(t)$ for arbitrary monomials $t$: let 
+$f\in K(t)$ be our integrand and write $f=P+A/D+B/S$ where
+$P,A,D,B,S \in K[t]$, $deg(A) < deg(D)$, $S$ is special and, following
+the Hermite reduction, $D$ is normal. Let then $z$ be a new
+indeterminate, $\kappa : K[z] \rightarrow K[z]$ be give by 
+$\kappa(\sum_i a_iz^i)=\sum_i a_i^{'}z^i$,
+\[
+R={\rm resultant_t}(D,A-zD') \in K[z]
+\]
+be the Rothstein-Trager resultant, $R=R_1R_2^2\ldots R_k^k$ be its
+squarefree factorization, $Q_i=\gcd_z(R_i,\kappa(R_i))$ for each $i$,
+and 
+\[
+g=\sum_{i=1}^k\sum_{a|Q_i(a)=0} a\log(\gcd{}_t(D,A-aD'))
+\]
+
+Note that the roots of each $Q_i$ must all be constants, and that the
+arguments of the logarithms can be obtained directly from the
+subresultant PRS of $D$ and $A-zD'$ as in the rational function
+case. It can then be proven \cite{4} that
+\begin{itemize}
+\item $f-g'$ is always ``simpler'' than $f$
+\item the splitting field of $Q_1\cdots Q_k$ over $K$ is the minimal
+algebraic extension of $K$ needed in order to express $\int f$ in the
+form (4)
+\item if $f$ has an elementary integral over $K(t)$, then 
+$R | \kappa(R)$ in $K[z]$ and the denominator of $f-q'$ is special
+\end{itemize}
+Thus, while in the pure rational function case the remaining integrand
+is a polynomial, in this case the remaining integrand has a special
+denominator. In that case we have additionally that if its integral is
+elementary, then (13) has a solution such that $v\in K(t)$ has a
+special denominator, and each $u_i \in K(c_1,\ldots,c_k)[t]$ is
+special.
+
+\noindent
+{\bf Example 11} {\sl
+Consider
+\[
+\int{\frac{2\log(x)^2-\log(x)-x^2}{\log(x)^3-x^2\log(x)}}~dx
+\]
+The integrand is
+\[
+f=\frac{2t^2-t-x^2}{t^2-xt^2} \in K(t)\quad
+{\rm where\ }K=\mathbb{Q}(x){\rm\ and\ }t=\log(x)
+\]
+Its denominator is $D=t^3-x^2t$, which is normal, and the resultant is 
+\[
+\begin{array}{ccl}
+R&=&\displaystyle
+resultant_t\left(t^3-x^2t,\frac{2x-3z}{x}t^2+(2xz-1)t+x(z-x)\right)\\
+&&\\
+&=&\displaystyle
+4x^3(1-x^2)\left(z^3-xz^2-\frac{1}{4}z+\frac{x}{4}\right)
+\end{array}
+\]
+which is squarefree in $K[z]$. We have
+\[
+\kappa(R)=-x^2(4(5x^2+3)z^3+8x(3x^2-2)z^2+(5x^2-3)z-2x(3x^2-2))
+\]
+so
+\[
+Q_1=\gcd{}_z(R,\kappa R)=x^2\left(z^2-\frac{1}{4}\right)
+\]
+and
+\[
+\gcd{}_t\left(t^3+x^2t,\frac{2x-3a}{x}t^2+(2xa-1)t+x(a-x)\right)=t+2ax
+\]
+where $a^2-1/4=0$, whence
+\[
+g=\sum_{a|a^2-1/4=0} a\log(t+2ax)=\frac{1}{2}\log(t+x)-\frac{1}{2}\log(t-x)
+\]
+Computing $f-g'$ we find
+\[
+\int{\frac{2\log(x)^2-\log(x)-x^2}{\log(x)^3-x^2\log(x)}}~dx
+=\frac{1}{2}\log\left(\frac{\log(x)+x}{\log(x)-x}\right)
++\int{\frac{dx}{\log(x)}}
+\]
+and since $deg_z(Q_1) < deg_z(R)$, it follows that the remaining
+integral is not an elementary function (it is in fact the logarithmic
+integral $Li(x)$).}
+
+In the most general case, when $E=K(t)(j)$ is algebraic over $K(t)$ and
+$y$ is integral over $K[t]$, the criterion part of the above result
+remains valid: let $w=(w_1,\ldots,w_n)$ be an integral basis for $E$
+over $K(t)$ and write the integrand $f \in E$ as 
+$f=\sum_{i=1}^n A_iw_i/D+\sum_{i=1}^n B_iw_i/S$ where $S$ is special
+and, following the Hermite reduction, $D$ is normal. Write 
+$\sum_{i=1}^n A_iw_i=G/H$, where $G \in K[t,y]$ and $H \in K[t]$, let
+$F \in K[t,y]$ be the (monic) minimum polynomial for $y$ over $K(t)$,
+$z$ be a new indeterminante and compute
+\begin{equation}
+R(z)={\rm resultant_t}({\rm pp_z}({\rm resultant_y}(G-tHD',F)),D) \in K[t]
+\end{equation}
+It can then be proven \cite{2} that if $f$ has an elementary integral
+over $E$, then $R|\kappa(R)$ in $K[z]$.
+
+{\bf Example 12} {\sl
+Consider
+\begin{equation}
+\int{\frac{\log(1+e^x)^{(1/3)}}{1+\log(1+e^x)}}~dx
+\end{equation}
+The integrand is
+\[
+f=\frac{y}{t+1} \in E = K(t)[y]/(y^3-t)
+\]
+where $K=\mathbb{Q}(x)(t_1)$,$t_1=e^x$ and $t=\log(1+t_1)$. Its
+denominator with respect to the integral basis $w=(1,y,y^2)$ is
+$D=t+1$, which is normal, and the resultant is
+\[
+R={\rm resultant_t}({\rm pp_z}({\rm resultant_y}(y-zt_1/(1+t_1),y^3-t)),t+1)
+=-\frac{t_1^3}{(1+t_1)^3}z^3-1
+\]
+We have
+\[
+\kappa(R)=-\frac{3t_1^3}{(1+t_1)^4}z^3
+\]
+which is coprime with $R$ in $K[z]$, implying that the integral (17)
+is not an elementary function.
+}
+
+\subsection{The transcendental logarithmic case}
+Suppose now that $t=\log(b)$ for some $b \in K^{*}$, and that
+$E=K(t)$. Then, every special polynomial must be in $K$, so, following
+the residue criterion, we must look for a solution $v \in K[t]$,
+$u_1,\ldots,u_k \in K(c_1,\ldots,c_n)^{*}$ of (13). Furthermore, the
+integrand $f$ is also in $K[t]$, so write
+$f=\sum_{i=0}^d f_it^i$ where $f_0,\ldots,f_d \in K$ and $f_d \ne 0$. We
+must have $deg{}_t(v) \le d_1$, so writing $v=\sum_{i=0}^{d+1} v_it^i$,
+we get 
+\[
+\int f_dt^d+\cdots+f_1t+f_0=v_{d+1}t^{d+1}+\cdots+v_1t+v_0
++\sum_{i=1}^k c_i\log(u_i)
+\]
+If $d=0$, then the above is simply an integration problem for 
+$f_0 \in K$, which can be solved recursively. Otherwise,
+differentiating both sides and equating the coefficients of $t^d$, we
+get ${v_{d+1}}'=0$ and
+\begin{equation}
+f_d=v_d'+(d+1)v_{d+1}\frac{b'}{b}
+\end{equation}
+Since $f_d \in K$, we can recursively apply the integration algorithm
+to $f_d$, either proving that (18) has no solution, in which case $f$
+has no elementary integral, or obtaining the constant $v_{d+1}$, and
+$v_d$ up to an additive constant (in fact, we apply recursively a
+specialized version of the integration algorithm to equations of the
+form (18), see \cite{4} for details). Write then
+$v_d=\overline{v_d}+c_d$ where $\overline{v_d} \in K$ is known and 
+$c_d \in {\rm Const}(K)$ is undetermined. Equating the coefficients of
+$t^{d-1}$ yields
+\[
+f_{d-1}-d\overline{v_d}\frac{b'}{b}={v_{d-1}}'+dc_d\frac{b'}{b}
+\]
+which is an equation of the form (18), so we again recursively compute
+$c_d$ and $v_{d-1}$ up to an additive constant. We repeat this process
+until either one of the recursive integrations fails, in which case $f$
+has no elementary integral, or we reduce our integrand to an element
+of $K$, which is then integrated recursively. The algorithm of this
+section can also be applied to real arc-tangent extensions, {\sl i.e.}
+$K(t)$ where $t$ is a monomial satisfying $t'=b'/(1+b^2)$ for some 
+$b \in K$.
+
+\subsection{The transcendental exponential case}
+Suppose now that $t=e^b$ for some $b \in K$, and that $E =
+K(t)$. Then, every nonzero special polynomial must be of the form
+$at^m$ for $a \in K^{*}$ and $m \in \mathbb{N}$. Since
+\[
+\frac{(at^m)'}{at^m}=\frac{a'}{a}+m\frac{t'}{t}=\frac{a'}{a}+mb'
+\]
+we must then look for a solution $v\in K[t,t^{-1}]$,
+$u_1,\ldots,u_k \in K(c_1,\ldots,c_n)^{*}$ of (13). Furthermore, the
+integrand $f$ is also in $K[t,t^{-1}]$, so write
+$f=\sum_{i=e}^d f_it^i$ where $f_e,\ldots,f_d \in K$ and 
+$e,d\in \mathbb{Z}$. Since $(at^{m})'=(a'+mb')t^m$ for any 
+$m\in \mathbb{Z}$, we must have $v=Mb+\sum_{i=e}^d v_it^i$ for some
+integer $M$, hence
+\[
+\int\sum_{i=e}^d f_it^i=Mb+\sum_{i=e}^d v_it^i+\sum_{i=1}^k c_i\log(u_i)
+\]
+Differentiating both sides and equating the coefficients of each power
+to $t^d$, we get
+\[
+f_0=(v_0+Mb)'+\sum_{i=1}^k c_i\frac{u_i^{'}}{u_i}
+\]
+which is simply an integration problem for $f_0 \in K$, and
+\[
+f_i=v_i^{'}+ib'v_i\quad{\rm for\ }e \le i \le d, i \ne 0
+\]
+The above problem is called a {\sl Risch differential equation over
+K}. Although solving it seems more complicated than solving $g'=f$, it
+is actually simpler than an integration problem because we look for
+the solutions $v_i$ in $K$ only rather than in an extension of
+$K$. Bronstein \cite{2,3,4} and Risch \cite{12,13,14} describe
+algorithms for solving this type of equation when $K$ is an elementary
+extension of the rational function field.
+
+\subsection{The transcendental tangent case}
+Suppose now that $t=\tan(b)$ for some $b \in K$, {\sl i.e.}
+$t'=b'(1+t^2)$, that $\sqrt{-1} \notin K$ and that $E=K(t)$. Then,
+every nonzero special polynomial must be of the form $a(t^2+1)^m$ for
+$a \in K^{*}$ and $m \in \mathbb{N}$. Since
+\[
+\frac{(a(t^2+1)^m)'}{a(t^2+1)^m}
+=\frac{a'}{a}+m\frac{(t^2+1)'}{t^2+1}
+=\frac{a'}{a}+2mb't
+\]
+we must look for $v=V/(t^2+1)^m$ where $V\in K[t]$, 
+$m_1,\ldots,m_k \in \mathbb{N}$, constants 
+$c_1,\ldots,c_k \in \overline{K}$ and
+$u_1,\ldots,u_k \in K(c_1,\ldots,c_k)^{*}$ such that
+\[
+f=v'+2b't\sum_{i=1}^k c_im_i + \sum_{i=1}^k c_i\frac{u_i^{'}}{u_i}
+\]
+Furthermore, the integrand $f \in K(t)$ following the residue
+criterion must be of the form $f=A/(t^2+1)^M$ where $A \in K[t]$ and
+$M \ge 0$. If $M > 0$, it can be shown that $m=M$ and that
+\begin{equation}
+\left(
+\begin{array}{c}
+c'\\
+d'
+\end{array}
+\right)+
+\left(
+\begin{array}{cc}
+0&-2mb'\\
+2mb'&0\\
+\end{array}
+\right)
+\left(
+\begin{array}{c}
+c\\
+d
+\end{array}
+\right)=
+\left(
+\begin{array}{c}
+a\\
+b
+\end{array}
+\right)
+\end{equation}
+where $at+b$ and $ct+d$ are the remainders module $t^2+1$ of $A$ and
+$V$ respectively. The above is a coupled differential system, which
+can be solved by methods similar to the ones used for Risch
+differential equations \cite{4}. If it has no solution, then the
+integral is not elementary, otherwise we reduce the integrand to 
+$h \in K[t]$, at which point the polynomial reduction either proves
+that its integral is not elementary, or reduce the integrand to an
+element of $K$, which is integrated recursively.
+
+\noindent
+{\bf Example 13} {\sl
+Consider
+\[
+\int{\frac{sin(x)}{x}}~dx
+\]
+The integrand is
+\[
+f=\frac{2t/x}{t^2+1} \in K(t)\quad{\rm where\ }K=\mathbb{Q}(x)
+{\rm\ and\ }t=\tan\left(\frac{x}{2}\right)
+\]
+Its denominator is $D=t^2+1$, which is special, and the system (19)
+becomes 
+\[
+\left(
+\begin{array}{c}
+c'\\
+d'
+\end{array}
+\right)+
+\left(
+\begin{array}{cc}
+0&-1\\
+1&0\\
+\end{array}
+\right)
+\left(
+\begin{array}{c}
+c\\
+d
+\end{array}
+\right)=
+\left(
+\begin{array}{c}
+2/x\\
+0
+\end{array}
+\right)
+\]
+which has no solution in $\mathbb{Q}(x)$, implying that the integral
+is not an elementary function.}
+
+\subsection{The algebraic logarithmic case}
+The transcendental logarithmic case method also generalizes to the
+case when $E=K(t)(y)$ is algebraic over $K(t)$, $t=log(b)$ for 
+$b \in K^{*}$ and $y$ is integral over $K[t]$: following the residue
+criterion, we can assume that $R | \kappa(R)$ where $R$ is given by
+(16), hence that all its roots in $\overline{K}$ are constants. The
+polynomial part of the integrand is replace by a family of at most
+$[E : K(t)]$ Puiseux expansions at infinity, each of the form
+\begin{equation}
+a_{-m}\theta^{-m}+\cdots+a_{-1}\theta^{-1}+\sum_{i \ge 0} a_i\theta^i
+\end{equation}
+where $\theta^r=t^{-1}$ for some positive integer $r$. Applying the
+integration algorithm recursively to $a_r \in \overline{K}$, we can
+test whether there exist $\rho \in {\rm Const}(\overline{K})$ and 
+$v \in \overline{K}$ such that
+\[
+a_r=v'+\rho\frac{b'}{b}
+\]
+If there are no such $v$ and $c$ for at least one of the series, then
+the integral is not elementary, otherwise $\rho$ is uniquely
+determined by $a_r$, so let $\rho_1,\ldots,\rho_q$ where 
+$q \le [E : K(t)]$ be the distinct constants we obtain,
+$\alpha_1,\ldots,\alpha_s \in \overline{K}$ be the distinct nonzero
+roots of $R$, and $(q_1,\ldots,q_k)$ be a basis for the vector space
+generated by the $\rho_i$'s and $\alpha_i$'s over $\mathbb{Q}$. Write
+$\alpha_i=r_{i1}q_1+\cdots+r_{ik}q_k$ and 
+$\rho_i=s_{i1}q_1+\cdots+s_{ik}q_k$ for each $i$, where 
+$r_{ij},s_{ij} \in \mathbb{Q}$ and let $m > 0$ be a common denominator
+for all the $r_{ij}$'s and $s_{ij}$'s. For $1 \le j \le k$, let
+\[
+\delta_j=\sum_{i=1}^s mr_{ij} \sum_l r_lP_l 
+-\sum_{i=1}^q ms_{ij} \sum_l s_lQ_l
+\]
+where $r_l$ is the ramification index of $P_l$, $s_l$ is the
+ramification index of $Q_l$, $P_l$ runs over all the finite places at
+which $h~dz$ has residue $r_l\alpha_i$ and $Q_l$ runs over all the
+infinite places at which $\rho=\rho_i$. As in the pure algebraic case,
+if there is a $j$ for which $N\delta_j$ is not principal for any
+nonzero integer $N$, then the integral is not elementary, otherwise,
+let $n_1,\ldots,n_k$ be nonzero integers such that $n_j\delta_j$ is
+principal for each $j$, and
+\[
+h=f-\frac{1}{m}\sum_{j=1}^k\frac{q_j}{n_j}\frac{u_j^{'}}{u_j}
+\]
+where $f$ is the integrand and 
+$u_j \in E(\alpha_1,\ldots,\alpha_s,\rho_1,\ldots,\rho_q)^{*}$ is such
+that $n_j\delta_j=(u_j)$. If the integral of $h$ is elementary, then
+(13) must have a solution with $v \in {\bf O}_{K[x]}$ and
+$u_1,\ldots,u_k \in \overline{K}$ so we must solve
+\begin{equation}
+h=\frac{\sum_{i=1}^n A_iw_i}{D}
+=\sum_{i=1}^n v_i^{'}w_i+\sum_{i=1}^n v_iw_i^{'}
++\sum_{i=1}^k c_i\frac{u_i^{'}}{u_i}
+\end{equation}
+for $v_1,\ldots,v_n \in K[t]$, constants 
+$c_1,\ldots,c_n \in \overline{K}$ and
+$u_1,\ldots,u_k \in \overline{K}^{*}$ where 
+$w=(w_1,\ldots,w_n)$ is an integral basis for $E$ over $K(t)$.
+
+If $E$ is a simple radical extension of $K(t)$, and we use the basis
+(11) and the notation of that section, then $w_1=1$ and
+\begin{equation}
+w_i^{'}=\left(\frac{i-1}{n}\frac{H'}{H}-\frac{D_{i-1}^{'}}{D_{i-1}}\right)w_i
+\quad{\rm for\ }1 \le i \le n
+\end{equation}
+This implies that (21) becomes
+\begin{equation}
+\frac{A_1}{D}=v_1^{'}+\sum_{i=1}^k c_i\frac{u_i^{'}}{u_i}
+\end{equation}
+which is simply an integration problem for $A_1/D \in K(t)$, and
+\begin{equation}
+\frac{A_i}{D}=v_i^{'}+\left(\frac{i-1}{n}\frac{H'}{H}
+-\frac{D_{i-1}^{'}}{D_{i-1}}\right)v_i\quad{\rm for\ }1 < i \le n
+\end{equation}
+which are Risch differential equations over $K(t)$
+
+\noindent
+{\bf Example 14} {\sl
+Consider
+\[
+\int{\frac{(x^2+2x+1)\sqrt{x+\log(x)}+(3x+1)\log(x)+3x^2+x}
+{(x\log(x)+x^2)\sqrt{x+\log(x)}+x^2\log(x)+x^3}}~dx
+\]
+The integrand is
+\[
+f=\frac{((3x+1)t-x^3+x^2)y-(2x^2-x-1)t-2x^3+x^2+x}
+{xt^2-(x^3-2x^2)t-x^4+x^3} \in E = K(t)[y]/(F)
+\]
+where $F=y^2-x-t$, $K=\mathbb{Q}(x)$ and $t=\log(x)$. Its denominator
+with respect to the integral basis $w=(1,y)$ is
+$D=xt^2-(x^3-2x^2)t-x^4+x^3$, which is normal, and the resultant is
+\[
+\begin{array}{ccl}
+R&=&{\rm resultant_t}({\rm pp_z}({\rm resultant_y}(((3x+1)t-x^3+x^2)y\\
+&&\\
+&&\hbox{\hskip 2.0cm}
+-(2x^2-x-1)t-2x^3+x^2+x-zD^{'},F)),D)\\
+&&\\
+&=&x^{12}(2x+1)^2(x+1)^2(x-1)^2z^3(z-2)\\
+\end{array}
+\]
+We have
+\[
+\kappa(R)=\frac{36x^3+16x^2-28x-12}{x(2x+1)(x+1)(x-1)}R
+\]
+so $R | \kappa(R)$ in $K[z]$. Its only nonzero root is 2, and the
+integrand has residue 2 at the place $P$ corresponding to the point
+$(t,y)=(x^2-x,-x)$. There is only one place $Q$ at infinity of
+ramification index 2, and the coefficient of $t^{-1}$ in the Puiseux
+expansion of $f$ at $Q$ is
+\[
+a_2=1-2x+\frac{1}{x}=(x-x^2)'+\frac{x'}{x}
+\]
+which implies that the corresponding $\rho$ is 1. Therefore, the
+divisor for the logand is $\delta=2P-2Q$. It turns out that 
+$\delta=(u)$ where $u=(x+y)^2 \in E^{*}$, so the new integrand is
+\[
+h=f-\frac{u'}{u}=f-2\frac{(x+y)'}{x+y}=\frac{(x+1)y}{xt+x^2}
+\]
+We have $y^2=t+x$, which is squarefree, so (23) becomes
+\[
+0=v_1^{'}+\sum_{i=1}^k c_i\frac{u_i^{'}}{u_i}
+\]
+whose solution is $v_1=k=0$ and (24) becomes
+\[
+\frac{x+1}{xt+x^2}=v_2^{'}+\frac{x+1}{2xt+2x^2}v_2
+\]
+whose solution is $v_2=2$, implying that $h=2y'$, hence that
+\[
+\begin{array}{l}
+\displaystyle
+\int{\frac{(x^2+2x+1)\sqrt{x+\log(x)}+(3x+1)\log(x)+3x^2+x}
+{(x\log(x)+x^2)\sqrt{x+\log(x)}+x^2\log(x)+x^3}}~dx\\
+\\
+\displaystyle
+\hbox{\hskip 4.0cm}2\sqrt{x+\log(x)}+2\log\left(x+\sqrt{x+\log(x)}\right)
+\end{array}
+\]}
+In the general case when $E$ is not a radical extension of $K(t)$, 
+(21) is solved by bounding $deg_t(v_i)$ and comparing the Puiseux
+expansions at infinity of $\sum_{i=1}^n v_iw_i$ with those of the form
+(20) of $h$, see \cite{2,12} for details.
+
+\subsection{The algebraic exponential case}
+The transcendental exponential case method also generalizes to the
+case when $E=K(t)(y)$ is algebraic over $K(t)$, $t=e^b$ for $b \in K$
+and $y$ is integral over $K[t]$: following the residue criterion, we
+can assume that $R|\kappa(R)$ where $R$ is given by (16), hence that
+all its roots in $\overline{K}$ are constants. The denominator of the
+integrancd must be of the form $D=t^mU$ where $\gcd(U,t)=1$, $U$ is
+squarefree and $m \ge 0$.
+
+If $m > 0$, $E$ is a simple radical extension of $K(t)$, and we use the
+basis (11), then it is possible to reduce the power of $t$ appearing
+in $D$ by a process similar to the Hermite reduction: writing the
+integrand $f=\sum_{i=1}^n A_iw_i/(t^mU)$, we ask whether we can
+compute $b_1,\ldots,b_n \in K$ and $C_1,\ldots,C_n \in K[t]$ such that
+\[
+\int\frac{\sum_{i=1}^n A_iw_i}{t^mU}
+=\frac{\sum_{i=1}^n b_iw_i}{t^m}
++\int{\frac{\sum_{i=1}^n C_iw_i}{t^{m-1}U}}
+\]
+Differentiating both sides and multiplying through by $t^m$ we get
+\[
+\frac{\sum_{i=1}^n A_iw_i}{U}
+=\sum_{i=1}^n b_i^{'}w_i+\sum_{i=1}^n b_iw_i^{'}
+-mb'\sum_{i=1}^n b_iw_i+\frac{t\sum_{i=1}^n C_iw_i}{U}
+\]
+Using (22) and equating the coefficients of $w_i$ on both sides, we
+get
+\begin{equation}
+\frac{A_i}{U}=b_i^{'}+(\omega_i-mb')b_i+\frac{tC_i}{U}
+\quad{\rm for\ }1 \le i \le n
+\end{equation}
+where
+\[
+\omega_i=\frac{i-1}{n}\frac{H'}{H}-\frac{D_{i-1}^{'}}{D_{i-1}} \in K(t)
+\]
+Since $t'/t=b' \in K$, it follows that the denominator of $\omega_i$
+is not divisible by $t$ in $K[t]$, hence, evaluating (25) at $t=0$, we
+get 
+\begin{equation}
+\frac{A_i(0)}{U(0)}=b_i^{'}+(\omega_i(0)-mb')b_i
+\quad{\rm for\ }1 \le i \le n
+\end{equation}
+which are Risch differential equations over $K(t)$. If any of them has
+no solution in $K(t)$, then the integral is not elementary, otherwise
+we repeat this process until the denominator of the integrand is
+normal. We then perform the change of variabl $\overline{t}=t^{-1}$,
+which is also exponential over $K$ since
+$\overline{t}'=-b'\overline{t}$, and repeat the above process in order
+to eliminate the power of $\overline{t}$ from the denominator of the
+integrand. It can be shown that after this process, any solution of
+(13) must have $v \in K$.
+
+\noindent
+{\bf Example 15} {\sl
+Consider
+\[
+\int{\frac{3(x+e^x)^{(1/3)}+(2x^2+3x)e^x+5x^2}{x(x+e^x)^{(1/3)}}}~dx
+\]
+The integrand is
+\[
+f=\frac{((2x^2+3x)t+5x^2)y^2+3t+3x}{xt+x^2} \in E
+=K(t)[y]/(y^3-t-x)
+\]
+where $K=\mathbb{Q}(x)$ and $t=e^x$. Its denominator with respect to
+the integral basis $w=(1,y,y^2)$ is $D=xt+x^2$, which is normal, and the
+resultant is
+\[
+\begin{array}{l}
+R={\rm resultant_t}({\rm pp_z}({\rm resultant_y}
+(((2x^2+3x)t+5x^2)y^2+3t+3x-zD',\\
+\hbox{\hskip 5.0cm}y^3-t-x)),D)=x^8(1-x)^3z^3
+\end{array}
+\]
+We have
+\[
+\kappa(R)=\frac{11x-8}{x(x-1)}R
+\]
+so $R|\kappa(R)$ in $K[z]$, its only root being 0. Since $D$ is not
+divisible by $t$, let $\overline{t}=t^{-1}$ and $z=\overline{t}y$. We
+have $\overline{t}'=-\overline{t}$ and 
+$z^3-\overline{t}^2-x\overline{t}^3=0$, so the integral basis (11) is
+\[
+\overline{w}=(\overline{w}_1,\overline{w}_2,\overline{w}_3)
+=\left(1,z,\frac{z^2}{\overline{t}}\right)
+\]
+Writing $f$ in terms of that basis gives
+\[
+f=\frac{3x\overline{t}^2+3\overline{t}
++(5x^2\overline{t}+2x^2+3x)\overline{w}_3}
+{x^2\overline{t}^2+x\overline{t}}
+\]
+whose denominator $\overline{D}=\overline{t}(x+x^2\overline{t})$ is
+divisible by $\overline{t}$. We have
+$H=\overline{t}^2(1+x\overline{t})$ so $D_0=D_1=1$ and
+$D_2=\overline{t}$, implying that
+\[
+\omega_1=0, \omega_2=\frac{(1-3x)\overline{t}-2}{3x\overline{t}+3},
+{\rm\ and\ } \omega_3=\frac{(2-3x)\overline{t}-1}{3x\overline{t}+3}
+\]
+Therefore the equations (26) become
+\[
+0=b_1^{'}+b_1,0=b_2^{'}+\frac{1}{3}b_2,{\rm\ and\ }
+2x+3=b_3^{'}+\frac{2}{3}b_3
+\]
+whose solutions are $b_1=b_2=0$ and $b_3=3x$, implying that the new
+integrand is
+\[
+h=f-\left(\frac{3x\overline{w}_3}{\overline{t}}\right)^{'}=\frac{3}{x}
+\]
+hence that
+\[
+\int{\frac{3(x+e^x)^{(1/3)}+(2x^2+3x)e^x+5x^2}{x(x+e^x)^{(1/3)}}}~dx
+=3x(x+e^x)^{(2/3)}+3\int{\frac{dx}{x}}
+\]
+}
+
+In the general case when $E$ is not a radical extension of $K(t)$,
+following the Hermite reduction, any solution of (13) must have
+$v=\sum_{i=1}^n v_iw_i/t^m$ where $v_1,\ldots,v_m \in K[t]$. We can
+compute $v$ by bounding $deg_t(v_i)$ and comparing the Puiseux
+expansions at $t=0$ and at infinity of $\sum_{i=1}^n v_iw_i/t^m$ with
+those of the form (20) of the integrand, see \cite{2,12} for details.
+
+Once we are reduced to solving (13) for $v \in K$, constants
+$c_1,\ldots,c_k \in \overline{K}$ and 
+$u_1,\ldots,u_k \in E(c_1,\ldots,c_k)^{*}$, constants
+$\rho_1,\ldots,\rho_s \in \overline{K}$ can be determined at all the
+places above $t=0$ and at infinity in a manner similar to the
+algebraic logarithmic case, at which point the algorithm proceeds by
+constructing the divisors $\delta_j$ and the $u_j$'s as in that
+case. Again, the details are quite technical and can be found in 
+\cite{2,12,13}.
+
 \section{Makefile}
-This book is actually a literate program\cite{2} and can contain 
-executable source code. In particular, the Makefile for this book
-is part of the source of the book and is included below. Axiom 
-uses the ``noweb'' literate programming system by Norman Ramsey\cite{6}.
 <<*>>=
-PROJECT=bookvol10
-TANGLE=/usr/local/bin/NOTANGLE
-WEAVE=/usr/local/bin/NOWEAVE
-LATEX=/usr/bin/latex
+BOOK=${SPD}/books/bookvol10.pamphlet
 MAKEINDEX=/usr/bin/makeindex
 
 all: 
-       ${WEAVE} -t8 -delay ${PROJECT}.pamphlet >${PROJECT}.tex
-       ${LATEX} ${PROJECT}.tex 2>/dev/null 1>/dev/null
-       ${MAKEINDEX} ${PROJECT}.idx
-       ${LATEX} ${PROJECT}.tex 2>/dev/null 1>/dev/null
+       @ echo 1 finished making ${BOOK}
 
 @
 \eject
 \begin{thebibliography}{99}
-\bibitem{1} Jenks, R.J. and Sutor, R.S. 
+\bibitem{1} Laurent Bertrand. Computing a hyperelliptic integral using
+arithmetic in the jacobian of the curve. {\sl Applicable Algebra in
+Engineering, Communication and Computing}, 6:275-298, 1995
+\bibitem{2} M. Bronstein. On the integration of elementary functions.
+{\sl Journal of Symbolic Computation} 9(2):117-173, February 1990
+\bibitem{3} M. Bronstein. The Risch differential equation on an
+algebraic curve. In S.Watt, editor, {\sl Proceedings of ISSAC'91},
+pages 241-246, ACM Press, 1991.
+\bibitem{4} M. Bronstein. {\sl Symbolic Integration I--Transcendental
+Functions.} Springer, Heidelberg, 1997
+\bibitem{5} M. Bronstein. The lazy hermite reduction. Rapport de
+Recherche RR-3562, INRIA, 1998
+\bibitem{6} E. Hermite. Sur l'int\'{e}gration des fractions
+rationelles. {\sl Nouvelles Annales de Math\'{e}matiques}
+($2^{eme}$ s\'{e}rie), 11:145-148, 1872
+\bibitem{7} Daniel Lazard and Renaud Rioboo. Integration of rational
+functions: Rational coputation of the logarithmic part {\sl Journal of
+Symbolic Computation}, 9:113-116:1990
+\bibitem{8} Joseph Liouville. Premier m\'{e}moire sur la
+d\'{e}termination des int\'{e}grales dont la valeur est
+alg\'{e}brique. {\sl Journal de l'Ecole Polytechnique}, 14:124-148,
+1833
+\bibitem{9} Joseph Liouville. Second m\'{e}moire sur la
+d\'{e}termination des int\'{e}grales dont la valeur est
+alg\'{e}brique. {\sl Journal de l'Ecole Polytechnique}, 14:149-193,
+1833
+\bibitem{10} Thom Mulders. A note on subresultants and a correction to
+the lazard/rioboo/trager formula in rational function integration {\sl
+Journal of Symbolic Computation}, 24(1):45-50, 1997
+\bibitem{11} M.W. Ostrogradsky. De l'int\'{e}gration des fractions
+rationelles. {\sl Bulletin de la Classe Physico-Math\'{e}matiques de
+l'Acae\'{e}mie Imp\'{e}riale des Sciences de St. P\'{e}tersbourg,}
+IV:145-167,286-300, 1845
+\bibitem{12} Robert Risch. On the integration of elementary functions
+which are built up using algebraic operations. Research Report
+SP-2801/002/00, System Development Corporation, Santa Monica, CA, USA,
+1968
+\bibitem{13} Robert Risch. Further results on elementary
+functions. Research Report RC-2042, IBM Research, Yorktown Heights,
+NY, USA, 1969
+\bibitem{14} Robert Risch, The problem of integration in finite
+terms. {\sl Transactions of the American Mathematical Society}
+139:167-189, 1969
+\bibitem{15} Robert Risch. The solution of problem of integration in
+finite terms. {\sl Transactions of the American Mathematical Society}
+76:605-608, 1970
+\bibitem{16} Robert Risch. Algebraic properties of the elementary
+functions of analysis. {\sl American Journal of Mathematics},
+101:743-759, 1979
+\bibitem{17} Maxwell Rosenlicht. Integration in finite terms. {\sl
+American Mathematical Monthly}, 79:963-972, 1972
+\bibitem{18} Michael Rothstein. A new algorithm for the integration of
+exponential and logarithmic functions. In {\sl Proceedings of the 1977
+MACSYMA Users Conference}, pages 263-274. NASA Pub CP-2012, 1977
+\bibitem{19} Barry Trager. Algebraic factoring and rational function
+integration. In {Proceedings of SYMSAC'76} pages 219-226, 1976
+\bibitem{20} Barry Trager {\sl On the integration of algebraic
+functions}, PhD thesis, MIT, Computer Science, 1984
+\bibitem{21} M. van Hoeij. An algorithm for computing an integral
+basis in an algebraic function field. {\sl J. Symbolic Computation}
+18(4):353-364, October 1994
+\bibitem{22} Andr\'{e} Weil, {\sl Courbes alg\'{e}briques et
+vari\'{e}t\'{e}s Abeliennes} Hermann, Paris, 1971
+\bibitem{23} D.Y.Y. Yun. On square-free decomposition algorithms. In
+{\sl Proceedings of SYMSAC'76} pages 26-35, 1976
+\bibitem{24} Bronstein, Manuel "Symbolic Integration Tutorial"
+INRIA Sophia Antipolis ISSAC 1998 Rostock
+\bibitem{25} Jenks, R.J. and Sutor, R.S. 
 ``Axiom -- The Scientific Computation System''
 Springer-Verlag New York (1992)
 ISBN 0-387-97855-0
-\bibitem{2} Knuth, Donald E., ``Literate Programming''
+\bibitem{26} Knuth, Donald E., ``Literate Programming''
 Center for the Study of Language and Information
 ISBN 0-937073-81-4
 Stanford CA (1992) 
-\bibitem{3} Page, William, ``The Axiom Wiki Website''\\
-{\bf http://wiki.axiom-developer.org}
-\bibitem{4} Watt, Stephen, ``Aldor'',\\
+\bibitem{27} Daly, Timothy, ``The Axiom Wiki Website''\\
+{\bf http://axiom.axiom-developer.org}
+\bibitem{28} Watt, Stephen, ``Aldor'',\\
 {\bf http://www.aldor.org}
-\bibitem{5} Lamport, Leslie, ``Latex -- A Document Preparation System'',
+\bibitem{29} Lamport, Leslie, ``Latex -- A Document Preparation System'',
 Addison-Wesley, New York ISBN 0-201-52983-1
-\bibitem{6} Ramsey, Norman ``Noweb -- A Simple, Extensible Tool for
+\bibitem{30} Ramsey, Norman ``Noweb -- A Simple, Extensible Tool for
 Literate Programming''\\
 {\bf http://www.eecs.harvard.edu/ $\tilde{}$nr/noweb}
+\bibitem{31} Daly, Timothy, "The Axiom Literate Documentation"\\
+{\bf http://axiom.axiom-developer.org/axiom-website/documentation.html}
 \end{thebibliography}
 \printindex
 \end{document}
diff --git a/books/bookvol11.pamphlet b/books/bookvol11.pamphlet
index c09e394..710be18 100644
--- a/books/bookvol11.pamphlet
+++ b/books/bookvol11.pamphlet
@@ -50489,6 +50489,10 @@ static char axiom_bits[] = {
 
 \eject
 \begin{thebibliography}{99}
-\bibitem{1} nothing
+\bibitem{1} Daly, Timothy, "The Axiom Literate Documentation"\\
+{\bf http://axiom.axiom-developer.org/axiom-website/documentation.html}
+\bibitem{2} Daly, Timothy, ``The Axiom Wiki Website''\\
+{\bf http://axiom.axiom-developer.org}
 \end{thebibliography}
+\printindex
 \end{document}
diff --git a/books/bookvol12.pamphlet b/books/bookvol12.pamphlet
index 7c3c8cc..d47dd24 100644
--- a/books/bookvol12.pamphlet
+++ b/books/bookvol12.pamphlet
@@ -467,8 +467,8 @@ ISBN 0-387-97855-0
 Center for the Study of Language and Information
 ISBN 0-937073-81-4
 Stanford CA (1992) 
-\bibitem{3} Page, William, ``The Axiom Wiki Website''\\
-{\bf http://wiki.axiom-developer.org}
+\bibitem{3} Daly, Timothy, ``The Axiom Wiki Website''\\
+{\bf http://axiom.axiom-developer.org}
 \bibitem{4} Watt, Stephen, ``Aldor'',\\
 {\bf http://www.aldor.org}
 \bibitem{5} Lamport, Leslie, ``Latex -- A Document Preparation System'',
@@ -478,6 +478,8 @@ Literate Programming''\\
 {\bf http://www.eecs.harvard.edu/ $\tilde{}$nr/noweb}
 \bibitem{7} Winograd, Terry ``Bringing Design to Software",
 ACM Press Books, Addison-Wesley Publishing, 1996
+\bibitem{8} Daly, Timothy, "The Axiom Literate Documentation"\\
+{\bf http://axiom.axiom-developer.org/axiom-website/documentation.html}
 \end{thebibliography}
 \printindex
 \end{document}
diff --git a/books/bookvol2.pamphlet b/books/bookvol2.pamphlet
index 1dc6019..e9cf201 100644
--- a/books/bookvol2.pamphlet
+++ b/books/bookvol2.pamphlet
@@ -319,8 +319,8 @@ ISBN 0-387-97855-0
 Center for the Study of Language and Information
 ISBN 0-937073-81-4
 Stanford CA (1992) 
-\bibitem{3} Page, William, ``The Axiom Wiki Website''\\
-{\bf http://wiki.axiom-developer.org}
+\bibitem{3} Daly, Timothy, ``The Axiom Wiki Website''\\
+{\bf http://axiom.axiom-developer.org}
 \bibitem{4} Watt, Stephen, ``Aldor'',\\
 {\bf http://www.aldor.org}
 \bibitem{5} Lamport, Leslie, ``Latex -- A Document Preparation System'',
@@ -328,6 +328,8 @@ Addison-Wesley, New York ISBN 0-201-52983-1
 \bibitem{6} Ramsey, Norman ``Noweb -- A Simple, Extensible Tool for
 Literate Programming''\\
 {\bf http://www.eecs.harvard.edu/ $\tilde{}$nr/noweb}
+\bibitem{7} Daly, Timothy, "The Axiom Literate Documentation"\\
+{\bf http://axiom.axiom-developer.org/axiom-website/documentation.html}
 \end{thebibliography}
 \printindex
 \end{document}
diff --git a/books/bookvol3.pamphlet b/books/bookvol3.pamphlet
index f8ad6f3..ebb060f 100644
--- a/books/bookvol3.pamphlet
+++ b/books/bookvol3.pamphlet
@@ -319,8 +319,8 @@ ISBN 0-387-97855-0
 Center for the Study of Language and Information
 ISBN 0-937073-81-4
 Stanford CA (1992) 
-\bibitem{3} Page, William, ``The Axiom Wiki Website''\\
-{\bf http://wiki.axiom-developer.org}
+\bibitem{3} Daly, Timothy, ``The Axiom Wiki Website''\\
+{\bf http://axiom.axiom-developer.org}
 \bibitem{4} Watt, Stephen, ``Aldor'',\\
 {\bf http://www.aldor.org}
 \bibitem{5} Lamport, Leslie, ``Latex -- A Document Preparation System'',
@@ -328,6 +328,8 @@ Addison-Wesley, New York ISBN 0-201-52983-1
 \bibitem{6} Ramsey, Norman ``Noweb -- A Simple, Extensible Tool for
 Literate Programming''\\
 {\bf http://www.eecs.harvard.edu/ $\tilde{}$nr/noweb}
+\bibitem{7} Daly, Timothy, "The Axiom Literate Documentation"\\
+{\bf http://axiom.axiom-developer.org/axiom-website/documentation.html}
 \end{thebibliography}
 \printindex
 \end{document}
diff --git a/books/bookvol4.pamphlet b/books/bookvol4.pamphlet
index 32abce4..b114afb 100644
--- a/books/bookvol4.pamphlet
+++ b/books/bookvol4.pamphlet
@@ -4409,8 +4409,8 @@ ISBN 0-387-97855-0
 Center for the Study of Language and Information
 ISBN 0-937073-81-4
 Stanford CA (1992) 
-\bibitem{3} Page, William, ``The Axiom Wiki Website''\\
-{\bf http://wiki.axiom-developer.org}
+\bibitem{3} Daly, Timothy, ``The Axiom Wiki Website''\\
+{\bf http://axiom.axiom-developer.org}
 \bibitem{4} Watt, Stephen, ``Aldor'',\\
 {\bf http://www.aldor.org}
 \bibitem{5} Lamport, Leslie, ``Latex -- A Document Preparation System'',
@@ -4418,6 +4418,8 @@ Addison-Wesley, New York ISBN 0-201-52983-1
 \bibitem{6} Ramsey, Norman ``Noweb -- A Simple, Extensible Tool for
 Literate Programming''\\
 {\bf http://www.eecs.harvard.edu/ $\tilde{}$nr/noweb}
+\bibitem{7} Daly, Timothy, "The Axiom Literate Documentation"\\
+{\bf http://axiom.axiom-developer.org/axiom-website/documentation.html}
 \end{thebibliography}
 \printindex
 \end{document}
diff --git a/books/bookvol5.pamphlet b/books/bookvol5.pamphlet
index 56ffef1..1bfbd48 100644
--- a/books/bookvol5.pamphlet
+++ b/books/bookvol5.pamphlet
@@ -1,5 +1,7 @@
 \documentclass{book}
 \usepackage{axiom}
+\usepackage{makeidx}
+\makeindex
 \usepackage{graphicx}
 % struggle with latex figure-floating behavior
 \renewcommand\floatpagefraction{.9}
@@ -6129,6 +6131,10 @@ remake:
 @
 \eject
 \begin{thebibliography}{99}
-\bibitem nothing
+\bibitem{1} Daly, Timothy, "The Axiom Literate Documentation"\\
+{\bf http://axiom.axiom-developer.org/axiom-website/documentation.html}
+\bibitem{2} Daly, Timothy, ``The Axiom Wiki Website''\\
+{\bf http://axiom.axiom-developer.org}
 \end{thebibliography}
+\printindex
 \end{document}
diff --git a/books/bookvol6.pamphlet b/books/bookvol6.pamphlet
index 4c44735..d9a8933 100644
--- a/books/bookvol6.pamphlet
+++ b/books/bookvol6.pamphlet
@@ -7147,8 +7147,8 @@ ISBN 0-387-97855-0
 Center for the Study of Language and Information
 ISBN 0-937073-81-4
 Stanford CA (1992) 
-\bibitem{3} Page, William, ``The Axiom Wiki Website''\\
-{\bf http://wiki.axiom-developer.org}
+\bibitem{3} Daly, Timothy, ``The Axiom Wiki Website''\\
+{\bf http://axiom.axiom-developer.org}
 \bibitem{4} Watt, Stephen, ``Aldor'',\\
 {\bf http://www.aldor.org}
 \bibitem{5} Lamport, Leslie,\\
@@ -7162,9 +7162,10 @@ Addison-Wesley, New York ISBN 0-201-52983-1
 \bibitem{8} Axiom Book Volume 8 -- Graphics\\
 {\bf file://usr/local/axiom/src/graph/bookvol8.pamphlet}
 \bibitem{9} AIX Version 3.2 and 4 Performance Tuning Guide\\
-{\bf 
-http://www.rs6000.ibm.com/doc\_link/en\_US/\\
+{\bf http://www.rs6000.ibm.com/doc\_link/en\_US/\\
 {\hbox {\hskip 1.0cm}}a\_doc\_lib/aixbman/prftungd/toc.htm}
+\bibitem{10} Daly, Timothy, "The Axiom Literate Documentation"\\
+{\bf http://axiom.axiom-developer.org/axiom-website/documentation.html}
 \end{thebibliography}
 \printindex
 \end{document}
diff --git a/books/bookvol7.pamphlet b/books/bookvol7.pamphlet
index 74d6409..e851b24 100644
--- a/books/bookvol7.pamphlet
+++ b/books/bookvol7.pamphlet
@@ -20145,6 +20145,8 @@ Addison-Wesley, New York ISBN 0-201-52983-1
 \bibitem{6} Ramsey, Norman ``Noweb -- A Simple, Extensible Tool for
 Literate Programming''\\
 {\bf http://www.eecs.harvard.edu/ $\tilde{}$nr/noweb}
+\bibitem{7} Daly, Timothy, "The Axiom Literate Documentation"\\
+{\bf http://axiom.axiom-developer.org/axiom-website/documentation.html}
 \end{thebibliography}
 \printindex
 \end{document}
diff --git a/books/bookvol8.pamphlet b/books/bookvol8.pamphlet
index 2b2d0ee..8830367 100644
--- a/books/bookvol8.pamphlet
+++ b/books/bookvol8.pamphlet
@@ -28977,6 +28977,8 @@ Addison-Wesley, New York ISBN 0-201-52983-1
 \bibitem{6} Ramsey, Norman ``Noweb -- A Simple, Extensible Tool for
 Literate Programming''\\
 {\bf http://www.eecs.harvard.edu/ $\tilde{}$nr/noweb}
+\bibitem{7} Daly, Timothy, "The Axiom Literate Documentation"\\
+{\bf http://axiom.axiom-developer.org/axiom-website/documentation.html}
 \end{thebibliography}
 \printindex
 \end{document}
diff --git a/books/bookvol9.pamphlet b/books/bookvol9.pamphlet
index 4acb8b2..eeb65df 100644
--- a/books/bookvol9.pamphlet
+++ b/books/bookvol9.pamphlet
@@ -319,8 +319,8 @@ ISBN 0-387-97855-0
 Center for the Study of Language and Information
 ISBN 0-937073-81-4
 Stanford CA (1992) 
-\bibitem{3} Page, William, ``The Axiom Wiki Website''\\
-{\bf http://wiki.axiom-developer.org}
+\bibitem{3} Daly, Timothy, ``The Axiom Wiki Website''\\
+{\bf http://axiom.axiom-developer.org}
 \bibitem{4} Watt, Stephen, ``Aldor'',\\
 {\bf http://www.aldor.org}
 \bibitem{5} Lamport, Leslie, ``Latex -- A Document Preparation System'',
@@ -328,6 +328,8 @@ Addison-Wesley, New York ISBN 0-201-52983-1
 \bibitem{6} Ramsey, Norman ``Noweb -- A Simple, Extensible Tool for
 Literate Programming''\\
 {\bf http://www.eecs.harvard.edu/ $\tilde{}$nr/noweb}
+\bibitem{7} Daly, Timothy, "The Axiom Literate Documentation"\\
+{\bf http://axiom.axiom-developer.org/axiom-website/documentation.html}
 \end{thebibliography}
 \printindex
 \end{document}
diff --git a/changelog b/changelog
index e5db776..e4f1428 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,21 @@
+20080612 tpd books/bookvol12 point to The Axiom Literate Documentation
+20080612 tpd books/bookvol11 point to The Axiom Literate Documentation
+20080612 tpd books/bookvol10 point to The Axiom Literate Documentation
+20080612 tpd books/bookvol9 point to The Axiom Literate Documentation
+20080612 tpd books/bookvol8 point to The Axiom Literate Documentation
+20080612 tpd books/bookvol7 point to The Axiom Literate Documentation
+20080612 tpd books/bookvol6 point to The Axiom Literate Documentation
+20080612 tpd books/bookvol5 point to The Axiom Literate Documentation
+20080612 tpd books/bookvol4 point to The Axiom Literate Documentation
+20080612 tpd books/bookvol3 point to The Axiom Literate Documentation
+20080612 tpd books/bookvol2 point to The Axiom Literate Documentation
+20080612 tpd books/bookvol1 point to The Axiom Literate Documentation
+20080612 tpd books/bookvol0 numerous fixes, including Appendix work
+20080612 tpd books/Makefile makeindex
+20080612 tpd scr/Makefile extract Makefile from bookvol10
+20080612 tpd books/bookvol11 add index
+20080612 tpd books/bookvol10 document integration
+20080612 tpd books/bookvol5 add index
 20080611 tpd books/bookvol8 add documentation for gdraws
 20080610 tpd books/Makefile stop redundant builds
 20080610 tpd books/bookvol7 remove bookvol11 handling
diff --git a/src/Makefile.pamphlet b/src/Makefile.pamphlet
index b40d07f..5914820 100644
--- a/src/Makefile.pamphlet
+++ b/src/Makefile.pamphlet
@@ -298,84 +298,6 @@ interpclean: ${SRC}/interp/Makefile
        @rm -f ${SRC}/interp/Makefile.dvi
 
 @
-\subsection{The algebra directory}
-The algebra directory contains code written in Axiom's computer
-algebra language called {\bf spad}. There are two compilers for
-this language, the spad compiler and the {\bf Aldor}\cite{1} compiler.
-
-Both of these compilers accept the same input language except for
-some platform-dependent differences. The spad compiler is written
-in Common Lisp (well, in boot, anyway) and is built into the 
-interpreter. The Aldor compiler is written in C and runs
-stand-alone. Both compile files that will run in Axiom's 
-interpreter. Files which end in ``.spad'' use the internal 
-spad compiler. Files which end in ``.as'' use the external
-Aldor compiler.
-\subsubsection{Making the Makefile}
-The main body of the algebra Makefile is extracted from the
-Makefile.pamphlet file as usual. It contains generic rules for
-making all the .spad files in a series of ``layers'' such that
-each layer depends on only those layers that preceed it, beginning
-with the bootstap layer. Because the individual .spad files are
-grouped into higher-level algebra pamphlet files, the rules for
-extracting them are derived from a simple script [[findAlgebraFiles]] which
-appends these additional rules to the Makefile.
-
-The [[src/algebra/Makefile]] is specially constructed in two
-steps. The first step uses the [[document]] command to extract
-the normal Makefile information.
-
-The second step is to extend the [[src/algebra/Makefile]] with
-stanzas that describe the steps to extract the algebra from the
-[[src/algebra/*.pamphlet]] files into the [[int/algebra/*.spad]] files.
-Further details are provided in Makefile for src/algebra.
-
-The doc/spadhelp directory contains flat files of help text
-for the help system command. Algebra pamphlet contain examples
-that can be shown from these commands.
-
-We need to make the int/input file here because the algebra Makefile
-will extract input files for regression testing from the algebra pamphlets.
-
-<<algebradir>>=
-algebradir: ${SRC}/algebra/Makefile
-       @echo 29 making ${SRC}/algebra
-       @mkdir -p ${INT}/algebra
-       @mkdir -p ${INT}/input
-       @mkdir -p ${OBJ}/${SYS}/algebra
-       @mkdir -p ${MNT}/${SYS}/algebra
-       @mkdir -p ${MNT}/${SYS}/doc/src/algebra
-       @mkdir -p ${MNT}/${SYS}/doc/spadhelp
-       @mkdir -p ${MNT}/${SYS}/src/algebra
-       @mkdir -p ${INT}/input
-       @(cd algebra ; ${ENV} ${MAKE} )
-
-${SRC}/algebra/Makefile: ${SRC}/algebra/Makefile.pamphlet
-       @echo 30 making ${SRC}/algebra/Makefile from \
-                ${SRC}/algebra/Makefile.pamphlet
-       @( cd algebra ; ${DOCUMENT} ${NOISE} Makefile ; \
-        cp Makefile.dvi ${MNT}/${SYS}/doc/src/algebra.Makefile.dvi ; \
-       echo 30a extracting findAlgebraFiles from \
-                 ${SRC}/algebra/Makefile.pamphlet ; \
-       ${TANGLE} -t8 -RfindAlgebraFiles Makefile.pamphlet \
-            > ${INT}/algebra/findAlgebraFiles ; \
-       echo 30b running ${INT}/algebra/findAlgebraFiles ; \
-       . ${INT}/algebra/findAlgebraFiles >> Makefile)
-
-algebradocument: ${SRC}/algebra/Makefile
-       @echo 31 documenting ${SRC}/algebra
-       @mkdir -p ${MNT}/${SYS}/doc/src/algebra
-       @mkdir -p ${INT}/doc/src/algebra
-       @( cd algebra ; ${ENV} ${MAKE} document )
-
-algebraclean: ${SRC}/algebra/Makefile
-       @echo 32 cleaning ${SRC}/algebra
-       @( cd algebra ; ${ENV} ${MAKE} clean )
-       @rm -rf ${OBJ}/${SYS}/algebra
-       @rm -f ${SRC}/algebra/Makefile
-       @rm -f ${SRC}/algebra/Makefile.dvi
-
-@
 \subsection{The input directory}
 The input directory contains code used for examples, regression
 testing, and bug tracking. In a shipped system the working examples
@@ -521,6 +443,88 @@ graphdir: ${SPD}/books/bookvol8.pamphlet
          ${ENV} ${MAKE} )
 
 @
+\subsection{The algebra directory}
+The algebra directory contains code written in Axiom's computer
+algebra language called {\bf spad}. There are two compilers for
+this language, the spad compiler and the {\bf Aldor}\cite{1} compiler.
+
+Both of these compilers accept the same input language except for
+some platform-dependent differences. The spad compiler is written
+in Common Lisp (well, in boot, anyway) and is built into the 
+interpreter. The Aldor compiler is written in C and runs
+stand-alone. Both compile files that will run in Axiom's 
+interpreter. Files which end in ``.spad'' use the internal 
+spad compiler. Files which end in ``.as'' use the external
+Aldor compiler.
+\subsubsection{Making the Makefile}
+The main body of the algebra Makefile is extracted from the
+Makefile.pamphlet file as usual. It contains generic rules for
+making all the .spad files in a series of ``layers'' such that
+each layer depends on only those layers that preceed it, beginning
+with the bootstap layer. Because the individual .spad files are
+grouped into higher-level algebra pamphlet files, the rules for
+extracting them are derived from a simple script [[findAlgebraFiles]] which
+appends these additional rules to the Makefile.
+
+The [[src/algebra/Makefile]] is specially constructed in two
+steps. The first step uses the [[document]] command to extract
+the normal Makefile information.
+
+The second step is to extend the [[src/algebra/Makefile]] with
+stanzas that describe the steps to extract the algebra from the
+[[src/algebra/*.pamphlet]] files into the [[int/algebra/*.spad]] files.
+Further details are provided in Makefile for src/algebra.
+
+The doc/spadhelp directory contains flat files of help text
+for the help system command. Algebra pamphlet contain examples
+that can be shown from these commands.
+
+We need to make the int/input file here because the algebra Makefile
+will extract input files for regression testing from the algebra pamphlets.
+
+\subsection{Volume 10: Axiom Algebra book}
+<<algebradir>>=
+algebradir: ${SRC}/algebra/Makefile ${SPD}/books/bookvol10.pamphlet
+       @echo 29 making ${SRC}/algebra
+       @mkdir -p ${INT}/algebra
+       @mkdir -p ${INT}/input
+       @mkdir -p ${OBJ}/${SYS}/algebra
+       @mkdir -p ${MNT}/${SYS}/algebra
+       @mkdir -p ${MNT}/${SYS}/doc/src/algebra
+       @mkdir -p ${MNT}/${SYS}/doc/spadhelp
+       @mkdir -p ${MNT}/${SYS}/src/algebra
+       @mkdir -p ${INT}/input
+       @(cd ${INT}/algebra ; \
+         ${TANGLE} -t8 ${SPD}/books/bookvol10.pamphlet >Makefile ; \
+         ${ENV} ${MAKE} )
+       @(cd algebra ; ${ENV} ${MAKE} )
+
+${SRC}/algebra/Makefile: ${SRC}/algebra/Makefile.pamphlet
+       @echo 30 making ${SRC}/algebra/Makefile from \
+                ${SRC}/algebra/Makefile.pamphlet
+       @( cd algebra ; ${DOCUMENT} ${NOISE} Makefile ; \
+        cp Makefile.dvi ${MNT}/${SYS}/doc/src/algebra.Makefile.dvi ; \
+       echo 30a extracting findAlgebraFiles from \
+                 ${SRC}/algebra/Makefile.pamphlet ; \
+       ${TANGLE} -t8 -RfindAlgebraFiles Makefile.pamphlet \
+            > ${INT}/algebra/findAlgebraFiles ; \
+       echo 30b running ${INT}/algebra/findAlgebraFiles ; \
+       . ${INT}/algebra/findAlgebraFiles >> Makefile)
+
+algebradocument: ${SRC}/algebra/Makefile
+       @echo 31 documenting ${SRC}/algebra
+       @mkdir -p ${MNT}/${SYS}/doc/src/algebra
+       @mkdir -p ${INT}/doc/src/algebra
+       @( cd algebra ; ${ENV} ${MAKE} document )
+
+algebraclean: ${SRC}/algebra/Makefile
+       @echo 32 cleaning ${SRC}/algebra
+       @( cd algebra ; ${ENV} ${MAKE} clean )
+       @rm -rf ${OBJ}/${SYS}/algebra
+       @rm -f ${SRC}/algebra/Makefile
+       @rm -f ${SRC}/algebra/Makefile.dvi
+
+@
 \subsection{Volume 11: Axiom Browser book}
 These are the pages for the Axiom Firefox browser interface.
 They can be expanded in parallel since they (currently) need no




reply via email to

[Prev in Thread] Current Thread [Next in Thread]