From 6dcb41ad2479e97dc0a74a6fb36365a09273efe8 Mon Sep 17 00:00:00 2001
From: Tim Daly
Date: Thu, 21 Jul 2016 23:03:43 0400
Subject: [PATCH] books/cookbook/eucdomgcd a first algorithmic recipe page
Goal: Axiom Literate Programming
In cookbooks one finds basic ingredients (e.g. make batter, making
eggs), main dishes (steak), and 7course means (how to
choose side dishes, wines, etc). The 'cake' section, for
example, has option "subroutines" such as toppings.
The idea would be to develop a cookbookstyle of presentation
for computational mathematics. Pick an algorithm, write a page.
When something is used that is not explained, there is a reference
to other sections (ala cakes that suggest "see the frostings")
Each entry would be an algorithm or idea, explained in at most one
2sided looseleaf paper. The algorithms would be gathered into
sections, e.g. "basic ingredients" like resultant, "main dishes"
like polynomial factorization, and "7course meals" like solving
the heat equation (target is the physics class). The 'cake'
subroutines would involve choice of polynomial representation,
sparse, dense, distributed, recursive, etc.
I want to be able to "write in the small" (1 page) with a focus on a
single subject but "organize in the large" so I can shuffle these
subjects into groups by purpose. The analogy is that there is a
cookbook that only deals with pickles. I'd like a cookbook that only
deals with rings, composed of looseleaf selections from the overall
collection. This would be assembled for a computational mathematics
class. The same material could be rearranged and reselected for a
different class.
The key focus is on providing explanation and motivation. Most
books that mention the resultant spend pages on the proof and
not a word about why or where to use it.
The 1 page / 2 sides focus is much easier to write than a whole
chapter and, since you're staring at a single routine, it is easier
to provide motivation for why it exists and what the tradeoffs are.
"How" is interesting but "Why" is vital.

Makefile.pamphlet  1 +
books/Makefile.pamphlet  94 ++++
books/cookbook/eucdomgcd.pamphlet  49 ++
changelog  4 +
patch  876 ++
src/axiomwebsite/patches.html  2 +
6 files changed, 174 insertions(+), 852 deletions()
create mode 100644 books/cookbook/eucdomgcd.pamphlet
diff git a/Makefile.pamphlet b/Makefile.pamphlet
index 694de60..be07200 100644
 a/Makefile.pamphlet
+++ b/Makefile.pamphlet
@@ 173,6 +173,7 @@ rootdirs:
mkdir p ${MNT}/${SYS}/doc/hypertex/bitmaps
mkdir p ${MNT}/${SYS}/doc/msgs
mkdir p ${MNT}/${SYS}/doc/ps
+ mkdir p ${MNT}/${SYS}/doc/cookbook
mkdir p ${MNT}/${SYS}/doc/spadhelp
mkdir p ${MNT}/${SYS}/doc/src/input
mkdir p ${MNT}/${SYS}/graph/parabola.view
diff git a/books/Makefile.pamphlet b/books/Makefile.pamphlet
index 77ca675..0c9c257 100644
 a/books/Makefile.pamphlet
+++ b/books/Makefile.pamphlet
@@ 16,6 +16,48 @@ default shell appears to be /bin/sh which does not follow the
semantics of echo used by /bin/bash. Thus, while trying to
write the backslashnewpage lines the backslashn gets interpreted
as a newline.
+
+\section{The Source Books}
+These are the primary source code literate programs containing
+all of the Axiom code.
+
+\begin{chunk}{sourcecode}
+BOOKPDF=${PDF}/bookvol0.pdf ${PDF}/bookvol1.pdf ${PDF}/bookvol2.pdf \
+ ${PDF}/bookvol3.pdf ${PDF}/bookvol4.pdf ${PDF}/bookvol5.pdf \
+ ${PDF}/bookvol6.pdf ${PDF}/bookvol7.pdf ${PDF}/bookvol7.1.pdf \
+ ${PDF}/bookvol8.pdf ${PDF}/bookvol8.1.pdf ${PDF}/bookvol9.pdf \
+ ${PDF}/bookvol10.pdf ${PDF}/bookvol10.1.pdf ${PDF}/bookvol10.2.pdf \
+ ${PDF}/bookvol10.3.pdf ${PDF}/bookvol10.4.pdf ${PDF}/bookvol10.5.pdf \
+ ${PDF}/bookvol11.pdf ${PDF}/bookvol12.pdf ${PDF}/bookvol13.pdf \
+ ${PDF}/bookvolbib.pdf
+
+\end{chunk}
+
+\section{The Cookbook}
+Explanation of particular functions, for example the gcd from
+EUCDOM, are standalone 12 page PDFs. They are intended to
+present the algorithm, an example of its use, and an explanation
+of why the algorithm might be used.
+
+The idea is to mimic a cookbook where 'recipes' are presented in
+capsule form. Basic recipies, such as making batter or eggs are
+in one section, with the Axiom analogy being the gcd or resultant.
+
+The 'sidedish/dessert' recipes like 'cake' would be Axiom's
+polynomial factorization with 'cake icing' choices being things
+like sparse, dense, recursive, or distributed forms.
+
+The 'main course' recipes, such as steak, are primary Axiom
+algorithms like the Groebner basis.
+
+The '7course' meals would be 'collections' of these pamphlets
+for things like a course on Rings or solving the heat equation
+for a physics class.
+\begin{chunk}{cookbook}
+COOKPAGES = ${COOKBOOK}/eucdomgcd.pdf
+
+\end{chunk}
+
\section{The Makefile}
\begin{chunk}{*}
SHELL=bash
@@ 29,21 +71,17 @@ DVIPS=dvips Ppdf
PS2PDF=ps2pdf
RM=rm f
OUT1=${MNT}/${SYS}/lib
+COOKIN=${BOOKS}/cookbook
+COOKBOOK=${PDF}/cookbook
BOOKPDF=${PDF}/bookvol0.pdf ${PDF}/bookvol1.pdf ${PDF}/bookvol2.pdf \
 ${PDF}/bookvol3.pdf ${PDF}/bookvol4.pdf ${PDF}/bookvol5.pdf \
 ${PDF}/bookvol6.pdf ${PDF}/bookvol7.pdf ${PDF}/bookvol7.1.pdf \
 ${PDF}/bookvol8.pdf ${PDF}/bookvol8.1.pdf ${PDF}/bookvol9.pdf \
 ${PDF}/bookvol10.pdf ${PDF}/bookvol10.1.pdf ${PDF}/bookvol10.2.pdf \
 ${PDF}/bookvol10.3.pdf ${PDF}/bookvol10.4.pdf ${PDF}/bookvol10.5.pdf \
 ${PDF}/bookvol11.pdf ${PDF}/bookvol12.pdf ${PDF}/bookvol13.pdf \
 ${PDF}/bookvolbib.pdf
+\getchunk{cookbook}
+\getchunk{sourcecode}
PROVE=${PROOFS}/acl2.lisp ${PROOFS}/coq.lisp
OTHER= ${PDF}/refcard.pdf ${PDF}/endpaper.pdf ${PDF}/rosetta.pdf
all: announce ${PDF}/axiom.bib ${PROVE} ${OTHER} ${BOOKPDF} \
+all: announce ${PDF}/axiom.bib ${PROVE} ${OTHER} ${COOKPAGES} ${BOOKPDF} \
${PDF}/toc.pdf spadedit axbook
@(cd ${PDF} ; ${RM} *.out *.toc *.sty *.def *.png *.bbl *.blg)
@@ 113,6 +151,35 @@ ${PDF}/endpaper.pdf: ${IN}/endpaper.pamphlet
${RM} endpaper.aux endpaper.dvi endpaper.log endpaper.out ; \
${RM} endpaper.pamphlet endpaper.ps endpaper.toc )
+${COOKBOOK}/%.pdf: ${COOKIN}/%.pamphlet
+ @ echo ===========================================
+ @ echo making ${COOKBOOK}/$*.pdf from ${COOKIN}/$*.pamphlet
+ @ echo ===========================================
+ @(cd ${COOKBOOK} ; \
+ cp ${BOOKS}/axiom.sty ${COOKBOOK} ; \
+ cp ${BOOKS}/bbold.sty ${COOKBOOK} ; \
+ cp ${BOOKS}/appendix.sty ${COOKBOOK} ; \
+ cp ${COOKIN}/$*.pamphlet ${COOKBOOK} ; \
+ ${RM} $*.toc ; \
+ if [ z "${NOISE}" ] ; then \
+ ${LATEX} $*.pamphlet ; \
+ ${MAKEINDEX} $*.idx 1>/dev/null 2>/dev/null ; \
+ ${BIBTEX} $*.aux ; \
+ ${LATEX} $*.pamphlet >/dev/null ; \
+ ${LATEX} $*.pamphlet >/dev/null ; \
+ ${DVIPDFM} $*.dvi 2>/dev/null ; \
+ else \
+ ${LATEX} $*.pamphlet >${TMP}/trace ; \
+ ${MAKEINDEX} $*.idx 1>/dev/null 2>/dev/null ; \
+ ${BIBTEX} $*.aux 1>/dev/null 2>/dev/null ; \
+ ${LATEX} $*.pamphlet >${TMP}/trace ; \
+ ${LATEX} $*.pamphlet >${TMP}/trace ; \
+ ${DVIPDFM} $*.dvi 2>${TMP}/trace ; \
+ fi ; \
+ ${RM} $*.aux $*.dvi $*.log $*.ps $*.idx $*.tex $*.pamphlet ; \
+ ${RM} $*.ilg $*.ind *.bbl *.blg *.sty)
+
+
${PDF}/%.pdf: ${IN}/%.pamphlet ${PDF}/axiom.bib ${PDF}/axiom.bst
@ echo ===========================================
@ echo making ${PDF}/$*.pdf from ${IN}/$*.pamphlet
@@ 124,8 +191,8 @@ ${PDF}/%.pdf: ${IN}/%.pamphlet ${PDF}/axiom.bib ${PDF}/axiom.bst
cp ${IN}/$*.pamphlet ${PDF} ; \
cp ${IN}/bookheader.tex ${PDF} ; \
cp pr ${IN}/ps ${PDF} ; \
+ ${RM} $*.toc ; \
if [ z "${NOISE}" ] ; then \
 ${RM} $*.toc ; \
${LATEX} $*.pamphlet ; \
${MAKEINDEX} $*.idx 1>/dev/null 2>/dev/null ; \
${BIBTEX} $*.aux ; \
@@ 136,7 +203,6 @@ ${PDF}/%.pdf: ${IN}/%.pamphlet ${PDF}/axiom.bib ${PDF}/axiom.bst
${RM} $*.ilg $*.ind ; \
${RM} bookheader.tex ; \
else \
 ${RM} $*.toc ; \
${LATEX} $*.pamphlet >${TMP}/trace ; \
${MAKEINDEX} $*.idx 1>/dev/null 2>/dev/null ; \
${BIBTEX} $*.aux 1>/dev/null 2>/dev/null ; \
@@ 146,7 +212,11 @@ ${PDF}/%.pdf: ${IN}/%.pamphlet ${PDF}/axiom.bib ${PDF}/axiom.bst
${RM} $*.aux $*.dvi $*.log $*.ps $*.idx $*.tex $*.pamphlet ; \
${RM} $*.ilg $*.ind ; \
${RM} bookheader.tex ; \
 fi )
+ fi ; \
+ ${RM} $*.aux $*.dvi $*.log $*.ps $*.idx $*.tex $*.pamphlet ; \
+ ${RM} $*.ilg $*.ind ; \
+ ${RM} bookheader.tex )
+
\end{chunk}
\section{Combined Table of Contents}
diff git a/books/cookbook/eucdomgcd.pamphlet b/books/cookbook/eucdomgcd.pamphlet
new file mode 100644
index 0000000..c20133a
 /dev/null
+++ b/books/cookbook/eucdomgcd.pamphlet
@@ 0,0 +1,49 @@
+\documentclass{article}
+\usepackage{graphics}
+\newcommand*\pct{\scalebox{.9}{\%}}
+\begin{document}
+\begin{center}{\bf Book 10.2: EuclideanDomain gcd}\end{center}
+\fbox{
+\begin{minipage}[t]{0.50\linewidth}
+\begin{center}{\bf EUCDOM gcd}\end{center}
+{\hskip 0.25cm}gcd : (\pct,~\pct) $\rightarrow$ Union(\pct,"failed")
+
+{\hskip 0.25cm}gcd(x,y) $==$
+
+{\hskip 0.5cm}x := unitCanonical x
+
+{\hskip 0.5cm}y := unitCanonical y
+
+{\hskip 0.5cm}{\bf while} not zero? y {\bf repeat}
+
+{\hskip 0.75cm}(x,y) := (y, x rem y)
+
+{\hskip 0.75cm}y := unitCanonical y
+
+{\hskip 0.5cm}x
+
+\end{minipage}}
+\hfill
+\fbox{
+\begin{minipage}[t]{0.50\linewidth}
+\hskip 1.0cm {\bf gcd(18,30)}
+\vskip 0.5cm
+\begin{tabular}{cccc}
+iteration & $x$ & $y$\\
+\hline
+ & 18 & 30\\
+1 & 30 & 18\\
+2 & 18 & 12\\
+3 & 12 & 6\\
+4 & 6 & 0
+\end{tabular}
+\vskip 0.30cm
+result = 6
+\end{minipage}}
+\vskip 0.25cm
+\noindent
+Book 10.2: INTDOM unitCanonical
+\vskip 0.25cm
+\noindent
+Explain the reason for using gcd here
+\end{document}
diff git a/changelog b/changelog
index e11b573..3d89bc5 100644
 a/changelog
+++ b/changelog
@@ 1,3 +1,7 @@
+20160721 tpd src/axiomwebsite/patches.html 20160721.01.tpd.patch
+20160721 tpd Makefile create the doc/cookbook subdirectory
+20160721 tpd books/Makefile add stanza to handle algorithm recipes
+20160721 tpd books/cookbook/eucdomgcd a first algorithmic recipe page
20160720 tpd src/axiomwebsite/patches.html 20160720.01.tpd.patch
20160720 tpd books/bookvol10.2 add citations to algebra
20160720 tpd books/bookvol10.3 add citations to algebra
diff git a/patch b/patch
index 6a5cef2..4fa6db9 100644
 a/patch
+++ b/patch
@@ 1,844 +1,40 @@
books/bookvolbib Axiom Citations in the Literature
+books/cookbook/eucdomgcd a first algorithmic recipe page
Goal: Axiom Literate Programming
\index{Sit, William Y.}
\begin{chunk}{axiom.bib}
@article{Sitx92,
 author = "Sit, William Y.",
 title = "An algorithm for solving parametric linear systems",
 journal = "Journal of Symbolic Computations",
 volume = "13",
 number = "4",
 pages = "353394",
 year = "1992",
 paper = "Sitx92.pdf",
 keywords = "axiomref",
 abstract =
 "We present a theoretical foundation for studying parametric systesm of
 linear equations and prove an efficient algorithm for identifying all
 parametric values (including degnerate cases) for which the system is
 consistent. The algorithm gives a small set of regimes where for each
 regime, the solutions of the specialized systems may be given
 uniformly. For homogeneous linear systems, or for systems were the
 right hand side is arbitrary, this small set is irredunant. We discuss
 in detail practical issues concerning implementations, with particular
 emphasis on simplification of results. Examples are given based on a
 close implementation of the algorithm in SCRATCHPAD II. We also give a
 complexity analysis of the Gaussian elimination method and compare
 that with our algorithm."
}

\end{chunk}

\index{Smedley, Trevor J.}
\begin{chunk}{axiom.bib}
@inproceedings{Smed92,
 author = "Smedley, Trevor J.",
 title = "Using pictorial and object oriented programming for computer
 algebra",
 booktitle = "Applied computing  technological challenges of the
 1990's: proceedings of the 1992 ACM\slash SIGAPP
 Symposium on Applied Computing, Kansas City Convention
 Center, March 13, 1992",
 publisher = "ACM Press",
 pages = "12431247",
 isbn = "089791502X",
 keywords = "axiomref"
}

\end{chunk}

\index{Zenger, Christoph}
\begin{chunk}{axiom.bib}
@mastersthesis{Zeng92,
 author = "Zenger, Christoph",
 title = "Gr{\"o}bnerbasen f{\"u}r Differentialformen und ihre
 Implementierung in AXIOM'",
 type = "Diplomarbeit",
 school = "Universit{\"a}t Karlsruhe",
 address = "Karlsruhe, Germany",
 year = "1992",
 keywords = "axiomref"
}

\end{chunk}

\index{FullPartialFractionExpansion}
\index{Bronstein, Manuel}
\index{Salvy, Bruno}
\begin{chunk}{axiom.bib}
@inproceedings{Bron93,
 author = "Bronstein, Manuel and Salvy, Bruno",
 title = "Full partial fraction decomposition of rational functions",
 booktitle = "Proc. ISSAC 1993",
 year = "1993",
 pages = "157160",
 isbn = "0897916042",
 url = "http://www.acm.org/pubs/citations/proceedings/issac/164081/",
 paper = "Bron93.pdf",
 algebra = "\newline\refto{domain FPARFRAC FullPartialFractionExpansion}",
 abstract =
 "We describe a rational algorithm that computes the full partial
 fraction expansion of a rational function over the algebraic closure
 of its field of definition. The algorithm uses only gcd operations
 over the initial field but the resulting decomposition is expressed
 with linear denominators. We give examples from its Axiom and Maple
 implementations."
}

\end{chunk}

\index{TranscendentalRischDE}
\index{TranscendentalRischDESystem}
\index{Bronstein, Manuel}
\begin{chunk}{axiom.bib}
@article{Bron90,
 author = "Bronstein, Manuel",
 title = "The Transcendental Risch Differential Equation",
 journal = "J. Symbolic Computation",
 volume = "9",
 pages = "4960",
 year = "1990",
 comment = "IBM Research Report RC13460 IBM Corp. Yorktown Heights, NY",
 paper = "Bron90.pdf",
 keywords = "axiomref",
 algebra =
 "\newline\refto{package RDETR TranscendentalRischDE}
 \newline\refto{package RDETRS TranscendentalRischDESystem}",
 abstract =
 "We present a new rational algorithm for solving Risch differential
 equations in towers of transcendental elementary extensions. In
 contrast to a recent algorithm by Davenport we do not require a
 progressive reduction of the denominators involved, but use weak
 normality to obtain a formula for the denominator of a possible
 solution. Implementation timings show this approach to be faster than
 a Hermitelike reduction."
}

\end{chunk}

\index{Davenport, James H.}
\begin{chunk}{axiom.bib}
\bibitem[Davenport 86]{Dav86} Davenport, J.H.
@article{Dave86,
 author = "Davenport, James H.",
 title = "The Risch Differential Equation Problem",
 year = "1986",
 journal = "SIAM J. COMPUT.",
 volume = "15",
 number = "4",
 comment = "Technical Report 834, Dept. Comp. Sci, Univ. Delaware",
 paper = "Dave86.pdf",
 abstract = "
 We propose a new algorithm, similar to Hermite's method for the
 integration of rational functions, for the resolution of Risch
 differential equations in closed form, or proving that they have no
 resolution. By requiring more of the presentation of our differential
 fields (in particular that the exponentials be weakly normalized), we
 can avoid the introduction of arbitrary constants which have to be
 solved for later.

 We also define a class of fields known as exponentially reduced, and
 show that solutions of Risch differential equations which arise from
 integrating in these fields satisfy the ``natural'' degree constraints
 in their main variables, and we conjecture (after Risch and Norman)
 that this is true in all variables."
}

\end{chunk}


\index{Davenport, James H.}
\begin{chunk}{axiom.bib}
@book{Dave05,
 author = "Davenport, James H.",
 title = "Integration  What do we want from the theory?",
 booktitle = "Computer Algebra",
 publisher = "Springer",
 series = "Lecture Notes in Computer Science 162",
 pages = "211",
 year = "2005",
 abstract =
 "The theory of integration has moved a long way in the last fourteen
 years, thought not far enough to satisfy the demands placed on it by
 its customers. This paper outlines what problems have yet to be solved,
 and tries to explain why they are not trivial."
}

\end{chunk}

\index{Rothstein, Michael}
\begin{chunk}{ignore}
@phdthesis{Roth76,
 author = "Rothstein, Michael",
 title = "Aspects of symbolic integration and simplifcation of
 exponential and primitive functions",
 school = "University of WisconsinMadison",
 year = "1976",
 url = "http://www.cs.kent.edu/~rothstei/dis.pdf",
 paper = "Ro76.pdf",
 abstract =
 "In this thesis we cover some aspects of the theory necessary to obtain
 a canonical form for functions obtained by integration and
 exponentiation from the set of rational functions.

 These aspects include a new algorithm for symbolic integration of
 functions involving logarithms and exponentials which avoids
 factorization of polynomials in those cases where algebraic extension
 of the constant field is not required, avoids partial fraction
 decompositions, and only solves linear systems with a small number of
 unknowns.

 We have also found a theorem which states, roughly speaking, that if
 integrals which can be represented as logarithms are represented as
 such, the only algebraic dependence that a new exponential or
 logarithm can satify is given by the law of exponents or the law of
 logarithms."
}

\end{chunk}

\index{Bronstein, Manuel}
\begin{chunk}{axiom.bib}
@article{Bron92a,
 author = "Bronstein, Manuel",
 title = "Formulas for Series Computation",
 journal = "Applied Algebra in Engineering, Communication and Computing",
 volume = "2",
 pages = "195206",
 year = "1992",
 abstract =
 "We describe an algorithm that computes polynomials whose roots are
 the coefficients of any specific order of the Laurent series of a
 rational function. The algorithm uses only rational operations in the
 coefficient field of the function. This allows us to compute with the
 principal parts of the Laurent series, in particular with the residues
 of the function, without factoring or splitting its denominator. As
 applications, we get a generalisation of the residue formulas used in
 symbolic integration algorithms to $n^{th}$order formulas. We also
 get an algorithm that computes explicitly the principlal parts at all
 the poles simultaneously, while computing in the field generated by
 the coefficients of the series instead of the one generated by the
 poles of the function. This yields an improved version of the
 necessary conditions for the various cases of Kovacic's algorithm,
 that expresses those conditions in the smallest possible extension
 field."
}

\end{chunk}

\index{Goodloe, A.}
\index{Loustaunau, Philippe}
\begin{chunk}{axiom.bib}
@inproceedings{Good93,
 author = "Goodloe, A. and Loustaunau, Philippe",
 title = "An abstract data type development of graded rings",
 booktitle = "Design and Implementation of Symbolic Computation Systems",
 series = "Lecture Notes in Computer Science 721",
 pages = "193202",
 isbn = "0387572724 (New York), 3540572724 (Berlin)",
 year = "1993",
 keywords = "axiomref",
 abstract =
 "Recently new computer algebra systems such as Scratchpad and Weyl have
 been developed with built in mechanisms for expressing abstract data types.
 These systems are object oriented in that they incorporate multiple
 inheritance and polymorphic types. Davenport and Trager have build much
 of the framework for basic commutative algebra in Scratchpad II
 utilizing its rich set of abstraction mechanisms. Davenport and Trager
 concentrated on developing factorization algorithms on domains which
 were abstract data types.

 We are taking a similar approach to the development of algorithms for
 computing in graded rings. The purpose of this paper is to develop the
 tools required to compute with polynomials with coefficients in a graded
 ring $R$. We focus on graded rings $R$ which are polynomial rings graded
 by a monoid, and we allow partial orders on the monomials. The ideas
 presented here can be applied to more general graded rings $R$, such as
 associated graded rings to filtered rings, as long as certain computational
 ``requirements'' are satisfied"
}

\end{chunk}

\index{Beneke, T.}
\index{Schwippert, W.}
\begin{chunk}{axiom.bib}
@article{Bene94,
 author = "Beneke, T. and Schwippert, W.",
 title = "Doubletrack into the future: MathCAD will gain new users with
 Standard and Plus versions",
 journal = "Elektronik",
 volume = "43",
 number = "15",
 pages = "107110",
 year = "1994",
 month = "July",
 pages = "107110",
 keywords = "axiomref",
 abstract =
 "MathCAD software is a type of `intelligent scratchpad with a pocket
 calculator function'. Hitherto it has been suitable only to a limited
 extent for engineering mathematics. The new Version 5.0 is now offered
 in two implementations: as an inexpensive basic package and in a
 considerably more costly Plus version. The authors question whether
 MathCAD can catch up with the classical Maple and Mathematica products."
}

\end{chunk}

\index{Vakil, Ravi}
\begin{chunk}{axiom.bib}
@misc{Vaki98,
 author = "Vakil, Ravi",
 title = "A Beginner's Guide to Jet Bundles fromthe Point of View of
 Algebraic Geometry",
 url = "http://math.stanford.edu/~vakil/files/jets.pdf",
 paper = "Vaki98.pdf",
 year = "1998"
}

\index{Roesner, K. G.}
\begin{chunk}{axiom.bib}
@article{Roes95,
 author = "Roesner, K. G.",
 title = "Verified solutions for parameters of an exact solution for
 nonNewtonian liquids using computer algebra",
 journal = "Zeitschrift fur Angewandte Mathematik und Physik",
 volume = "75",
 number = "suppl. 2",
 pages = "S435S438",
 year = "1995",
 keywords = "axiomref",
 abstract =
 "An exact solution of the time independent velocity field for the
 TaylorCouette flow of a polymer solution is derived solving the
 resulting first order ordinary differential equation of fifth degree
 analytically. Intensive use is made of computer algebra systems AXIOM
 and MACSYMA to find the exact solution. The coaxial cylinders in the
 TaylorCouette flow problem are assumed to rotate at different
 angular velocities. The geometrical and kinematic parameters can be
 chosen arbitrarily. The model equation for the material law of the
 viscoelastic liquid is based on the thermodynamic model for dilute
 solutions due to Lhuillier and Ouibrahim (1980) which is an analogy to
 the earlier paper of Frankel and Acrivos (1970). In the present
 investigation the influence of the parameters of the viscoelastic
 model on the velocity profile in the cylindrical gap is studied and
 the range of validity of the constitutive equation is investigated."
}

\end{chunk}

\index{Benker, Hans}
\begin{chunk}{axiom.bib}
@book{Benk98,
 author = "Benker, Hans",
 title = "Engineering mathematics with computer algebra systems",
 year = "1998",
 keywords = "axiomref",
 comment = "german"
}

\end{chunk}

\begin{chunk}{axiom.bib}
@misc{Linu15,
 author = "Linux Links",
 title = "Axiom",
 url = "http://www.linuxlinks.com/article/20080810064748970/Axiom.html",
 keywords = "axiomref",
 year = "2015"
}

\end{chunk}

\index{Daly, Timothy}
\index{Barnes, Nick}
\begin{chunk}{axiom.bib}
@misc{Daly13a,
 author = "Daly, Timothy and Barnes, Nick",
 title = "Ten reasons you must publish your code",
 year = "2013",
 url =
"http://climatecode.org/blog/2013/07/tenreasonsyoumustpublishyourcode/",
 keywords = "axiomref",
}

\end{chunk}

\index{Daly, Timothy}
\begin{chunk}{axiom.bib}
@misc{Daly05,
 author = "Daly, Timothy",
 title = "LispNYC Presentation at Trinity",
 year = "2005",
 month = "May",
 day = "10",
 keywords = "axiomref",
 abstract =
 "Timothy Daly presents Axiom

 Timothy Daly, published author, academic researcher, open source
 programmer and lead developer of Axiom will be presenting about his role
 as the driving force behind Axiom. With over 70 developers and 200
 researchers worldwide it can best be described as:

 Axiom is a general purpose Computer Algebra system. It is useful
 for research and development of mathematical algorithms providing
 a very high level way to express abstract mathematical concepts.
 The Axiom Library defines over 1,000 stronglytyped mathematical
 domains and categories.

 Axiom consists of an interpreter and compiler, a browser, a graphical
 interface, and a new online wiki that allows users to create web pages
 that inline computations.

 Axiom is built upon Common Lisp."
}

\end{chunk}

\index{Daly, Timothy}
\begin{chunk}{axiom.bib}
@misc{Dalyxx,
 author = "Daly, Timothy",
 title = "Tim Daly on Lisp in Industry",
 keywords = "axiomref",
 url = "https://news.ycombinator.com/item?id=1580904"
}

\end{chunk}

\index{Harriss, Edmund}
\index{Daly, Timothy}
\begin{chunk}{axiom.bib}
@misc{Harr12,
 author = "Harriss, Edmund and Daly, Timothy",
 title = "Have we ever lost mathematics?",
 url = "https://maxwelldemon.com/2012/05/09/haveweeverlostmathematics/",
 keywords = "axiomref",
 year = "2012"
}

\index{Fateman, Richard J.}
\begin{chunk}{axiom.bib}
@misc{Fate06a,
 author = "Fateman, Richard J.",
 title = "Comments on Extending Macsyma with New Data Types",
 url = "http://www.cs.berkeley.edu/~/fateman/papers/addformat.pdf",
 paper = "Fate06a.pdf",
 abstract =
 "Any design for a computer algebra system (CAS) naturally includes a
 set of data layouts for symbolic or mathematical algebraic expressions
 intended for use by builtin or userwritten programs. The CAS cannot
 build in all plausible data designs, but supports those of most
 interest to the programmers. In such a situation it is almost
 inevitable that some new data encoding idea will come to mind and with
 it an interest in adding additional data forms. The motivation may be
 for compact representation, or efficient (fast) manipulation, or for
 other reasons such as interchange with other programs. Most CAS
 therefore include at least one way to extend the base set of
 operations. We comment on the kinds of extensions possible, using
 Macsyma as an example CAS. The particular interest in Macsyma and its
 opensource soruceforge variant ``Maxima'' is that a substantial group
 of verylosely coupled independent researchers are approaching this
 problem and may benefit from some guidance. Some the observations
 apply to other CAS, even though they are not opensource.",
 keywords = "axiomref"
}

\end{chunk}

\index{Heckmann, Reinhold}
\index{Wilhelm, Reinhard}
\begin{chunk}{axiom.bib}
@article{Heck97,
 author = "Heckmann, Reinhold and Wilhelm, Reinhard",
 title = "A Functional Description of TeX's Formula Layout",
 journal = "J. Functional Programming",
 volume = "7",
 number = "5",
 pages = "451485",
 year = "1997",
 url = "http://http.cs.berkeley.edu/~fateman/temp/neuform.pdf",
 comment = "ftp://ftp.cs.unisb.de/formulae/formulae.tar.gz",
 abstract =
 "While the quality of the results of TeX's mathematica formula layout
 algorithm is convincing, its original description is hard to
 understand since it is presented as an imperative program with complex
 control flow and destructive manipulations of the data structures
 representing formulae. In this paper, we present a reimplementation
 of TeX's formula layout algorithm in the functional language SML,
 thereby providing a more readable description of the algorithm,
 extracted from the monolithical TeX system.",
 paper = "Heck97.pdf"
}

\end{chunk}

\begin{chunk}{axiom.bib}
@misc{Unkn15,
 author = "Unknown",
 title = "Branches of Functions",
 url = "http://scipp.ucsc.edu/~haber/ph116A/ComplexFunBranchTheory.pdf",
 paper = "Unkn15.pdf"
}

\end{chunk}

\index{Phisanbut, Nalina}
\index{Bradford, Russell J.}
\index{Davenport, James H.}
\begin{chunk}{axiom.bib}
@article{Phis11,
 author = "Phisanbut, Nalina and Bradford, Russell J. and
 Davenport, James H.",
 title = "Geometry of branch cuts",
 journal = "ACM Communications in Computer Algebra",
 volume = "44",
 number = "34",
 pages = "132135",
 year = "2011",
 abstract =
 "'Simplification' is a key concept in Computer Algebra. But many
 simplification rules, such as $\sqrt{x}\sqrt{y} \rightarrow \sqrt{xy}$
 are not universally valid, due to the fact that many elementary
 functions are multivalued. Hence a key question is ``Is this
 simplification correct?'', which involves algorithmic analysis of the
 branch cuts involved. In this paper, we look at variable ordering and
 preconditioning as supporting technologies for this analysis.",
 paper = "Phis11.pdf"
}

\end{chunk}

\index{Fateman, Richard J.}
\begin{chunk}{axiom.bib}
@misc{Fate97a,
 author = "Fateman, Richard J.",
 title = "The Fast Fourier Transform",
 course = "Berkeley CS 292, Fall 1997, Handout 2",
 year = "1997",
 url = "http://www.cs.berkeley.edu/~/fateman/papers/fftnotes.pdf",
 paper = "Fate97a.pdf"
}

\end{chunk}

\index{Fateman, Richard J.}
\begin{chunk}{axiom.bib}
@misc{Fate14,
 author = "Fateman, Richard J.",
 title = "Fun with Filon Quadrature  a Computer Algebra Perspective",
 year = "2014",
 url = "http://www.cs.berkeley.edu/~/fateman/papers/funfilon.pdf",
 abstract =
 "Filon quadrature, useful for oscillatory integrals, is easily
 implemented in a computer algebra system (CAS) using exact or
 approximate arithmetic. Although quadrature is almost always used in
 the context of approximation, we see that various properties are
 exhibited by running an exact algorithm on exact {\sl symbolic}
 inputs. This experimental approach to the mathematics allows us to
 prove the implementation of the algorithm has the expected
 mathematical correctness properties, and is therefore more likely to
 be, itself, a correct implementation."
 paper = "Fate14.pdf"
}

\end{chunk}

\index{Fateman, Richard J.}
\begin{chunk}{axiom.bib}
@misc{Fate05a,
 author = "Fateman, Richard J.",
 title = "Haddock's eyes and computer algebra systems: Some essays",
 url = "http://www.cs.berkeley.edu/~/fateman/papers/haddock.pdf",
 year = "2005",
 abstract =
 "(From {\sl Through the Looking Glass} by Lewis Caroll)
 \begin{verbatim}
 The White Knight proposes to comfort Alice by singing her a song:

 ``Is it very long?'' Alice asked, for she had heard a good deal of
 poetry that day.
 ``It's long,'' said the Knight, ``but it's very, very beautiful.
 Everybody that hears me sing iteither it brings tears into the
 eyes, or else 
 ``Or else what?'' said Alice, for the Knight had made a sudden pause.
 ``Or else it doesn't, you know. The name of the song is called
 `Haddock's Eyes'.''
 ``Oh, that' the name of the song, is it?'' Alice said, trying to feel
 interested.
 ``No, you don't understand,'' the Knight said, looking a little vexed.
 ``That's what the name is called. The name really is 'The Aged Aged Man'''
 ``Then I ought to have said 'That's what the song is called?'' Alice
 corrected herself.
 ``No, you oughtn't: that's quite another thing! The song is called
 `Ways and Means': but that's only what it's called, you know!''
 ``Well, what is the song, then?'' said Alice, who was by this time
 completely bewildered.
 ``I was coming to that,'' the Knight said. ``The song really is
 `Asitting on a Gate': and the tune's my own invention.''
 \end{verbatim}",
 paper = "Fate05a.pdf"
}

\end{chunk}

\index{Fateman, Richard J.}
\begin{chunk}{axiom.bib}
@misc{Fate15,
 author = "Fateman, Richard J.",
 title = "Interval Arithmetic, Extended Numbers and Computer Algebra
 Systems",
 url = "http://www.cs.berkeley.edu/~/fateman/papers/interval.pdf",
 year = "2015",
 abstract =
 "Many ambitious computer algebra systems were initially designed in a
 flush of enthusiasm, with the goal of automating any symbolic
 mathematical manipulation “correctly.” Historically, this approach
 resulted in programs that implicitly used certain identities to
 simplify expressions. These identities, which very likely seemed
 universally true to the programmers in the heat of writing the CAS,
 (and often were true in wellknown abstract algebraic domains) later
 needed reexamination when such systems were extended for dealing with
 kinds of objects unanticipated in the original design. These new
 objects are generally introduced to the CAS by extending “generically”
 the arithmetic or other operations. For example, approximate floats
 do not have the mathematical properties of exact integers or
 rationals. Complex numbers may strain a system designed for
 realvalued variables. In the situation examined here, we consider two
 categories of “extended” numbers: ∞ or undefined, and real
 intervals. We comment on issues raised by these two troublesome
 notions, how their introduction into a computer algebra system may
 require a (sometimes painful) reconsideration and redesign of parts of
 the program, and how they are related. An alternative (followed most
 notably by the Axiom system is to essentially envision a “meta” CAS
 defined in terms of categories and inheritance with only the most
 fundamental builtin concepts; from these one can build many variants
 of specific CAS features. This approach is appealing but can fails to
 accommodate extensions that violate some mathematical tenets in the
 cause of practicality.",
 paper = "Fate15.pdf"
}

\end{chunk}

\index{Fateman, Richard J.}
\begin{chunk}{axiom.bib}
@article{Fate91,
 author = "Fateman, Richard J.",
 title = "A Review of Macsyma",
 year = "1991",
 url = "http://people.eecs.berkeley.edu/~fateman/papers/mma.pdf",
 abstract =
 "The Mathematica computer system is reviewed from the perspective of
 its contributions to symbolic and algebraic computation, as well as
 its stated goals. Design and implementation issues are discussed.",
 paper = "Fate91.pdf,
 keywords = "axiomref"
}

\end{chunk}

\index{Fateman, Richard J.}
\begin{chunk}{axiom.bib}
@misc{Fate97b,
 author = "Fateman, Richard J.",
 title = "More Versatile Scientific Documents OverExtended Abstract,
 working paper",
 year = "1997",
 url = "http://www.cs.berkeley.edu/~/fateman/papers/mvsd.ps",
 abstract =
 "The electronic representation of scientific documents: journals,
 technical reports, program documentation, laboratory notebooks,
 etc. present challenges in several distinct communities. We see five
 distinct groups concerned with electronic versions of scientific
 documents:
 \begin{itemize}
 \item Publishers of journals, texts, reference works, and their authors.
 \item Software publishers for OCR/document analysis, document formatting
 \item Software publishers whose products access ``contents semantics''
 from documents, including library keyword search programs, natural language
 search programs, database systems, visual presentation systems,
 mathematical computation systems, etc.
 \item Institutions maintain access to electronic libraries, which must
 be broadly construed to include data and programs of all sorts.
 \item Individuals and their programs acting as their agents who need to
 use these libraries, to identify, locate, and retrieive relevant
 documents
 \end{itemize}

 We need to have a convergence in design and standards for encoding new
 or preexisting (typically paperbased) documents in order to most
 efficiently meet the needs of all these groups. Various effort, some
 loosely coordinated, but just as often competing, are trying to set
 standards and build tools.

 We approach this by first dividing the task into visual, syntactic,
 and semantic components. These specifications can focus attention on
 the addressing requirements of the different groups. Additionally,
 these components rely on a structure for documents that incorporates
 existing library models and extends them to new modes of operation.
 Berkeley's MVD is one plausible structure which will allow prototype
 development and explorations.",
 paper = "Fate97b.pdf"
}

\end{chunk}

\index{Fateman, Richard J.}
\begin{chunk}{axiom.bib}
@misc{Fate97c,
 author = "Fateman, Richard J.",
 title = "Excerpts from a proposal to the National Science Foundation
 on Programming Environments and Tools for Advanced Scientific
 Computation",
 year = "1997",
 url = "http://www.cs.berkeley.edu/~/fateman/papers/newpse.pdf",
 abstract =
 "We propose to concentrate on investigations of technology in support
 of advanced scientific computation, based on a higherlevel view of the
 relationship of mathematical modeling to computation. This is based on
 the following considerations:
 \begin{enumerate}
 \item Symbolic mathematical manipulation and computer algebra systems:
 These are tools and techniques that support problem solving, code
 development, comprehension, debugging and partial evaluation
 (the principle behind many optimization techniques).
 \item Data modeling: in particular, the use of IEEE floatingpoint
 number representations and operations.
 \item Closed form or exact solutions: For some subproblems of
 scientific interest, numerical solutions are not the only paradigm.
 The availability of exact solutions, or symbolicapproximation solutions
 has advanced along with computing technology too.
 \item The use of scripting languages: the linkage of highperformance
 library routines to graphical interfaces for data analysis and model setup
 can be enhanced by symbolic support and highlevel scripting languages.
 \item Extending the use of remote computation. We are now using standard
 network connections for the acquisition of complex data (in this case,
 symbolic solution of definite integrals).
 \end{enumerate}",
 paper = "Fate97c.pdf",
 keywords = "axiomref"
}

\end{chunk}

\index{Fateman, Richard J.}
\begin{chunk}{axiom.bib}
@misc{Fate00a,
 author = "Fateman, Richard J.",
 title = "Improving Exact Integral From Symbolic Algebra Systems",
 year = "2000",
 url = "http://www.cs.berkeley.edu/~/fateman/papers/nform2col.pdf",
 abstract =
 "Programs in symbolic algebraic manipulation systems can compute
 certain classes of symbolic indefinite integrals in closed form. Although
 these answers are ordinarily formally correct algebraic antiderivatives,
 their form is often unsuitable for further numerical or even analytical
 processing. In particular, we address cases in which such ``exact answers''
 when numerically evaluated may give lessaccurate answers than numerical
 approximations from first principles! The symbolic formulas may also
 behave inappropriately near singularities. We discuss techniques, based
 in part on the calculus of divided differences, for improving the form of
 results of symbolic mathematics systems. In particular, computer alge
 algebra systems must take explicit account of the possibility that they are
 producing not “mathematics” but templates of programs consisting of se
 sequences of arithmetic operations. In brief, mathematical correctness is
 not enough. Forms produced by rational integration programs are used
 for examples.",
 paper = "Fate00a.pdf"
}

\end{chunk}

\index{Fateman, Richard J.}
\begin{chunk}{axiom.bib}
@misc{Fate08a,
 author = "Fateman, Richard J.",
 title = "Verbs, Nouns, and Computer Algebra, or What's Grammar Got
 to do with Math?",
 url = "http://www.cs.berkeley.edu/~/fateman/papers/nounverbmac.pdf",
 year = "2008",
 abstract =
 "Computer algebra systems (CAS) are supposed to do mathematics.
 Unfortunately, much of human mathematics presentation and
 manipulation depends on humans to understand what is going on more
 generally. This context is often not made available to the computer
 system, and so it will sometimes fail to make the right guess at the
 meaning of constructions, unless they are made unambiguous. Among many
 issues, one that has been raised and resolved, is the need for
 attributing properties to operators that distinguish between ``the name
 of the operation'' and ``the operation itself''.

 As a simple example, referential transparency requires that if $x = y$,
 then any true statement $P(x)$ about $x$ must be true about $y$, namely
 $P(y)$ is also true.

 Consider now the wellknown equation $sin(0) = 0$, and the statement
 $P(r) :=$ ``r = 0 is a rule to simplify the sin() function''. The
 statement $P(sin(0))$ is clearly true. Therefore $P(0)$ should be true
 as well. It is not, since $0 = 0$ is not a rule to simplify $sin()$.

 The point here is that $sin(0)$ is not equal to 0 if sin is treated as
 the name of an operation. Perhaps it is a character string, or a data
 structure of some sort: a noun phrase. The corresponding expression
 including the verb form of sin is one in which $sin(0)$ can be
 simplified to something equivalent, but in some sense preferable. Here
 it is reasonable to replace it by 0.",
 paper = "Fate08a.pdf"
}

\end{chunk}

\index{OpenMath}
\index{Complex}
\index{DoubleFloat}
\index{Float}
\index{Fraction}
\index{Integer}
\index{List}
\index{SingleInteger}
\index{String}
\index{Symbol}
\index{ExpressionToOpenMath}
\index{OpenMathServerPackage}
\index{Fateman, Richard J.}
\begin{chunk}{axiom.bib}
@misc{Fate01a,
 author = "Fateman, Richard J.",
 title = "A Critique of OpenMath and Thoughts on Encoding Mathematics",
 year = "2001",
 url = "http://www.cs.berkeley.edu/~/fateman/papers/openmathcrit.pdf",
 algebra =
 "\newline\refto{category OM OpenMath}
 \newline\refto{domain COMPLEX Complex}
 \newline\refto{domain DFLOAT DoubleFloat}
 \newline\refto{domain FLOAT Float}
 \newline\refto{domain FRAC Fraction}
 \newline\refto{domain INT Integer}
 \newline\refto{domain LIST List}
 \newline\refto{domain SINT SingleInteger}
 \newline\refto{domain STRING String}
 \newline\refto{domain SYMBOL Symbol}
 \newline\refto{package OMEXPR ExpressionToOpenMath}
 \newline\refto{package OMSERVER OpenMathServerPackage}",
 abstract =
 "The OpenMath project, as portrayed in the Special Issue of the SIGSAM
 Bulletin (volume 34 no. 2), seems to have a number of problems to
 face. One of them is the (apparently implicit) assumption that
 OpenMath designers, through dint of mathematical thought and the
 advice of the members of the Open Math Society, have solved, in their
 domain, one of the most pressing problems of software engineering
 today, namely software reuse. After six years there is insufficient
 evidence on which to base any claims of success and it appears that
 most substantive practical issues of mathematical representation and
 communication have yet to be addressed. We also raise questions about
 related computational mathematical goals and mathematical encodings.",
 paper = "Fate01a.pdf"
}

\end{chunk}
+In cookbooks one finds basic ingredients (e.g. make batter, making
+eggs), main dishes (steak), and 7course means (how to
+choose side dishes, wines, etc). The 'cake' section, for
+example, has option "subroutines" such as toppings.
+
+The idea would be to develop a cookbookstyle of presentation
+for computational mathematics. Pick an algorithm, write a page.
+When something is used that is not explained, there is a reference
+to other sections (ala cakes that suggest "see the frostings")
+
+Each entry would be an algorithm or idea, explained in at most one
+2sided looseleaf paper. The algorithms would be gathered into
+sections, e.g. "basic ingredients" like resultant, "main dishes"
+like polynomial factorization, and "7course meals" like solving
+the heat equation (target is the physics class). The 'cake'
+subroutines would involve choice of polynomial representation,
+sparse, dense, distributed, recursive, etc.
+
+I want to be able to "write in the small" (1 page) with a focus on a
+single subject but "organize in the large" so I can shuffle these
+subjects into groups by purpose. The analogy is that there is a
+cookbook that only deals with pickles. I'd like a cookbook that only
+deals with rings, composed of looseleaf selections from the overall
+collection. This would be assembled for a computational mathematics
+class. The same material could be rearranged and reselected for a
+different class.
+
+The key focus is on providing explanation and motivation. Most
+books that mention the resultant spend pages on the proof and
+not a word about why or where to use it.
+
+The 1 page / 2 sides focus is much easier to write than a whole
+chapter and, since you're staring at a single routine, it is easier
+to provide motivation for why it exists and what the tradeoffs are.
+"How" is interesting but "Why" is vital.
diff git a/src/axiomwebsite/patches.html b/src/axiomwebsite/patches.html
index 7edc353..6df49e1 100644
 a/src/axiomwebsite/patches.html
+++ b/src/axiomwebsite/patches.html
@@ 5492,6 +5492,8 @@ books/Makefile appendix.sty fix Appendix chapter handling
src/input/Makefile add intalgorithm.input
20160720.01.tpd.patch
books/bookvolbib Axiom Citations in the Literature
+20160721.01.tpd.patch
+books/cookbook/eucdomgcd a first algorithmic recipe page

1.7.5.4